@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 @@
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","// Copyright 2026 INNO LOTUS PTY LTD\n// SPDX-License-Identifier: Apache-2.0\n\n/** Base class for all NPS errors. */\nexport class NpsError extends Error {\n constructor(message: string) {\n super(message);\n this.name = new.target.name;\n }\n}\n\n/** Raised when a wire buffer cannot be parsed as a valid NPS frame. */\nexport class NpsFrameError extends NpsError {}\n\n/** Raised when frame serialisation or deserialisation fails. */\nexport class NpsCodecError extends NpsError {}\n\n/** Raised when an anchor_id is not found in the cache. */\nexport class NpsAnchorNotFoundError extends NpsError {\n constructor(public readonly anchorId: string) {\n super(`AnchorFrame not found in cache: ${anchorId}`);\n }\n}\n\n/**\n * Raised when the same anchor_id is stored with a different schema (NPS-1 §7.2).\n * This indicates a potential anchor-poisoning attack.\n */\nexport class NpsAnchorPoisonError extends NpsError {\n constructor(public readonly anchorId: string) {\n super(\n `Anchor poisoning detected: anchor_id ${anchorId} already exists with a different schema.`,\n );\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\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","// 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, 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.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"]}
@@ -0,0 +1,155 @@
1
+ import { N as NpsFrame, g as FrameType, c as EncodingTier, F as FrameRegistry } from '../codec-CmHeovTV.cjs';
2
+
3
+ declare enum TaskState {
4
+ PENDING = "pending",
5
+ PREFLIGHT = "preflight",
6
+ RUNNING = "running",
7
+ WAITING_SYNC = "waiting_sync",
8
+ COMPLETED = "completed",
9
+ FAILED = "failed",
10
+ CANCELLED = "cancelled",
11
+ SKIPPED = "skipped"
12
+ }
13
+ declare enum TaskPriority {
14
+ LOW = "low",
15
+ NORMAL = "normal",
16
+ HIGH = "high"
17
+ }
18
+ declare enum BackoffStrategy {
19
+ FIXED = "fixed",
20
+ LINEAR = "linear",
21
+ EXPONENTIAL = "exponential"
22
+ }
23
+ declare enum AggregateStrategy {
24
+ MERGE = "merge",
25
+ FIRST = "first",
26
+ FASTEST_K = "fastest_k",
27
+ ALL = "all"
28
+ }
29
+ interface RetryPolicy {
30
+ maxRetries: number;
31
+ backoff: BackoffStrategy;
32
+ baseDelayMs?: number;
33
+ maxDelayMs?: number;
34
+ }
35
+ declare function computeDelayMs(policy: RetryPolicy, attempt: number): number;
36
+ interface TaskContext {
37
+ sessionKey?: string;
38
+ requesterNid?: string;
39
+ traceId?: string;
40
+ }
41
+ interface DagNode {
42
+ id: string;
43
+ action: string;
44
+ agent: string;
45
+ inputFrom?: readonly string[];
46
+ inputMapping?: Record<string, string>;
47
+ timeoutMs?: number;
48
+ retryPolicy?: RetryPolicy;
49
+ condition?: string;
50
+ minRequired?: number;
51
+ }
52
+ interface DagEdge {
53
+ from: string;
54
+ to: string;
55
+ }
56
+ interface TaskDag {
57
+ nodes: readonly DagNode[];
58
+ edges: readonly DagEdge[];
59
+ }
60
+
61
+ declare class TaskFrame implements NpsFrame {
62
+ readonly taskId: string;
63
+ readonly dag: TaskDag;
64
+ readonly timeoutMs?: number | undefined;
65
+ readonly callbackUrl?: string | undefined;
66
+ readonly context?: TaskContext | undefined;
67
+ readonly priority?: TaskPriority | undefined;
68
+ readonly depth?: number | undefined;
69
+ readonly frameType = FrameType.TASK;
70
+ readonly preferredTier = EncodingTier.MSGPACK;
71
+ constructor(taskId: string, dag: TaskDag, timeoutMs?: number | undefined, callbackUrl?: string | undefined, context?: TaskContext | undefined, priority?: TaskPriority | undefined, depth?: number | undefined);
72
+ toDict(): Record<string, unknown>;
73
+ static fromDict(data: Record<string, unknown>): TaskFrame;
74
+ }
75
+ declare class DelegateFrame implements NpsFrame {
76
+ readonly taskId: string;
77
+ readonly subtaskId: string;
78
+ readonly action: string;
79
+ readonly agentNid: string;
80
+ readonly inputs?: Record<string, unknown> | undefined;
81
+ readonly params?: Record<string, unknown> | undefined;
82
+ readonly idempotencyKey?: string | undefined;
83
+ readonly frameType = FrameType.DELEGATE;
84
+ readonly preferredTier = EncodingTier.MSGPACK;
85
+ constructor(taskId: string, subtaskId: string, action: string, agentNid: string, inputs?: Record<string, unknown> | undefined, params?: Record<string, unknown> | undefined, idempotencyKey?: string | undefined);
86
+ toDict(): Record<string, unknown>;
87
+ static fromDict(data: Record<string, unknown>): DelegateFrame;
88
+ }
89
+ declare class SyncFrame implements NpsFrame {
90
+ readonly taskId: string;
91
+ readonly syncId: string;
92
+ readonly waitFor: readonly string[];
93
+ readonly minRequired: number;
94
+ readonly aggregate: AggregateStrategy | string;
95
+ readonly timeoutMs?: number | undefined;
96
+ readonly frameType = FrameType.SYNC;
97
+ readonly preferredTier = EncodingTier.MSGPACK;
98
+ constructor(taskId: string, syncId: string, waitFor: readonly string[], minRequired?: number, aggregate?: AggregateStrategy | string, timeoutMs?: number | undefined);
99
+ toDict(): Record<string, unknown>;
100
+ static fromDict(data: Record<string, unknown>): SyncFrame;
101
+ }
102
+ interface StreamError {
103
+ errorCode: string;
104
+ message?: string;
105
+ }
106
+ declare class AlignStreamFrame implements NpsFrame {
107
+ readonly streamId: string;
108
+ readonly taskId: string;
109
+ readonly subtaskId: string;
110
+ readonly seq: number;
111
+ readonly isFinal: boolean;
112
+ readonly senderNid: string;
113
+ readonly data?: Record<string, unknown> | undefined;
114
+ readonly error?: StreamError | undefined;
115
+ readonly windowSize?: number | undefined;
116
+ readonly frameType = FrameType.ALIGN_STREAM;
117
+ readonly preferredTier = EncodingTier.MSGPACK;
118
+ constructor(streamId: string, taskId: string, subtaskId: string, seq: number, isFinal: boolean, senderNid: string, data?: Record<string, unknown> | undefined, error?: StreamError | undefined, windowSize?: number | undefined);
119
+ toDict(): Record<string, unknown>;
120
+ static fromDict(data: Record<string, unknown>): AlignStreamFrame;
121
+ }
122
+
123
+ declare function registerNopFrames(registry: FrameRegistry): void;
124
+
125
+ declare class NopTaskStatus {
126
+ private readonly _raw;
127
+ constructor(_raw: Record<string, unknown>);
128
+ get taskId(): string;
129
+ get state(): TaskState;
130
+ get isTerminal(): boolean;
131
+ get aggregatedResult(): unknown;
132
+ get errorCode(): string | undefined;
133
+ get errorMessage(): string | undefined;
134
+ get nodeResults(): Record<string, unknown>;
135
+ get raw(): Record<string, unknown>;
136
+ toString(): string;
137
+ }
138
+ declare class NopClient {
139
+ private readonly _baseUrl;
140
+ private readonly _codec;
141
+ private readonly _tier;
142
+ constructor(baseUrl: string, options?: {
143
+ defaultTier?: EncodingTier;
144
+ registry?: FrameRegistry;
145
+ });
146
+ submit(frame: TaskFrame): Promise<string>;
147
+ getStatus(taskId: string): Promise<NopTaskStatus>;
148
+ cancel(taskId: string): Promise<void>;
149
+ wait(taskId: string, options?: {
150
+ pollIntervalMs?: number;
151
+ timeoutMs?: number;
152
+ }): Promise<NopTaskStatus>;
153
+ }
154
+
155
+ export { AggregateStrategy, AlignStreamFrame, BackoffStrategy, type DagEdge, type DagNode, DelegateFrame, NopClient, NopTaskStatus, type RetryPolicy, type StreamError, SyncFrame, type TaskContext, type TaskDag, TaskFrame, TaskPriority, TaskState, computeDelayMs, registerNopFrames };
@@ -0,0 +1,5 @@
1
+ export * from "./models.js";
2
+ export * from "./frames.js";
3
+ export * from "./registry.js";
4
+ export * from "./client.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nop/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Copyright 2026 INNO LOTUS PTY LTD
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export * from "./models.js";
4
+ export * from "./frames.js";
5
+ export * from "./registry.js";
6
+ export * from "./client.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nop/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,58 @@
1
+ export declare enum TaskState {
2
+ PENDING = "pending",
3
+ PREFLIGHT = "preflight",
4
+ RUNNING = "running",
5
+ WAITING_SYNC = "waiting_sync",
6
+ COMPLETED = "completed",
7
+ FAILED = "failed",
8
+ CANCELLED = "cancelled",
9
+ SKIPPED = "skipped"
10
+ }
11
+ export declare enum TaskPriority {
12
+ LOW = "low",
13
+ NORMAL = "normal",
14
+ HIGH = "high"
15
+ }
16
+ export declare enum BackoffStrategy {
17
+ FIXED = "fixed",
18
+ LINEAR = "linear",
19
+ EXPONENTIAL = "exponential"
20
+ }
21
+ export declare enum AggregateStrategy {
22
+ MERGE = "merge",
23
+ FIRST = "first",
24
+ FASTEST_K = "fastest_k",
25
+ ALL = "all"
26
+ }
27
+ export interface RetryPolicy {
28
+ maxRetries: number;
29
+ backoff: BackoffStrategy;
30
+ baseDelayMs?: number;
31
+ maxDelayMs?: number;
32
+ }
33
+ export declare function computeDelayMs(policy: RetryPolicy, attempt: number): number;
34
+ export interface TaskContext {
35
+ sessionKey?: string;
36
+ requesterNid?: string;
37
+ traceId?: string;
38
+ }
39
+ export interface DagNode {
40
+ id: string;
41
+ action: string;
42
+ agent: string;
43
+ inputFrom?: readonly string[];
44
+ inputMapping?: Record<string, string>;
45
+ timeoutMs?: number;
46
+ retryPolicy?: RetryPolicy;
47
+ condition?: string;
48
+ minRequired?: number;
49
+ }
50
+ export interface DagEdge {
51
+ from: string;
52
+ to: string;
53
+ }
54
+ export interface TaskDag {
55
+ nodes: readonly DagNode[];
56
+ edges: readonly DagEdge[];
57
+ }
58
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/nop/models.ts"],"names":[],"mappings":"AAGA,oBAAY,SAAS;IACnB,OAAO,YAAkB;IACzB,SAAS,cAAkB;IAC3B,OAAO,YAAkB;IACzB,YAAY,iBAAkB;IAC9B,SAAS,cAAkB;IAC3B,MAAM,WAAkB;IACxB,SAAS,cAAkB;IAC3B,OAAO,YAAkB;CAC1B;AAED,oBAAY,YAAY;IACtB,GAAG,QAAW;IACd,MAAM,WAAW;IACjB,IAAI,SAAW;CAChB;AAED,oBAAY,eAAe;IACzB,KAAK,UAAgB;IACrB,MAAM,WAAgB;IACtB,WAAW,gBAAgB;CAC5B;AAED,oBAAY,iBAAiB;IAC3B,KAAK,UAAe;IACpB,KAAK,UAAe;IACpB,SAAS,cAAe;IACxB,GAAG,QAAe;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAI,MAAM,CAAC;IACrB,OAAO,EAAO,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAG,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU3E;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAK,MAAM,CAAC;IACvB,YAAY,CAAC,EAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAQ,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAc,MAAM,CAAC;IACvB,MAAM,EAAU,MAAM,CAAC;IACvB,KAAK,EAAW,MAAM,CAAC;IACvB,SAAS,CAAC,EAAM,SAAS,MAAM,EAAE,CAAC;IAClC,YAAY,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,EAAM,MAAM,CAAC;IACvB,WAAW,CAAC,EAAI,WAAW,CAAC;IAC5B,SAAS,CAAC,EAAM,MAAM,CAAC;IACvB,WAAW,CAAC,EAAI,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAI,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CAC3B"}
@@ -0,0 +1,50 @@
1
+ // Copyright 2026 INNO LOTUS PTY LTD
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export var TaskState;
4
+ (function (TaskState) {
5
+ TaskState["PENDING"] = "pending";
6
+ TaskState["PREFLIGHT"] = "preflight";
7
+ TaskState["RUNNING"] = "running";
8
+ TaskState["WAITING_SYNC"] = "waiting_sync";
9
+ TaskState["COMPLETED"] = "completed";
10
+ TaskState["FAILED"] = "failed";
11
+ TaskState["CANCELLED"] = "cancelled";
12
+ TaskState["SKIPPED"] = "skipped";
13
+ })(TaskState || (TaskState = {}));
14
+ export var TaskPriority;
15
+ (function (TaskPriority) {
16
+ TaskPriority["LOW"] = "low";
17
+ TaskPriority["NORMAL"] = "normal";
18
+ TaskPriority["HIGH"] = "high";
19
+ })(TaskPriority || (TaskPriority = {}));
20
+ export var BackoffStrategy;
21
+ (function (BackoffStrategy) {
22
+ BackoffStrategy["FIXED"] = "fixed";
23
+ BackoffStrategy["LINEAR"] = "linear";
24
+ BackoffStrategy["EXPONENTIAL"] = "exponential";
25
+ })(BackoffStrategy || (BackoffStrategy = {}));
26
+ export var AggregateStrategy;
27
+ (function (AggregateStrategy) {
28
+ AggregateStrategy["MERGE"] = "merge";
29
+ AggregateStrategy["FIRST"] = "first";
30
+ AggregateStrategy["FASTEST_K"] = "fastest_k";
31
+ AggregateStrategy["ALL"] = "all";
32
+ })(AggregateStrategy || (AggregateStrategy = {}));
33
+ export function computeDelayMs(policy, attempt) {
34
+ const base = policy.baseDelayMs ?? 1000;
35
+ const cap = policy.maxDelayMs ?? 30_000;
36
+ let delay;
37
+ switch (policy.backoff) {
38
+ case BackoffStrategy.FIXED:
39
+ delay = base;
40
+ break;
41
+ case BackoffStrategy.LINEAR:
42
+ delay = base * (attempt + 1);
43
+ break;
44
+ case BackoffStrategy.EXPONENTIAL:
45
+ delay = base * Math.pow(2, attempt);
46
+ break;
47
+ }
48
+ return Math.min(delay, cap);
49
+ }
50
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/nop/models.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,gCAAyB,CAAA;IACzB,oCAA2B,CAAA;IAC3B,gCAAyB,CAAA;IACzB,0CAA8B,CAAA;IAC9B,oCAA2B,CAAA;IAC3B,8BAAwB,CAAA;IACxB,oCAA2B,CAAA;IAC3B,gCAAyB,CAAA;AAC3B,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAED,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,2BAAc,CAAA;IACd,iCAAiB,CAAA;IACjB,6BAAe,CAAA;AACjB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,kCAAqB,CAAA;IACrB,oCAAsB,CAAA;IACtB,8CAA2B,CAAA;AAC7B,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,oCAAoB,CAAA;IACpB,oCAAoB,CAAA;IACpB,4CAAwB,CAAA;IACxB,gCAAkB,CAAA;AACpB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AASD,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,OAAe;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;IACxC,MAAM,GAAG,GAAI,MAAM,CAAC,UAAU,IAAK,MAAM,CAAC;IAC1C,IAAI,KAAa,CAAC;IAClB,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,eAAe,CAAC,KAAK;YAAQ,KAAK,GAAG,IAAI,CAAC;YAAC,MAAM;QACtD,KAAK,eAAe,CAAC,MAAM;YAAO,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YAAC,MAAM;QACtE,KAAK,eAAe,CAAC,WAAW;YAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAAC,MAAM;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,136 @@
1
+ /** NCP protocol version marker */
2
+ type NcpVersion = 1;
3
+ /** Alternative approach considered but not taken */
4
+ export interface Alternative {
5
+ value: string;
6
+ probability: number;
7
+ }
8
+ /** NOP protocol version marker */
9
+ type NopVersion = 1;
10
+ /** Task priority levels */
11
+ export type Priority = "urgent" | "normal" | "low";
12
+ /** Task category — what kind of work this is */
13
+ export type TaskCategory = "code" | "research" | "docs" | "test" | "refactor" | "ops";
14
+ /** Task mailbox paths — where files live during lifecycle */
15
+ export interface Mailbox {
16
+ /** Base path for the task mailbox */
17
+ base: string;
18
+ /** Active directory name. Default: "active" */
19
+ active?: string;
20
+ /** Done directory name. Default: "done" */
21
+ done?: string;
22
+ }
23
+ /** Context the worker needs to do its job */
24
+ export interface TaskContext {
25
+ /** File paths relevant to the task */
26
+ files?: string[];
27
+ /** Key facts the worker needs to know */
28
+ knowledge?: string[];
29
+ /** Git branch to work on */
30
+ branch?: string;
31
+ }
32
+ /** Boundaries the worker must operate within */
33
+ export interface TaskConstraints {
34
+ /** Model to use: "sonnet", "haiku", "opus" */
35
+ model?: string;
36
+ /** Max seconds for task execution */
37
+ time_limit?: number;
38
+ /** Directories/files the worker may touch */
39
+ scope?: string[];
40
+ /** Whether changes need operator approval gate */
41
+ proceed_gate?: boolean;
42
+ }
43
+ /** NOP payload for task dispatch (MVP subset of TaskFrame 0x40) */
44
+ export interface NopIntentPayload {
45
+ _nop: NopVersion;
46
+ /** Unique task ID: task-{source}-{YYYYMMDD}-{HHMMSS} */
47
+ id: string;
48
+ /** Who dispatched — NPS NID format: urn:nps:agent:{domain}:{name} */
49
+ from: string;
50
+ /** Target worker NID. Omit = any available worker picks up */
51
+ to?: string;
52
+ /** ISO 8601 timestamp when task was dispatched */
53
+ created_at: string;
54
+ /** Task priority. Default: "normal" */
55
+ priority?: Priority;
56
+ /** What kind of work this task involves */
57
+ category?: TaskCategory;
58
+ /** Where task files live during lifecycle */
59
+ mailbox: Mailbox;
60
+ /** Context for the worker */
61
+ context?: TaskContext;
62
+ /** Execution boundaries (NPS-5 §3.2 scope carving) */
63
+ constraints?: TaskConstraints;
64
+ }
65
+ /** Terminal task states (NPS-5 §4 state machine) */
66
+ export type TaskStatus = "completed" | "failed" | "timeout" | "blocked";
67
+ /** NOP payload for task result (AlignStream equivalent — NPS-5 §3.4) */
68
+ export interface NopResultPayload {
69
+ _nop: NopVersion;
70
+ /** Same task ID from the intent */
71
+ id: string;
72
+ /** Terminal state */
73
+ status: TaskStatus;
74
+ /** Which worker executed — NPS NID format */
75
+ from: string;
76
+ /** ISO 8601 timestamp when worker claimed the task */
77
+ picked_up_at: string;
78
+ /** ISO 8601 timestamp when worker finished */
79
+ completed_at: string;
80
+ /** Files that were modified */
81
+ files_changed?: string[];
82
+ /** Git commit hashes + messages */
83
+ commits?: string[];
84
+ /** New tasks discovered during execution */
85
+ follow_up?: string[];
86
+ /** Seconds the task took */
87
+ duration?: number;
88
+ /** Error message if failed/timeout */
89
+ error?: string | null;
90
+ }
91
+ /** Complete intent message: NCP envelope + NOP payload */
92
+ export interface IntentMessage {
93
+ _ncp: NcpVersion;
94
+ type: "intent";
95
+ /** Short verb phrase: "fix-bug", "write-test", "research", "refactor" */
96
+ intent: string;
97
+ /** Orchestrator's confidence this is the right task/worker. 0-1 */
98
+ confidence: number;
99
+ /** NOP task payload */
100
+ payload: NopIntentPayload;
101
+ }
102
+ /** Complete result message: NCP envelope + NOP payload */
103
+ export interface ResultMessage {
104
+ _ncp: NcpVersion;
105
+ type: "result";
106
+ /** Human-readable summary of what was done */
107
+ value: string;
108
+ /** Worker's confidence in the result quality. 0-1 */
109
+ probability: number;
110
+ /** Other approaches considered but not taken */
111
+ alternatives: Alternative[];
112
+ /** NOP result payload */
113
+ payload: NopResultPayload;
114
+ }
115
+ /** Any NOP message */
116
+ export type NopMessage = IntentMessage | ResultMessage;
117
+ /** All possible task states */
118
+ export type TaskState = "pending" | "active" | "completed" | "failed" | "timeout" | "blocked" | "cancelled";
119
+ /** Valid state transitions */
120
+ export declare const VALID_TRANSITIONS: Record<string, TaskState[]>;
121
+ /** Directory where a task file lives based on its state */
122
+ export declare const STATE_DIRECTORY: Record<TaskState, string>;
123
+ /** File extensions by message type */
124
+ export declare const FILE_EXTENSIONS: {
125
+ readonly intent: ".intent.json";
126
+ readonly result: ".result.json";
127
+ };
128
+ /** Default mailbox directory names */
129
+ export declare const MAILBOX_DEFAULTS: {
130
+ readonly active: "active";
131
+ readonly done: "done";
132
+ readonly inbox: "inbox";
133
+ readonly blocked: "blocked";
134
+ };
135
+ export {};
136
+ //# sourceMappingURL=nop-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nop-types.d.ts","sourceRoot":"","sources":["../../src/nop/nop-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
+ //
4
+ // NOP Task Protocol — TypeScript Type Definitions
5
+ // NPS-5 Neural Orchestration Protocol, MVP subset
6
+ //
7
+ // NCP carries the envelope. NOP fills the payload.
8
+ // IntentFrame dispatches. ResultFrame reports back.
9
+ /** Valid state transitions */
10
+ export const VALID_TRANSITIONS = {
11
+ pending: ["active", "cancelled"],
12
+ active: ["completed", "failed", "timeout", "blocked"],
13
+ blocked: ["active", "cancelled"],
14
+ completed: [],
15
+ failed: [],
16
+ timeout: [],
17
+ cancelled: [],
18
+ };
19
+ // -----------------------------------------------------------------------------
20
+ // File Naming Conventions
21
+ // -----------------------------------------------------------------------------
22
+ /** Directory where a task file lives based on its state */
23
+ export const STATE_DIRECTORY = {
24
+ pending: "inbox",
25
+ active: "active",
26
+ completed: "done",
27
+ failed: "done",
28
+ timeout: "done",
29
+ blocked: "blocked",
30
+ cancelled: "done",
31
+ };
32
+ /** File extensions by message type */
33
+ export const FILE_EXTENSIONS = {
34
+ intent: ".intent.json",
35
+ result: ".result.json",
36
+ };
37
+ /** Default mailbox directory names */
38
+ export const MAILBOX_DEFAULTS = {
39
+ active: "active",
40
+ done: "done",
41
+ inbox: "inbox",
42
+ blocked: "blocked",
43
+ };
44
+ //# sourceMappingURL=nop-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nop-types.js","sourceRoot":"","sources":["../../src/nop/nop-types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,kDAAkD;AAClD,kDAAkD;AAClD,EAAE;AACF,mDAAmD;AACnD,oDAAoD;AAkKpD,8BAA8B;AAC9B,MAAM,CAAC,MAAM,iBAAiB,GAAgC;IAC5D,OAAO,EAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IAClC,MAAM,EAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;IACxD,OAAO,EAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IAClC,SAAS,EAAE,EAAE;IACb,MAAM,EAAK,EAAE;IACb,OAAO,EAAI,EAAE;IACb,SAAS,EAAE,EAAE;CACd,CAAC;AAEF,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,eAAe,GAA8B;IACxD,OAAO,EAAI,OAAO;IAClB,MAAM,EAAK,QAAQ;IACnB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAK,MAAM;IACjB,OAAO,EAAI,MAAM;IACjB,OAAO,EAAI,SAAS;IACpB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;CACd,CAAC;AAEX,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;CACV,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FrameRegistry } from "../core/registry.js";
2
+ export declare function registerNopFrames(registry: FrameRegistry): void;
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/nop/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAK/D"}