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

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 (212) hide show
  1. package/CHANGELOG.cn.md +53 -0
  2. package/CHANGELOG.md +62 -0
  3. package/README.cn.md +8 -2
  4. package/README.md +8 -2
  5. package/dist/core/anchor-cache.js +104 -0
  6. package/dist/core/anchor-cache.js.map +1 -0
  7. package/dist/core/cache.js +80 -0
  8. package/dist/core/cache.js.map +1 -0
  9. package/dist/core/canonical-json.js +44 -0
  10. package/dist/core/canonical-json.js.map +1 -0
  11. package/dist/core/codec.js +119 -0
  12. package/dist/core/codec.js.map +1 -0
  13. package/dist/core/codecs/index.js +6 -0
  14. package/dist/core/codecs/index.js.map +1 -0
  15. package/dist/core/codecs/ncp-codec.js +93 -0
  16. package/dist/core/codecs/ncp-codec.js.map +1 -0
  17. package/dist/core/codecs/tier1-json-codec.js +28 -0
  18. package/dist/core/codecs/tier1-json-codec.js.map +1 -0
  19. package/dist/core/codecs/tier2-msgpack-codec.js +26 -0
  20. package/dist/core/codecs/tier2-msgpack-codec.js.map +1 -0
  21. package/dist/core/crypto-provider.js +10 -0
  22. package/dist/core/crypto-provider.js.map +1 -0
  23. package/dist/core/exceptions.js +52 -0
  24. package/dist/core/exceptions.js.map +1 -0
  25. package/dist/core/frame-header.js +185 -0
  26. package/dist/core/frame-header.js.map +1 -0
  27. package/dist/core/frame-registry.js +63 -0
  28. package/dist/core/frame-registry.js.map +1 -0
  29. package/dist/core/frames.js +154 -0
  30. package/dist/core/frames.js.map +1 -0
  31. package/dist/core/index.js +21 -405
  32. package/dist/core/index.js.map +1 -1
  33. package/dist/core/registry.js +17 -0
  34. package/dist/core/registry.js.map +1 -0
  35. package/dist/core/status-codes.js +38 -0
  36. package/dist/core/status-codes.js.map +1 -0
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.js +9 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/ncp/frames/anchor-frame.js +54 -0
  41. package/dist/ncp/frames/anchor-frame.js.map +1 -0
  42. package/dist/ncp/frames/caps-frame.js +29 -0
  43. package/dist/ncp/frames/caps-frame.js.map +1 -0
  44. package/dist/ncp/frames/diff-frame.js +37 -0
  45. package/dist/ncp/frames/diff-frame.js.map +1 -0
  46. package/dist/ncp/frames/error-frame.js +13 -0
  47. package/dist/ncp/frames/error-frame.js.map +1 -0
  48. package/dist/ncp/frames/hello-frame.js +25 -0
  49. package/dist/ncp/frames/hello-frame.js.map +1 -0
  50. package/dist/ncp/frames/stream-frame.js +18 -0
  51. package/dist/ncp/frames/stream-frame.js.map +1 -0
  52. package/dist/ncp/frames.js +192 -0
  53. package/dist/ncp/frames.js.map +1 -0
  54. package/dist/ncp/handshake.js +80 -0
  55. package/dist/ncp/handshake.js.map +1 -0
  56. package/dist/ncp/index.d.ts +1 -0
  57. package/dist/ncp/index.d.ts.map +1 -1
  58. package/dist/ncp/index.js +13 -368
  59. package/dist/ncp/index.js.map +1 -1
  60. package/dist/ncp/ncp-error-codes.d.ts +1 -0
  61. package/dist/ncp/ncp-error-codes.d.ts.map +1 -1
  62. package/dist/ncp/ncp-error-codes.js +34 -0
  63. package/dist/ncp/ncp-error-codes.js.map +1 -0
  64. package/dist/ncp/ncp-patch-format.js +13 -0
  65. package/dist/ncp/ncp-patch-format.js.map +1 -0
  66. package/dist/ncp/preamble.d.ts +47 -0
  67. package/dist/ncp/preamble.d.ts.map +1 -0
  68. package/dist/ncp/preamble.js +74 -0
  69. package/dist/ncp/preamble.js.map +1 -0
  70. package/dist/ncp/registry.js +13 -0
  71. package/dist/ncp/registry.js.map +1 -0
  72. package/dist/ncp/stream-manager.js +163 -0
  73. package/dist/ncp/stream-manager.js.map +1 -0
  74. package/dist/ndp/frames.js +87 -0
  75. package/dist/ndp/frames.js.map +1 -0
  76. package/dist/ndp/index.js +6 -223
  77. package/dist/ndp/index.js.map +1 -1
  78. package/dist/ndp/ndp-registry.js +79 -0
  79. package/dist/ndp/ndp-registry.js.map +1 -0
  80. package/dist/ndp/registry.js +10 -0
  81. package/dist/ndp/registry.js.map +1 -0
  82. package/dist/ndp/validator.js +48 -0
  83. package/dist/ndp/validator.js.map +1 -0
  84. package/dist/nip/acme/client.d.ts +31 -0
  85. package/dist/nip/acme/client.d.ts.map +1 -0
  86. package/dist/nip/acme/client.js +136 -0
  87. package/dist/nip/acme/client.js.map +1 -0
  88. package/dist/nip/acme/index.d.ts +6 -0
  89. package/dist/nip/acme/index.d.ts.map +1 -0
  90. package/dist/nip/acme/index.js +8 -0
  91. package/dist/nip/acme/index.js.map +1 -0
  92. package/dist/nip/acme/jws.d.ts +31 -0
  93. package/dist/nip/acme/jws.d.ts.map +1 -0
  94. package/dist/nip/acme/jws.js +76 -0
  95. package/dist/nip/acme/jws.js.map +1 -0
  96. package/dist/nip/acme/messages.d.ts +71 -0
  97. package/dist/nip/acme/messages.d.ts.map +1 -0
  98. package/dist/nip/acme/messages.js +4 -0
  99. package/dist/nip/acme/messages.js.map +1 -0
  100. package/dist/nip/acme/server.d.ts +41 -0
  101. package/dist/nip/acme/server.d.ts.map +1 -0
  102. package/dist/nip/acme/server.js +458 -0
  103. package/dist/nip/acme/server.js.map +1 -0
  104. package/dist/nip/acme/wire.d.ts +19 -0
  105. package/dist/nip/acme/wire.d.ts.map +1 -0
  106. package/dist/nip/acme/wire.js +21 -0
  107. package/dist/nip/acme/wire.js.map +1 -0
  108. package/dist/nip/assurance-level.d.ts +14 -0
  109. package/dist/nip/assurance-level.d.ts.map +1 -0
  110. package/dist/nip/assurance-level.js +33 -0
  111. package/dist/nip/assurance-level.js.map +1 -0
  112. package/dist/nip/cert-format.d.ts +5 -0
  113. package/dist/nip/cert-format.d.ts.map +1 -0
  114. package/dist/nip/cert-format.js +6 -0
  115. package/dist/nip/cert-format.js.map +1 -0
  116. package/dist/nip/error-codes.d.ts +23 -0
  117. package/dist/nip/error-codes.d.ts.map +1 -0
  118. package/dist/nip/error-codes.js +30 -0
  119. package/dist/nip/error-codes.js.map +1 -0
  120. package/dist/nip/frames.d.ts +10 -1
  121. package/dist/nip/frames.d.ts.map +1 -1
  122. package/dist/nip/frames.js +106 -0
  123. package/dist/nip/frames.js.map +1 -0
  124. package/dist/nip/identity.js +94 -0
  125. package/dist/nip/identity.js.map +1 -0
  126. package/dist/nip/index.d.ts +6 -0
  127. package/dist/nip/index.d.ts.map +1 -1
  128. package/dist/nip/index.js +12 -187
  129. package/dist/nip/index.js.map +1 -1
  130. package/dist/nip/registry.js +10 -0
  131. package/dist/nip/registry.js.map +1 -0
  132. package/dist/nip/verifier.d.ts +23 -0
  133. package/dist/nip/verifier.d.ts.map +1 -0
  134. package/dist/nip/verifier.js +90 -0
  135. package/dist/nip/verifier.js.map +1 -0
  136. package/dist/nip/x509/builder.d.ts +35 -0
  137. package/dist/nip/x509/builder.d.ts.map +1 -0
  138. package/dist/nip/x509/builder.js +59 -0
  139. package/dist/nip/x509/builder.js.map +1 -0
  140. package/dist/nip/x509/index.d.ts +4 -0
  141. package/dist/nip/x509/index.d.ts.map +1 -0
  142. package/dist/nip/x509/index.js +6 -0
  143. package/dist/nip/x509/index.js.map +1 -0
  144. package/dist/nip/x509/oids.d.ts +17 -0
  145. package/dist/nip/x509/oids.d.ts.map +1 -0
  146. package/dist/nip/x509/oids.js +23 -0
  147. package/dist/nip/x509/oids.js.map +1 -0
  148. package/dist/nip/x509/verifier.d.ts +26 -0
  149. package/dist/nip/x509/verifier.d.ts.map +1 -0
  150. package/dist/nip/x509/verifier.js +171 -0
  151. package/dist/nip/x509/verifier.js.map +1 -0
  152. package/dist/nop/client.js +90 -0
  153. package/dist/nop/client.js.map +1 -0
  154. package/dist/nop/frames.js +148 -0
  155. package/dist/nop/frames.js.map +1 -0
  156. package/dist/nop/index.js +6 -789
  157. package/dist/nop/index.js.map +1 -1
  158. package/dist/nop/models.js +50 -0
  159. package/dist/nop/models.js.map +1 -0
  160. package/dist/nop/nop-types.js +44 -0
  161. package/dist/nop/nop-types.js.map +1 -0
  162. package/dist/nop/registry.js +11 -0
  163. package/dist/nop/registry.js.map +1 -0
  164. package/dist/nwp/client.js +101 -0
  165. package/dist/nwp/client.js.map +1 -0
  166. package/dist/nwp/frames.js +81 -0
  167. package/dist/nwp/frames.js.map +1 -0
  168. package/dist/nwp/index.js +5 -693
  169. package/dist/nwp/index.js.map +1 -1
  170. package/dist/nwp/registry.js +9 -0
  171. package/dist/nwp/registry.js.map +1 -0
  172. package/dist/setup.js +29 -0
  173. package/dist/setup.js.map +1 -0
  174. package/package.json +2 -1
  175. package/src/index.ts +1 -1
  176. package/src/ncp/index.ts +1 -0
  177. package/src/ncp/ncp-error-codes.ts +2 -0
  178. package/src/ncp/preamble.ts +79 -0
  179. package/src/nip/acme/client.ts +185 -0
  180. package/src/nip/acme/index.ts +8 -0
  181. package/src/nip/acme/jws.ts +109 -0
  182. package/src/nip/acme/messages.ts +85 -0
  183. package/src/nip/acme/server.ts +480 -0
  184. package/src/nip/acme/wire.ts +24 -0
  185. package/src/nip/assurance-level.ts +35 -0
  186. package/src/nip/cert-format.ts +9 -0
  187. package/src/nip/error-codes.ts +36 -0
  188. package/src/nip/frames.ts +35 -3
  189. package/src/nip/index.ts +8 -0
  190. package/src/nip/verifier.ts +122 -0
  191. package/src/nip/x509/builder.ts +91 -0
  192. package/src/nip/x509/index.ts +6 -0
  193. package/src/nip/x509/oids.ts +28 -0
  194. package/src/nip/x509/verifier.ts +214 -0
  195. package/tests/_rfc0002-keys.ts +57 -0
  196. package/tests/ncp/preamble.test.ts +93 -0
  197. package/tests/nip-acme-agent01.test.ts +192 -0
  198. package/tests/nip-x509.test.ts +280 -0
  199. package/dist/core/index.cjs +0 -452
  200. package/dist/core/index.cjs.map +0 -1
  201. package/dist/index.cjs +0 -8
  202. package/dist/index.cjs.map +0 -1
  203. package/dist/ncp/index.cjs +0 -388
  204. package/dist/ncp/index.cjs.map +0 -1
  205. package/dist/ndp/index.cjs +0 -252
  206. package/dist/ndp/index.cjs.map +0 -1
  207. package/dist/nip/index.cjs +0 -214
  208. package/dist/nip/index.cjs.map +0 -1
  209. package/dist/nop/index.cjs +0 -823
  210. package/dist/nop/index.cjs.map +0 -1
  211. package/dist/nwp/index.cjs +0 -720
  212. package/dist/nwp/index.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/nop/models.ts","../../src/core/exceptions.ts","../../src/core/frames.ts","../../src/nop/frames.ts","../../src/nop/registry.ts","../../src/core/codec.ts","../../src/core/registry.ts","../../src/ncp/frames.ts","../../src/ncp/registry.ts","../../src/nop/client.ts"],"names":["TaskState","TaskPriority","BackoffStrategy","AggregateStrategy","view","payloadLength","buf","msgpack"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum TaskState {\n PENDING = \"pending\",\n PREFLIGHT = \"preflight\",\n RUNNING = \"running\",\n WAITING_SYNC = \"waiting_sync\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n CANCELLED = \"cancelled\",\n SKIPPED = \"skipped\",\n}\n\nexport enum TaskPriority {\n LOW = \"low\",\n NORMAL = \"normal\",\n HIGH = \"high\",\n}\n\nexport enum BackoffStrategy {\n FIXED = \"fixed\",\n LINEAR = \"linear\",\n EXPONENTIAL = \"exponential\",\n}\n\nexport enum AggregateStrategy {\n MERGE = \"merge\",\n FIRST = \"first\",\n FASTEST_K = \"fastest_k\",\n ALL = \"all\",\n}\n\nexport interface RetryPolicy {\n maxRetries: number;\n backoff: BackoffStrategy;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nexport function computeDelayMs(policy: RetryPolicy, attempt: number): number {\n const base = policy.baseDelayMs ?? 1000;\n const cap = policy.maxDelayMs ?? 30_000;\n let delay: number;\n switch (policy.backoff) {\n case BackoffStrategy.FIXED: delay = base; break;\n case BackoffStrategy.LINEAR: delay = base * (attempt + 1); break;\n case BackoffStrategy.EXPONENTIAL: delay = base * Math.pow(2, attempt); break;\n }\n return Math.min(delay, cap);\n}\n\nexport interface TaskContext {\n sessionKey?: string;\n requesterNid?: string;\n traceId?: string;\n}\n\nexport interface DagNode {\n id: string;\n action: string;\n agent: string;\n inputFrom?: readonly string[];\n inputMapping?: Record<string, string>;\n timeoutMs?: number;\n retryPolicy?: RetryPolicy;\n condition?: string;\n minRequired?: number;\n}\n\nexport interface DagEdge {\n from: string;\n to: string;\n}\n\nexport interface TaskDag {\n nodes: readonly DagNode[];\n edges: readonly DagEdge[];\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD\n//\n// NPS exception hierarchy — ported from nps_sdk/core/exceptions.py\n// NPS-1 §6\n\n/** Base class for all NPS SDK errors. */\nexport class NpsError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"NpsError\";\n }\n}\n\n/** Frame parse or structural error. */\nexport class NpsFrameError extends NpsError {\n constructor(message: string) {\n super(message);\n this.name = \"NpsFrameError\";\n }\n}\n\n/** Encode or decode error. */\nexport class NpsCodecError extends NpsError {\n constructor(message: string) {\n super(message);\n this.name = \"NpsCodecError\";\n }\n}\n\n/** Anchor cache miss — requested anchor ID not found. */\nexport class NpsAnchorNotFoundError extends NpsError {\n readonly anchorId: string;\n constructor(anchorId: string, message?: string) {\n super(message ?? `Anchor not found: ${anchorId}`);\n this.name = \"NpsAnchorNotFoundError\";\n this.anchorId = anchorId;\n }\n}\n\n/** Anchor ID collision — same ID but different schema content. */\nexport class NpsAnchorPoisonError extends NpsError {\n readonly anchorId: string;\n constructor(anchorId: string, message?: string) {\n super(message ?? `Anchor poison detected: ${anchorId}`);\n this.name = \"NpsAnchorPoisonError\";\n this.anchorId = anchorId;\n }\n}\n\n/** Stream-level error (sequence gap, unknown stream ID, etc.). */\nexport class NpsStreamError extends NpsError {\n constructor(message: string) {\n super(message);\n this.name = \"NpsStreamError\";\n }\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * NPS wire-level frame primitives: FrameType, FrameFlags, EncodingTier, FrameHeader.\n */\n\nimport { NpsFrameError } from \"./exceptions.js\";\n\n// ── FrameType ────────────────────────────────────────────────────────────────\n\n/** Unified frame byte namespace for the full NPS suite (NPS-0 §9). */\nexport enum FrameType {\n // NCP 0x01–0x0F\n ANCHOR = 0x01,\n DIFF = 0x02,\n STREAM = 0x03,\n CAPS = 0x04,\n ALIGN = 0x05, // deprecated — use AlignStream (0x43)\n HELLO = 0x06,\n\n // NWP 0x10–0x1F\n QUERY = 0x10,\n ACTION = 0x11,\n\n // NIP 0x20–0x2F\n IDENT = 0x20,\n TRUST = 0x21,\n REVOKE = 0x22,\n\n // NDP 0x30–0x3F\n ANNOUNCE = 0x30,\n RESOLVE = 0x31,\n GRAPH = 0x32,\n\n // NOP 0x40–0x4F\n TASK = 0x40,\n DELEGATE = 0x41,\n SYNC = 0x42,\n ALIGN_STREAM = 0x43,\n\n // Reserved / System 0xF0–0xFF\n ERROR = 0xFE,\n}\n\n// ── EncodingTier ─────────────────────────────────────────────────────────────\n\n/**\n * Wire encoding tier, stored in the lower 2 bits of the flags byte (NPS-1 §3.2).\n * 0x00 = Tier-1 JSON — human-readable; development / compatibility.\n * 0x01 = Tier-2 MsgPack — binary, ~60 % smaller; production default.\n */\nexport enum EncodingTier {\n JSON = 0x00,\n MSGPACK = 0x01,\n}\n\n// ── FrameFlags ───────────────────────────────────────────────────────────────\n\n/**\n * Flags byte in the NPS frame header (NPS-1 §3.2).\n * Bit layout (LSB = bit 0):\n * Bits 0–1 (T0,T1) : Encoding tier\n * Bit 2 (FINAL) : Last chunk of a StreamFrame; non-stream frames MUST set this\n * Bit 3 (ENC) : Payload encrypted\n * Bits 4–6 (RSV) : Reserved — sender MUST write 0\n * Bit 7 (EXT) : Extended 8-byte header\n */\nexport const FrameFlags = {\n NONE: 0x00,\n TIER1_JSON: 0x00,\n TIER2_MSGPACK: 0x01,\n FINAL: 0x04,\n ENCRYPTED: 0x08,\n EXT: 0x80,\n} as const;\n\n// ── Constants ─────────────────────────────────────────────────────────────────\n\nexport const DEFAULT_HEADER_SIZE = 4;\nexport const EXTENDED_HEADER_SIZE = 8;\nexport const DEFAULT_MAX_PAYLOAD = 0xffff; // 65 535 bytes\nexport const EXTENDED_MAX_PAYLOAD = 0xffffffff; // 4 GiB - 1\n\n// ── FrameHeader ──────────────────────────────────────────────────────────────\n\n/**\n * NPS frame header, present at the start of every wire message (NPS-1 §3.1).\n *\n * Default (4 bytes, EXT=0):\n * Byte 0 : FrameType\n * Byte 1 : Flags\n * Byte 2–3 : PayloadLength (big-endian uint16)\n *\n * Extended (8 bytes, EXT=1):\n * Byte 0 : FrameType\n * Byte 1 : Flags (bit 7 = 1)\n * Byte 2–3 : Reserved (must be 0)\n * Byte 4–7 : PayloadLength (big-endian uint32)\n */\nexport class FrameHeader {\n constructor(\n public readonly frameType: FrameType,\n public readonly flags: number,\n public readonly payloadLength: number,\n ) {}\n\n get isExtended(): boolean {\n return (this.flags & FrameFlags.EXT) !== 0;\n }\n\n get headerSize(): number {\n return this.isExtended ? EXTENDED_HEADER_SIZE : DEFAULT_HEADER_SIZE;\n }\n\n get encodingTier(): EncodingTier {\n return (this.flags & 0x03) as EncodingTier;\n }\n\n get isFinal(): boolean {\n return (this.flags & 0x04) !== 0;\n }\n\n get isEncrypted(): boolean {\n return (this.flags & 0x08) !== 0;\n }\n\n // ── Parsing ───────────────────────────────────────────────────────────────\n\n static parse(buf: Uint8Array): FrameHeader {\n if (buf.length < 2) {\n throw new NpsFrameError(\n `Buffer too small to read frame type and flags: need >= 2 bytes, got ${buf.length}.`,\n );\n }\n\n const flags = buf[1]!;\n const ext = (flags & FrameFlags.EXT) !== 0;\n\n if (ext) {\n if (buf.length < EXTENDED_HEADER_SIZE) {\n throw new NpsFrameError(\n `Buffer too small for extended frame header: need ${EXTENDED_HEADER_SIZE} bytes, got ${buf.length}.`,\n );\n }\n const view = new DataView(buf.buffer, buf.byteOffset);\n const payloadLength = view.getUint32(4, false); // big-endian\n return new FrameHeader(buf[0]! as FrameType, flags, payloadLength);\n }\n\n if (buf.length < DEFAULT_HEADER_SIZE) {\n throw new NpsFrameError(\n `Buffer too small for frame header: need ${DEFAULT_HEADER_SIZE} bytes, got ${buf.length}.`,\n );\n }\n const view = new DataView(buf.buffer, buf.byteOffset);\n const payloadLength = view.getUint16(2, false); // big-endian\n return new FrameHeader(buf[0]! as FrameType, flags, payloadLength);\n }\n\n // ── Serialisation ─────────────────────────────────────────────────────────\n\n toBytes(): Uint8Array {\n if (this.isExtended) {\n const buf = new Uint8Array(EXTENDED_HEADER_SIZE);\n const view = new DataView(buf.buffer);\n view.setUint8(0, this.frameType);\n view.setUint8(1, this.flags);\n view.setUint16(2, 0, false); // reserved\n view.setUint32(4, this.payloadLength, false);\n return buf;\n }\n const buf = new Uint8Array(DEFAULT_HEADER_SIZE);\n const view = new DataView(buf.buffer);\n view.setUint8(0, this.frameType);\n view.setUint8(1, this.flags);\n view.setUint16(2, this.payloadLength, false);\n return buf;\n }\n\n toString(): string {\n return `FrameHeader(frameType=0x${this.frameType.toString(16).padStart(2, \"0\")}, flags=0x${this.flags.toString(16).padStart(2, \"0\")}, payloadLength=${this.payloadLength})`;\n }\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nimport { EncodingTier, FrameType } from \"../core/frames.js\";\nimport type { NpsFrame } from \"../core/codec.js\";\nimport type { AggregateStrategy, TaskContext, TaskDag, TaskPriority } from \"./models.js\";\n\n// ── TaskFrame ─────────────────────────────────────────────────────────────────\n\nexport class TaskFrame implements NpsFrame {\n readonly frameType = FrameType.TASK;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly taskId: string,\n public readonly dag: TaskDag,\n public readonly timeoutMs?: number,\n public readonly callbackUrl?: string,\n public readonly context?: TaskContext,\n public readonly priority?: TaskPriority,\n public readonly depth?: number,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n task_id: this.taskId,\n dag: this.dag,\n timeout_ms: this.timeoutMs ?? null,\n callback_url: this.callbackUrl ?? null,\n context: this.context ?? null,\n priority: this.priority ?? null,\n depth: this.depth ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): TaskFrame {\n return new TaskFrame(\n data[\"task_id\"] as string,\n data[\"dag\"] as TaskDag,\n (data[\"timeout_ms\"] as number | null) ?? undefined,\n (data[\"callback_url\"] as string | null) ?? undefined,\n (data[\"context\"] as TaskContext | null) ?? undefined,\n (data[\"priority\"] as TaskPriority | null) ?? undefined,\n (data[\"depth\"] as number | null) ?? undefined,\n );\n }\n}\n\n// ── DelegateFrame ─────────────────────────────────────────────────────────────\n\nexport class DelegateFrame implements NpsFrame {\n readonly frameType = FrameType.DELEGATE;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly taskId: string,\n public readonly subtaskId: string,\n public readonly action: string,\n public readonly agentNid: string,\n public readonly inputs?: Record<string, unknown>,\n public readonly params?: Record<string, unknown>,\n public readonly idempotencyKey?: string,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n task_id: this.taskId,\n subtask_id: this.subtaskId,\n action: this.action,\n agent_nid: this.agentNid,\n inputs: this.inputs ?? null,\n params: this.params ?? null,\n idempotency_key: this.idempotencyKey ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): DelegateFrame {\n return new DelegateFrame(\n data[\"task_id\"] as string,\n data[\"subtask_id\"] as string,\n data[\"action\"] as string,\n data[\"agent_nid\"] as string,\n (data[\"inputs\"] as Record<string, unknown> | null) ?? undefined,\n (data[\"params\"] as Record<string, unknown> | null) ?? undefined,\n (data[\"idempotency_key\"] as string | null) ?? undefined,\n );\n }\n}\n\n// ── SyncFrame ─────────────────────────────────────────────────────────────────\n\nexport class SyncFrame implements NpsFrame {\n readonly frameType = FrameType.SYNC;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly taskId: string,\n public readonly syncId: string,\n public readonly waitFor: readonly string[],\n public readonly minRequired: number = 0,\n public readonly aggregate: AggregateStrategy | string = \"merge\",\n public readonly timeoutMs?: number,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n task_id: this.taskId,\n sync_id: this.syncId,\n wait_for: this.waitFor,\n min_required: this.minRequired,\n aggregate: this.aggregate,\n timeout_ms: this.timeoutMs ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): SyncFrame {\n return new SyncFrame(\n data[\"task_id\"] as string,\n data[\"sync_id\"] as string,\n data[\"wait_for\"] as string[],\n (data[\"min_required\"] as number) ?? 0,\n (data[\"aggregate\"] as string) ?? \"merge\",\n (data[\"timeout_ms\"] as number | null) ?? undefined,\n );\n }\n}\n\n// ── StreamError ───────────────────────────────────────────────────────────────\n\nexport interface StreamError {\n errorCode: string;\n message?: string;\n}\n\n// ── AlignStreamFrame ──────────────────────────────────────────────────────────\n\nexport class AlignStreamFrame implements NpsFrame {\n readonly frameType = FrameType.ALIGN_STREAM;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly streamId: string,\n public readonly taskId: string,\n public readonly subtaskId: string,\n public readonly seq: number,\n public readonly isFinal: boolean,\n public readonly senderNid: string,\n public readonly data?: Record<string, unknown>,\n public readonly error?: StreamError,\n public readonly windowSize?: number,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n stream_id: this.streamId,\n task_id: this.taskId,\n subtask_id: this.subtaskId,\n seq: this.seq,\n is_final: this.isFinal,\n sender_nid: this.senderNid,\n data: this.data ?? null,\n error: this.error ? { error_code: this.error.errorCode, message: this.error.message ?? null } : null,\n window_size: this.windowSize ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): AlignStreamFrame {\n const rawError = data[\"error\"] as { error_code: string; message?: string } | null;\n return new AlignStreamFrame(\n data[\"stream_id\"] as string,\n data[\"task_id\"] as string,\n data[\"subtask_id\"] as string,\n data[\"seq\"] as number,\n data[\"is_final\"] as boolean,\n data[\"sender_nid\"] as string,\n (data[\"data\"] as Record<string, unknown> | null) ?? undefined,\n rawError ? { errorCode: rawError.error_code, ...(rawError.message != null ? { message: rawError.message } : {}) } : undefined,\n (data[\"window_size\"] as number | null) ?? undefined,\n );\n }\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nimport { FrameRegistry } from \"../core/registry.js\";\nimport { FrameType } from \"../core/frames.js\";\nimport { AlignStreamFrame, DelegateFrame, SyncFrame, TaskFrame } from \"./frames.js\";\n\nexport function registerNopFrames(registry: FrameRegistry): void {\n registry.register(FrameType.TASK, TaskFrame);\n registry.register(FrameType.DELEGATE, DelegateFrame);\n registry.register(FrameType.SYNC, SyncFrame);\n registry.register(FrameType.ALIGN_STREAM, AlignStreamFrame);\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * NPS frame codec: Tier-1 (JSON) and Tier-2 (MsgPack) encode/decode,\n * plus the top-level NpsFrameCodec dispatcher.\n */\n\nimport * as msgpack from \"@msgpack/msgpack\";\nimport { NpsCodecError } from \"./exceptions.js\";\nimport {\n DEFAULT_MAX_PAYLOAD,\n EncodingTier,\n FrameFlags,\n FrameHeader,\n FrameType,\n} from \"./frames.js\";\nimport type { FrameRegistry } from \"./registry.js\";\n\n// ── NpsFrame interface ────────────────────────────────────────────────────────\n\nexport interface NpsFrame {\n readonly frameType: FrameType;\n readonly preferredTier: EncodingTier;\n toDict(): Record<string, unknown>;\n}\n\n// ── Tier-1 JSON codec ─────────────────────────────────────────────────────────\n\nexport class Tier1JsonCodec {\n encode(frame: NpsFrame): Uint8Array {\n try {\n const json = JSON.stringify(frame.toDict());\n return new TextEncoder().encode(json);\n } catch (err) {\n throw new NpsCodecError(\n `Tier-1 JSON encode failed for 0x${frame.frameType.toString(16).padStart(2, \"0\")}: ${String(err)}`,\n );\n }\n }\n\n decode(frameType: FrameType, payload: Uint8Array, registry: FrameRegistry): NpsFrame {\n const cls = registry.resolve(frameType);\n try {\n const text = new TextDecoder().decode(payload);\n const data = JSON.parse(text) as Record<string, unknown>;\n return cls.fromDict(data);\n } catch (err) {\n throw new NpsCodecError(\n `Tier-1 JSON decode failed for 0x${frameType.toString(16).padStart(2, \"0\")}: ${String(err)}`,\n );\n }\n }\n}\n\n// ── Tier-2 MsgPack codec ──────────────────────────────────────────────────────\n\nexport class Tier2MsgPackCodec {\n encode(frame: NpsFrame): Uint8Array {\n try {\n return msgpack.encode(frame.toDict());\n } catch (err) {\n throw new NpsCodecError(\n `Tier-2 MsgPack encode failed for 0x${frame.frameType.toString(16).padStart(2, \"0\")}: ${String(err)}`,\n );\n }\n }\n\n decode(frameType: FrameType, payload: Uint8Array, registry: FrameRegistry): NpsFrame {\n const cls = registry.resolve(frameType);\n try {\n const data = msgpack.decode(payload) as Record<string, unknown>;\n return cls.fromDict(data);\n } catch (err) {\n throw new NpsCodecError(\n `Tier-2 MsgPack decode failed for 0x${frameType.toString(16).padStart(2, \"0\")}: ${String(err)}`,\n );\n }\n }\n}\n\n// ── NpsFrameCodec (dispatcher) ────────────────────────────────────────────────\n\nexport class NpsFrameCodec {\n private readonly _registry: FrameRegistry;\n private readonly _maxPayload: number;\n private readonly _json = new Tier1JsonCodec();\n private readonly _msgpack = new Tier2MsgPackCodec();\n\n constructor(registry: FrameRegistry, options: { maxPayload?: number } = {}) {\n this._registry = registry;\n this._maxPayload = options.maxPayload ?? DEFAULT_MAX_PAYLOAD;\n }\n\n // ── Encode ────────────────────────────────────────────────────────────────\n\n encode(frame: NpsFrame, options: { overrideTier?: EncodingTier } = {}): Uint8Array {\n const tier = options.overrideTier ?? frame.preferredTier;\n const tierCodec = this._selectCodec(tier);\n\n let payload: Uint8Array;\n try {\n payload = tierCodec.encode(frame);\n } catch (err) {\n if (err instanceof NpsCodecError) throw err;\n throw new NpsCodecError(`Encode failed for 0x${frame.frameType.toString(16)}.`);\n }\n\n if (payload.length > this._maxPayload) {\n throw new NpsCodecError(\n `Encoded payload for 0x${frame.frameType.toString(16).padStart(2, \"0\")} exceeds max_frame_payload` +\n ` (${payload.length} bytes > ${this._maxPayload}). Use StreamFrame (0x03) for large payloads.`,\n );\n }\n\n const useExt = payload.length > DEFAULT_MAX_PAYLOAD;\n let flags = this._buildFlags(frame, tier);\n if (useExt) flags |= FrameFlags.EXT;\n\n const header = new FrameHeader(frame.frameType, flags, payload.length);\n const headerBytes = header.toBytes();\n const wire = new Uint8Array(headerBytes.length + payload.length);\n wire.set(headerBytes, 0);\n wire.set(payload, headerBytes.length);\n return wire;\n }\n\n // ── Decode ────────────────────────────────────────────────────────────────\n\n decode(wire: Uint8Array): NpsFrame {\n const header = FrameHeader.parse(wire);\n const payload = wire.slice(header.headerSize, header.headerSize + header.payloadLength);\n const codec = this._selectCodec(header.encodingTier);\n return codec.decode(header.frameType, payload, this._registry);\n }\n\n static peekHeader(wire: Uint8Array): FrameHeader {\n return FrameHeader.parse(wire);\n }\n\n // ── Private ───────────────────────────────────────────────────────────────\n\n private _buildFlags(frame: NpsFrame, tier: EncodingTier): number {\n let flags = tier === EncodingTier.JSON ? FrameFlags.TIER1_JSON : FrameFlags.TIER2_MSGPACK;\n\n const isStreamFrame = \"isLast\" in frame;\n const isFinal = !isStreamFrame || (frame as { isLast: boolean }).isLast;\n if (isFinal) flags |= FrameFlags.FINAL;\n\n return flags;\n }\n\n private _selectCodec(tier: EncodingTier): Tier1JsonCodec | Tier2MsgPackCodec {\n if (tier === EncodingTier.JSON) return this._json;\n if (tier === EncodingTier.MSGPACK) return this._msgpack;\n throw new NpsCodecError(`Unsupported encoding tier: 0x${(tier as number).toString(16).padStart(2, \"0\")}.`);\n }\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nimport { NpsFrameError } from \"./exceptions.js\";\nimport { FrameType } from \"./frames.js\";\nimport type { NpsFrame } from \"./codec.js\";\n\nexport interface FrameClass {\n fromDict(data: Record<string, unknown>): NpsFrame;\n}\n\nexport class FrameRegistry {\n private readonly _map = new Map<FrameType, FrameClass>();\n\n register(frameType: FrameType, cls: FrameClass): void {\n this._map.set(frameType, cls);\n }\n\n resolve(frameType: FrameType): FrameClass {\n const cls = this._map.get(frameType);\n if (cls === undefined) {\n throw new NpsFrameError(\n `No frame class registered for type 0x${frameType.toString(16).padStart(2, \"0\")}.`,\n );\n }\n return cls;\n }\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nimport { EncodingTier, FrameType } from \"../core/frames.js\";\nimport type { NpsFrame } from \"../core/codec.js\";\n\n// ── FrameSchema ───────────────────────────────────────────────────────────────\n\nexport interface SchemaField {\n name: string;\n type: string;\n semantic?: string;\n nullable?: boolean;\n}\n\nexport interface FrameSchema {\n fields: readonly SchemaField[];\n}\n\n// ── AnchorFrame ───────────────────────────────────────────────────────────────\n\nexport class AnchorFrame implements NpsFrame {\n readonly frameType = FrameType.ANCHOR;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly anchorId: string,\n public readonly schema: FrameSchema,\n public readonly ttl: number = 3600,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n anchor_id: this.anchorId,\n schema: { fields: this.schema.fields.map((f) => ({ ...f })) },\n ttl: this.ttl,\n };\n }\n\n static fromDict(data: Record<string, unknown>): AnchorFrame {\n const schemaRaw = data[\"schema\"] as { fields: SchemaField[] };\n return new AnchorFrame(\n data[\"anchor_id\"] as string,\n { fields: schemaRaw.fields },\n (data[\"ttl\"] as number | undefined) ?? 3600,\n );\n }\n}\n\n// ── JsonPatchOperation ────────────────────────────────────────────────────────\n\nexport interface JsonPatchOperation {\n op: string;\n path: string;\n value?: unknown;\n}\n\n// ── DiffFrame ─────────────────────────────────────────────────────────────────\n\nexport class DiffFrame implements NpsFrame {\n readonly frameType = FrameType.DIFF;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly anchorRef: string,\n public readonly baseSeq: number,\n public readonly patch: readonly JsonPatchOperation[],\n public readonly entityId?: string,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n anchor_ref: this.anchorRef,\n base_seq: this.baseSeq,\n patch: this.patch.map((p) => ({ ...p })),\n entity_id: this.entityId ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): DiffFrame {\n return new DiffFrame(\n data[\"anchor_ref\"] as string,\n data[\"base_seq\"] as number,\n data[\"patch\"] as JsonPatchOperation[],\n (data[\"entity_id\"] as string | null) ?? undefined,\n );\n }\n}\n\n// ── StreamFrame ───────────────────────────────────────────────────────────────\n\nexport class StreamFrame implements NpsFrame {\n readonly frameType = FrameType.STREAM;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly streamId: string,\n public readonly seq: number,\n public readonly isLast: boolean,\n public readonly data: readonly Record<string, unknown>[],\n public readonly anchorRef?: string,\n public readonly windowSize?: number,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n stream_id: this.streamId,\n seq: this.seq,\n is_last: this.isLast,\n data: this.data,\n anchor_ref: this.anchorRef ?? null,\n window_size: this.windowSize ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): StreamFrame {\n return new StreamFrame(\n data[\"stream_id\"] as string,\n data[\"seq\"] as number,\n data[\"is_last\"] as boolean,\n data[\"data\"] as Record<string, unknown>[],\n (data[\"anchor_ref\"] as string | null) ?? undefined,\n (data[\"window_size\"] as number | null) ?? undefined,\n );\n }\n}\n\n// ── CapsFrame ─────────────────────────────────────────────────────────────────\n\nexport class CapsFrame implements NpsFrame {\n readonly frameType = FrameType.CAPS;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly anchorRef: string,\n public readonly count: number,\n public readonly data: readonly Record<string, unknown>[],\n public readonly nextCursor?: string,\n public readonly tokenEst?: number,\n public readonly cached?: boolean,\n public readonly tokenizerUsed?: string,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n anchor_ref: this.anchorRef,\n count: this.count,\n data: this.data,\n next_cursor: this.nextCursor ?? null,\n token_est: this.tokenEst ?? null,\n cached: this.cached ?? null,\n tokenizer_used: this.tokenizerUsed ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): CapsFrame {\n return new CapsFrame(\n data[\"anchor_ref\"] as string,\n data[\"count\"] as number,\n data[\"data\"] as Record<string, unknown>[],\n (data[\"next_cursor\"] as string | null) ?? undefined,\n (data[\"token_est\"] as number | null) ?? undefined,\n (data[\"cached\"] as boolean | null) ?? undefined,\n (data[\"tokenizer_used\"] as string | null) ?? undefined,\n );\n }\n}\n\n// ── ErrorFrame ────────────────────────────────────────────────────────────────\n\nexport class ErrorFrame implements NpsFrame {\n readonly frameType = FrameType.ERROR;\n readonly preferredTier = EncodingTier.MSGPACK;\n\n constructor(\n public readonly status: string,\n public readonly error: string,\n public readonly message?: string,\n public readonly details?: Record<string, unknown>,\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n status: this.status,\n error: this.error,\n message: this.message ?? null,\n details: this.details ?? null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): ErrorFrame {\n return new ErrorFrame(\n data[\"status\"] as string,\n data[\"error\"] as string,\n (data[\"message\"] as string | null) ?? undefined,\n (data[\"details\"] as Record<string, unknown> | null) ?? undefined,\n );\n }\n}\n\n// ── HelloFrame ────────────────────────────────────────────────────────────────\n// NPS-1 §4.6 — Native-mode handshake (0x06). Always Tier-1 JSON: encoding\n// is not yet negotiated when this frame is sent.\n\nexport class HelloFrame implements NpsFrame {\n readonly frameType = FrameType.HELLO;\n readonly preferredTier = EncodingTier.JSON;\n\n static readonly DEFAULT_MAX_FRAME_PAYLOAD = 0xFFFF;\n static readonly DEFAULT_MAX_CONCURRENT_STREAMS = 32;\n\n constructor(\n public readonly npsVersion: string,\n public readonly supportedEncodings: readonly string[],\n public readonly supportedProtocols: readonly string[],\n public minVersion?: string,\n public agentId?: string,\n public maxFramePayload: number = HelloFrame.DEFAULT_MAX_FRAME_PAYLOAD,\n public extSupport: boolean = false,\n public maxConcurrentStreams: number = HelloFrame.DEFAULT_MAX_CONCURRENT_STREAMS,\n public e2eEncAlgorithms?: readonly string[],\n ) {}\n\n toDict(): Record<string, unknown> {\n return {\n nps_version: this.npsVersion,\n supported_encodings: [...this.supportedEncodings],\n supported_protocols: [...this.supportedProtocols],\n min_version: this.minVersion ?? null,\n agent_id: this.agentId ?? null,\n max_frame_payload: this.maxFramePayload,\n ext_support: this.extSupport,\n max_concurrent_streams: this.maxConcurrentStreams,\n e2e_enc_algorithms: this.e2eEncAlgorithms ? [...this.e2eEncAlgorithms] : null,\n };\n }\n\n static fromDict(data: Record<string, unknown>): HelloFrame {\n return new HelloFrame(\n data[\"nps_version\"] as string,\n (data[\"supported_encodings\"] as string[]) ?? [],\n (data[\"supported_protocols\"] as string[]) ?? [],\n (data[\"min_version\"] as string | null) ?? undefined,\n (data[\"agent_id\"] as string | null) ?? undefined,\n (data[\"max_frame_payload\"] as number | null) ?? HelloFrame.DEFAULT_MAX_FRAME_PAYLOAD,\n (data[\"ext_support\"] as boolean | null) ?? false,\n (data[\"max_concurrent_streams\"] as number | null) ?? HelloFrame.DEFAULT_MAX_CONCURRENT_STREAMS,\n (data[\"e2e_enc_algorithms\"] as string[] | null) ?? undefined,\n );\n }\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nimport { FrameRegistry } from \"../core/registry.js\";\nimport { FrameType } from \"../core/frames.js\";\nimport { AnchorFrame, CapsFrame, DiffFrame, ErrorFrame, HelloFrame, StreamFrame } from \"./frames.js\";\n\nexport function registerNcpFrames(registry: FrameRegistry): void {\n registry.register(FrameType.ANCHOR, AnchorFrame);\n registry.register(FrameType.DIFF, DiffFrame);\n registry.register(FrameType.STREAM, StreamFrame);\n registry.register(FrameType.CAPS, CapsFrame);\n registry.register(FrameType.HELLO, HelloFrame);\n registry.register(FrameType.ERROR, ErrorFrame);\n}\n","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\nimport { NpsFrameCodec } from \"../core/codec.js\";\nimport { EncodingTier } from \"../core/frames.js\";\nimport { FrameRegistry } from \"../core/registry.js\";\nimport { registerNcpFrames } from \"../ncp/registry.js\";\nimport { registerNopFrames } from \"./registry.js\";\nimport { TaskState } from \"./models.js\";\nimport type { TaskFrame } from \"./frames.js\";\n\nconst TERMINAL_STATES = new Set<TaskState>([\n TaskState.COMPLETED,\n TaskState.FAILED,\n TaskState.CANCELLED,\n]);\n\nexport class NopTaskStatus {\n constructor(private readonly _raw: Record<string, unknown>) {}\n\n get taskId(): string { return this._raw[\"task_id\"] as string; }\n get state(): TaskState { return this._raw[\"state\"] as TaskState; }\n get isTerminal(): boolean { return TERMINAL_STATES.has(this._raw[\"state\"] as TaskState); }\n get aggregatedResult(): unknown { return this._raw[\"aggregated_result\"]; }\n get errorCode(): string | undefined { return (this._raw[\"error_code\"] as string | null) ?? undefined; }\n get errorMessage(): string | undefined { return (this._raw[\"error_message\"] as string | null) ?? undefined; }\n get nodeResults(): Record<string, unknown> { return (this._raw[\"node_results\"] as Record<string, unknown> | undefined) ?? {}; }\n get raw(): Record<string, unknown> { return this._raw; }\n\n toString(): string {\n return `NopTaskStatus(taskId=${this.taskId}, state=${String(this._raw[\"state\"])})`;\n }\n}\n\nexport class NopClient {\n private readonly _baseUrl: string;\n private readonly _codec: NpsFrameCodec;\n private readonly _tier: EncodingTier;\n\n constructor(\n baseUrl: string,\n options: { defaultTier?: EncodingTier; registry?: FrameRegistry } = {},\n ) {\n this._baseUrl = baseUrl.replace(/\\/$/, \"\");\n this._tier = options.defaultTier ?? EncodingTier.MSGPACK;\n\n const registry = options.registry ?? (() => {\n const r = new FrameRegistry();\n registerNcpFrames(r);\n registerNopFrames(r);\n return r;\n })();\n this._codec = new NpsFrameCodec(registry);\n }\n\n async submit(frame: TaskFrame): Promise<string> {\n const wire = this._codec.encode(frame, { overrideTier: this._tier });\n const res = await fetch(`${this._baseUrl}/task`, {\n method: \"POST\",\n body: wire,\n headers: { \"Content-Type\": \"application/x-nps-frame\", \"Accept\": \"application/json\" },\n });\n if (!res.ok) throw new Error(`NOP /task failed: HTTP ${res.status}`);\n const data = await res.json() as Record<string, unknown>;\n return data[\"task_id\"] as string;\n }\n\n async getStatus(taskId: string): Promise<NopTaskStatus> {\n const res = await fetch(`${this._baseUrl}/task/${taskId}`, {\n headers: { \"Accept\": \"application/json\" },\n });\n if (!res.ok) throw new Error(`NOP /task/${taskId} failed: HTTP ${res.status}`);\n return new NopTaskStatus(await res.json() as Record<string, unknown>);\n }\n\n async cancel(taskId: string): Promise<void> {\n const res = await fetch(`${this._baseUrl}/task/${taskId}/cancel`, {\n method: \"POST\",\n headers: { \"Accept\": \"application/json\" },\n });\n if (!res.ok) throw new Error(`NOP /task/${taskId}/cancel failed: HTTP ${res.status}`);\n }\n\n async wait(\n taskId: string,\n options: { pollIntervalMs?: number; timeoutMs?: number } = {},\n ): Promise<NopTaskStatus> {\n const pollIntervalMs = options.pollIntervalMs ?? 1000;\n const timeoutMs = options.timeoutMs ?? 30_000;\n const deadline = Date.now() + timeoutMs;\n\n while (true) {\n const status = await this.getStatus(taskId);\n if (status.isTerminal) return status;\n\n const remaining = deadline - Date.now();\n if (remaining <= 0) {\n throw new Error(`Task '${taskId}' did not complete within ${timeoutMs}ms (state: ${String(status.raw[\"state\"])}).`);\n }\n await new Promise((resolve) => setTimeout(resolve, Math.min(pollIntervalMs, remaining)));\n }\n }\n}\n"]}