@labacacia/nps-sdk 1.0.0-alpha.1

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 (311) hide show
  1. package/CONTRIBUTING.md +33 -0
  2. package/LICENSE +170 -0
  3. package/NOTICE +7 -0
  4. package/README.md +153 -0
  5. package/dist/codec-CmHeovTV.d.cts +120 -0
  6. package/dist/codec-CmHeovTV.d.ts +120 -0
  7. package/dist/core/anchor-cache.d.ts +42 -0
  8. package/dist/core/anchor-cache.d.ts.map +1 -0
  9. package/dist/core/anchor-cache.js +104 -0
  10. package/dist/core/anchor-cache.js.map +1 -0
  11. package/dist/core/cache.d.ts +14 -0
  12. package/dist/core/cache.d.ts.map +1 -0
  13. package/dist/core/cache.js +80 -0
  14. package/dist/core/cache.js.map +1 -0
  15. package/dist/core/canonical-json.d.ts +12 -0
  16. package/dist/core/canonical-json.d.ts.map +1 -0
  17. package/dist/core/canonical-json.js +44 -0
  18. package/dist/core/canonical-json.js.map +1 -0
  19. package/dist/core/codec.d.ts +32 -0
  20. package/dist/core/codec.d.ts.map +1 -0
  21. package/dist/core/codec.js +119 -0
  22. package/dist/core/codec.js.map +1 -0
  23. package/dist/core/codecs/index.d.ts +4 -0
  24. package/dist/core/codecs/index.d.ts.map +1 -0
  25. package/dist/core/codecs/index.js +6 -0
  26. package/dist/core/codecs/index.js.map +1 -0
  27. package/dist/core/codecs/ncp-codec.d.ts +39 -0
  28. package/dist/core/codecs/ncp-codec.d.ts.map +1 -0
  29. package/dist/core/codecs/ncp-codec.js +93 -0
  30. package/dist/core/codecs/ncp-codec.js.map +1 -0
  31. package/dist/core/codecs/tier1-json-codec.d.ts +10 -0
  32. package/dist/core/codecs/tier1-json-codec.d.ts.map +1 -0
  33. package/dist/core/codecs/tier1-json-codec.js +28 -0
  34. package/dist/core/codecs/tier1-json-codec.js.map +1 -0
  35. package/dist/core/codecs/tier2-msgpack-codec.d.ts +10 -0
  36. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +1 -0
  37. package/dist/core/codecs/tier2-msgpack-codec.js +26 -0
  38. package/dist/core/codecs/tier2-msgpack-codec.js.map +1 -0
  39. package/dist/core/crypto-provider.d.ts +31 -0
  40. package/dist/core/crypto-provider.d.ts.map +1 -0
  41. package/dist/core/crypto-provider.js +10 -0
  42. package/dist/core/crypto-provider.js.map +1 -0
  43. package/dist/core/exceptions.d.ts +27 -0
  44. package/dist/core/exceptions.d.ts.map +1 -0
  45. package/dist/core/exceptions.js +52 -0
  46. package/dist/core/exceptions.js.map +1 -0
  47. package/dist/core/frame-header.d.ts +87 -0
  48. package/dist/core/frame-header.d.ts.map +1 -0
  49. package/dist/core/frame-header.js +185 -0
  50. package/dist/core/frame-header.js.map +1 -0
  51. package/dist/core/frame-registry.d.ts +35 -0
  52. package/dist/core/frame-registry.d.ts.map +1 -0
  53. package/dist/core/frame-registry.js +63 -0
  54. package/dist/core/frame-registry.js.map +1 -0
  55. package/dist/core/frames.d.ts +80 -0
  56. package/dist/core/frames.d.ts.map +1 -0
  57. package/dist/core/frames.js +153 -0
  58. package/dist/core/frames.js.map +1 -0
  59. package/dist/core/index.cjs +371 -0
  60. package/dist/core/index.cjs.map +1 -0
  61. package/dist/core/index.d.cts +41 -0
  62. package/dist/core/index.d.ts +9 -0
  63. package/dist/core/index.d.ts.map +1 -0
  64. package/dist/core/index.js +10 -0
  65. package/dist/core/index.js.map +1 -0
  66. package/dist/core/registry.d.ts +11 -0
  67. package/dist/core/registry.d.ts.map +1 -0
  68. package/dist/core/registry.js +17 -0
  69. package/dist/core/registry.js.map +1 -0
  70. package/dist/core/status-codes.d.ts +28 -0
  71. package/dist/core/status-codes.d.ts.map +1 -0
  72. package/dist/core/status-codes.js +38 -0
  73. package/dist/core/status-codes.js.map +1 -0
  74. package/dist/frames-B3qLdl_g.d.cts +77 -0
  75. package/dist/frames-Ff7-ZPUl.d.ts +77 -0
  76. package/dist/index.cjs +1556 -0
  77. package/dist/index.cjs.map +1 -0
  78. package/dist/index.d.cts +21 -0
  79. package/dist/index.d.ts +2 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +10 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/ncp/frames/anchor-frame.d.ts +29 -0
  84. package/dist/ncp/frames/anchor-frame.d.ts.map +1 -0
  85. package/dist/ncp/frames/anchor-frame.js +54 -0
  86. package/dist/ncp/frames/anchor-frame.js.map +1 -0
  87. package/dist/ncp/frames/caps-frame.d.ts +29 -0
  88. package/dist/ncp/frames/caps-frame.d.ts.map +1 -0
  89. package/dist/ncp/frames/caps-frame.js +29 -0
  90. package/dist/ncp/frames/caps-frame.js.map +1 -0
  91. package/dist/ncp/frames/diff-frame.d.ts +32 -0
  92. package/dist/ncp/frames/diff-frame.d.ts.map +1 -0
  93. package/dist/ncp/frames/diff-frame.js +37 -0
  94. package/dist/ncp/frames/diff-frame.js.map +1 -0
  95. package/dist/ncp/frames/error-frame.d.ts +16 -0
  96. package/dist/ncp/frames/error-frame.d.ts.map +1 -0
  97. package/dist/ncp/frames/error-frame.js +13 -0
  98. package/dist/ncp/frames/error-frame.js.map +1 -0
  99. package/dist/ncp/frames/hello-frame.d.ts +21 -0
  100. package/dist/ncp/frames/hello-frame.d.ts.map +1 -0
  101. package/dist/ncp/frames/hello-frame.js +25 -0
  102. package/dist/ncp/frames/hello-frame.js.map +1 -0
  103. package/dist/ncp/frames/stream-frame.d.ts +16 -0
  104. package/dist/ncp/frames/stream-frame.d.ts.map +1 -0
  105. package/dist/ncp/frames/stream-frame.js +18 -0
  106. package/dist/ncp/frames/stream-frame.js.map +1 -0
  107. package/dist/ncp/frames.d.ts +76 -0
  108. package/dist/ncp/frames.d.ts.map +1 -0
  109. package/dist/ncp/frames.js +147 -0
  110. package/dist/ncp/frames.js.map +1 -0
  111. package/dist/ncp/handshake.d.ts +30 -0
  112. package/dist/ncp/handshake.d.ts.map +1 -0
  113. package/dist/ncp/handshake.js +80 -0
  114. package/dist/ncp/handshake.js.map +1 -0
  115. package/dist/ncp/index.cjs +188 -0
  116. package/dist/ncp/index.cjs.map +1 -0
  117. package/dist/ncp/index.d.cts +6 -0
  118. package/dist/ncp/index.d.ts +11 -0
  119. package/dist/ncp/index.d.ts.map +1 -0
  120. package/dist/ncp/index.js +13 -0
  121. package/dist/ncp/index.js.map +1 -0
  122. package/dist/ncp/ncp-error-codes.d.ts +22 -0
  123. package/dist/ncp/ncp-error-codes.d.ts.map +1 -0
  124. package/dist/ncp/ncp-error-codes.js +32 -0
  125. package/dist/ncp/ncp-error-codes.js.map +1 -0
  126. package/dist/ncp/ncp-patch-format.d.ts +7 -0
  127. package/dist/ncp/ncp-patch-format.d.ts.map +1 -0
  128. package/dist/ncp/ncp-patch-format.js +13 -0
  129. package/dist/ncp/ncp-patch-format.js.map +1 -0
  130. package/dist/ncp/registry.d.ts +3 -0
  131. package/dist/ncp/registry.d.ts.map +1 -0
  132. package/dist/ncp/registry.js +12 -0
  133. package/dist/ncp/registry.js.map +1 -0
  134. package/dist/ncp/stream-manager.d.ts +57 -0
  135. package/dist/ncp/stream-manager.d.ts.map +1 -0
  136. package/dist/ncp/stream-manager.js +163 -0
  137. package/dist/ncp/stream-manager.js.map +1 -0
  138. package/dist/ndp/frames.d.ts +56 -0
  139. package/dist/ndp/frames.d.ts.map +1 -0
  140. package/dist/ndp/frames.js +87 -0
  141. package/dist/ndp/frames.js.map +1 -0
  142. package/dist/ndp/index.cjs +252 -0
  143. package/dist/ndp/index.cjs.map +1 -0
  144. package/dist/ndp/index.d.cts +86 -0
  145. package/dist/ndp/index.d.ts +5 -0
  146. package/dist/ndp/index.d.ts.map +1 -0
  147. package/dist/ndp/index.js +7 -0
  148. package/dist/ndp/index.js.map +1 -0
  149. package/dist/ndp/ndp-registry.d.ts +11 -0
  150. package/dist/ndp/ndp-registry.d.ts.map +1 -0
  151. package/dist/ndp/ndp-registry.js +79 -0
  152. package/dist/ndp/ndp-registry.js.map +1 -0
  153. package/dist/ndp/registry.d.ts +3 -0
  154. package/dist/ndp/registry.d.ts.map +1 -0
  155. package/dist/ndp/registry.js +10 -0
  156. package/dist/ndp/registry.js.map +1 -0
  157. package/dist/ndp/validator.d.ts +18 -0
  158. package/dist/ndp/validator.d.ts.map +1 -0
  159. package/dist/ndp/validator.js +48 -0
  160. package/dist/ndp/validator.js.map +1 -0
  161. package/dist/nip/frames.d.ts +44 -0
  162. package/dist/nip/frames.d.ts.map +1 -0
  163. package/dist/nip/frames.js +81 -0
  164. package/dist/nip/frames.js.map +1 -0
  165. package/dist/nip/identity.d.ts +18 -0
  166. package/dist/nip/identity.d.ts.map +1 -0
  167. package/dist/nip/identity.js +94 -0
  168. package/dist/nip/identity.js.map +1 -0
  169. package/dist/nip/index.cjs +214 -0
  170. package/dist/nip/index.cjs.map +1 -0
  171. package/dist/nip/index.d.cts +65 -0
  172. package/dist/nip/index.d.ts +4 -0
  173. package/dist/nip/index.d.ts.map +1 -0
  174. package/dist/nip/index.js +6 -0
  175. package/dist/nip/index.js.map +1 -0
  176. package/dist/nip/registry.d.ts +3 -0
  177. package/dist/nip/registry.d.ts.map +1 -0
  178. package/dist/nip/registry.js +10 -0
  179. package/dist/nip/registry.js.map +1 -0
  180. package/dist/nop/client.d.ts +34 -0
  181. package/dist/nop/client.d.ts.map +1 -0
  182. package/dist/nop/client.js +90 -0
  183. package/dist/nop/client.js.map +1 -0
  184. package/dist/nop/frames.d.ts +65 -0
  185. package/dist/nop/frames.d.ts.map +1 -0
  186. package/dist/nop/frames.js +148 -0
  187. package/dist/nop/frames.js.map +1 -0
  188. package/dist/nop/index.cjs +762 -0
  189. package/dist/nop/index.cjs.map +1 -0
  190. package/dist/nop/index.d.cts +155 -0
  191. package/dist/nop/index.d.ts +5 -0
  192. package/dist/nop/index.d.ts.map +1 -0
  193. package/dist/nop/index.js +7 -0
  194. package/dist/nop/index.js.map +1 -0
  195. package/dist/nop/models.d.ts +58 -0
  196. package/dist/nop/models.d.ts.map +1 -0
  197. package/dist/nop/models.js +50 -0
  198. package/dist/nop/models.js.map +1 -0
  199. package/dist/nop/nop-types.d.ts +136 -0
  200. package/dist/nop/nop-types.d.ts.map +1 -0
  201. package/dist/nop/nop-types.js +44 -0
  202. package/dist/nop/nop-types.js.map +1 -0
  203. package/dist/nop/registry.d.ts +3 -0
  204. package/dist/nop/registry.d.ts.map +1 -0
  205. package/dist/nop/registry.js +11 -0
  206. package/dist/nop/registry.js.map +1 -0
  207. package/dist/nwp/client.d.ts +22 -0
  208. package/dist/nwp/client.d.ts.map +1 -0
  209. package/dist/nwp/client.js +101 -0
  210. package/dist/nwp/client.js.map +1 -0
  211. package/dist/nwp/frames.d.ts +46 -0
  212. package/dist/nwp/frames.d.ts.map +1 -0
  213. package/dist/nwp/frames.js +81 -0
  214. package/dist/nwp/frames.js.map +1 -0
  215. package/dist/nwp/index.cjs +658 -0
  216. package/dist/nwp/index.cjs.map +1 -0
  217. package/dist/nwp/index.d.cts +65 -0
  218. package/dist/nwp/index.d.ts +4 -0
  219. package/dist/nwp/index.d.ts.map +1 -0
  220. package/dist/nwp/index.js +6 -0
  221. package/dist/nwp/index.js.map +1 -0
  222. package/dist/nwp/registry.d.ts +3 -0
  223. package/dist/nwp/registry.d.ts.map +1 -0
  224. package/dist/nwp/registry.js +9 -0
  225. package/dist/nwp/registry.js.map +1 -0
  226. package/dist/setup.d.ts +10 -0
  227. package/dist/setup.d.ts.map +1 -0
  228. package/dist/setup.js +29 -0
  229. package/dist/setup.js.map +1 -0
  230. package/nip-ca-server/Dockerfile +27 -0
  231. package/nip-ca-server/README.md +45 -0
  232. package/nip-ca-server/db/001_init.sql +25 -0
  233. package/nip-ca-server/docker-compose.yml +29 -0
  234. package/nip-ca-server/package.json +23 -0
  235. package/nip-ca-server/src/ca.ts +155 -0
  236. package/nip-ca-server/src/db.ts +104 -0
  237. package/nip-ca-server/src/index.ts +157 -0
  238. package/nip-ca-server/tsconfig.json +13 -0
  239. package/package.json +47 -0
  240. package/src/core/anchor-cache.ts +129 -0
  241. package/src/core/cache.ts +93 -0
  242. package/src/core/canonical-json.ts +50 -0
  243. package/src/core/codec.ts +158 -0
  244. package/src/core/codecs/index.ts +5 -0
  245. package/src/core/codecs/ncp-codec.ts +170 -0
  246. package/src/core/codecs/tier1-json-codec.ts +33 -0
  247. package/src/core/codecs/tier2-msgpack-codec.ts +30 -0
  248. package/src/core/crypto-provider.ts +47 -0
  249. package/src/core/exceptions.ts +57 -0
  250. package/src/core/frame-header.ts +282 -0
  251. package/src/core/frame-registry.ts +91 -0
  252. package/src/core/frames.ts +183 -0
  253. package/src/core/index.ts +10 -0
  254. package/src/core/registry.ts +28 -0
  255. package/src/core/status-codes.ts +46 -0
  256. package/src/index.ts +10 -0
  257. package/src/ncp/frames/anchor-frame.ts +87 -0
  258. package/src/ncp/frames/caps-frame.ts +59 -0
  259. package/src/ncp/frames/diff-frame.ts +69 -0
  260. package/src/ncp/frames/error-frame.ts +26 -0
  261. package/src/ncp/frames/hello-frame.ts +50 -0
  262. package/src/ncp/frames/stream-frame.ts +35 -0
  263. package/src/ncp/frames.ts +199 -0
  264. package/src/ncp/handshake.ts +95 -0
  265. package/src/ncp/index.ts +12 -0
  266. package/src/ncp/ncp-error-codes.ts +34 -0
  267. package/src/ncp/ncp-patch-format.ts +16 -0
  268. package/src/ncp/registry.ts +14 -0
  269. package/src/ncp/stream-manager.ts +212 -0
  270. package/src/ndp/frames.ts +124 -0
  271. package/src/ndp/index.ts +7 -0
  272. package/src/ndp/ndp-registry.ts +82 -0
  273. package/src/ndp/registry.ts +12 -0
  274. package/src/ndp/validator.ts +64 -0
  275. package/src/nip/frames.ts +106 -0
  276. package/src/nip/identity.ts +113 -0
  277. package/src/nip/index.ts +6 -0
  278. package/src/nip/registry.ts +12 -0
  279. package/src/nop/client.ts +103 -0
  280. package/src/nop/frames.ts +181 -0
  281. package/src/nop/index.ts +7 -0
  282. package/src/nop/models.ts +79 -0
  283. package/src/nop/nop-types.ts +208 -0
  284. package/src/nop/registry.ts +13 -0
  285. package/src/nwp/client.ts +114 -0
  286. package/src/nwp/frames.ts +116 -0
  287. package/src/nwp/index.ts +6 -0
  288. package/src/nwp/registry.ts +11 -0
  289. package/src/setup.ts +32 -0
  290. package/tests/core/anchor-cache.test.ts +242 -0
  291. package/tests/core/codec.test.ts +205 -0
  292. package/tests/core/frame-registry.test.ts +46 -0
  293. package/tests/core.test.ts +327 -0
  294. package/tests/ncp/diff-binary-bitset.test.ts +107 -0
  295. package/tests/ncp/e2e-enc-reject.test.ts +93 -0
  296. package/tests/ncp/err-error-frame.test.ts +152 -0
  297. package/tests/ncp/frames.test.ts +359 -0
  298. package/tests/ncp/framing.test.ts +233 -0
  299. package/tests/ncp/hello-frame.test.ts +122 -0
  300. package/tests/ncp/inline-anchor.test.ts +88 -0
  301. package/tests/ncp/security.test.ts +184 -0
  302. package/tests/ncp/stream-window.test.ts +167 -0
  303. package/tests/ncp/stream.test.ts +242 -0
  304. package/tests/ncp/version-negotiation.test.ts +123 -0
  305. package/tests/ndp.test.ts +271 -0
  306. package/tests/nip.test.ts +184 -0
  307. package/tests/nop.test.ts +344 -0
  308. package/tests/nwp.test.ts +237 -0
  309. package/tsconfig.json +20 -0
  310. package/tsup.config.ts +20 -0
  311. package/vitest.config.ts +10 -0
