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

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 (452) hide show
  1. package/CHANGELOG.cn.md +181 -0
  2. package/CHANGELOG.md +234 -0
  3. package/LICENSE +0 -0
  4. package/NOTICE +0 -0
  5. package/README.cn.md +163 -0
  6. package/README.md +16 -6
  7. package/dist/core/anchor-cache.d.ts +0 -0
  8. package/dist/core/anchor-cache.d.ts.map +0 -0
  9. package/dist/core/anchor-cache.js +0 -0
  10. package/dist/core/anchor-cache.js.map +0 -0
  11. package/dist/core/cache.d.ts +0 -0
  12. package/dist/core/cache.d.ts.map +0 -0
  13. package/dist/core/cache.js +0 -0
  14. package/dist/core/cache.js.map +0 -0
  15. package/dist/core/canonical-json.d.ts +0 -0
  16. package/dist/core/canonical-json.d.ts.map +0 -0
  17. package/dist/core/canonical-json.js +0 -0
  18. package/dist/core/canonical-json.js.map +0 -0
  19. package/dist/core/codec.d.ts +0 -0
  20. package/dist/core/codec.d.ts.map +0 -0
  21. package/dist/core/codec.js +0 -0
  22. package/dist/core/codec.js.map +0 -0
  23. package/dist/core/codecs/index.d.ts +0 -0
  24. package/dist/core/codecs/index.d.ts.map +0 -0
  25. package/dist/core/codecs/index.js +0 -0
  26. package/dist/core/codecs/index.js.map +0 -0
  27. package/dist/core/codecs/ncp-codec.d.ts +0 -0
  28. package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
  29. package/dist/core/codecs/ncp-codec.js +0 -0
  30. package/dist/core/codecs/ncp-codec.js.map +0 -0
  31. package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
  32. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
  33. package/dist/core/codecs/tier1-json-codec.js +0 -0
  34. package/dist/core/codecs/tier1-json-codec.js.map +0 -0
  35. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
  36. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
  37. package/dist/core/codecs/tier2-msgpack-codec.js +0 -0
  38. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -0
  39. package/dist/core/crypto-provider.d.ts +0 -0
  40. package/dist/core/crypto-provider.d.ts.map +0 -0
  41. package/dist/core/crypto-provider.js +0 -0
  42. package/dist/core/crypto-provider.js.map +0 -0
  43. package/dist/core/exceptions.d.ts +0 -0
  44. package/dist/core/exceptions.d.ts.map +0 -0
  45. package/dist/core/exceptions.js +0 -0
  46. package/dist/core/exceptions.js.map +0 -0
  47. package/dist/core/frame-header.d.ts +1 -0
  48. package/dist/core/frame-header.d.ts.map +1 -1
  49. package/dist/core/frame-header.js +1 -0
  50. package/dist/core/frame-header.js.map +1 -1
  51. package/dist/core/frame-registry.d.ts +0 -0
  52. package/dist/core/frame-registry.d.ts.map +1 -1
  53. package/dist/core/frame-registry.js +1 -0
  54. package/dist/core/frame-registry.js.map +1 -1
  55. package/dist/core/frames.d.ts +3 -0
  56. package/dist/core/frames.d.ts.map +1 -1
  57. package/dist/core/frames.js +3 -0
  58. package/dist/core/frames.js.map +1 -1
  59. package/dist/core/index.d.ts +6 -4
  60. package/dist/core/index.d.ts.map +1 -1
  61. package/dist/core/index.js +17 -5
  62. package/dist/core/index.js.map +1 -1
  63. package/dist/core/registry.d.ts +0 -0
  64. package/dist/core/registry.d.ts.map +0 -0
  65. package/dist/core/registry.js +0 -0
  66. package/dist/core/registry.js.map +0 -0
  67. package/dist/core/status-codes.d.ts +20 -0
  68. package/dist/core/status-codes.d.ts.map +1 -1
  69. package/dist/core/status-codes.js +51 -0
  70. package/dist/core/status-codes.js.map +1 -1
  71. package/dist/index.d.ts +1 -1
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +1 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/ncp/frames/anchor-frame.d.ts +0 -0
  76. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
  77. package/dist/ncp/frames/anchor-frame.js +0 -0
  78. package/dist/ncp/frames/anchor-frame.js.map +0 -0
  79. package/dist/ncp/frames/caps-frame.d.ts +0 -0
  80. package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
  81. package/dist/ncp/frames/caps-frame.js +0 -0
  82. package/dist/ncp/frames/caps-frame.js.map +0 -0
  83. package/dist/ncp/frames/diff-frame.d.ts +0 -0
  84. package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
  85. package/dist/ncp/frames/diff-frame.js +0 -0
  86. package/dist/ncp/frames/diff-frame.js.map +0 -0
  87. package/dist/ncp/frames/error-frame.d.ts +0 -0
  88. package/dist/ncp/frames/error-frame.d.ts.map +0 -0
  89. package/dist/ncp/frames/error-frame.js +0 -0
  90. package/dist/ncp/frames/error-frame.js.map +0 -0
  91. package/dist/ncp/frames/hello-frame.d.ts +0 -0
  92. package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
  93. package/dist/ncp/frames/hello-frame.js +0 -0
  94. package/dist/ncp/frames/hello-frame.js.map +0 -0
  95. package/dist/ncp/frames/stream-frame.d.ts +0 -0
  96. package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
  97. package/dist/ncp/frames/stream-frame.js +0 -0
  98. package/dist/ncp/frames/stream-frame.js.map +0 -0
  99. package/dist/ncp/frames.d.ts +25 -0
  100. package/dist/ncp/frames.d.ts.map +1 -1
  101. package/dist/ncp/frames.js +61 -0
  102. package/dist/ncp/frames.js.map +1 -1
  103. package/dist/ncp/handshake.d.ts +0 -0
  104. package/dist/ncp/handshake.d.ts.map +0 -0
  105. package/dist/ncp/handshake.js +0 -0
  106. package/dist/ncp/handshake.js.map +0 -0
  107. package/dist/ncp/index.d.ts +1 -0
  108. package/dist/ncp/index.d.ts.map +1 -1
  109. package/dist/ncp/index.js +1 -0
  110. package/dist/ncp/index.js.map +1 -1
  111. package/dist/ncp/ncp-error-codes.d.ts +5 -0
  112. package/dist/ncp/ncp-error-codes.d.ts.map +1 -1
  113. package/dist/ncp/ncp-error-codes.js +27 -0
  114. package/dist/ncp/ncp-error-codes.js.map +1 -1
  115. package/dist/ncp/ncp-patch-format.d.ts +0 -0
  116. package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
  117. package/dist/ncp/ncp-patch-format.js +0 -0
  118. package/dist/ncp/ncp-patch-format.js.map +0 -0
  119. package/dist/ncp/preamble.d.ts +47 -0
  120. package/dist/ncp/preamble.d.ts.map +1 -0
  121. package/dist/ncp/preamble.js +74 -0
  122. package/dist/ncp/preamble.js.map +1 -0
  123. package/dist/ncp/registry.d.ts +0 -0
  124. package/dist/ncp/registry.d.ts.map +1 -1
  125. package/dist/ncp/registry.js +2 -1
  126. package/dist/ncp/registry.js.map +1 -1
  127. package/dist/ncp/stream-manager.d.ts +0 -0
  128. package/dist/ncp/stream-manager.d.ts.map +0 -0
  129. package/dist/ncp/stream-manager.js +0 -0
  130. package/dist/ncp/stream-manager.js.map +0 -0
  131. package/dist/ndp/dns-txt.d.ts +35 -0
  132. package/dist/ndp/dns-txt.d.ts.map +1 -0
  133. package/dist/ndp/dns-txt.js +67 -0
  134. package/dist/ndp/dns-txt.js.map +1 -0
  135. package/dist/ndp/frames.d.ts +34 -9
  136. package/dist/ndp/frames.d.ts.map +1 -1
  137. package/dist/ndp/frames.js +54 -15
  138. package/dist/ndp/frames.js.map +1 -1
  139. package/dist/ndp/index.d.ts +3 -0
  140. package/dist/ndp/index.d.ts.map +1 -1
  141. package/dist/ndp/index.js +3 -0
  142. package/dist/ndp/index.js.map +1 -1
  143. package/dist/ndp/ndp-error-codes.d.ts +25 -0
  144. package/dist/ndp/ndp-error-codes.d.ts.map +1 -0
  145. package/dist/ndp/ndp-error-codes.js +48 -0
  146. package/dist/ndp/ndp-error-codes.js.map +1 -0
  147. package/dist/ndp/ndp-registry.d.ts +2 -0
  148. package/dist/ndp/ndp-registry.d.ts.map +1 -1
  149. package/dist/ndp/ndp-registry.js +25 -0
  150. package/dist/ndp/ndp-registry.js.map +1 -1
  151. package/dist/ndp/registry.d.ts +0 -0
  152. package/dist/ndp/registry.d.ts.map +0 -0
  153. package/dist/ndp/registry.js +0 -0
  154. package/dist/ndp/registry.js.map +0 -0
  155. package/dist/ndp/security.d.ts +8 -0
  156. package/dist/ndp/security.d.ts.map +1 -0
  157. package/dist/ndp/security.js +9 -0
  158. package/dist/ndp/security.js.map +1 -0
  159. package/dist/ndp/validator.d.ts +0 -0
  160. package/dist/ndp/validator.d.ts.map +0 -0
  161. package/dist/ndp/validator.js +0 -0
  162. package/dist/ndp/validator.js.map +0 -0
  163. package/dist/nip/acme/client.d.ts +31 -0
  164. package/dist/nip/acme/client.d.ts.map +1 -0
  165. package/dist/nip/acme/client.js +136 -0
  166. package/dist/nip/acme/client.js.map +1 -0
  167. package/dist/nip/acme/index.d.ts +6 -0
  168. package/dist/nip/acme/index.d.ts.map +1 -0
  169. package/dist/nip/acme/index.js +8 -0
  170. package/dist/nip/acme/index.js.map +1 -0
  171. package/dist/nip/acme/jws.d.ts +31 -0
  172. package/dist/nip/acme/jws.d.ts.map +1 -0
  173. package/dist/nip/acme/jws.js +76 -0
  174. package/dist/nip/acme/jws.js.map +1 -0
  175. package/dist/nip/acme/messages.d.ts +71 -0
  176. package/dist/nip/acme/messages.d.ts.map +1 -0
  177. package/dist/nip/acme/messages.js +4 -0
  178. package/dist/nip/acme/messages.js.map +1 -0
  179. package/dist/nip/acme/server.d.ts +41 -0
  180. package/dist/nip/acme/server.d.ts.map +1 -0
  181. package/dist/nip/acme/server.js +458 -0
  182. package/dist/nip/acme/server.js.map +1 -0
  183. package/dist/nip/acme/wire.d.ts +19 -0
  184. package/dist/nip/acme/wire.d.ts.map +1 -0
  185. package/dist/nip/acme/wire.js +21 -0
  186. package/dist/nip/acme/wire.js.map +1 -0
  187. package/dist/nip/assurance-level.d.ts +19 -0
  188. package/dist/nip/assurance-level.d.ts.map +1 -0
  189. package/dist/nip/assurance-level.js +38 -0
  190. package/dist/nip/assurance-level.js.map +1 -0
  191. package/dist/nip/cert-format.d.ts +5 -0
  192. package/dist/nip/cert-format.d.ts.map +1 -0
  193. package/dist/nip/cert-format.js +6 -0
  194. package/dist/nip/cert-format.js.map +1 -0
  195. package/dist/nip/error-codes.d.ts +44 -0
  196. package/dist/nip/error-codes.d.ts.map +1 -0
  197. package/dist/nip/error-codes.js +97 -0
  198. package/dist/nip/error-codes.js.map +1 -0
  199. package/dist/nip/frames.d.ts +19 -1
  200. package/dist/nip/frames.d.ts.map +1 -1
  201. package/dist/nip/frames.js +39 -4
  202. package/dist/nip/frames.js.map +1 -1
  203. package/dist/nip/identity.d.ts +0 -0
  204. package/dist/nip/identity.d.ts.map +0 -0
  205. package/dist/nip/identity.js +0 -0
  206. package/dist/nip/identity.js.map +0 -0
  207. package/dist/nip/index.d.ts +7 -0
  208. package/dist/nip/index.d.ts.map +1 -1
  209. package/dist/nip/index.js +9 -0
  210. package/dist/nip/index.js.map +1 -1
  211. package/dist/nip/registry.d.ts +0 -0
  212. package/dist/nip/registry.d.ts.map +0 -0
  213. package/dist/nip/registry.js +0 -0
  214. package/dist/nip/registry.js.map +0 -0
  215. package/dist/nip/reputation-client.d.ts +116 -0
  216. package/dist/nip/reputation-client.d.ts.map +1 -0
  217. package/dist/nip/reputation-client.js +261 -0
  218. package/dist/nip/reputation-client.js.map +1 -0
  219. package/dist/nip/verifier.d.ts +23 -0
  220. package/dist/nip/verifier.d.ts.map +1 -0
  221. package/dist/nip/verifier.js +90 -0
  222. package/dist/nip/verifier.js.map +1 -0
  223. package/dist/nip/x509/builder.d.ts +35 -0
  224. package/dist/nip/x509/builder.d.ts.map +1 -0
  225. package/dist/nip/x509/builder.js +59 -0
  226. package/dist/nip/x509/builder.js.map +1 -0
  227. package/dist/nip/x509/index.d.ts +4 -0
  228. package/dist/nip/x509/index.d.ts.map +1 -0
  229. package/dist/nip/x509/index.js +6 -0
  230. package/dist/nip/x509/index.js.map +1 -0
  231. package/dist/nip/x509/oids.d.ts +16 -0
  232. package/dist/nip/x509/oids.d.ts.map +1 -0
  233. package/dist/nip/x509/oids.js +22 -0
  234. package/dist/nip/x509/oids.js.map +1 -0
  235. package/dist/nip/x509/verifier.d.ts +26 -0
  236. package/dist/nip/x509/verifier.d.ts.map +1 -0
  237. package/dist/nip/x509/verifier.js +171 -0
  238. package/dist/nip/x509/verifier.js.map +1 -0
  239. package/dist/nop/client.d.ts +0 -0
  240. package/dist/nop/client.d.ts.map +0 -0
  241. package/dist/nop/client.js +0 -0
  242. package/dist/nop/client.js.map +1 -1
  243. package/dist/nop/dag-validator.d.ts +15 -0
  244. package/dist/nop/dag-validator.d.ts.map +1 -0
  245. package/dist/nop/dag-validator.js +91 -0
  246. package/dist/nop/dag-validator.js.map +1 -0
  247. package/dist/nop/frames.d.ts +8 -3
  248. package/dist/nop/frames.d.ts.map +1 -1
  249. package/dist/nop/frames.js +21 -6
  250. package/dist/nop/frames.js.map +1 -1
  251. package/dist/nop/index.d.ts +3 -0
  252. package/dist/nop/index.d.ts.map +1 -1
  253. package/dist/nop/index.js +3 -0
  254. package/dist/nop/index.js.map +1 -1
  255. package/dist/nop/models.d.ts +13 -2
  256. package/dist/nop/models.d.ts.map +1 -1
  257. package/dist/nop/models.js +9 -0
  258. package/dist/nop/models.js.map +1 -1
  259. package/dist/nop/nop-error-codes.d.ts +31 -0
  260. package/dist/nop/nop-error-codes.d.ts.map +1 -0
  261. package/dist/nop/nop-error-codes.js +61 -0
  262. package/dist/nop/nop-error-codes.js.map +1 -0
  263. package/dist/nop/nop-types.d.ts +0 -0
  264. package/dist/nop/nop-types.d.ts.map +0 -0
  265. package/dist/nop/nop-types.js +0 -0
  266. package/dist/nop/nop-types.js.map +0 -0
  267. package/dist/nop/orchestrator.d.ts +66 -0
  268. package/dist/nop/orchestrator.d.ts.map +1 -0
  269. package/dist/nop/orchestrator.js +229 -0
  270. package/dist/nop/orchestrator.js.map +1 -0
  271. package/dist/nop/registry.d.ts +0 -0
  272. package/dist/nop/registry.d.ts.map +0 -0
  273. package/dist/nop/registry.js +0 -0
  274. package/dist/nop/registry.js.map +0 -0
  275. package/dist/nwp/anchor-client.d.ts +109 -0
  276. package/dist/nwp/anchor-client.d.ts.map +1 -0
  277. package/dist/nwp/anchor-client.js +279 -0
  278. package/dist/nwp/anchor-client.js.map +1 -0
  279. package/dist/nwp/anchor-server.d.ts +127 -0
  280. package/dist/nwp/anchor-server.d.ts.map +1 -0
  281. package/dist/nwp/anchor-server.js +649 -0
  282. package/dist/nwp/anchor-server.js.map +1 -0
  283. package/dist/nwp/bridge.d.ts +24 -0
  284. package/dist/nwp/bridge.d.ts.map +1 -0
  285. package/dist/nwp/bridge.js +26 -0
  286. package/dist/nwp/bridge.js.map +1 -0
  287. package/dist/nwp/cgn.d.ts +19 -0
  288. package/dist/nwp/cgn.d.ts.map +1 -0
  289. package/dist/nwp/cgn.js +29 -0
  290. package/dist/nwp/cgn.js.map +1 -0
  291. package/dist/nwp/client.d.ts +10 -3
  292. package/dist/nwp/client.d.ts.map +1 -1
  293. package/dist/nwp/client.js +58 -7
  294. package/dist/nwp/client.js.map +1 -1
  295. package/dist/nwp/frames.d.ts +56 -2
  296. package/dist/nwp/frames.d.ts.map +1 -1
  297. package/dist/nwp/frames.js +86 -4
  298. package/dist/nwp/frames.js.map +1 -1
  299. package/dist/nwp/http-headers.d.ts +24 -0
  300. package/dist/nwp/http-headers.d.ts.map +1 -0
  301. package/dist/nwp/http-headers.js +29 -0
  302. package/dist/nwp/http-headers.js.map +1 -0
  303. package/dist/nwp/index.d.ts +9 -0
  304. package/dist/nwp/index.d.ts.map +1 -1
  305. package/dist/nwp/index.js +9 -0
  306. package/dist/nwp/index.js.map +1 -1
  307. package/dist/nwp/manifest.d.ts +75 -0
  308. package/dist/nwp/manifest.d.ts.map +1 -0
  309. package/dist/nwp/manifest.js +5 -0
  310. package/dist/nwp/manifest.js.map +1 -0
  311. package/dist/nwp/memory-node-server.d.ts +70 -0
  312. package/dist/nwp/memory-node-server.d.ts.map +1 -0
  313. package/dist/nwp/memory-node-server.js +315 -0
  314. package/dist/nwp/memory-node-server.js.map +1 -0
  315. package/dist/nwp/nwp-error-codes.d.ts +48 -0
  316. package/dist/nwp/nwp-error-codes.d.ts.map +1 -0
  317. package/dist/nwp/nwp-error-codes.js +108 -0
  318. package/dist/nwp/nwp-error-codes.js.map +1 -0
  319. package/dist/nwp/registry.d.ts +0 -0
  320. package/dist/nwp/registry.d.ts.map +0 -0
  321. package/dist/nwp/registry.js +0 -0
  322. package/dist/nwp/registry.js.map +0 -0
  323. package/dist/nwp/reputation.d.ts +37 -0
  324. package/dist/nwp/reputation.d.ts.map +1 -0
  325. package/dist/nwp/reputation.js +118 -0
  326. package/dist/nwp/reputation.js.map +1 -0
  327. package/dist/setup.d.ts +0 -0
  328. package/dist/setup.d.ts.map +0 -0
  329. package/dist/setup.js +0 -0
  330. package/dist/setup.js.map +0 -0
  331. package/doc/nps-sdk.core.cn.md +321 -0
  332. package/doc/nps-sdk.core.md +326 -0
  333. package/doc/nps-sdk.ncp.cn.md +270 -0
  334. package/doc/nps-sdk.ncp.md +276 -0
  335. package/doc/nps-sdk.ndp.cn.md +267 -0
  336. package/doc/nps-sdk.ndp.md +273 -0
  337. package/doc/nps-sdk.nip.cn.md +265 -0
  338. package/doc/nps-sdk.nip.md +272 -0
  339. package/doc/nps-sdk.nop.cn.md +329 -0
  340. package/doc/nps-sdk.nop.md +332 -0
  341. package/doc/nps-sdk.nwp.cn.md +288 -0
  342. package/doc/nps-sdk.nwp.md +295 -0
  343. package/doc/overview.cn.md +149 -0
  344. package/doc/overview.md +153 -0
  345. package/package.json +33 -4
  346. package/CONTRIBUTING.md +0 -33
  347. package/dist/codec-CmHeovTV.d.cts +0 -120
  348. package/dist/codec-CmHeovTV.d.ts +0 -120
  349. package/dist/core/index.cjs +0 -371
  350. package/dist/core/index.cjs.map +0 -1
  351. package/dist/core/index.d.cts +0 -41
  352. package/dist/frames-B3qLdl_g.d.cts +0 -77
  353. package/dist/frames-Ff7-ZPUl.d.ts +0 -77
  354. package/dist/index.cjs +0 -1556
  355. package/dist/index.cjs.map +0 -1
  356. package/dist/index.d.cts +0 -21
  357. package/dist/ncp/index.cjs +0 -188
  358. package/dist/ncp/index.cjs.map +0 -1
  359. package/dist/ncp/index.d.cts +0 -6
  360. package/dist/ndp/index.cjs +0 -252
  361. package/dist/ndp/index.cjs.map +0 -1
  362. package/dist/ndp/index.d.cts +0 -86
  363. package/dist/nip/index.cjs +0 -214
  364. package/dist/nip/index.cjs.map +0 -1
  365. package/dist/nip/index.d.cts +0 -65
  366. package/dist/nop/index.cjs +0 -762
  367. package/dist/nop/index.cjs.map +0 -1
  368. package/dist/nop/index.d.cts +0 -155
  369. package/dist/nwp/index.cjs +0 -658
  370. package/dist/nwp/index.cjs.map +0 -1
  371. package/dist/nwp/index.d.cts +0 -65
  372. package/nip-ca-server/Dockerfile +0 -27
  373. package/nip-ca-server/README.md +0 -45
  374. package/nip-ca-server/db/001_init.sql +0 -25
  375. package/nip-ca-server/docker-compose.yml +0 -29
  376. package/nip-ca-server/package.json +0 -23
  377. package/nip-ca-server/src/ca.ts +0 -155
  378. package/nip-ca-server/src/db.ts +0 -104
  379. package/nip-ca-server/src/index.ts +0 -157
  380. package/nip-ca-server/tsconfig.json +0 -13
  381. package/src/core/anchor-cache.ts +0 -129
  382. package/src/core/cache.ts +0 -93
  383. package/src/core/canonical-json.ts +0 -50
  384. package/src/core/codec.ts +0 -158
  385. package/src/core/codecs/index.ts +0 -5
  386. package/src/core/codecs/ncp-codec.ts +0 -170
  387. package/src/core/codecs/tier1-json-codec.ts +0 -33
  388. package/src/core/codecs/tier2-msgpack-codec.ts +0 -30
  389. package/src/core/crypto-provider.ts +0 -47
  390. package/src/core/exceptions.ts +0 -57
  391. package/src/core/frame-header.ts +0 -282
  392. package/src/core/frame-registry.ts +0 -91
  393. package/src/core/frames.ts +0 -183
  394. package/src/core/index.ts +0 -10
  395. package/src/core/registry.ts +0 -28
  396. package/src/core/status-codes.ts +0 -46
  397. package/src/index.ts +0 -10
  398. package/src/ncp/frames/anchor-frame.ts +0 -87
  399. package/src/ncp/frames/caps-frame.ts +0 -59
  400. package/src/ncp/frames/diff-frame.ts +0 -69
  401. package/src/ncp/frames/error-frame.ts +0 -26
  402. package/src/ncp/frames/hello-frame.ts +0 -50
  403. package/src/ncp/frames/stream-frame.ts +0 -35
  404. package/src/ncp/frames.ts +0 -199
  405. package/src/ncp/handshake.ts +0 -95
  406. package/src/ncp/index.ts +0 -12
  407. package/src/ncp/ncp-error-codes.ts +0 -34
  408. package/src/ncp/ncp-patch-format.ts +0 -16
  409. package/src/ncp/registry.ts +0 -14
  410. package/src/ncp/stream-manager.ts +0 -212
  411. package/src/ndp/frames.ts +0 -124
  412. package/src/ndp/index.ts +0 -7
  413. package/src/ndp/ndp-registry.ts +0 -82
  414. package/src/ndp/registry.ts +0 -12
  415. package/src/ndp/validator.ts +0 -64
  416. package/src/nip/frames.ts +0 -106
  417. package/src/nip/identity.ts +0 -113
  418. package/src/nip/index.ts +0 -6
  419. package/src/nip/registry.ts +0 -12
  420. package/src/nop/client.ts +0 -103
  421. package/src/nop/frames.ts +0 -181
  422. package/src/nop/index.ts +0 -7
  423. package/src/nop/models.ts +0 -79
  424. package/src/nop/nop-types.ts +0 -208
  425. package/src/nop/registry.ts +0 -13
  426. package/src/nwp/client.ts +0 -114
  427. package/src/nwp/frames.ts +0 -116
  428. package/src/nwp/index.ts +0 -6
  429. package/src/nwp/registry.ts +0 -11
  430. package/src/setup.ts +0 -32
  431. package/tests/core/anchor-cache.test.ts +0 -242
  432. package/tests/core/codec.test.ts +0 -205
  433. package/tests/core/frame-registry.test.ts +0 -46
  434. package/tests/core.test.ts +0 -327
  435. package/tests/ncp/diff-binary-bitset.test.ts +0 -107
  436. package/tests/ncp/e2e-enc-reject.test.ts +0 -93
  437. package/tests/ncp/err-error-frame.test.ts +0 -152
  438. package/tests/ncp/frames.test.ts +0 -359
  439. package/tests/ncp/framing.test.ts +0 -233
  440. package/tests/ncp/hello-frame.test.ts +0 -122
  441. package/tests/ncp/inline-anchor.test.ts +0 -88
  442. package/tests/ncp/security.test.ts +0 -184
  443. package/tests/ncp/stream-window.test.ts +0 -167
  444. package/tests/ncp/stream.test.ts +0 -242
  445. package/tests/ncp/version-negotiation.test.ts +0 -123
  446. package/tests/ndp.test.ts +0 -271
  447. package/tests/nip.test.ts +0 -184
  448. package/tests/nop.test.ts +0 -344
  449. package/tests/nwp.test.ts +0 -237
  450. package/tsconfig.json +0 -20
  451. package/tsup.config.ts +0 -20
  452. package/vitest.config.ts +0 -10
