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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.cn.md +2 -73
  2. package/CHANGELOG.md +2 -82
  3. package/CONTRIBUTING.cn.md +0 -0
  4. package/CONTRIBUTING.md +0 -0
  5. package/LICENSE +0 -0
  6. package/NOTICE +0 -0
  7. package/README.cn.md +3 -3
  8. package/README.md +3 -3
  9. package/doc/nps-sdk.core.cn.md +0 -0
  10. package/doc/nps-sdk.core.md +0 -0
  11. package/doc/nps-sdk.ncp.cn.md +0 -0
  12. package/doc/nps-sdk.ncp.md +0 -0
  13. package/doc/nps-sdk.ndp.cn.md +0 -0
  14. package/doc/nps-sdk.ndp.md +0 -0
  15. package/doc/nps-sdk.nip.cn.md +30 -0
  16. package/doc/nps-sdk.nip.md +30 -0
  17. package/doc/nps-sdk.nop.cn.md +0 -0
  18. package/doc/nps-sdk.nop.md +0 -0
  19. package/doc/nps-sdk.nwp.cn.md +71 -0
  20. package/doc/nps-sdk.nwp.md +71 -0
  21. package/doc/overview.cn.md +0 -0
  22. package/doc/overview.md +0 -0
  23. package/nip-ca-server/Dockerfile +0 -0
  24. package/nip-ca-server/README.md +1 -1
  25. package/nip-ca-server/db/001_init.sql +0 -0
  26. package/nip-ca-server/docker-compose.yml +0 -0
  27. package/nip-ca-server/package.json +0 -0
  28. package/nip-ca-server/src/ca.ts +0 -0
  29. package/nip-ca-server/src/db.ts +0 -0
  30. package/nip-ca-server/src/index.ts +0 -0
  31. package/nip-ca-server/tsconfig.json +0 -0
  32. package/package.json +1 -1
  33. package/src/core/anchor-cache.ts +0 -0
  34. package/src/core/cache.ts +0 -0
  35. package/src/core/canonical-json.ts +0 -0
  36. package/src/core/codec.ts +0 -0
  37. package/src/core/codecs/index.ts +0 -0
  38. package/src/core/codecs/ncp-codec.ts +0 -0
  39. package/src/core/codecs/tier1-json-codec.ts +0 -0
  40. package/src/core/codecs/tier2-msgpack-codec.ts +0 -0
  41. package/src/core/crypto-provider.ts +0 -0
  42. package/src/core/exceptions.ts +0 -0
  43. package/src/core/frame-header.ts +0 -0
  44. package/src/core/frame-registry.ts +0 -0
  45. package/src/core/frames.ts +0 -0
  46. package/src/core/index.ts +0 -0
  47. package/src/core/registry.ts +0 -0
  48. package/src/core/status-codes.ts +1 -0
  49. package/src/ncp/frames/anchor-frame.ts +0 -0
  50. package/src/ncp/frames/caps-frame.ts +0 -0
  51. package/src/ncp/frames/diff-frame.ts +0 -0
  52. package/src/ncp/frames/error-frame.ts +0 -0
  53. package/src/ncp/frames/hello-frame.ts +0 -0
  54. package/src/ncp/frames/stream-frame.ts +0 -0
  55. package/src/ncp/frames.ts +0 -0
  56. package/src/ncp/handshake.ts +0 -0
  57. package/src/ncp/ncp-patch-format.ts +0 -0
  58. package/src/ncp/registry.ts +0 -0
  59. package/src/ncp/stream-manager.ts +0 -0
  60. package/src/ndp/dns-txt.ts +86 -0
  61. package/src/ndp/frames.ts +0 -0
  62. package/src/ndp/index.ts +1 -0
  63. package/src/ndp/ndp-registry.ts +34 -0
  64. package/src/ndp/registry.ts +0 -0
  65. package/src/ndp/validator.ts +0 -0
  66. package/src/nip/assurance-level.ts +6 -1
  67. package/src/nip/error-codes.ts +4 -2
  68. package/src/nip/identity.ts +0 -0
  69. package/src/nip/registry.ts +0 -0
  70. package/src/nip/x509/oids.ts +3 -4
  71. package/src/nop/client.ts +1 -1
  72. package/src/nop/frames.ts +0 -0
  73. package/src/nop/index.ts +0 -0
  74. package/src/nop/models.ts +0 -0
  75. package/src/nop/nop-types.ts +0 -0
  76. package/src/nop/registry.ts +0 -0
  77. package/src/nwp/client.ts +4 -4
  78. package/src/nwp/frames.ts +0 -0
  79. package/src/nwp/index.ts +0 -0
  80. package/src/nwp/registry.ts +0 -0
  81. package/src/setup.ts +0 -0
  82. package/tests/core/anchor-cache.test.ts +0 -0
  83. package/tests/core/codec.test.ts +0 -0
  84. package/tests/core/frame-registry.test.ts +0 -0
  85. package/tests/core.test.ts +0 -0
  86. package/tests/ncp/diff-binary-bitset.test.ts +0 -0
  87. package/tests/ncp/e2e-enc-reject.test.ts +0 -0
  88. package/tests/ncp/err-error-frame.test.ts +0 -0
  89. package/tests/ncp/frames.test.ts +0 -0
  90. package/tests/ncp/framing.test.ts +0 -0
  91. package/tests/ncp/hello-frame.test.ts +0 -0
  92. package/tests/ncp/inline-anchor.test.ts +0 -0
  93. package/tests/ncp/security.test.ts +0 -0
  94. package/tests/ncp/stream-window.test.ts +0 -0
  95. package/tests/ncp/stream.test.ts +0 -0
  96. package/tests/ncp/version-negotiation.test.ts +0 -0
  97. package/tests/ndp.test.ts +106 -0
  98. package/tests/nip.test.ts +0 -0
  99. package/tests/nop.test.ts +0 -0
  100. package/tests/nwp.test.ts +0 -0
  101. package/tsconfig.json +0 -0
  102. package/tsup.config.ts +0 -0
  103. package/vitest.config.ts +0 -0
  104. package/dist/core/anchor-cache.d.ts +0 -42
  105. package/dist/core/anchor-cache.d.ts.map +0 -1
  106. package/dist/core/anchor-cache.js +0 -104
  107. package/dist/core/anchor-cache.js.map +0 -1
  108. package/dist/core/cache.d.ts +0 -14
  109. package/dist/core/cache.d.ts.map +0 -1
  110. package/dist/core/cache.js +0 -80
  111. package/dist/core/cache.js.map +0 -1
  112. package/dist/core/canonical-json.d.ts +0 -12
  113. package/dist/core/canonical-json.d.ts.map +0 -1
  114. package/dist/core/canonical-json.js +0 -44
  115. package/dist/core/canonical-json.js.map +0 -1
  116. package/dist/core/codec.d.ts +0 -32
  117. package/dist/core/codec.d.ts.map +0 -1
  118. package/dist/core/codec.js +0 -119
  119. package/dist/core/codec.js.map +0 -1
  120. package/dist/core/codecs/index.d.ts +0 -4
  121. package/dist/core/codecs/index.d.ts.map +0 -1
  122. package/dist/core/codecs/index.js +0 -6
  123. package/dist/core/codecs/index.js.map +0 -1
  124. package/dist/core/codecs/ncp-codec.d.ts +0 -39
  125. package/dist/core/codecs/ncp-codec.d.ts.map +0 -1
  126. package/dist/core/codecs/ncp-codec.js +0 -93
  127. package/dist/core/codecs/ncp-codec.js.map +0 -1
  128. package/dist/core/codecs/tier1-json-codec.d.ts +0 -10
  129. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -1
  130. package/dist/core/codecs/tier1-json-codec.js +0 -28
  131. package/dist/core/codecs/tier1-json-codec.js.map +0 -1
  132. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -10
  133. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -1
  134. package/dist/core/codecs/tier2-msgpack-codec.js +0 -26
  135. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -1
  136. package/dist/core/crypto-provider.d.ts +0 -31
  137. package/dist/core/crypto-provider.d.ts.map +0 -1
  138. package/dist/core/crypto-provider.js +0 -10
  139. package/dist/core/crypto-provider.js.map +0 -1
  140. package/dist/core/exceptions.d.ts +0 -27
  141. package/dist/core/exceptions.d.ts.map +0 -1
  142. package/dist/core/exceptions.js +0 -52
  143. package/dist/core/exceptions.js.map +0 -1
  144. package/dist/core/frame-header.d.ts +0 -87
  145. package/dist/core/frame-header.d.ts.map +0 -1
  146. package/dist/core/frame-header.js +0 -185
  147. package/dist/core/frame-header.js.map +0 -1
  148. package/dist/core/frame-registry.d.ts +0 -35
  149. package/dist/core/frame-registry.d.ts.map +0 -1
  150. package/dist/core/frame-registry.js +0 -63
  151. package/dist/core/frame-registry.js.map +0 -1
  152. package/dist/core/frames.d.ts +0 -81
  153. package/dist/core/frames.d.ts.map +0 -1
  154. package/dist/core/frames.js +0 -154
  155. package/dist/core/frames.js.map +0 -1
  156. package/dist/core/index.d.ts +0 -11
  157. package/dist/core/index.d.ts.map +0 -1
  158. package/dist/core/index.js +0 -22
  159. package/dist/core/index.js.map +0 -1
  160. package/dist/core/registry.d.ts +0 -11
  161. package/dist/core/registry.d.ts.map +0 -1
  162. package/dist/core/registry.js +0 -17
  163. package/dist/core/registry.js.map +0 -1
  164. package/dist/core/status-codes.d.ts +0 -28
  165. package/dist/core/status-codes.d.ts.map +0 -1
  166. package/dist/core/status-codes.js +0 -38
  167. package/dist/core/status-codes.js.map +0 -1
  168. package/dist/index.d.ts +0 -2
  169. package/dist/index.d.ts.map +0 -1
  170. package/dist/index.js +0 -10
  171. package/dist/index.js.map +0 -1
  172. package/dist/ncp/frames/anchor-frame.d.ts +0 -29
  173. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -1
  174. package/dist/ncp/frames/anchor-frame.js +0 -54
  175. package/dist/ncp/frames/anchor-frame.js.map +0 -1
  176. package/dist/ncp/frames/caps-frame.d.ts +0 -29
  177. package/dist/ncp/frames/caps-frame.d.ts.map +0 -1
  178. package/dist/ncp/frames/caps-frame.js +0 -29
  179. package/dist/ncp/frames/caps-frame.js.map +0 -1
  180. package/dist/ncp/frames/diff-frame.d.ts +0 -32
  181. package/dist/ncp/frames/diff-frame.d.ts.map +0 -1
  182. package/dist/ncp/frames/diff-frame.js +0 -37
  183. package/dist/ncp/frames/diff-frame.js.map +0 -1
  184. package/dist/ncp/frames/error-frame.d.ts +0 -16
  185. package/dist/ncp/frames/error-frame.d.ts.map +0 -1
  186. package/dist/ncp/frames/error-frame.js +0 -13
  187. package/dist/ncp/frames/error-frame.js.map +0 -1
  188. package/dist/ncp/frames/hello-frame.d.ts +0 -21
  189. package/dist/ncp/frames/hello-frame.d.ts.map +0 -1
  190. package/dist/ncp/frames/hello-frame.js +0 -25
  191. package/dist/ncp/frames/hello-frame.js.map +0 -1
  192. package/dist/ncp/frames/stream-frame.d.ts +0 -16
  193. package/dist/ncp/frames/stream-frame.d.ts.map +0 -1
  194. package/dist/ncp/frames/stream-frame.js +0 -18
  195. package/dist/ncp/frames/stream-frame.js.map +0 -1
  196. package/dist/ncp/frames.d.ts +0 -94
  197. package/dist/ncp/frames.d.ts.map +0 -1
  198. package/dist/ncp/frames.js +0 -192
  199. package/dist/ncp/frames.js.map +0 -1
  200. package/dist/ncp/handshake.d.ts +0 -30
  201. package/dist/ncp/handshake.d.ts.map +0 -1
  202. package/dist/ncp/handshake.js +0 -80
  203. package/dist/ncp/handshake.js.map +0 -1
  204. package/dist/ncp/index.d.ts +0 -12
  205. package/dist/ncp/index.d.ts.map +0 -1
  206. package/dist/ncp/index.js +0 -14
  207. package/dist/ncp/index.js.map +0 -1
  208. package/dist/ncp/ncp-error-codes.d.ts +0 -23
  209. package/dist/ncp/ncp-error-codes.d.ts.map +0 -1
  210. package/dist/ncp/ncp-error-codes.js +0 -34
  211. package/dist/ncp/ncp-error-codes.js.map +0 -1
  212. package/dist/ncp/ncp-patch-format.d.ts +0 -7
  213. package/dist/ncp/ncp-patch-format.d.ts.map +0 -1
  214. package/dist/ncp/ncp-patch-format.js +0 -13
  215. package/dist/ncp/ncp-patch-format.js.map +0 -1
  216. package/dist/ncp/preamble.d.ts +0 -47
  217. package/dist/ncp/preamble.d.ts.map +0 -1
  218. package/dist/ncp/preamble.js +0 -74
  219. package/dist/ncp/preamble.js.map +0 -1
  220. package/dist/ncp/registry.d.ts +0 -3
  221. package/dist/ncp/registry.d.ts.map +0 -1
  222. package/dist/ncp/registry.js +0 -13
  223. package/dist/ncp/registry.js.map +0 -1
  224. package/dist/ncp/stream-manager.d.ts +0 -57
  225. package/dist/ncp/stream-manager.d.ts.map +0 -1
  226. package/dist/ncp/stream-manager.js +0 -163
  227. package/dist/ncp/stream-manager.js.map +0 -1
  228. package/dist/ndp/frames.d.ts +0 -56
  229. package/dist/ndp/frames.d.ts.map +0 -1
  230. package/dist/ndp/frames.js +0 -87
  231. package/dist/ndp/frames.js.map +0 -1
  232. package/dist/ndp/index.d.ts +0 -5
  233. package/dist/ndp/index.d.ts.map +0 -1
  234. package/dist/ndp/index.js +0 -7
  235. package/dist/ndp/index.js.map +0 -1
  236. package/dist/ndp/ndp-registry.d.ts +0 -11
  237. package/dist/ndp/ndp-registry.d.ts.map +0 -1
  238. package/dist/ndp/ndp-registry.js +0 -79
  239. package/dist/ndp/ndp-registry.js.map +0 -1
  240. package/dist/ndp/registry.d.ts +0 -3
  241. package/dist/ndp/registry.d.ts.map +0 -1
  242. package/dist/ndp/registry.js +0 -10
  243. package/dist/ndp/registry.js.map +0 -1
  244. package/dist/ndp/validator.d.ts +0 -18
  245. package/dist/ndp/validator.d.ts.map +0 -1
  246. package/dist/ndp/validator.js +0 -48
  247. package/dist/ndp/validator.js.map +0 -1
  248. package/dist/nip/acme/client.d.ts +0 -31
  249. package/dist/nip/acme/client.d.ts.map +0 -1
  250. package/dist/nip/acme/client.js +0 -136
  251. package/dist/nip/acme/client.js.map +0 -1
  252. package/dist/nip/acme/index.d.ts +0 -6
  253. package/dist/nip/acme/index.d.ts.map +0 -1
  254. package/dist/nip/acme/index.js +0 -8
  255. package/dist/nip/acme/index.js.map +0 -1
  256. package/dist/nip/acme/jws.d.ts +0 -31
  257. package/dist/nip/acme/jws.d.ts.map +0 -1
  258. package/dist/nip/acme/jws.js +0 -76
  259. package/dist/nip/acme/jws.js.map +0 -1
  260. package/dist/nip/acme/messages.d.ts +0 -71
  261. package/dist/nip/acme/messages.d.ts.map +0 -1
  262. package/dist/nip/acme/messages.js +0 -4
  263. package/dist/nip/acme/messages.js.map +0 -1
  264. package/dist/nip/acme/server.d.ts +0 -41
  265. package/dist/nip/acme/server.d.ts.map +0 -1
  266. package/dist/nip/acme/server.js +0 -458
  267. package/dist/nip/acme/server.js.map +0 -1
  268. package/dist/nip/acme/wire.d.ts +0 -19
  269. package/dist/nip/acme/wire.d.ts.map +0 -1
  270. package/dist/nip/acme/wire.js +0 -21
  271. package/dist/nip/acme/wire.js.map +0 -1
  272. package/dist/nip/assurance-level.d.ts +0 -14
  273. package/dist/nip/assurance-level.d.ts.map +0 -1
  274. package/dist/nip/assurance-level.js +0 -33
  275. package/dist/nip/assurance-level.js.map +0 -1
  276. package/dist/nip/cert-format.d.ts +0 -5
  277. package/dist/nip/cert-format.d.ts.map +0 -1
  278. package/dist/nip/cert-format.js +0 -6
  279. package/dist/nip/cert-format.js.map +0 -1
  280. package/dist/nip/error-codes.d.ts +0 -23
  281. package/dist/nip/error-codes.d.ts.map +0 -1
  282. package/dist/nip/error-codes.js +0 -30
  283. package/dist/nip/error-codes.js.map +0 -1
  284. package/dist/nip/frames.d.ts +0 -53
  285. package/dist/nip/frames.d.ts.map +0 -1
  286. package/dist/nip/frames.js +0 -106
  287. package/dist/nip/frames.js.map +0 -1
  288. package/dist/nip/identity.d.ts +0 -18
  289. package/dist/nip/identity.d.ts.map +0 -1
  290. package/dist/nip/identity.js +0 -94
  291. package/dist/nip/identity.js.map +0 -1
  292. package/dist/nip/index.d.ts +0 -10
  293. package/dist/nip/index.d.ts.map +0 -1
  294. package/dist/nip/index.js +0 -13
  295. package/dist/nip/index.js.map +0 -1
  296. package/dist/nip/registry.d.ts +0 -3
  297. package/dist/nip/registry.d.ts.map +0 -1
  298. package/dist/nip/registry.js +0 -10
  299. package/dist/nip/registry.js.map +0 -1
  300. package/dist/nip/verifier.d.ts +0 -23
  301. package/dist/nip/verifier.d.ts.map +0 -1
  302. package/dist/nip/verifier.js +0 -90
  303. package/dist/nip/verifier.js.map +0 -1
  304. package/dist/nip/x509/builder.d.ts +0 -35
  305. package/dist/nip/x509/builder.d.ts.map +0 -1
  306. package/dist/nip/x509/builder.js +0 -59
  307. package/dist/nip/x509/builder.js.map +0 -1
  308. package/dist/nip/x509/index.d.ts +0 -4
  309. package/dist/nip/x509/index.d.ts.map +0 -1
  310. package/dist/nip/x509/index.js +0 -6
  311. package/dist/nip/x509/index.js.map +0 -1
  312. package/dist/nip/x509/oids.d.ts +0 -17
  313. package/dist/nip/x509/oids.d.ts.map +0 -1
  314. package/dist/nip/x509/oids.js +0 -23
  315. package/dist/nip/x509/oids.js.map +0 -1
  316. package/dist/nip/x509/verifier.d.ts +0 -26
  317. package/dist/nip/x509/verifier.d.ts.map +0 -1
  318. package/dist/nip/x509/verifier.js +0 -171
  319. package/dist/nip/x509/verifier.js.map +0 -1
  320. package/dist/nop/client.d.ts +0 -34
  321. package/dist/nop/client.d.ts.map +0 -1
  322. package/dist/nop/client.js +0 -90
  323. package/dist/nop/client.js.map +0 -1
  324. package/dist/nop/frames.d.ts +0 -65
  325. package/dist/nop/frames.d.ts.map +0 -1
  326. package/dist/nop/frames.js +0 -148
  327. package/dist/nop/frames.js.map +0 -1
  328. package/dist/nop/index.d.ts +0 -5
  329. package/dist/nop/index.d.ts.map +0 -1
  330. package/dist/nop/index.js +0 -7
  331. package/dist/nop/index.js.map +0 -1
  332. package/dist/nop/models.d.ts +0 -58
  333. package/dist/nop/models.d.ts.map +0 -1
  334. package/dist/nop/models.js +0 -50
  335. package/dist/nop/models.js.map +0 -1
  336. package/dist/nop/nop-types.d.ts +0 -136
  337. package/dist/nop/nop-types.d.ts.map +0 -1
  338. package/dist/nop/nop-types.js +0 -44
  339. package/dist/nop/nop-types.js.map +0 -1
  340. package/dist/nop/registry.d.ts +0 -3
  341. package/dist/nop/registry.d.ts.map +0 -1
  342. package/dist/nop/registry.js +0 -11
  343. package/dist/nop/registry.js.map +0 -1
  344. package/dist/nwp/client.d.ts +0 -22
  345. package/dist/nwp/client.d.ts.map +0 -1
  346. package/dist/nwp/client.js +0 -101
  347. package/dist/nwp/client.js.map +0 -1
  348. package/dist/nwp/frames.d.ts +0 -46
  349. package/dist/nwp/frames.d.ts.map +0 -1
  350. package/dist/nwp/frames.js +0 -81
  351. package/dist/nwp/frames.js.map +0 -1
  352. package/dist/nwp/index.d.ts +0 -4
  353. package/dist/nwp/index.d.ts.map +0 -1
  354. package/dist/nwp/index.js +0 -6
  355. package/dist/nwp/index.js.map +0 -1
  356. package/dist/nwp/registry.d.ts +0 -3
  357. package/dist/nwp/registry.d.ts.map +0 -1
  358. package/dist/nwp/registry.js +0 -9
  359. package/dist/nwp/registry.js.map +0 -1
  360. package/dist/setup.d.ts +0 -10
  361. package/dist/setup.d.ts.map +0 -1
  362. package/dist/setup.js +0 -29
  363. package/dist/setup.js.map +0 -1