@@ -0,0 +1,11 @@
1
+ // Copyright 2026 INNO LOTUS PTY LTD
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { FrameType } from "../core/frames.js";
4
+ import { AlignStreamFrame, DelegateFrame, SyncFrame, TaskFrame } from "./frames.js";
5
+ export function registerNopFrames(registry) {
6
+ registry.register(FrameType.TASK, TaskFrame);
7
+ registry.register(FrameType.DELEGATE, DelegateFrame);
8
+ registry.register(FrameType.SYNC, SyncFrame);
9
+ registry.register(FrameType.ALIGN_STREAM, AlignStreamFrame);
10
+ }
11
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/nop/registry.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpF,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAU,SAAS,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAM,aAAa,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAU,SAAS,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { EncodingTier } from "../core/frames.js";
2
+ import { FrameRegistry } from "../core/registry.js";
3
+ import { CapsFrame } from "../ncp/frames.js";
4
+ import type { StreamFrame } from "../ncp/frames.js";
5
+ import { ActionFrame } from "./frames.js";
6
+ import type { AnchorFrame } from "../ncp/frames.js";
7
+ import type { QueryFrame } from "./frames.js";
8
+ export declare class NwpClient {
9
+ private readonly _baseUrl;
10
+ private readonly _codec;
11
+ private readonly _tier;
12
+ constructor(baseUrl: string, options?: {
13
+ defaultTier?: EncodingTier;
14
+ maxPayload?: number;
15
+ registry?: FrameRegistry;
16
+ });
17
+ sendAnchor(frame: AnchorFrame): Promise<void>;
18
+ query(frame: QueryFrame): Promise<CapsFrame>;
19
+ stream(frame: QueryFrame): AsyncGenerator<StreamFrame>;
20
+ invoke(frame: ActionFrame): Promise<unknown>;
21
+ }
22
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/nwp/client.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAA+B,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,aAAa,CAAC;AAInE,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAGtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,YAAY,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;KAAO;IAevF,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAiB3C,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC;IAwBvD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBnD"}
@@ -0,0 +1,101 @@
1
+ // Copyright 2026 INNO LOTUS PTY LTD
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * NwpClient — async HTTP-mode client for NPS Neural Web Protocol nodes (NPS-2).
5
+ */
6
+ import { NpsFrameCodec } from "../core/codec.js";
7
+ import { EncodingTier } from "../core/frames.js";
8
+ import { FrameRegistry } from "../core/registry.js";
9
+ import { registerNcpFrames } from "../ncp/registry.js";
10
+ import { CapsFrame } from "../ncp/frames.js";
11
+ import { registerNwpFrames } from "./registry.js";
12
+ import { asyncActionResponseFromDict } from "./frames.js";
13
+ const CONTENT_TYPE = "application/x-nps-frame";
14
+ export class NwpClient {
15
+ _baseUrl;
16
+ _codec;
17
+ _tier;
18
+ constructor(baseUrl, options = {}) {
19
+ this._baseUrl = baseUrl.replace(/\/$/, "");
20
+ this._tier = options.defaultTier ?? EncodingTier.MSGPACK;
21
+ const registry = options.registry ?? (() => {
22
+ const r = new FrameRegistry();
23
+ registerNcpFrames(r);
24
+ registerNwpFrames(r);
25
+ return r;
26
+ })();
27
+ const codecOpts = options.maxPayload !== undefined ? { maxPayload: options.maxPayload } : {};
28
+ this._codec = new NpsFrameCodec(registry, codecOpts);
29
+ }
30
+ async sendAnchor(frame) {
31
+ const wire = this._codec.encode(frame, { overrideTier: this._tier });
32
+ const res = await fetch(`${this._baseUrl}/anchor`, {
33
+ method: "POST",
34
+ body: wire,
35
+ headers: { "Content-Type": CONTENT_TYPE, "Accept": CONTENT_TYPE },
36
+ });
37
+ if (!res.ok)
38
+ throw new Error(`NWP /anchor failed: HTTP ${res.status}`);
39
+ }
40
+ async query(frame) {
41
+ const wire = this._codec.encode(frame, { overrideTier: this._tier });
42
+ const res = await fetch(`${this._baseUrl}/query`, {
43
+ method: "POST",
44
+ body: wire,
45
+ headers: { "Content-Type": CONTENT_TYPE, "Accept": CONTENT_TYPE },
46
+ });
47
+ if (!res.ok)
48
+ throw new Error(`NWP /query failed: HTTP ${res.status}`);
49
+ const buf = new Uint8Array(await res.arrayBuffer());
50
+ const result = this._codec.decode(buf);
51
+ if (!(result instanceof CapsFrame)) {
52
+ throw new TypeError(`Expected CapsFrame from /query, got ${result.constructor.name}.`);
53
+ }
54
+ return result;
55
+ }
56
+ async *stream(frame) {
57
+ const wire = this._codec.encode(frame, { overrideTier: this._tier });
58
+ const res = await fetch(`${this._baseUrl}/stream`, {
59
+ method: "POST",
60
+ body: wire,
61
+ headers: { "Content-Type": CONTENT_TYPE, "Accept": CONTENT_TYPE },
62
+ });
63
+ if (!res.ok)
64
+ throw new Error(`NWP /stream failed: HTTP ${res.status}`);
65
+ if (res.body === null)
66
+ return;
67
+ const { StreamFrame: SF } = await import("../ncp/frames.js");
68
+ for await (const chunk of res.body) {
69
+ const bytes = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);
70
+ if (bytes.length === 0)
71
+ continue;
72
+ const result = this._codec.decode(bytes);
73
+ if (!(result instanceof SF)) {
74
+ throw new TypeError(`Expected StreamFrame from /stream, got ${result.constructor.name}.`);
75
+ }
76
+ yield result;
77
+ if (result.isLast)
78
+ break;
79
+ }
80
+ }
81
+ async invoke(frame) {
82
+ const wire = this._codec.encode(frame, { overrideTier: this._tier });
83
+ const res = await fetch(`${this._baseUrl}/invoke`, {
84
+ method: "POST",
85
+ body: wire,
86
+ headers: { "Content-Type": CONTENT_TYPE, "Accept": CONTENT_TYPE },
87
+ });
88
+ if (!res.ok)
89
+ throw new Error(`NWP /invoke failed: HTTP ${res.status}`);
90
+ if (frame.async_) {
91
+ return asyncActionResponseFromDict(await res.json());
92
+ }
93
+ const contentType = res.headers.get("content-type") ?? "";
94
+ if (contentType.includes(CONTENT_TYPE)) {
95
+ const buf = new Uint8Array(await res.arrayBuffer());
96
+ return this._codec.decode(buf);
97
+ }
98
+ return res.json();
99
+ }
100
+ }
101
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/nwp/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { EncodingTier, FrameType } from "../core/frames.js";
2
+ import type { NpsFrame } from "../core/codec.js";
3
+ export interface QueryOrderClause {
4
+ field: string;
5
+ dir: "asc" | "desc";
6
+ }
7
+ export interface VectorSearchOptions {
8
+ vector: readonly number[];
9
+ topK?: number;
10
+ minScore?: number;
11
+ vectorField?: string;
12
+ }
13
+ export declare class QueryFrame implements NpsFrame {
14
+ readonly anchorRef?: string | undefined;
15
+ readonly filter?: Record<string, unknown> | undefined;
16
+ readonly limit?: number | undefined;
17
+ readonly offset?: number | undefined;
18
+ readonly orderBy?: readonly QueryOrderClause[] | undefined;
19
+ readonly fields?: readonly string[] | undefined;
20
+ readonly vectorSearch?: VectorSearchOptions | undefined;
21
+ readonly depth?: number | undefined;
22
+ readonly frameType = FrameType.QUERY;
23
+ readonly preferredTier = EncodingTier.MSGPACK;
24
+ constructor(anchorRef?: string | undefined, filter?: Record<string, unknown> | undefined, limit?: number | undefined, offset?: number | undefined, orderBy?: readonly QueryOrderClause[] | undefined, fields?: readonly string[] | undefined, vectorSearch?: VectorSearchOptions | undefined, depth?: number | undefined);
25
+ toDict(): Record<string, unknown>;
26
+ static fromDict(data: Record<string, unknown>): QueryFrame;
27
+ }
28
+ export declare class ActionFrame implements NpsFrame {
29
+ readonly actionId: string;
30
+ readonly params?: Record<string, unknown> | undefined;
31
+ readonly async_?: boolean | undefined;
32
+ readonly idempotencyKey?: string | undefined;
33
+ readonly timeoutMs?: number | undefined;
34
+ readonly frameType = FrameType.ACTION;
35
+ readonly preferredTier = EncodingTier.MSGPACK;
36
+ constructor(actionId: string, params?: Record<string, unknown> | undefined, async_?: boolean | undefined, idempotencyKey?: string | undefined, timeoutMs?: number | undefined);
37
+ toDict(): Record<string, unknown>;
38
+ static fromDict(data: Record<string, unknown>): ActionFrame;
39
+ }
40
+ export interface AsyncActionResponse {
41
+ taskId: string;
42
+ status: string;
43
+ pollUrl?: string | undefined;
44
+ }
45
+ export declare function asyncActionResponseFromDict(data: Record<string, unknown>): AsyncActionResponse;
46
+ //# sourceMappingURL=frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/nwp/frames.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAI,KAAK,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAO,SAAS,MAAM,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAQ,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAI,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,qBAAa,UAAW,YAAW,QAAQ;aAKvB,SAAS,CAAC,EAAK,MAAM;aACrB,MAAM,CAAC,EAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;aACtC,KAAK,CAAC,EAAS,MAAM;aACrB,MAAM,CAAC,EAAQ,MAAM;aACrB,OAAO,CAAC,EAAO,SAAS,gBAAgB,EAAE;aAC1C,MAAM,CAAC,EAAQ,SAAS,MAAM,EAAE;aAChC,YAAY,CAAC,EAAE,mBAAmB;aAClC,KAAK,CAAC,EAAS,MAAM;IAXvC,QAAQ,CAAC,SAAS,mBAAuB;IACzC,QAAQ,CAAC,aAAa,wBAAwB;gBAG5B,SAAS,CAAC,EAAK,MAAM,YAAA,EACrB,MAAM,CAAC,EAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EACtC,KAAK,CAAC,EAAS,MAAM,YAAA,EACrB,MAAM,CAAC,EAAQ,MAAM,YAAA,EACrB,OAAO,CAAC,EAAO,SAAS,gBAAgB,EAAE,YAAA,EAC1C,MAAM,CAAC,EAAQ,SAAS,MAAM,EAAE,YAAA,EAChC,YAAY,CAAC,EAAE,mBAAmB,YAAA,EAClC,KAAK,CAAC,EAAS,MAAM,YAAA;IAGvC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAajC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAY3D;AAID,qBAAa,WAAY,YAAW,QAAQ;aAKxB,QAAQ,EAAS,MAAM;aACvB,MAAM,CAAC,EAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;aACxC,MAAM,CAAC,EAAU,OAAO;aACxB,cAAc,CAAC,EAAE,MAAM;aACvB,SAAS,CAAC,EAAO,MAAM;IARzC,QAAQ,CAAC,SAAS,oBAAwB;IAC1C,QAAQ,CAAC,aAAa,wBAAwB;gBAG5B,QAAQ,EAAS,MAAM,EACvB,MAAM,CAAC,EAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EACxC,MAAM,CAAC,EAAU,OAAO,YAAA,EACxB,cAAc,CAAC,EAAE,MAAM,YAAA,EACvB,SAAS,CAAC,EAAO,MAAM,YAAA;IAGzC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW;CAS5D;AAID,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAK,MAAM,CAAC;IAClB,MAAM,EAAK,MAAM,CAAC;IAClB,OAAO,CAAC,EAAG,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAQ9F"}
@@ -0,0 +1,81 @@
1
+ // Copyright 2026 INNO LOTUS PTY LTD
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { EncodingTier, FrameType } from "../core/frames.js";
4
+ // ── QueryFrame ────────────────────────────────────────────────────────────────
5
+ export class QueryFrame {
6
+ anchorRef;
7
+ filter;
8
+ limit;
9
+ offset;
10
+ orderBy;
11
+ fields;
12
+ vectorSearch;
13
+ depth;
14
+ frameType = FrameType.QUERY;
15
+ preferredTier = EncodingTier.MSGPACK;
16
+ constructor(anchorRef, filter, limit, offset, orderBy, fields, vectorSearch, depth) {
17
+ this.anchorRef = anchorRef;
18
+ this.filter = filter;
19
+ this.limit = limit;
20
+ this.offset = offset;
21
+ this.orderBy = orderBy;
22
+ this.fields = fields;
23
+ this.vectorSearch = vectorSearch;
24
+ this.depth = depth;
25
+ }
26
+ toDict() {
27
+ return {
28
+ anchor_ref: this.anchorRef ?? null,
29
+ filter: this.filter ?? null,
30
+ limit: this.limit ?? null,
31
+ offset: this.offset ?? null,
32
+ order_by: this.orderBy ?? null,
33
+ fields: this.fields ?? null,
34
+ vector_search: this.vectorSearch ?? null,
35
+ depth: this.depth ?? null,
36
+ };
37
+ }
38
+ static fromDict(data) {
39
+ return new QueryFrame(data["anchor_ref"] ?? undefined, data["filter"] ?? undefined, data["limit"] ?? undefined, data["offset"] ?? undefined, data["order_by"] ?? undefined, data["fields"] ?? undefined, data["vector_search"] ?? undefined, data["depth"] ?? undefined);
40
+ }
41
+ }
42
+ // ── ActionFrame ───────────────────────────────────────────────────────────────
43
+ export class ActionFrame {
44
+ actionId;
45
+ params;
46
+ async_;
47
+ idempotencyKey;
48
+ timeoutMs;
49
+ frameType = FrameType.ACTION;
50
+ preferredTier = EncodingTier.MSGPACK;
51
+ constructor(actionId, params, async_, idempotencyKey, timeoutMs) {
52
+ this.actionId = actionId;
53
+ this.params = params;
54
+ this.async_ = async_;
55
+ this.idempotencyKey = idempotencyKey;
56
+ this.timeoutMs = timeoutMs;
57
+ }
58
+ toDict() {
59
+ return {
60
+ action_id: this.actionId,
61
+ params: this.params ?? null,
62
+ async: this.async_ ?? false,
63
+ idempotency_key: this.idempotencyKey ?? null,
64
+ timeout_ms: this.timeoutMs ?? null,
65
+ };
66
+ }
67
+ static fromDict(data) {
68
+ return new ActionFrame(data["action_id"], data["params"] ?? undefined, data["async"] ?? undefined, data["idempotency_key"] ?? undefined, data["timeout_ms"] ?? undefined);
69
+ }
70
+ }
71
+ export function asyncActionResponseFromDict(data) {
72
+ const r = {
73
+ taskId: data["task_id"],
74
+ status: data["status"],
75
+ };
76
+ const pollUrl = data["poll_url"];
77
+ if (pollUrl != null)
78
+ r.pollUrl = pollUrl;
79
+ return r;
80
+ }
81
+ //# sourceMappingURL=frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/nwp/frames.ts"],"names":[],"mappings":"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"}