@@ -0,0 +1,288 @@
1
+ [English Version](./nps-sdk.nwp.md) | 中文版
2
+
3
+ # `@labacacia/nps-sdk/nwp` — 类与方法参考
4
+
5
+ > 规范:[NPS-2 NWP v0.13](https://github.com/labacacia/nps/blob/main/spec/NPS-2-NWP.md)
6
+
7
+ NWP 是 AI 的 HTTP。本模块提供两个 NWP 帧
8
+ (`QueryFrame`、`ActionFrame`)、异步 `NwpClient`,以及用于查询排序、
9
+ 向量检索和异步动作响应的 dataclass 风格接口。
10
+
11
+ ---
12
+
13
+ ## 目录
14
+
15
+ - [`QueryOrderClause`](#queryorderclause)
16
+ - [`VectorSearchOptions`](#vectorsearchoptions)
17
+ - [`AsyncActionResponse`](#asyncactionresponse)
18
+ - [`QueryFrame` (0x10)](#queryframe-0x10)
19
+ - [`ActionFrame` (0x11)](#actionframe-0x11)
20
+ - [`NwpClient`](#nwpclient)
21
+ - [`NwpErrorCodes`](#nwperrorcodes)
22
+
23
+ ---
24
+
25
+ ## `QueryOrderClause`
26
+
27
+ ```typescript
28
+ interface QueryOrderClause {
29
+ field: string;
30
+ dir: "asc" | "desc";
31
+ }
32
+ ```
33
+
34
+ ---
35
+
36
+ ## `VectorSearchOptions`
37
+
38
+ ```typescript
39
+ interface VectorSearchOptions {
40
+ vector: readonly number[];
41
+ topK?: number;
42
+ minScore?: number;
43
+ vectorField?: string;
44
+ }
45
+ ```
46
+
47
+ 当目标 Memory Node 广告 `nwp:vector` 时,附加到 `QueryFrame.vectorSearch`。
48
+
49
+ ---
50
+
51
+ ## `AsyncActionResponse`
52
+
53
+ ```typescript
54
+ interface AsyncActionResponse {
55
+ taskId: string;
56
+ status: string; // "pending" | "running" | …
57
+ pollUrl?: string;
58
+ }
59
+
60
+ function asyncActionResponseFromDict(
61
+ data: Record<string, unknown>,
62
+ ): AsyncActionResponse;
63
+ ```
64
+
65
+ 当 `ActionFrame` 以 `async_ === true` 提交时,由 `NwpClient.invoke` 返回。
66
+
67
+ ---
68
+
69
+ ## `QueryFrame` (0x10)
70
+
71
+ 针对 Memory Node 的结构化读取。
72
+
73
+ ```typescript
74
+ class QueryFrame {
75
+ readonly frameType: FrameType.QUERY;
76
+ readonly preferredTier: EncodingTier.MSGPACK;
77
+
78
+ constructor(
79
+ public readonly anchorRef?: string,
80
+ public readonly filter?: Record<string, unknown>,
81
+ public readonly limit?: number,
82
+ public readonly offset?: number,
83
+ public readonly orderBy?: readonly QueryOrderClause[],
84
+ public readonly fields?: readonly string[],
85
+ public readonly vectorSearch?: VectorSearchOptions,
86
+ public readonly depth?: number,
87
+ );
88
+
89
+ toDict(): Record<string, unknown>;
90
+ static fromDict(data: Record<string, unknown>): QueryFrame;
91
+ }
92
+ ```
93
+
94
+ 线路形式(由 `toDict` 发出)使用 snake-case 键:
95
+ `anchor_ref`、`order_by`、`vector_search` 等。
96
+
97
+ ---
98
+
99
+ ## `ActionFrame` (0x11)
100
+
101
+ 针对 Action / Complex / Gateway Node 的操作调用。
102
+
103
+ ```typescript
104
+ class ActionFrame {
105
+ readonly frameType: FrameType.ACTION;
106
+ readonly preferredTier: EncodingTier.MSGPACK;
107
+
108
+ constructor(
109
+ public readonly actionId: string,
110
+ public readonly params?: Record<string, unknown>,
111
+ public readonly async_?: boolean,
112
+ public readonly idempotencyKey?: string,
113
+ public readonly timeoutMs?: number,
114
+ );
115
+
116
+ toDict(): Record<string, unknown>;
117
+ static fromDict(data: Record<string, unknown>): ActionFrame;
118
+ }
119
+ ```
120
+
121
+ - `actionId` 是 Action Node 的 `.nwm.json` → `endpoints.actions[].id` 中
122
+ 声明的标识符。
123
+ - `async_` 在线路上序列化为 `"async"`(尾下划线避免与 JS 关键字冲突)。
124
+ - `idempotencyKey` —— 存在则节点必须在其重放窗口内去重。
125
+
126
+ ---
127
+
128
+ ## `NwpClient`
129
+
130
+ 使用 `Content-Type: application/x-nps-frame` 与 NWP 节点通信的异步 HTTP 客户端。
131
+
132
+ ```typescript
133
+ class NwpClient {
134
+ constructor(
135
+ baseUrl: string,
136
+ options?: {
137
+ defaultTier?: EncodingTier; // 默认:MSGPACK
138
+ maxPayload?: number; // 默认:65 535
139
+ registry?: FrameRegistry; // 默认:NCP + NWP 帧
140
+ },
141
+ );
142
+
143
+ async sendAnchor(frame: AnchorFrame): Promise<void>;
144
+ async query(frame: QueryFrame): Promise<CapsFrame>;
145
+ stream(frame: QueryFrame): AsyncGenerator<StreamFrame>;
146
+ async invoke(frame: ActionFrame): Promise<unknown>;
147
+ }
148
+ ```
149
+
150
+ `baseUrl` 的尾斜杠自动去除。
151
+
152
+ ### HTTP 路由
153
+
154
+ | 方法 | 路径 | 请求体 | 响应 |
155
+ |------|------|--------|------|
156
+ | `sendAnchor` | `POST /anchor` | `AnchorFrame` 线路字节 | `204 No Content` |
157
+ | `query` | `POST /query` | `QueryFrame` 线路字节 | `CapsFrame` 线路字节 |
158
+ | `stream` | `POST /stream` | `QueryFrame` 线路字节 | 分块 `StreamFrame` 直至 `is_last=true` |
159
+ | `invoke` | `POST /invoke` | `ActionFrame` 线路字节 | 动作结果 |
160
+
161
+ `invoke()` 按 `frame.async_` 分派:
162
+
163
+ - `false` → 依据 content-type 解码响应。若服务器返回
164
+ `application/x-nps-frame`,body 由编解码器解码;否则按 JSON 解析。
165
+ - `true` → 解析 JSON 返回 `AsyncActionResponse`。轮询 `pollUrl`
166
+ 观察进度。
167
+
168
+ 所有方法在非 2xx HTTP 状态时抛普通 `Error`。流帧被独立发出 ——
169
+ 用 `for await` 消费生成器。
170
+
171
+ ---
172
+
173
+ ## 端到端示例
174
+
175
+ ```typescript
176
+ import {
177
+ NwpClient, QueryFrame, QueryOrderClause,
178
+ ActionFrame, AsyncActionResponse,
179
+ VectorSearchOptions,
180
+ } from "@labacacia/nps-sdk/nwp";
181
+
182
+ const nwp = new NwpClient("https://products.example.com");
183
+
184
+ // 1) 一次性上传 anchor
185
+ await nwp.sendAnchor({
186
+ frame: "0x01",
187
+ anchor_id: "sha256:…",
188
+ schema: { fields: [
189
+ { name: "id", type: "uint64" },
190
+ { name: "price", type: "decimal", semantic: "commerce.price.usd" },
191
+ ]},
192
+ ttl: 3600,
193
+ });
194
+
195
+ // 2) 查询一页
196
+ const caps = await nwp.query(new QueryFrame(
197
+ "sha256:…",
198
+ { price: { $lt: "100.00" } },
199
+ 50,
200
+ undefined,
201
+ [{ field: "price", dir: "asc" }],
202
+ ));
203
+ console.log(caps.count, "行, cursor:", caps.next_cursor);
204
+
205
+ // 3) 流式获取全量
206
+ for await (const chunk of nwp.stream(new QueryFrame("sha256:…"))) {
207
+ for (const row of chunk.data) { /* … */ }
208
+ if (chunk.isLast) break;
209
+ }
210
+
211
+ // 4) 触发异步动作
212
+ const resp = await nwp.invoke(new ActionFrame(
213
+ "restock",
214
+ { sku: "sku-4242", qty: 100 },
215
+ true,
216
+ ));
217
+ // resp 是 AsyncActionResponse
218
+ ```
219
+
220
+ ---
221
+
222
+ ## `NwpErrorCodes`
223
+
224
+ 30 个 NWP wire 错误码字符串常量(alpha.5 新增)。
225
+
226
+ ```typescript
227
+ import { NwpErrorCodes } from "@labacacia/nps-sdk/nwp";
228
+ ```
229
+
230
+ ### Auth 组(`NWP-AUTH-*`)
231
+
232
+ | 常量 | Wire 值 |
233
+ |------|---------|
234
+ | `NwpErrorCodes.AUTH_NID_SCOPE_VIOLATION` | `"NWP-AUTH-NID-SCOPE-VIOLATION"` |
235
+ | `NwpErrorCodes.AUTH_NID_NOT_TRUSTED` | `"NWP-AUTH-NID-NOT-TRUSTED"` |
236
+ | `NwpErrorCodes.AUTH_NID_EXPIRED` | `"NWP-AUTH-NID-EXPIRED"` |
237
+ | `NwpErrorCodes.AUTH_NID_REVOKED` | `"NWP-AUTH-NID-REVOKED"` |
238
+ | `NwpErrorCodes.AUTH_SIG_INVALID` | `"NWP-AUTH-SIG-INVALID"` |
239
+ | `NwpErrorCodes.AUTH_TOKEN_BUDGET_EXCEEDED` | `"NWP-AUTH-TOKEN-BUDGET-EXCEEDED"` |
240
+ | `NwpErrorCodes.AUTH_RATE_LIMIT` | `"NWP-AUTH-RATE-LIMIT"` |
241
+
242
+ ### Query 组(`NWP-QUERY-*`)
243
+
244
+ | 常量 | Wire 值 |
245
+ |------|---------|
246
+ | `NwpErrorCodes.QUERY_ANCHOR_NOT_FOUND` | `"NWP-QUERY-ANCHOR-NOT-FOUND"` |
247
+ | `NwpErrorCodes.QUERY_ANCHOR_EXPIRED` | `"NWP-QUERY-ANCHOR-EXPIRED"` |
248
+ | `NwpErrorCodes.QUERY_SCHEMA_MISMATCH` | `"NWP-QUERY-SCHEMA-MISMATCH"` |
249
+ | `NwpErrorCodes.QUERY_LIMIT_EXCEEDED` | `"NWP-QUERY-LIMIT-EXCEEDED"` |
250
+ | `NwpErrorCodes.QUERY_DEPTH_EXCEEDED` | `"NWP-QUERY-DEPTH-EXCEEDED"` |
251
+ | `NwpErrorCodes.QUERY_FILTER_INVALID` | `"NWP-QUERY-FILTER-INVALID"` |
252
+ | `NwpErrorCodes.QUERY_VECTOR_UNSUPPORTED` | `"NWP-QUERY-VECTOR-UNSUPPORTED"` |
253
+ | `NwpErrorCodes.QUERY_CURSOR_INVALID` | `"NWP-QUERY-CURSOR-INVALID"` |
254
+
255
+ ### Action、Task、Subscribe、Infrastructure 组
256
+
257
+ | 常量 | Wire 值 |
258
+ |------|---------|
259
+ | `NwpErrorCodes.ACTION_NOT_FOUND` | `"NWP-ACTION-NOT-FOUND"` |
260
+ | `NwpErrorCodes.ACTION_PARAM_INVALID` | `"NWP-ACTION-PARAM-INVALID"` |
261
+ | `NwpErrorCodes.ACTION_IDEMPOTENCY_CONFLICT` | `"NWP-ACTION-IDEMPOTENCY-CONFLICT"` |
262
+ | `NwpErrorCodes.TASK_NOT_FOUND` | `"NWP-TASK-NOT-FOUND"` |
263
+ | `NwpErrorCodes.TASK_ALREADY_COMPLETE` | `"NWP-TASK-ALREADY-COMPLETE"` |
264
+ | `NwpErrorCodes.TASK_TIMEOUT` | `"NWP-TASK-TIMEOUT"` |
265
+ | `NwpErrorCodes.TASK_CANCELLED` | `"NWP-TASK-CANCELLED"` |
266
+ | `NwpErrorCodes.SUBSCRIBE_TOPIC_NOT_FOUND` | `"NWP-SUBSCRIBE-TOPIC-NOT-FOUND"` |
267
+ | `NwpErrorCodes.SUBSCRIBE_ALREADY_ACTIVE` | `"NWP-SUBSCRIBE-ALREADY-ACTIVE"` |
268
+ | `NwpErrorCodes.SUBSCRIBE_QUOTA_EXCEEDED` | `"NWP-SUBSCRIBE-QUOTA-EXCEEDED"` |
269
+ | `NwpErrorCodes.SUBSCRIBE_FILTER_INVALID` | `"NWP-SUBSCRIBE-FILTER-INVALID"` |
270
+ | `NwpErrorCodes.SUBSCRIBE_NOT_FOUND` | `"NWP-SUBSCRIBE-NOT-FOUND"` |
271
+ | `NwpErrorCodes.INFRA_NODE_OVERLOADED` | `"NWP-INFRA-NODE-OVERLOADED"` |
272
+ | `NwpErrorCodes.INFRA_UPSTREAM_TIMEOUT` | `"NWP-INFRA-UPSTREAM-TIMEOUT"` |
273
+ | `NwpErrorCodes.INFRA_UPSTREAM_ERROR` | `"NWP-INFRA-UPSTREAM-ERROR"` |
274
+ | `NwpErrorCodes.INFRA_STORAGE_ERROR` | `"NWP-INFRA-STORAGE-ERROR"` |
275
+ | `NwpErrorCodes.INFRA_CONFIG_ERROR` | `"NWP-INFRA-CONFIG-ERROR"` |
276
+
277
+ ### Manifest、Topology、Reserved 组
278
+
279
+ | 常量 | Wire 值 |
280
+ |------|---------|
281
+ | `NwpErrorCodes.MANIFEST_NOT_FOUND` | `"NWP-MANIFEST-NOT-FOUND"` |
282
+ | `NwpErrorCodes.MANIFEST_PARSE_ERROR` | `"NWP-MANIFEST-PARSE-ERROR"` |
283
+ | `NwpErrorCodes.MANIFEST_VERSION_MISMATCH` | `"NWP-MANIFEST-VERSION-MISMATCH"` |
284
+ | `NwpErrorCodes.TOPOLOGY_UNAUTHORIZED` | `"NWP-TOPOLOGY-UNAUTHORIZED"` |
285
+ | `NwpErrorCodes.TOPOLOGY_NOT_AVAILABLE` | `"NWP-TOPOLOGY-NOT-AVAILABLE"` |
286
+ | `NwpErrorCodes.TOPOLOGY_SNAPSHOT_TOO_LARGE` | `"NWP-TOPOLOGY-SNAPSHOT-TOO-LARGE"` |
287
+ | `NwpErrorCodes.TOPOLOGY_STREAM_INTERRUPTED` | `"NWP-TOPOLOGY-STREAM-INTERRUPTED"` |
288
+ | `NwpErrorCodes.RESERVED_TYPE_UNSUPPORTED` | `"NWP-RESERVED-TYPE-UNSUPPORTED"` |
@@ -0,0 +1,295 @@
1
+ English | [中文版](./nps-sdk.nwp.cn.md)
2
+
3
+ # `@labacacia/nps-sdk/nwp` — Class and Method Reference
4
+
5
+ > Spec: [NPS-2 NWP v0.13](https://github.com/labacacia/nps/blob/main/spec/NPS-2-NWP.md)
6
+
7
+ NWP is the HTTP-of-AI. This module ships the two NWP frames
8
+ (`QueryFrame`, `ActionFrame`), the async `NwpClient`, and supporting
9
+ dataclass-like interfaces for query ordering, vector search, and async
10
+ action responses.
11
+
12
+ ---
13
+
14
+ ## Table of contents
15
+
16
+ - [`QueryOrderClause`](#queryorderclause)
17
+ - [`VectorSearchOptions`](#vectorsearchoptions)
18
+ - [`AsyncActionResponse`](#asyncactionresponse)
19
+ - [`QueryFrame` (0x10)](#queryframe-0x10)
20
+ - [`ActionFrame` (0x11)](#actionframe-0x11)
21
+ - [`NwpClient`](#nwpclient)
22
+ - [`NwpErrorCodes`](#nwperrorcodes)
23
+
24
+ ---
25
+
26
+ ## `QueryOrderClause`
27
+
28
+ ```typescript
29
+ interface QueryOrderClause {
30
+ field: string;
31
+ dir: "asc" | "desc";
32
+ }
33
+ ```
34
+
35
+ ---
36
+
37
+ ## `VectorSearchOptions`
38
+
39
+ ```typescript
40
+ interface VectorSearchOptions {
41
+ vector: readonly number[];
42
+ topK?: number;
43
+ minScore?: number;
44
+ vectorField?: string;
45
+ }
46
+ ```
47
+
48
+ Attached to a `QueryFrame.vectorSearch` when the target Memory Node
49
+ advertises `nwp:vector`.
50
+
51
+ ---
52
+
53
+ ## `AsyncActionResponse`
54
+
55
+ ```typescript
56
+ interface AsyncActionResponse {
57
+ taskId: string;
58
+ status: string; // "pending" | "running" | …
59
+ pollUrl?: string;
60
+ }
61
+
62
+ function asyncActionResponseFromDict(
63
+ data: Record<string, unknown>,
64
+ ): AsyncActionResponse;
65
+ ```
66
+
67
+ Returned by `NwpClient.invoke` when the `ActionFrame` was submitted with
68
+ `async_ === true`.
69
+
70
+ ---
71
+
72
+ ## `QueryFrame` (0x10)
73
+
74
+ Structured read against a Memory Node.
75
+
76
+ ```typescript
77
+ class QueryFrame {
78
+ readonly frameType: FrameType.QUERY;
79
+ readonly preferredTier: EncodingTier.MSGPACK;
80
+
81
+ constructor(
82
+ public readonly anchorRef?: string,
83
+ public readonly filter?: Record<string, unknown>,
84
+ public readonly limit?: number,
85
+ public readonly offset?: number,
86
+ public readonly orderBy?: readonly QueryOrderClause[],
87
+ public readonly fields?: readonly string[],
88
+ public readonly vectorSearch?: VectorSearchOptions,
89
+ public readonly depth?: number,
90
+ );
91
+
92
+ toDict(): Record<string, unknown>;
93
+ static fromDict(data: Record<string, unknown>): QueryFrame;
94
+ }
95
+ ```
96
+
97
+ Wire form (emitted by `toDict`) uses snake-case keys:
98
+ `anchor_ref`, `order_by`, `vector_search` etc.
99
+
100
+ ---
101
+
102
+ ## `ActionFrame` (0x11)
103
+
104
+ Operation invocation against an Action / Complex / Gateway Node.
105
+
106
+ ```typescript
107
+ class ActionFrame {
108
+ readonly frameType: FrameType.ACTION;
109
+ readonly preferredTier: EncodingTier.MSGPACK;
110
+
111
+ constructor(
112
+ public readonly actionId: string,
113
+ public readonly params?: Record<string, unknown>,
114
+ public readonly async_?: boolean,
115
+ public readonly idempotencyKey?: string,
116
+ public readonly timeoutMs?: number,
117
+ );
118
+
119
+ toDict(): Record<string, unknown>;
120
+ static fromDict(data: Record<string, unknown>): ActionFrame;
121
+ }
122
+ ```
123
+
124
+ - `actionId` is the identifier declared under the Action Node's
125
+ `.nwm.json` → `endpoints.actions[].id`.
126
+ - `async_` is serialised as `"async"` on the wire (trailing underscore
127
+ avoids shadowing the JS keyword).
128
+ - `idempotencyKey` — if present, the node MUST deduplicate within its
129
+ replay window.
130
+
131
+ ---
132
+
133
+ ## `NwpClient`
134
+
135
+ Async HTTP client that talks to an NWP node using
136
+ `Content-Type: application/x-nps-frame`.
137
+
138
+ ```typescript
139
+ class NwpClient {
140
+ constructor(
141
+ baseUrl: string,
142
+ options?: {
143
+ defaultTier?: EncodingTier; // default: MSGPACK
144
+ maxPayload?: number; // default: 65 535
145
+ registry?: FrameRegistry; // default: NCP + NWP frames
146
+ },
147
+ );
148
+
149
+ async sendAnchor(frame: AnchorFrame): Promise<void>;
150
+ async query(frame: QueryFrame): Promise<CapsFrame>;
151
+ stream(frame: QueryFrame): AsyncGenerator<StreamFrame>;
152
+ async invoke(frame: ActionFrame): Promise<unknown>;
153
+ }
154
+ ```
155
+
156
+ `baseUrl` trailing slashes are trimmed automatically.
157
+
158
+ ### HTTP routes
159
+
160
+ | Method | Path | Body | Response |
161
+ |--------|------|------|----------|
162
+ | `sendAnchor` | `POST /anchor` | `AnchorFrame` wire bytes | `204 No Content` |
163
+ | `query` | `POST /query` | `QueryFrame` wire bytes | `CapsFrame` wire bytes |
164
+ | `stream` | `POST /stream` | `QueryFrame` wire bytes | chunked `StreamFrame`s until `is_last=true` |
165
+ | `invoke` | `POST /invoke` | `ActionFrame` wire bytes | action result |
166
+
167
+ `invoke()` dispatches by `frame.async_`:
168
+
169
+ - `false` → decodes response based on content-type. If the server
170
+ responds with `application/x-nps-frame`, the body is decoded by the
171
+ codec; otherwise the response is parsed as JSON.
172
+ - `true` → parses JSON and returns `AsyncActionResponse`. Poll
173
+ `pollUrl` to observe progress.
174
+
175
+ All methods throw a plain `Error` on non-2xx HTTP status. Stream frames
176
+ are emitted individually — consume the generator with `for await`.
177
+
178
+ ---
179
+
180
+ ## End-to-end example
181
+
182
+ ```typescript
183
+ import {
184
+ NwpClient, QueryFrame, QueryOrderClause,
185
+ ActionFrame, AsyncActionResponse,
186
+ VectorSearchOptions,
187
+ } from "@labacacia/nps-sdk/nwp";
188
+
189
+ const nwp = new NwpClient("https://products.example.com");
190
+
191
+ // 1) Upload an anchor once
192
+ await nwp.sendAnchor({
193
+ frame: "0x01",
194
+ anchor_id: "sha256:…",
195
+ schema: { fields: [
196
+ { name: "id", type: "uint64" },
197
+ { name: "price", type: "decimal", semantic: "commerce.price.usd" },
198
+ ]},
199
+ ttl: 3600,
200
+ });
201
+
202
+ // 2) Query a page
203
+ const caps = await nwp.query(new QueryFrame(
204
+ "sha256:…",
205
+ { price: { $lt: "100.00" } },
206
+ 50,
207
+ undefined,
208
+ [{ field: "price", dir: "asc" }],
209
+ ));
210
+ console.log(caps.count, "rows, cursor:", caps.next_cursor);
211
+
212
+ // 3) Stream the full set
213
+ for await (const chunk of nwp.stream(new QueryFrame("sha256:…"))) {
214
+ for (const row of chunk.data) { /* … */ }
215
+ if (chunk.isLast) break;
216
+ }
217
+
218
+ // 4) Fire an async action
219
+ const resp = await nwp.invoke(new ActionFrame(
220
+ "restock",
221
+ { sku: "sku-4242", qty: 100 },
222
+ true,
223
+ ));
224
+ // resp is AsyncActionResponse
225
+ ```
226
+
227
+ ---
228
+
229
+ ## `NwpErrorCodes`
230
+
231
+ String constants for the 30 NWP wire error codes (added in alpha.5).
232
+
233
+ ```typescript
234
+ import { NwpErrorCodes } from "@labacacia/nps-sdk/nwp";
235
+ ```
236
+
237
+ ### Auth group (`NWP-AUTH-*`)
238
+
239
+ | Constant | Wire value |
240
+ |----------|------------|
241
+ | `NwpErrorCodes.AUTH_NID_SCOPE_VIOLATION` | `"NWP-AUTH-NID-SCOPE-VIOLATION"` |
242
+ | `NwpErrorCodes.AUTH_NID_NOT_TRUSTED` | `"NWP-AUTH-NID-NOT-TRUSTED"` |
243
+ | `NwpErrorCodes.AUTH_NID_EXPIRED` | `"NWP-AUTH-NID-EXPIRED"` |
244
+ | `NwpErrorCodes.AUTH_NID_REVOKED` | `"NWP-AUTH-NID-REVOKED"` |
245
+ | `NwpErrorCodes.AUTH_SIG_INVALID` | `"NWP-AUTH-SIG-INVALID"` |
246
+ | `NwpErrorCodes.AUTH_TOKEN_BUDGET_EXCEEDED` | `"NWP-AUTH-TOKEN-BUDGET-EXCEEDED"` |
247
+ | `NwpErrorCodes.AUTH_RATE_LIMIT` | `"NWP-AUTH-RATE-LIMIT"` |
248
+
249
+ ### Query group (`NWP-QUERY-*`)
250
+
251
+ | Constant | Wire value |
252
+ |----------|------------|
253
+ | `NwpErrorCodes.QUERY_ANCHOR_NOT_FOUND` | `"NWP-QUERY-ANCHOR-NOT-FOUND"` |
254
+ | `NwpErrorCodes.QUERY_ANCHOR_EXPIRED` | `"NWP-QUERY-ANCHOR-EXPIRED"` |
255
+ | `NwpErrorCodes.QUERY_SCHEMA_MISMATCH` | `"NWP-QUERY-SCHEMA-MISMATCH"` |
256
+ | `NwpErrorCodes.QUERY_LIMIT_EXCEEDED` | `"NWP-QUERY-LIMIT-EXCEEDED"` |
257
+ | `NwpErrorCodes.QUERY_DEPTH_EXCEEDED` | `"NWP-QUERY-DEPTH-EXCEEDED"` |
258
+ | `NwpErrorCodes.QUERY_FILTER_INVALID` | `"NWP-QUERY-FILTER-INVALID"` |
259
+ | `NwpErrorCodes.QUERY_VECTOR_UNSUPPORTED` | `"NWP-QUERY-VECTOR-UNSUPPORTED"` |
260
+ | `NwpErrorCodes.QUERY_CURSOR_INVALID` | `"NWP-QUERY-CURSOR-INVALID"` |
261
+
262
+ ### Action, Task, Subscribe, Infrastructure groups
263
+
264
+ | Constant | Wire value |
265
+ |----------|------------|
266
+ | `NwpErrorCodes.ACTION_NOT_FOUND` | `"NWP-ACTION-NOT-FOUND"` |
267
+ | `NwpErrorCodes.ACTION_PARAM_INVALID` | `"NWP-ACTION-PARAM-INVALID"` |
268
+ | `NwpErrorCodes.ACTION_IDEMPOTENCY_CONFLICT` | `"NWP-ACTION-IDEMPOTENCY-CONFLICT"` |
269
+ | `NwpErrorCodes.TASK_NOT_FOUND` | `"NWP-TASK-NOT-FOUND"` |
270
+ | `NwpErrorCodes.TASK_ALREADY_COMPLETE` | `"NWP-TASK-ALREADY-COMPLETE"` |
271
+ | `NwpErrorCodes.TASK_TIMEOUT` | `"NWP-TASK-TIMEOUT"` |
272
+ | `NwpErrorCodes.TASK_CANCELLED` | `"NWP-TASK-CANCELLED"` |
273
+ | `NwpErrorCodes.SUBSCRIBE_TOPIC_NOT_FOUND` | `"NWP-SUBSCRIBE-TOPIC-NOT-FOUND"` |
274
+ | `NwpErrorCodes.SUBSCRIBE_ALREADY_ACTIVE` | `"NWP-SUBSCRIBE-ALREADY-ACTIVE"` |
275
+ | `NwpErrorCodes.SUBSCRIBE_QUOTA_EXCEEDED` | `"NWP-SUBSCRIBE-QUOTA-EXCEEDED"` |
276
+ | `NwpErrorCodes.SUBSCRIBE_FILTER_INVALID` | `"NWP-SUBSCRIBE-FILTER-INVALID"` |
277
+ | `NwpErrorCodes.SUBSCRIBE_NOT_FOUND` | `"NWP-SUBSCRIBE-NOT-FOUND"` |
278
+ | `NwpErrorCodes.INFRA_NODE_OVERLOADED` | `"NWP-INFRA-NODE-OVERLOADED"` |
279
+ | `NwpErrorCodes.INFRA_UPSTREAM_TIMEOUT` | `"NWP-INFRA-UPSTREAM-TIMEOUT"` |
280
+ | `NwpErrorCodes.INFRA_UPSTREAM_ERROR` | `"NWP-INFRA-UPSTREAM-ERROR"` |
281
+ | `NwpErrorCodes.INFRA_STORAGE_ERROR` | `"NWP-INFRA-STORAGE-ERROR"` |
282
+ | `NwpErrorCodes.INFRA_CONFIG_ERROR` | `"NWP-INFRA-CONFIG-ERROR"` |
283
+
284
+ ### Manifest, Topology, Reserved groups
285
+
286
+ | Constant | Wire value |
287
+ |----------|------------|
288
+ | `NwpErrorCodes.MANIFEST_NOT_FOUND` | `"NWP-MANIFEST-NOT-FOUND"` |
289
+ | `NwpErrorCodes.MANIFEST_PARSE_ERROR` | `"NWP-MANIFEST-PARSE-ERROR"` |
290
+ | `NwpErrorCodes.MANIFEST_VERSION_MISMATCH` | `"NWP-MANIFEST-VERSION-MISMATCH"` |
291
+ | `NwpErrorCodes.TOPOLOGY_UNAUTHORIZED` | `"NWP-TOPOLOGY-UNAUTHORIZED"` |
292
+ | `NwpErrorCodes.TOPOLOGY_NOT_AVAILABLE` | `"NWP-TOPOLOGY-NOT-AVAILABLE"` |
293
+ | `NwpErrorCodes.TOPOLOGY_SNAPSHOT_TOO_LARGE` | `"NWP-TOPOLOGY-SNAPSHOT-TOO-LARGE"` |
294
+ | `NwpErrorCodes.TOPOLOGY_STREAM_INTERRUPTED` | `"NWP-TOPOLOGY-STREAM-INTERRUPTED"` |
295
+ | `NwpErrorCodes.RESERVED_TYPE_UNSUPPORTED` | `"NWP-RESERVED-TYPE-UNSUPPORTED"` |