@@ -1,59 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- /**
4
- * Issues NPS X.509 NID certificates per NPS-RFC-0002 §4.
5
- *
6
- * Backed by @peculiar/x509 + Web Crypto Ed25519 (Node 22+).
7
- *
8
- * Two factory functions:
9
- * - {@link issueLeaf} — leaf cert with critical NPS EKU + SAN URI = NID + assurance-level extension.
10
- * - {@link issueRoot} — self-signed root for testing / private-CA use.
11
- */
12
- import * as x509 from "@peculiar/x509";
13
- import { EKU_AGENT_IDENTITY, EKU_NODE_IDENTITY, NID_ASSURANCE_LEVEL } from "./oids.js";
14
- // Initialize @peculiar/x509 cryptoProvider once on first import. Web Crypto
15
- // (globalThis.crypto) supports Ed25519 in Node 18+.
16
- x509.cryptoProvider.set(globalThis.crypto);
17
- /** Issue a leaf NPS NID certificate (RFC-0002 §4.1). */
18
- export async function issueLeaf(opts) {
19
- const ekuOid = opts.role === "node" ? EKU_NODE_IDENTITY : EKU_AGENT_IDENTITY;
20
- // ASN.1 ENUMERATED encoding of assurance level: tag=0x0A, len=0x01, value=<rank>.
21
- const assuranceDer = new Uint8Array([0x0A, 0x01, opts.assuranceLevel.rank]);
22
- return x509.X509CertificateGenerator.create({
23
- serialNumber: opts.serialNumber,
24
- issuer: `CN=${escapeDn(opts.issuerNid)}`,
25
- subject: `CN=${escapeDn(opts.subjectNid)}`,
26
- notBefore: opts.notBefore,
27
- notAfter: opts.notAfter,
28
- publicKey: opts.subjectPublicKey,
29
- signingAlgorithm: { name: "Ed25519" },
30
- signingKey: opts.caKeys.privateKey,
31
- extensions: [
32
- new x509.BasicConstraintsExtension(false, undefined, true),
33
- new x509.KeyUsagesExtension(x509.KeyUsageFlags.digitalSignature, true),
34
- new x509.ExtendedKeyUsageExtension([ekuOid], true),
35
- new x509.SubjectAlternativeNameExtension([{ type: "url", value: opts.subjectNid }], false),
36
- new x509.Extension(NID_ASSURANCE_LEVEL, false, assuranceDer),
37
- ],
38
- });
39
- }
40
- /** Issue a self-signed CA root cert (testing / private CA). */
41
- export async function issueRoot(opts) {
42
- return x509.X509CertificateGenerator.createSelfSigned({
43
- serialNumber: opts.serialNumber,
44
- name: `CN=${escapeDn(opts.caNid)}`,
45
- notBefore: opts.notBefore,
46
- notAfter: opts.notAfter,
47
- signingAlgorithm: { name: "Ed25519" },
48
- keys: opts.caKeys,
49
- extensions: [
50
- new x509.BasicConstraintsExtension(true, undefined, true),
51
- new x509.KeyUsagesExtension(x509.KeyUsageFlags.keyCertSign | x509.KeyUsageFlags.cRLSign, true),
52
- ],
53
- });
54
- }
55
- function escapeDn(value) {
56
- // Escape characters that have special meaning in RFC 4514 DN syntax.
57
- return value.replace(/([",+;<>\\])/g, "\\$1");
58
- }
59
- //# sourceMappingURL=builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/nip/x509/builder.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAGvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEvF,4EAA4E;AAC5E,oDAAoD;AACpD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAwB3C,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAE7E,kFAAkF;IAClF,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5E,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;QAC1C,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,MAAM,EAAQ,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC9C,OAAO,EAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QAC/C,SAAS,EAAK,IAAI,CAAC,SAAS;QAC5B,QAAQ,EAAM,IAAI,CAAC,QAAQ;QAC3B,SAAS,EAAK,IAAI,CAAC,gBAAgB;QACnC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,UAAU,EAAI,IAAI,CAAC,MAAM,CAAC,UAAU;QACpC,UAAU,EAAE;YACV,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC;YAC1D,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACtE,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;YAClD,IAAI,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC;YAC1F,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,KAAK,EAAE,YAAY,CAAC;SAC7D;KACF,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,OAAO,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;QACpD,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,IAAI,EAAU,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC1C,SAAS,EAAK,IAAI,CAAC,SAAS;QAC5B,QAAQ,EAAM,IAAI,CAAC,QAAQ;QAC3B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,IAAI,EAAU,IAAI,CAAC,MAAM;QACzB,UAAU,EAAE;YACV,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;YACzD,IAAI,IAAI,CAAC,kBAAkB,CACzB,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;SACrE;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,qEAAqE;IACrE,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from "./builder.js";
2
- export * from "./oids.js";
3
- export * from "./verifier.js";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nip/x509/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
@@ -1,6 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- export * from "./builder.js";
4
- export * from "./oids.js";
5
- export * from "./verifier.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nip/x509/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * OID constants for NPS X.509 certificates per NPS-RFC-0002 §4.
3
- *
4
- * The 1.3.6.1.4.1.99999 arc is provisional pending IANA Private Enterprise
5
- * Number assignment (RFC-0002 §10 OQ-2). All implementations MUST update
6
- * these constants when the official PEN is granted.
7
- */
8
- export declare const LAB_ACACIA_PEN_ARC = "1.3.6.1.4.1.99999";
9
- export declare const EKU_ARC = "1.3.6.1.4.1.99999.1";
10
- export declare const EXTENSION_ARC = "1.3.6.1.4.1.99999.2";
11
- export declare const EKU_AGENT_IDENTITY = "1.3.6.1.4.1.99999.1.1";
12
- export declare const EKU_NODE_IDENTITY = "1.3.6.1.4.1.99999.1.2";
13
- export declare const EKU_CA_INTERMEDIATE_AGENT = "1.3.6.1.4.1.99999.1.3";
14
- export declare const NID_ASSURANCE_LEVEL = "1.3.6.1.4.1.99999.2.1";
15
- export declare const ED25519 = "1.3.101.112";
16
- export declare const OID_EXTENDED_KEY_USAGE = "2.5.29.37";
17
- //# sourceMappingURL=oids.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oids.d.ts","sourceRoot":"","sources":["../../../src/nip/x509/oids.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,OAAO,wBAAuC,CAAC;AAC5D,eAAO,MAAM,aAAa,wBAAiC,CAAC;AAG5D,eAAO,MAAM,kBAAkB,0BAAwB,CAAC;AACxD,eAAO,MAAM,iBAAiB,0BAAyB,CAAC;AACxD,eAAO,MAAM,yBAAyB,0BAAiB,CAAC;AAGxD,eAAO,MAAM,mBAAmB,0BAAuB,CAAC;AAGxD,eAAO,MAAM,OAAO,gBAAgB,CAAC;AAGrC,eAAO,MAAM,sBAAsB,cAAc,CAAC"}
@@ -1,23 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- /**
4
- * OID constants for NPS X.509 certificates per NPS-RFC-0002 §4.
5
- *
6
- * The 1.3.6.1.4.1.99999 arc is provisional pending IANA Private Enterprise
7
- * Number assignment (RFC-0002 §10 OQ-2). All implementations MUST update
8
- * these constants when the official PEN is granted.
9
- */
10
- export const LAB_ACACIA_PEN_ARC = "1.3.6.1.4.1.99999";
11
- export const EKU_ARC = `${LAB_ACACIA_PEN_ARC}.1`;
12
- export const EXTENSION_ARC = `${LAB_ACACIA_PEN_ARC}.2`;
13
- // ── EKUs (NPS-RFC-0002 §4.1) ─────────────────────────────────────────────────
14
- export const EKU_AGENT_IDENTITY = `${EKU_ARC}.1`;
15
- export const EKU_NODE_IDENTITY = `${EKU_ARC}.2`;
16
- export const EKU_CA_INTERMEDIATE_AGENT = `${EKU_ARC}.3`;
17
- // ── Custom extensions ────────────────────────────────────────────────────────
18
- export const NID_ASSURANCE_LEVEL = `${EXTENSION_ARC}.1`;
19
- // ── Ed25519 algorithm OID per RFC 8410 ───────────────────────────────────────
20
- export const ED25519 = "1.3.101.112";
21
- // ── Standard X.509 OIDs we reference ─────────────────────────────────────────
22
- export const OID_EXTENDED_KEY_USAGE = "2.5.29.37";
23
- //# sourceMappingURL=oids.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oids.js","sourceRoot":"","sources":["../../../src/nip/x509/oids.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,OAAO,GAAc,GAAG,kBAAkB,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAQ,GAAG,kBAAkB,IAAI,CAAC;AAE5D,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAU,GAAG,OAAO,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAW,GAAG,OAAO,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,OAAO,IAAI,CAAC;AAExD,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,aAAa,IAAI,CAAC;AAExD,gFAAgF;AAChF,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Verifies NPS X.509 NID certificate chains per NPS-RFC-0002 §4.
3
- *
4
- * Stages (RFC §4.6):
5
- * 1. Decode chain (base64url DER → @peculiar/x509 X509Certificate).
6
- * 2. Leaf EKU check — critical, contains agent-identity OR node-identity OID.
7
- * 3. Subject CN / SAN URI match against asserted NID.
8
- * 4. Assurance-level extension match against asserted level (if both present).
9
- * 5. Chain signature verification — leaf → intermediates → trusted root.
10
- */
11
- import * as x509 from "@peculiar/x509";
12
- import { AssuranceLevel } from "../assurance-level.js";
13
- export interface NipX509VerifyResult {
14
- valid: boolean;
15
- errorCode?: string;
16
- message?: string;
17
- leaf?: x509.X509Certificate;
18
- }
19
- export interface VerifyOptions {
20
- certChainBase64UrlDer: readonly string[];
21
- assertedNid: string;
22
- assertedAssuranceLevel: AssuranceLevel | null;
23
- trustedRootCerts: readonly x509.X509Certificate[];
24
- }
25
- export declare function verify(opts: VerifyOptions): Promise<NipX509VerifyResult>;
26
- //# sourceMappingURL=verifier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../../src/nip/x509/verifier.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAWvD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAQ,OAAO,CAAC;IACrB,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAK,MAAM,CAAC;IACpB,IAAI,CAAC,EAAQ,IAAI,CAAC,eAAe,CAAC;CACnC;AAUD,MAAM,WAAW,aAAa;IAC5B,qBAAqB,EAAK,SAAS,MAAM,EAAE,CAAC;IAC5C,WAAW,EAAe,MAAM,CAAC;IACjC,sBAAsB,EAAI,cAAc,GAAG,IAAI,CAAC;IAChD,gBAAgB,EAAU,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;CAC3D;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA+B9E"}
@@ -1,171 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- /**
4
- * Verifies NPS X.509 NID certificate chains per NPS-RFC-0002 §4.
5
- *
6
- * Stages (RFC §4.6):
7
- * 1. Decode chain (base64url DER → @peculiar/x509 X509Certificate).
8
- * 2. Leaf EKU check — critical, contains agent-identity OR node-identity OID.
9
- * 3. Subject CN / SAN URI match against asserted NID.
10
- * 4. Assurance-level extension match against asserted level (if both present).
11
- * 5. Chain signature verification — leaf → intermediates → trusted root.
12
- */
13
- import * as x509 from "@peculiar/x509";
14
- import { AssuranceLevel } from "../assurance-level.js";
15
- import * as ec from "../error-codes.js";
16
- import { EKU_AGENT_IDENTITY, EKU_NODE_IDENTITY, NID_ASSURANCE_LEVEL, OID_EXTENDED_KEY_USAGE, } from "./oids.js";
17
- x509.cryptoProvider.set(globalThis.crypto);
18
- function ok(leaf) {
19
- return { valid: true, leaf };
20
- }
21
- function fail(errorCode, message) {
22
- return { valid: false, errorCode, message };
23
- }
24
- export async function verify(opts) {
25
- // Stage 1: decode chain ─────────────────────────────────────────────────
26
- if (!opts.certChainBase64UrlDer.length) {
27
- return fail(ec.CERT_FORMAT_INVALID, "cert_chain is empty");
28
- }
29
- let chain;
30
- try {
31
- chain = opts.certChainBase64UrlDer.map((s) => new x509.X509Certificate(b64uDecode(s).buffer));
32
- }
33
- catch (e) {
34
- return fail(ec.CERT_FORMAT_INVALID, `DER decode failed: ${e.message}`);
35
- }
36
- const leaf = chain[0];
37
- // Stage 2: EKU check ────────────────────────────────────────────────────
38
- const ekuResult = checkLeafEku(leaf);
39
- if (!ekuResult.valid)
40
- return ekuResult;
41
- // Stage 3: subject CN / SAN URI match ──────────────────────────────────
42
- const subjectResult = checkSubjectNid(leaf, opts.assertedNid);
43
- if (!subjectResult.valid)
44
- return subjectResult;
45
- // Stage 4: assurance-level extension ───────────────────────────────────
46
- const assuranceResult = checkAssuranceLevel(leaf, opts.assertedAssuranceLevel);
47
- if (!assuranceResult.valid)
48
- return assuranceResult;
49
- // Stage 5: chain signature verification ────────────────────────────────
50
- const chainResult = await checkChainSignature(chain, opts.trustedRootCerts);
51
- if (!chainResult.valid)
52
- return chainResult;
53
- return ok(leaf);
54
- }
55
- // ── Stage helpers ──────────────────────────────────────────────────────────
56
- function checkLeafEku(leaf) {
57
- const ekuExt = leaf.extensions.find((e) => e.type === OID_EXTENDED_KEY_USAGE);
58
- if (!ekuExt) {
59
- return fail(ec.CERT_EKU_MISSING, "leaf has no ExtendedKeyUsage extension");
60
- }
61
- if (!ekuExt.critical) {
62
- return fail(ec.CERT_EKU_MISSING, "ExtendedKeyUsage extension is not marked critical");
63
- }
64
- const usages = ekuExt.usages;
65
- if (!usages.includes(EKU_AGENT_IDENTITY) && !usages.includes(EKU_NODE_IDENTITY)) {
66
- return fail(ec.CERT_EKU_MISSING, "ExtendedKeyUsage does not contain agent-identity or node-identity OID");
67
- }
68
- return ok(leaf);
69
- }
70
- function checkSubjectNid(leaf, assertedNid) {
71
- // @peculiar/x509 parses the subject DN; iterate to find CN.
72
- const cn = extractCn(leaf.subject);
73
- if (cn !== assertedNid) {
74
- return fail(ec.CERT_SUBJECT_NID_MISMATCH, `leaf subject CN (${cn ?? "<missing>"}) does not match asserted NID (${assertedNid})`);
75
- }
76
- const sanExt = leaf.getExtension(x509.SubjectAlternativeNameExtension);
77
- if (!sanExt) {
78
- return fail(ec.CERT_SUBJECT_NID_MISMATCH, "leaf has no Subject Alternative Name extension");
79
- }
80
- // SubjectAlternativeNameExtension exposes general-name objects with `type: "url"` for URIs.
81
- const uris = sanExt.names
82
- .toJSON()
83
- .filter((n) => n.type === "url")
84
- .map((n) => n.value);
85
- if (!uris.includes(assertedNid)) {
86
- return fail(ec.CERT_SUBJECT_NID_MISMATCH, "no SAN URI matches asserted NID");
87
- }
88
- return ok(leaf);
89
- }
90
- function checkAssuranceLevel(leaf, asserted) {
91
- if (asserted === null)
92
- return ok(leaf);
93
- const ext = leaf.extensions.find((e) => e.type === NID_ASSURANCE_LEVEL);
94
- if (!ext) {
95
- // Optional in v0.1 — pass silently.
96
- return ok(leaf);
97
- }
98
- const der = new Uint8Array(ext.value);
99
- // Decode ASN.1 ENUMERATED: tag=0x0A, len=0x01, content=<rank>.
100
- if (der.length !== 3 || der[0] !== 0x0A || der[1] !== 0x01) {
101
- return fail(ec.CERT_FORMAT_INVALID, `malformed assurance-level extension: ${Buffer.from(der).toString("hex")}`);
102
- }
103
- const rank = der[2];
104
- let certLevel;
105
- try {
106
- certLevel = AssuranceLevel.fromRank(rank);
107
- }
108
- catch {
109
- return fail(ec.ASSURANCE_UNKNOWN, `assurance-level extension contains unknown value: ${rank}`);
110
- }
111
- if (certLevel !== asserted) {
112
- return fail(ec.ASSURANCE_MISMATCH, `cert assurance-level (${certLevel.wire}) does not match asserted (${asserted.wire})`);
113
- }
114
- return ok(leaf);
115
- }
116
- async function checkChainSignature(chain, trustedRoots) {
117
- if (!trustedRoots.length) {
118
- return fail(ec.CERT_FORMAT_INVALID, "no trusted X.509 roots configured");
119
- }
120
- try {
121
- // Walk leaf → intermediates: each must be signed by its successor.
122
- for (let i = 0; i < chain.length - 1; i++) {
123
- const okStep = await chain[i].verify({ publicKey: await chain[i + 1].publicKey.export(), signatureOnly: true });
124
- if (!okStep) {
125
- return fail(ec.CERT_FORMAT_INVALID, `chain link ${i} signature did not verify`);
126
- }
127
- }
128
- // The last cert in the chain MUST chain to a trusted root.
129
- const last = chain[chain.length - 1];
130
- for (const root of trustedRoots) {
131
- if (Buffer.from(last.rawData).equals(Buffer.from(root.rawData))) {
132
- return ok(chain[0]);
133
- }
134
- try {
135
- const okStep = await last.verify({ publicKey: await root.publicKey.export(), signatureOnly: true });
136
- if (okStep)
137
- return ok(chain[0]);
138
- }
139
- catch {
140
- /* try next root */
141
- }
142
- }
143
- return fail(ec.CERT_FORMAT_INVALID, "chain does not anchor to any trusted root");
144
- }
145
- catch (e) {
146
- return fail(ec.CERT_FORMAT_INVALID, `chain signature verification error: ${e.message}`);
147
- }
148
- }
149
- // ── helpers ────────────────────────────────────────────────────────────────
150
- function extractCn(dn) {
151
- // @peculiar/x509 returns DN strings in RFC 4514 format ("CN=...,O=...").
152
- for (const rdn of dn.split(",")) {
153
- const trimmed = rdn.trim();
154
- if (trimmed.startsWith("CN=")) {
155
- let value = trimmed.slice(3);
156
- // Strip surrounding quotes if any.
157
- if (value.startsWith("\"") && value.endsWith("\"")) {
158
- value = value.slice(1, -1);
159
- }
160
- // Unescape.
161
- return value.replace(/\\([",+;<>\\])/g, "$1");
162
- }
163
- }
164
- return null;
165
- }
166
- function b64uDecode(s) {
167
- const padded = s + "=".repeat((4 - (s.length % 4)) % 4);
168
- const std = padded.replace(/-/g, "+").replace(/_/g, "/");
169
- return new Uint8Array(Buffer.from(std, "base64"));
170
- }
171
- //# sourceMappingURL=verifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../src/nip/x509/verifier.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { EncodingTier } from "../core/frames.js";
2
- import { FrameRegistry } from "../core/registry.js";
3
- import { TaskState } from "./models.js";
4
- import type { TaskFrame } from "./frames.js";
5
- export declare class NopTaskStatus {
6
- private readonly _raw;
7
- constructor(_raw: Record<string, unknown>);
8
- get taskId(): string;
9
- get state(): TaskState;
10
- get isTerminal(): boolean;
11
- get aggregatedResult(): unknown;
12
- get errorCode(): string | undefined;
13
- get errorMessage(): string | undefined;
14
- get nodeResults(): Record<string, unknown>;
15
- get raw(): Record<string, unknown>;
16
- toString(): string;
17
- }
18
- export declare class NopClient {
19
- private readonly _baseUrl;
20
- private readonly _codec;
21
- private readonly _tier;
22
- constructor(baseUrl: string, options?: {
23
- defaultTier?: EncodingTier;
24
- registry?: FrameRegistry;
25
- });
26
- submit(frame: TaskFrame): Promise<string>;
27
- getStatus(taskId: string): Promise<NopTaskStatus>;
28
- cancel(taskId: string): Promise<void>;
29
- wait(taskId: string, options?: {
30
- pollIntervalMs?: number;
31
- timeoutMs?: number;
32
- }): Promise<NopTaskStatus>;
33
- }
34
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/nop/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1D,IAAI,MAAM,IAAc,MAAM,CAAyD;IACvF,IAAI,KAAK,IAAe,SAAS,CAAsD;IACvF,IAAI,UAAU,IAAU,OAAO,CAA6E;IAC5G,IAAI,gBAAgB,IAAI,OAAO,CAAuD;IACtF,IAAI,SAAS,IAAW,MAAM,GAAG,SAAS,CAAwE;IAClH,IAAI,YAAY,IAAQ,MAAM,GAAG,SAAS,CAAwE;IAClH,IAAI,WAAW,IAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAqF;IACpI,IAAI,GAAG,IAAiB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAsB;IAErE,QAAQ,IAAI,MAAM;CAGnB;AAED,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,QAAQ,CAAC,EAAE,aAAa,CAAA;KAAO;IAclE,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQjD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,IAAI,CACR,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC5D,OAAO,CAAC,aAAa,CAAC;CAgB1B"}
@@ -1,90 +0,0 @@
1
- // Copyright 2026 INNO LOTUS PTY LTD
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { NpsFrameCodec } from "../core/codec.js";
4
- import { EncodingTier } from "../core/frames.js";
5
- import { FrameRegistry } from "../core/registry.js";
6
- import { registerNcpFrames } from "../ncp/registry.js";
7
- import { registerNopFrames } from "./registry.js";
8
- import { TaskState } from "./models.js";
9
- const TERMINAL_STATES = new Set([
10
- TaskState.COMPLETED,
11
- TaskState.FAILED,
12
- TaskState.CANCELLED,
13
- ]);
14
- export class NopTaskStatus {
15
- _raw;
16
- constructor(_raw) {
17
- this._raw = _raw;
18
- }
19
- get taskId() { return this._raw["task_id"]; }
20
- get state() { return this._raw["state"]; }
21
- get isTerminal() { return TERMINAL_STATES.has(this._raw["state"]); }
22
- get aggregatedResult() { return this._raw["aggregated_result"]; }
23
- get errorCode() { return this._raw["error_code"] ?? undefined; }
24
- get errorMessage() { return this._raw["error_message"] ?? undefined; }
25
- get nodeResults() { return this._raw["node_results"] ?? {}; }
26
- get raw() { return this._raw; }
27
- toString() {
28
- return `NopTaskStatus(taskId=${this.taskId}, state=${String(this._raw["state"])})`;
29
- }
30
- }
31
- export class NopClient {
32
- _baseUrl;
33
- _codec;
34
- _tier;
35
- constructor(baseUrl, options = {}) {
36
- this._baseUrl = baseUrl.replace(/\/$/, "");
37
- this._tier = options.defaultTier ?? EncodingTier.MSGPACK;
38
- const registry = options.registry ?? (() => {
39
- const r = new FrameRegistry();
40
- registerNcpFrames(r);
41
- registerNopFrames(r);
42
- return r;
43
- })();
44
- this._codec = new NpsFrameCodec(registry);
45
- }
46
- async submit(frame) {
47
- const wire = this._codec.encode(frame, { overrideTier: this._tier });
48
- const res = await fetch(`${this._baseUrl}/task`, {
49
- method: "POST",
50
- body: wire,
51
- headers: { "Content-Type": "application/x-nps-frame", "Accept": "application/json" },
52
- });
53
- if (!res.ok)
54
- throw new Error(`NOP /task failed: HTTP ${res.status}`);
55
- const data = await res.json();
56
- return data["task_id"];
57
- }
58
- async getStatus(taskId) {
59
- const res = await fetch(`${this._baseUrl}/task/${taskId}`, {
60
- headers: { "Accept": "application/json" },
61
- });
62
- if (!res.ok)
63
- throw new Error(`NOP /task/${taskId} failed: HTTP ${res.status}`);
64
- return new NopTaskStatus(await res.json());
65
- }
66
- async cancel(taskId) {
67
- const res = await fetch(`${this._baseUrl}/task/${taskId}/cancel`, {
68
- method: "POST",
69
- headers: { "Accept": "application/json" },
70
- });
71
- if (!res.ok)
72
- throw new Error(`NOP /task/${taskId}/cancel failed: HTTP ${res.status}`);
73
- }
74
- async wait(taskId, options = {}) {
75
- const pollIntervalMs = options.pollIntervalMs ?? 1000;
76
- const timeoutMs = options.timeoutMs ?? 30_000;
77
- const deadline = Date.now() + timeoutMs;
78
- while (true) {
79
- const status = await this.getStatus(taskId);
80
- if (status.isTerminal)
81
- return status;
82
- const remaining = deadline - Date.now();
83
- if (remaining <= 0) {
84
- throw new Error(`Task '${taskId}' did not complete within ${timeoutMs}ms (state: ${String(status.raw["state"])}).`);
85
- }
86
- await new Promise((resolve) => setTimeout(resolve, Math.min(pollIntervalMs, remaining)));
87
- }
88
- }
89
- }
90
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/nop/client.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- import { EncodingTier, FrameType } from "../core/frames.js";
2
- import type { NpsFrame } from "../core/codec.js";
3
- import type { AggregateStrategy, TaskContext, TaskDag, TaskPriority } from "./models.js";
4
- export declare class TaskFrame implements NpsFrame {
5
- readonly taskId: string;
6
- readonly dag: TaskDag;
7
- readonly timeoutMs?: number | undefined;
8
- readonly callbackUrl?: string | undefined;
9
- readonly context?: TaskContext | undefined;
10
- readonly priority?: TaskPriority | undefined;
11
- readonly depth?: number | undefined;
12
- readonly frameType = FrameType.TASK;
13
- readonly preferredTier = EncodingTier.MSGPACK;
14
- constructor(taskId: string, dag: TaskDag, timeoutMs?: number | undefined, callbackUrl?: string | undefined, context?: TaskContext | undefined, priority?: TaskPriority | undefined, depth?: number | undefined);
15
- toDict(): Record<string, unknown>;
16
- static fromDict(data: Record<string, unknown>): TaskFrame;
17
- }
18
- export declare class DelegateFrame implements NpsFrame {
19
- readonly taskId: string;
20
- readonly subtaskId: string;
21
- readonly action: string;
22
- readonly agentNid: string;
23
- readonly inputs?: Record<string, unknown> | undefined;
24
- readonly params?: Record<string, unknown> | undefined;
25
- readonly idempotencyKey?: string | undefined;
26
- readonly frameType = FrameType.DELEGATE;
27
- readonly preferredTier = EncodingTier.MSGPACK;
28
- constructor(taskId: string, subtaskId: string, action: string, agentNid: string, inputs?: Record<string, unknown> | undefined, params?: Record<string, unknown> | undefined, idempotencyKey?: string | undefined);
29
- toDict(): Record<string, unknown>;
30
- static fromDict(data: Record<string, unknown>): DelegateFrame;
31
- }
32
- export declare class SyncFrame implements NpsFrame {
33
- readonly taskId: string;
34
- readonly syncId: string;
35
- readonly waitFor: readonly string[];
36
- readonly minRequired: number;
37
- readonly aggregate: AggregateStrategy | string;
38
- readonly timeoutMs?: number | undefined;
39
- readonly frameType = FrameType.SYNC;
40
- readonly preferredTier = EncodingTier.MSGPACK;
41
- constructor(taskId: string, syncId: string, waitFor: readonly string[], minRequired?: number, aggregate?: AggregateStrategy | string, timeoutMs?: number | undefined);
42
- toDict(): Record<string, unknown>;
43
- static fromDict(data: Record<string, unknown>): SyncFrame;
44
- }
45
- export interface StreamError {
46
- errorCode: string;
47
- message?: string;
48
- }
49
- export declare class AlignStreamFrame implements NpsFrame {
50
- readonly streamId: string;
51
- readonly taskId: string;
52
- readonly subtaskId: string;
53
- readonly seq: number;
54
- readonly isFinal: boolean;
55
- readonly senderNid: string;
56
- readonly data?: Record<string, unknown> | undefined;
57
- readonly error?: StreamError | undefined;
58
- readonly windowSize?: number | undefined;
59
- readonly frameType = FrameType.ALIGN_STREAM;
60
- readonly preferredTier = EncodingTier.MSGPACK;
61
- constructor(streamId: string, taskId: string, subtaskId: string, seq: number, isFinal: boolean, senderNid: string, data?: Record<string, unknown> | undefined, error?: StreamError | undefined, windowSize?: number | undefined);
62
- toDict(): Record<string, unknown>;
63
- static fromDict(data: Record<string, unknown>): AlignStreamFrame;
64
- }
65
- //# sourceMappingURL=frames.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/nop/frames.ts"],"names":[],"mappings":"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"}