agentic-qe 2.7.4 → 2.8.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 (647) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +67 -2
  3. package/dist/agents/BaseAgent.d.ts +128 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +256 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/cli/commands/agent/spawn.d.ts +12 -1
  8. package/dist/cli/commands/agent/spawn.d.ts.map +1 -1
  9. package/dist/cli/commands/agent/spawn.js +95 -8
  10. package/dist/cli/commands/agent/spawn.js.map +1 -1
  11. package/dist/cli/commands/supabase/index.d.ts +20 -0
  12. package/dist/cli/commands/supabase/index.d.ts.map +1 -0
  13. package/dist/cli/commands/supabase/index.js +632 -0
  14. package/dist/cli/commands/supabase/index.js.map +1 -0
  15. package/dist/cli/index.js +94 -0
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  18. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts +134 -0
  19. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts.map +1 -0
  20. package/dist/edge/adapters/BrowserHNSWAdapter.js +484 -0
  21. package/dist/edge/adapters/BrowserHNSWAdapter.js.map +1 -0
  22. package/dist/edge/adapters/IndexedDBStorage.d.ts +114 -0
  23. package/dist/edge/adapters/IndexedDBStorage.d.ts.map +1 -0
  24. package/dist/edge/adapters/IndexedDBStorage.js +478 -0
  25. package/dist/edge/adapters/IndexedDBStorage.js.map +1 -0
  26. package/dist/edge/adapters/index.d.ts +12 -0
  27. package/dist/edge/adapters/index.d.ts.map +1 -0
  28. package/dist/edge/adapters/index.js +22 -0
  29. package/dist/edge/adapters/index.js.map +1 -0
  30. package/dist/edge/browser/BrowserAgent.d.ts +241 -0
  31. package/dist/edge/browser/BrowserAgent.d.ts.map +1 -0
  32. package/dist/edge/browser/BrowserAgent.js +743 -0
  33. package/dist/edge/browser/BrowserAgent.js.map +1 -0
  34. package/dist/edge/index.d.ts +34 -0
  35. package/dist/edge/index.d.ts.map +1 -0
  36. package/dist/edge/index.js +114 -0
  37. package/dist/edge/index.js.map +1 -0
  38. package/dist/edge/p2p/coordination/CoordinationManager.d.ts +181 -0
  39. package/dist/edge/p2p/coordination/CoordinationManager.d.ts.map +1 -0
  40. package/dist/edge/p2p/coordination/CoordinationManager.js +851 -0
  41. package/dist/edge/p2p/coordination/CoordinationManager.js.map +1 -0
  42. package/dist/edge/p2p/coordination/HealthMonitor.d.ts +143 -0
  43. package/dist/edge/p2p/coordination/HealthMonitor.d.ts.map +1 -0
  44. package/dist/edge/p2p/coordination/HealthMonitor.js +432 -0
  45. package/dist/edge/p2p/coordination/HealthMonitor.js.map +1 -0
  46. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts +146 -0
  47. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts.map +1 -0
  48. package/dist/edge/p2p/coordination/SyncOrchestrator.js +783 -0
  49. package/dist/edge/p2p/coordination/SyncOrchestrator.js.map +1 -0
  50. package/dist/edge/p2p/coordination/index.d.ts +70 -0
  51. package/dist/edge/p2p/coordination/index.d.ts.map +1 -0
  52. package/dist/edge/p2p/coordination/index.js +107 -0
  53. package/dist/edge/p2p/coordination/index.js.map +1 -0
  54. package/dist/edge/p2p/coordination/types.d.ts +572 -0
  55. package/dist/edge/p2p/coordination/types.d.ts.map +1 -0
  56. package/dist/edge/p2p/coordination/types.js +366 -0
  57. package/dist/edge/p2p/coordination/types.js.map +1 -0
  58. package/dist/edge/p2p/crdt/CRDTStore.d.ts +324 -0
  59. package/dist/edge/p2p/crdt/CRDTStore.d.ts.map +1 -0
  60. package/dist/edge/p2p/crdt/CRDTStore.js +839 -0
  61. package/dist/edge/p2p/crdt/CRDTStore.js.map +1 -0
  62. package/dist/edge/p2p/crdt/GCounter.d.ts +173 -0
  63. package/dist/edge/p2p/crdt/GCounter.d.ts.map +1 -0
  64. package/dist/edge/p2p/crdt/GCounter.js +394 -0
  65. package/dist/edge/p2p/crdt/GCounter.js.map +1 -0
  66. package/dist/edge/p2p/crdt/LWWRegister.d.ts +200 -0
  67. package/dist/edge/p2p/crdt/LWWRegister.d.ts.map +1 -0
  68. package/dist/edge/p2p/crdt/LWWRegister.js +456 -0
  69. package/dist/edge/p2p/crdt/LWWRegister.js.map +1 -0
  70. package/dist/edge/p2p/crdt/ORSet.d.ts +232 -0
  71. package/dist/edge/p2p/crdt/ORSet.d.ts.map +1 -0
  72. package/dist/edge/p2p/crdt/ORSet.js +723 -0
  73. package/dist/edge/p2p/crdt/ORSet.js.map +1 -0
  74. package/dist/edge/p2p/crdt/PatternCRDT.d.ts +366 -0
  75. package/dist/edge/p2p/crdt/PatternCRDT.d.ts.map +1 -0
  76. package/dist/edge/p2p/crdt/PatternCRDT.js +838 -0
  77. package/dist/edge/p2p/crdt/PatternCRDT.js.map +1 -0
  78. package/dist/edge/p2p/crdt/VectorClock.d.ts +274 -0
  79. package/dist/edge/p2p/crdt/VectorClock.d.ts.map +1 -0
  80. package/dist/edge/p2p/crdt/VectorClock.js +499 -0
  81. package/dist/edge/p2p/crdt/VectorClock.js.map +1 -0
  82. package/dist/edge/p2p/crdt/index.d.ts +87 -0
  83. package/dist/edge/p2p/crdt/index.d.ts.map +1 -0
  84. package/dist/edge/p2p/crdt/index.js +120 -0
  85. package/dist/edge/p2p/crdt/index.js.map +1 -0
  86. package/dist/edge/p2p/crdt/types.d.ts +667 -0
  87. package/dist/edge/p2p/crdt/types.d.ts.map +1 -0
  88. package/dist/edge/p2p/crdt/types.js +208 -0
  89. package/dist/edge/p2p/crdt/types.js.map +1 -0
  90. package/dist/edge/p2p/crypto/Identity.d.ts +139 -0
  91. package/dist/edge/p2p/crypto/Identity.d.ts.map +1 -0
  92. package/dist/edge/p2p/crypto/Identity.js +449 -0
  93. package/dist/edge/p2p/crypto/Identity.js.map +1 -0
  94. package/dist/edge/p2p/crypto/KeyManager.d.ts +196 -0
  95. package/dist/edge/p2p/crypto/KeyManager.d.ts.map +1 -0
  96. package/dist/edge/p2p/crypto/KeyManager.js +576 -0
  97. package/dist/edge/p2p/crypto/KeyManager.js.map +1 -0
  98. package/dist/edge/p2p/crypto/Signer.d.ts +164 -0
  99. package/dist/edge/p2p/crypto/Signer.d.ts.map +1 -0
  100. package/dist/edge/p2p/crypto/Signer.js +357 -0
  101. package/dist/edge/p2p/crypto/Signer.js.map +1 -0
  102. package/dist/edge/p2p/crypto/index.d.ts +90 -0
  103. package/dist/edge/p2p/crypto/index.d.ts.map +1 -0
  104. package/dist/edge/p2p/crypto/index.js +158 -0
  105. package/dist/edge/p2p/crypto/index.js.map +1 -0
  106. package/dist/edge/p2p/crypto/types.d.ts +217 -0
  107. package/dist/edge/p2p/crypto/types.d.ts.map +1 -0
  108. package/dist/edge/p2p/crypto/types.js +42 -0
  109. package/dist/edge/p2p/crypto/types.js.map +1 -0
  110. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts +270 -0
  111. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts.map +1 -0
  112. package/dist/edge/p2p/federated/FederatedCoordinator.js +824 -0
  113. package/dist/edge/p2p/federated/FederatedCoordinator.js.map +1 -0
  114. package/dist/edge/p2p/federated/FederatedRound.d.ts +295 -0
  115. package/dist/edge/p2p/federated/FederatedRound.d.ts.map +1 -0
  116. package/dist/edge/p2p/federated/FederatedRound.js +819 -0
  117. package/dist/edge/p2p/federated/FederatedRound.js.map +1 -0
  118. package/dist/edge/p2p/federated/GradientAggregator.d.ts +226 -0
  119. package/dist/edge/p2p/federated/GradientAggregator.d.ts.map +1 -0
  120. package/dist/edge/p2p/federated/GradientAggregator.js +826 -0
  121. package/dist/edge/p2p/federated/GradientAggregator.js.map +1 -0
  122. package/dist/edge/p2p/federated/ModelManager.d.ts +248 -0
  123. package/dist/edge/p2p/federated/ModelManager.d.ts.map +1 -0
  124. package/dist/edge/p2p/federated/ModelManager.js +724 -0
  125. package/dist/edge/p2p/federated/ModelManager.js.map +1 -0
  126. package/dist/edge/p2p/federated/index.d.ts +65 -0
  127. package/dist/edge/p2p/federated/index.d.ts.map +1 -0
  128. package/dist/edge/p2p/federated/index.js +110 -0
  129. package/dist/edge/p2p/federated/index.js.map +1 -0
  130. package/dist/edge/p2p/federated/types.d.ts +905 -0
  131. package/dist/edge/p2p/federated/types.d.ts.map +1 -0
  132. package/dist/edge/p2p/federated/types.js +339 -0
  133. package/dist/edge/p2p/federated/types.js.map +1 -0
  134. package/dist/edge/p2p/index.d.ts +156 -0
  135. package/dist/edge/p2p/index.d.ts.map +1 -0
  136. package/dist/edge/p2p/index.js +242 -0
  137. package/dist/edge/p2p/index.js.map +1 -0
  138. package/dist/edge/p2p/nat/ConnectivityTester.d.ts +128 -0
  139. package/dist/edge/p2p/nat/ConnectivityTester.d.ts.map +1 -0
  140. package/dist/edge/p2p/nat/ConnectivityTester.js +560 -0
  141. package/dist/edge/p2p/nat/ConnectivityTester.js.map +1 -0
  142. package/dist/edge/p2p/nat/HolePuncher.d.ts +159 -0
  143. package/dist/edge/p2p/nat/HolePuncher.d.ts.map +1 -0
  144. package/dist/edge/p2p/nat/HolePuncher.js +569 -0
  145. package/dist/edge/p2p/nat/HolePuncher.js.map +1 -0
  146. package/dist/edge/p2p/nat/NATDetector.d.ts +109 -0
  147. package/dist/edge/p2p/nat/NATDetector.d.ts.map +1 -0
  148. package/dist/edge/p2p/nat/NATDetector.js +472 -0
  149. package/dist/edge/p2p/nat/NATDetector.js.map +1 -0
  150. package/dist/edge/p2p/nat/TURNManager.d.ts +158 -0
  151. package/dist/edge/p2p/nat/TURNManager.d.ts.map +1 -0
  152. package/dist/edge/p2p/nat/TURNManager.js +547 -0
  153. package/dist/edge/p2p/nat/TURNManager.js.map +1 -0
  154. package/dist/edge/p2p/nat/index.d.ts +74 -0
  155. package/dist/edge/p2p/nat/index.d.ts.map +1 -0
  156. package/dist/edge/p2p/nat/index.js +104 -0
  157. package/dist/edge/p2p/nat/index.js.map +1 -0
  158. package/dist/edge/p2p/nat/types.d.ts +583 -0
  159. package/dist/edge/p2p/nat/types.d.ts.map +1 -0
  160. package/dist/edge/p2p/nat/types.js +267 -0
  161. package/dist/edge/p2p/nat/types.js.map +1 -0
  162. package/dist/edge/p2p/protocol/AgentChannel.d.ts +333 -0
  163. package/dist/edge/p2p/protocol/AgentChannel.d.ts.map +1 -0
  164. package/dist/edge/p2p/protocol/AgentChannel.js +914 -0
  165. package/dist/edge/p2p/protocol/AgentChannel.js.map +1 -0
  166. package/dist/edge/p2p/protocol/MessageEncoder.d.ts +147 -0
  167. package/dist/edge/p2p/protocol/MessageEncoder.d.ts.map +1 -0
  168. package/dist/edge/p2p/protocol/MessageEncoder.js +738 -0
  169. package/dist/edge/p2p/protocol/MessageEncoder.js.map +1 -0
  170. package/dist/edge/p2p/protocol/MessageRouter.d.ts +266 -0
  171. package/dist/edge/p2p/protocol/MessageRouter.d.ts.map +1 -0
  172. package/dist/edge/p2p/protocol/MessageRouter.js +808 -0
  173. package/dist/edge/p2p/protocol/MessageRouter.js.map +1 -0
  174. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts +309 -0
  175. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts.map +1 -0
  176. package/dist/edge/p2p/protocol/ProtocolHandler.js +930 -0
  177. package/dist/edge/p2p/protocol/ProtocolHandler.js.map +1 -0
  178. package/dist/edge/p2p/protocol/index.d.ts +114 -0
  179. package/dist/edge/p2p/protocol/index.d.ts.map +1 -0
  180. package/dist/edge/p2p/protocol/index.js +206 -0
  181. package/dist/edge/p2p/protocol/index.js.map +1 -0
  182. package/dist/edge/p2p/protocol/types.d.ts +737 -0
  183. package/dist/edge/p2p/protocol/types.d.ts.map +1 -0
  184. package/dist/edge/p2p/protocol/types.js +490 -0
  185. package/dist/edge/p2p/protocol/types.js.map +1 -0
  186. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts +284 -0
  187. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts.map +1 -0
  188. package/dist/edge/p2p/sharing/PatternBroadcaster.js +644 -0
  189. package/dist/edge/p2p/sharing/PatternBroadcaster.js.map +1 -0
  190. package/dist/edge/p2p/sharing/PatternIndex.d.ts +168 -0
  191. package/dist/edge/p2p/sharing/PatternIndex.d.ts.map +1 -0
  192. package/dist/edge/p2p/sharing/PatternIndex.js +781 -0
  193. package/dist/edge/p2p/sharing/PatternIndex.js.map +1 -0
  194. package/dist/edge/p2p/sharing/PatternSerializer.d.ts +163 -0
  195. package/dist/edge/p2p/sharing/PatternSerializer.d.ts.map +1 -0
  196. package/dist/edge/p2p/sharing/PatternSerializer.js +696 -0
  197. package/dist/edge/p2p/sharing/PatternSerializer.js.map +1 -0
  198. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts +242 -0
  199. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts.map +1 -0
  200. package/dist/edge/p2p/sharing/PatternSyncManager.js +859 -0
  201. package/dist/edge/p2p/sharing/PatternSyncManager.js.map +1 -0
  202. package/dist/edge/p2p/sharing/index.d.ts +90 -0
  203. package/dist/edge/p2p/sharing/index.d.ts.map +1 -0
  204. package/dist/edge/p2p/sharing/index.js +152 -0
  205. package/dist/edge/p2p/sharing/index.js.map +1 -0
  206. package/dist/edge/p2p/sharing/types.d.ts +796 -0
  207. package/dist/edge/p2p/sharing/types.d.ts.map +1 -0
  208. package/dist/edge/p2p/sharing/types.js +264 -0
  209. package/dist/edge/p2p/sharing/types.js.map +1 -0
  210. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts +218 -0
  211. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts.map +1 -0
  212. package/dist/edge/p2p/webrtc/ConnectionPool.js +562 -0
  213. package/dist/edge/p2p/webrtc/ConnectionPool.js.map +1 -0
  214. package/dist/edge/p2p/webrtc/ICEManager.d.ts +171 -0
  215. package/dist/edge/p2p/webrtc/ICEManager.d.ts.map +1 -0
  216. package/dist/edge/p2p/webrtc/ICEManager.js +490 -0
  217. package/dist/edge/p2p/webrtc/ICEManager.js.map +1 -0
  218. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts +159 -0
  219. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts.map +1 -0
  220. package/dist/edge/p2p/webrtc/PeerConnectionManager.js +735 -0
  221. package/dist/edge/p2p/webrtc/PeerConnectionManager.js.map +1 -0
  222. package/dist/edge/p2p/webrtc/SignalingClient.d.ts +191 -0
  223. package/dist/edge/p2p/webrtc/SignalingClient.d.ts.map +1 -0
  224. package/dist/edge/p2p/webrtc/SignalingClient.js +608 -0
  225. package/dist/edge/p2p/webrtc/SignalingClient.js.map +1 -0
  226. package/dist/edge/p2p/webrtc/index.d.ts +158 -0
  227. package/dist/edge/p2p/webrtc/index.d.ts.map +1 -0
  228. package/dist/edge/p2p/webrtc/index.js +164 -0
  229. package/dist/edge/p2p/webrtc/index.js.map +1 -0
  230. package/dist/edge/p2p/webrtc/types.d.ts +665 -0
  231. package/dist/edge/p2p/webrtc/types.d.ts.map +1 -0
  232. package/dist/edge/p2p/webrtc/types.js +245 -0
  233. package/dist/edge/p2p/webrtc/types.js.map +1 -0
  234. package/dist/edge/server/AgentSpawnAPI.d.ts +98 -0
  235. package/dist/edge/server/AgentSpawnAPI.d.ts.map +1 -0
  236. package/dist/edge/server/AgentSpawnAPI.js +264 -0
  237. package/dist/edge/server/AgentSpawnAPI.js.map +1 -0
  238. package/dist/edge/server/SignalingServer.d.ts +71 -0
  239. package/dist/edge/server/SignalingServer.d.ts.map +1 -0
  240. package/dist/edge/server/SignalingServer.js +429 -0
  241. package/dist/edge/server/SignalingServer.js.map +1 -0
  242. package/dist/edge/server/index.d.ts +64 -0
  243. package/dist/edge/server/index.d.ts.map +1 -0
  244. package/dist/edge/server/index.js +318 -0
  245. package/dist/edge/server/index.js.map +1 -0
  246. package/dist/edge/types/browser-agent.types.d.ts +455 -0
  247. package/dist/edge/types/browser-agent.types.d.ts.map +1 -0
  248. package/dist/edge/types/browser-agent.types.js +116 -0
  249. package/dist/edge/types/browser-agent.types.js.map +1 -0
  250. package/dist/edge/types/index.d.ts +11 -0
  251. package/dist/edge/types/index.d.ts.map +1 -0
  252. package/dist/edge/types/index.js +17 -0
  253. package/dist/edge/types/index.js.map +1 -0
  254. package/dist/edge/types/storage.types.d.ts +207 -0
  255. package/dist/edge/types/storage.types.d.ts.map +1 -0
  256. package/dist/edge/types/storage.types.js +47 -0
  257. package/dist/edge/types/storage.types.js.map +1 -0
  258. package/dist/edge/wasm/shims.d.ts +224 -0
  259. package/dist/edge/wasm/shims.d.ts.map +1 -0
  260. package/dist/edge/wasm/shims.js +667 -0
  261. package/dist/edge/wasm/shims.js.map +1 -0
  262. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +33 -0
  263. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -0
  264. package/dist/mcp/handlers/NewDomainToolsHandler.js +305 -0
  265. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -0
  266. package/dist/mcp/handlers/filtered/index.d.ts +15 -19
  267. package/dist/mcp/handlers/filtered/index.d.ts.map +1 -1
  268. package/dist/mcp/handlers/filtered/index.js +16 -27
  269. package/dist/mcp/handlers/filtered/index.js.map +1 -1
  270. package/dist/mcp/handlers/integration/index.d.ts +5 -4
  271. package/dist/mcp/handlers/integration/index.d.ts.map +1 -1
  272. package/dist/mcp/handlers/integration/index.js +7 -7
  273. package/dist/mcp/handlers/integration/index.js.map +1 -1
  274. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
  275. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
  276. package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
  277. package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
  278. package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
  279. package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
  280. package/dist/mcp/handlers/ruvector/index.js +9 -0
  281. package/dist/mcp/handlers/ruvector/index.js.map +1 -0
  282. package/dist/mcp/server-instructions.d.ts +1 -1
  283. package/dist/mcp/server-instructions.js +1 -1
  284. package/dist/mcp/server.d.ts.map +1 -1
  285. package/dist/mcp/server.js +114 -22
  286. package/dist/mcp/server.js.map +1 -1
  287. package/dist/mcp/tools.d.ts +8 -0
  288. package/dist/mcp/tools.d.ts.map +1 -1
  289. package/dist/mcp/tools.js +412 -1
  290. package/dist/mcp/tools.js.map +1 -1
  291. package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
  292. package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
  293. package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
  294. package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
  295. package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
  296. package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
  297. package/dist/nervous-system/adapters/CircadianController.js +882 -0
  298. package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
  299. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
  300. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
  301. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
  302. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
  303. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
  304. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
  305. package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
  306. package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
  307. package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
  308. package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
  309. package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
  310. package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
  311. package/dist/nervous-system/index.d.ts +25 -0
  312. package/dist/nervous-system/index.d.ts.map +1 -0
  313. package/dist/nervous-system/index.js +80 -0
  314. package/dist/nervous-system/index.js.map +1 -0
  315. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
  316. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
  317. package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
  318. package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
  319. package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
  320. package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
  321. package/dist/nervous-system/integration/CircadianAgent.js +696 -0
  322. package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
  323. package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
  324. package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
  325. package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
  326. package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
  327. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
  328. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
  329. package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
  330. package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
  331. package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
  332. package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
  333. package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
  334. package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
  335. package/dist/nervous-system/integration/index.d.ts +22 -0
  336. package/dist/nervous-system/integration/index.d.ts.map +1 -0
  337. package/dist/nervous-system/integration/index.js +44 -0
  338. package/dist/nervous-system/integration/index.js.map +1 -0
  339. package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
  340. package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
  341. package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
  342. package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
  343. package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
  344. package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
  345. package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
  346. package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
  347. package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
  348. package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
  349. package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
  350. package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
  351. package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
  352. package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
  353. package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
  354. package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
  355. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
  356. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
  357. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
  358. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
  359. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
  360. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
  361. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
  362. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
  363. package/dist/nervous-system/persistence/index.d.ts +22 -0
  364. package/dist/nervous-system/persistence/index.d.ts.map +1 -0
  365. package/dist/nervous-system/persistence/index.js +45 -0
  366. package/dist/nervous-system/persistence/index.js.map +1 -0
  367. package/dist/nervous-system/wasm-loader.d.ts +52 -0
  368. package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
  369. package/dist/nervous-system/wasm-loader.js +188 -0
  370. package/dist/nervous-system/wasm-loader.js.map +1 -0
  371. package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
  372. package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
  373. package/dist/persistence/HybridPersistenceProvider.js +1086 -0
  374. package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
  375. package/dist/persistence/IPersistenceProvider.d.ts +657 -0
  376. package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
  377. package/dist/persistence/IPersistenceProvider.js +11 -0
  378. package/dist/persistence/IPersistenceProvider.js.map +1 -0
  379. package/dist/persistence/SupabaseConfig.d.ts +176 -0
  380. package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
  381. package/dist/persistence/SupabaseConfig.js +277 -0
  382. package/dist/persistence/SupabaseConfig.js.map +1 -0
  383. package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
  384. package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
  385. package/dist/persistence/SupabasePersistenceProvider.js +955 -0
  386. package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
  387. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
  388. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
  389. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
  390. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
  391. package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
  392. package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
  393. package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
  394. package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
  395. package/dist/persistence/adapters/index.d.ts +11 -0
  396. package/dist/persistence/adapters/index.d.ts.map +1 -0
  397. package/dist/persistence/adapters/index.js +20 -0
  398. package/dist/persistence/adapters/index.js.map +1 -0
  399. package/dist/persistence/index.d.ts +14 -0
  400. package/dist/persistence/index.d.ts.map +1 -1
  401. package/dist/persistence/index.js +36 -1
  402. package/dist/persistence/index.js.map +1 -1
  403. package/dist/planning/GOAPPlanner.d.ts +1 -0
  404. package/dist/planning/GOAPPlanner.d.ts.map +1 -1
  405. package/dist/planning/GOAPPlanner.js +12 -0
  406. package/dist/planning/GOAPPlanner.js.map +1 -1
  407. package/package.json +31 -8
  408. package/dist/alerting/AlertManager.d.ts +0 -120
  409. package/dist/alerting/AlertManager.d.ts.map +0 -1
  410. package/dist/alerting/AlertManager.js +0 -345
  411. package/dist/alerting/AlertManager.js.map +0 -1
  412. package/dist/alerting/FeedbackRouter.d.ts +0 -98
  413. package/dist/alerting/FeedbackRouter.d.ts.map +0 -1
  414. package/dist/alerting/FeedbackRouter.js +0 -331
  415. package/dist/alerting/FeedbackRouter.js.map +0 -1
  416. package/dist/alerting/StrategyApplicator.d.ts +0 -120
  417. package/dist/alerting/StrategyApplicator.d.ts.map +0 -1
  418. package/dist/alerting/StrategyApplicator.js +0 -299
  419. package/dist/alerting/StrategyApplicator.js.map +0 -1
  420. package/dist/alerting/index.d.ts +0 -68
  421. package/dist/alerting/index.d.ts.map +0 -1
  422. package/dist/alerting/index.js +0 -112
  423. package/dist/alerting/index.js.map +0 -1
  424. package/dist/alerting/types.d.ts +0 -118
  425. package/dist/alerting/types.d.ts.map +0 -1
  426. package/dist/alerting/types.js +0 -11
  427. package/dist/alerting/types.js.map +0 -1
  428. package/dist/cli/commands/fleet/backup.d.ts +0 -49
  429. package/dist/cli/commands/fleet/backup.d.ts.map +0 -1
  430. package/dist/cli/commands/fleet/backup.js +0 -88
  431. package/dist/cli/commands/fleet/backup.js.map +0 -1
  432. package/dist/cli/commands/fleet/health.d.ts +0 -154
  433. package/dist/cli/commands/fleet/health.d.ts.map +0 -1
  434. package/dist/cli/commands/fleet/health.js +0 -483
  435. package/dist/cli/commands/fleet/health.js.map +0 -1
  436. package/dist/cli/commands/fleet/init.d.ts +0 -11
  437. package/dist/cli/commands/fleet/init.d.ts.map +0 -1
  438. package/dist/cli/commands/fleet/init.js +0 -91
  439. package/dist/cli/commands/fleet/init.js.map +0 -1
  440. package/dist/cli/commands/fleet/logs.d.ts +0 -21
  441. package/dist/cli/commands/fleet/logs.d.ts.map +0 -1
  442. package/dist/cli/commands/fleet/logs.js +0 -267
  443. package/dist/cli/commands/fleet/logs.js.map +0 -1
  444. package/dist/cli/commands/fleet/metrics.d.ts +0 -27
  445. package/dist/cli/commands/fleet/metrics.d.ts.map +0 -1
  446. package/dist/cli/commands/fleet/metrics.js +0 -369
  447. package/dist/cli/commands/fleet/metrics.js.map +0 -1
  448. package/dist/cli/commands/fleet/monitor.d.ts +0 -18
  449. package/dist/cli/commands/fleet/monitor.d.ts.map +0 -1
  450. package/dist/cli/commands/fleet/monitor.js +0 -237
  451. package/dist/cli/commands/fleet/monitor.js.map +0 -1
  452. package/dist/cli/commands/fleet/optimize.d.ts +0 -42
  453. package/dist/cli/commands/fleet/optimize.d.ts.map +0 -1
  454. package/dist/cli/commands/fleet/optimize.js +0 -135
  455. package/dist/cli/commands/fleet/optimize.js.map +0 -1
  456. package/dist/cli/commands/fleet/recover.d.ts +0 -22
  457. package/dist/cli/commands/fleet/recover.d.ts.map +0 -1
  458. package/dist/cli/commands/fleet/recover.js +0 -99
  459. package/dist/cli/commands/fleet/recover.js.map +0 -1
  460. package/dist/cli/commands/fleet/restart.d.ts +0 -18
  461. package/dist/cli/commands/fleet/restart.d.ts.map +0 -1
  462. package/dist/cli/commands/fleet/restart.js +0 -290
  463. package/dist/cli/commands/fleet/restart.js.map +0 -1
  464. package/dist/cli/commands/fleet/scale.d.ts +0 -9
  465. package/dist/cli/commands/fleet/scale.d.ts.map +0 -1
  466. package/dist/cli/commands/fleet/scale.js +0 -77
  467. package/dist/cli/commands/fleet/scale.js.map +0 -1
  468. package/dist/cli/commands/fleet/shutdown.d.ts +0 -19
  469. package/dist/cli/commands/fleet/shutdown.d.ts.map +0 -1
  470. package/dist/cli/commands/fleet/shutdown.js +0 -307
  471. package/dist/cli/commands/fleet/shutdown.js.map +0 -1
  472. package/dist/cli/commands/fleet/status.d.ts +0 -10
  473. package/dist/cli/commands/fleet/status.d.ts.map +0 -1
  474. package/dist/cli/commands/fleet/status.js +0 -97
  475. package/dist/cli/commands/fleet/status.js.map +0 -1
  476. package/dist/cli/commands/fleet/topology.d.ts +0 -23
  477. package/dist/cli/commands/fleet/topology.d.ts.map +0 -1
  478. package/dist/cli/commands/fleet/topology.js +0 -376
  479. package/dist/cli/commands/fleet/topology.js.map +0 -1
  480. package/dist/cli/commands/monitor/alerts.d.ts +0 -45
  481. package/dist/cli/commands/monitor/alerts.d.ts.map +0 -1
  482. package/dist/cli/commands/monitor/alerts.js +0 -168
  483. package/dist/cli/commands/monitor/alerts.js.map +0 -1
  484. package/dist/cli/commands/monitor/analyze.d.ts +0 -49
  485. package/dist/cli/commands/monitor/analyze.d.ts.map +0 -1
  486. package/dist/cli/commands/monitor/analyze.js +0 -209
  487. package/dist/cli/commands/monitor/analyze.js.map +0 -1
  488. package/dist/cli/commands/monitor/compare.d.ts +0 -38
  489. package/dist/cli/commands/monitor/compare.d.ts.map +0 -1
  490. package/dist/cli/commands/monitor/compare.js +0 -177
  491. package/dist/cli/commands/monitor/compare.js.map +0 -1
  492. package/dist/cli/commands/monitor/dashboard.d.ts +0 -34
  493. package/dist/cli/commands/monitor/dashboard.d.ts.map +0 -1
  494. package/dist/cli/commands/monitor/dashboard.js +0 -157
  495. package/dist/cli/commands/monitor/dashboard.js.map +0 -1
  496. package/dist/cli/commands/monitor/export.d.ts +0 -36
  497. package/dist/cli/commands/monitor/export.d.ts.map +0 -1
  498. package/dist/cli/commands/monitor/export.js +0 -157
  499. package/dist/cli/commands/monitor/export.js.map +0 -1
  500. package/dist/cli/commands/monitor/index.d.ts +0 -11
  501. package/dist/cli/commands/monitor/index.d.ts.map +0 -1
  502. package/dist/cli/commands/monitor/index.js +0 -14
  503. package/dist/cli/commands/monitor/index.js.map +0 -1
  504. package/dist/cli/commands/quality/baseline.d.ts +0 -27
  505. package/dist/cli/commands/quality/baseline.d.ts.map +0 -1
  506. package/dist/cli/commands/quality/baseline.js +0 -124
  507. package/dist/cli/commands/quality/baseline.js.map +0 -1
  508. package/dist/cli/commands/quality/compare.d.ts +0 -36
  509. package/dist/cli/commands/quality/compare.d.ts.map +0 -1
  510. package/dist/cli/commands/quality/compare.js +0 -136
  511. package/dist/cli/commands/quality/compare.js.map +0 -1
  512. package/dist/cli/commands/quality/decision.d.ts +0 -81
  513. package/dist/cli/commands/quality/decision.d.ts.map +0 -1
  514. package/dist/cli/commands/quality/decision.js +0 -319
  515. package/dist/cli/commands/quality/decision.js.map +0 -1
  516. package/dist/cli/commands/quality/gate.d.ts +0 -47
  517. package/dist/cli/commands/quality/gate.d.ts.map +0 -1
  518. package/dist/cli/commands/quality/gate.js +0 -205
  519. package/dist/cli/commands/quality/gate.js.map +0 -1
  520. package/dist/cli/commands/quality/index.d.ts +0 -17
  521. package/dist/cli/commands/quality/index.d.ts.map +0 -1
  522. package/dist/cli/commands/quality/index.js +0 -41
  523. package/dist/cli/commands/quality/index.js.map +0 -1
  524. package/dist/cli/commands/quality/policy.d.ts +0 -57
  525. package/dist/cli/commands/quality/policy.d.ts.map +0 -1
  526. package/dist/cli/commands/quality/policy.js +0 -359
  527. package/dist/cli/commands/quality/policy.js.map +0 -1
  528. package/dist/cli/commands/quality/risk.d.ts +0 -41
  529. package/dist/cli/commands/quality/risk.d.ts.map +0 -1
  530. package/dist/cli/commands/quality/risk.js +0 -255
  531. package/dist/cli/commands/quality/risk.js.map +0 -1
  532. package/dist/cli/commands/quality/trends.d.ts +0 -40
  533. package/dist/cli/commands/quality/trends.d.ts.map +0 -1
  534. package/dist/cli/commands/quality/trends.js +0 -122
  535. package/dist/cli/commands/quality/trends.js.map +0 -1
  536. package/dist/cli/commands/quality/validate.d.ts +0 -44
  537. package/dist/cli/commands/quality/validate.d.ts.map +0 -1
  538. package/dist/cli/commands/quality/validate.js +0 -234
  539. package/dist/cli/commands/quality/validate.js.map +0 -1
  540. package/dist/cli/commands/test/analyze-failures.d.ts +0 -39
  541. package/dist/cli/commands/test/analyze-failures.d.ts.map +0 -1
  542. package/dist/cli/commands/test/analyze-failures.js +0 -113
  543. package/dist/cli/commands/test/analyze-failures.js.map +0 -1
  544. package/dist/cli/commands/test/clean.d.ts +0 -3
  545. package/dist/cli/commands/test/clean.d.ts.map +0 -1
  546. package/dist/cli/commands/test/clean.js +0 -148
  547. package/dist/cli/commands/test/clean.js.map +0 -1
  548. package/dist/cli/commands/test/debug.d.ts +0 -3
  549. package/dist/cli/commands/test/debug.d.ts.map +0 -1
  550. package/dist/cli/commands/test/debug.js +0 -167
  551. package/dist/cli/commands/test/debug.js.map +0 -1
  552. package/dist/cli/commands/test/diff.d.ts +0 -3
  553. package/dist/cli/commands/test/diff.d.ts.map +0 -1
  554. package/dist/cli/commands/test/diff.js +0 -195
  555. package/dist/cli/commands/test/diff.js.map +0 -1
  556. package/dist/cli/commands/test/flakiness.d.ts +0 -32
  557. package/dist/cli/commands/test/flakiness.d.ts.map +0 -1
  558. package/dist/cli/commands/test/flakiness.js +0 -121
  559. package/dist/cli/commands/test/flakiness.js.map +0 -1
  560. package/dist/cli/commands/test/index.d.ts +0 -17
  561. package/dist/cli/commands/test/index.d.ts.map +0 -1
  562. package/dist/cli/commands/test/index.js +0 -45
  563. package/dist/cli/commands/test/index.js.map +0 -1
  564. package/dist/cli/commands/test/mutate.d.ts +0 -29
  565. package/dist/cli/commands/test/mutate.d.ts.map +0 -1
  566. package/dist/cli/commands/test/mutate.js +0 -163
  567. package/dist/cli/commands/test/mutate.js.map +0 -1
  568. package/dist/cli/commands/test/parallel.d.ts +0 -3
  569. package/dist/cli/commands/test/parallel.d.ts.map +0 -1
  570. package/dist/cli/commands/test/parallel.js +0 -117
  571. package/dist/cli/commands/test/parallel.js.map +0 -1
  572. package/dist/cli/commands/test/profile.d.ts +0 -3
  573. package/dist/cli/commands/test/profile.d.ts.map +0 -1
  574. package/dist/cli/commands/test/profile.js +0 -156
  575. package/dist/cli/commands/test/profile.js.map +0 -1
  576. package/dist/cli/commands/test/queue.d.ts +0 -3
  577. package/dist/cli/commands/test/queue.d.ts.map +0 -1
  578. package/dist/cli/commands/test/queue.js +0 -140
  579. package/dist/cli/commands/test/queue.js.map +0 -1
  580. package/dist/cli/commands/test/retry.d.ts +0 -3
  581. package/dist/cli/commands/test/retry.d.ts.map +0 -1
  582. package/dist/cli/commands/test/retry.js +0 -105
  583. package/dist/cli/commands/test/retry.js.map +0 -1
  584. package/dist/cli/commands/test/snapshot.d.ts +0 -3
  585. package/dist/cli/commands/test/snapshot.d.ts.map +0 -1
  586. package/dist/cli/commands/test/snapshot.js +0 -176
  587. package/dist/cli/commands/test/snapshot.js.map +0 -1
  588. package/dist/cli/commands/test/trace.d.ts +0 -3
  589. package/dist/cli/commands/test/trace.d.ts.map +0 -1
  590. package/dist/cli/commands/test/trace.js +0 -137
  591. package/dist/cli/commands/test/trace.js.map +0 -1
  592. package/dist/cli/commands/test/watch.d.ts +0 -3
  593. package/dist/cli/commands/test/watch.d.ts.map +0 -1
  594. package/dist/cli/commands/test/watch.js +0 -130
  595. package/dist/cli/commands/test/watch.js.map +0 -1
  596. package/dist/cli/index-spec.d.ts +0 -3
  597. package/dist/cli/index-spec.d.ts.map +0 -1
  598. package/dist/cli/index-spec.js +0 -154
  599. package/dist/cli/index-spec.js.map +0 -1
  600. package/dist/cli/index-working.d.ts +0 -7
  601. package/dist/cli/index-working.d.ts.map +0 -1
  602. package/dist/cli/index-working.js +0 -617
  603. package/dist/cli/index-working.js.map +0 -1
  604. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +0 -83
  605. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +0 -1
  606. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +0 -130
  607. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +0 -1
  608. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +0 -58
  609. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +0 -1
  610. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +0 -84
  611. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +0 -1
  612. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +0 -54
  613. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +0 -1
  614. package/dist/mcp/handlers/filtered/security-scanner-filtered.js +0 -73
  615. package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +0 -1
  616. package/dist/mcp/handlers/integration/contract-validate.d.ts +0 -10
  617. package/dist/mcp/handlers/integration/contract-validate.d.ts.map +0 -1
  618. package/dist/mcp/handlers/integration/contract-validate.js +0 -348
  619. package/dist/mcp/handlers/integration/contract-validate.js.map +0 -1
  620. package/dist/reporting/ResultAggregator.d.ts +0 -107
  621. package/dist/reporting/ResultAggregator.d.ts.map +0 -1
  622. package/dist/reporting/ResultAggregator.js +0 -435
  623. package/dist/reporting/ResultAggregator.js.map +0 -1
  624. package/dist/reporting/index.d.ts +0 -48
  625. package/dist/reporting/index.d.ts.map +0 -1
  626. package/dist/reporting/index.js +0 -154
  627. package/dist/reporting/index.js.map +0 -1
  628. package/dist/reporting/reporters/ControlLoopReporter.d.ts +0 -128
  629. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +0 -1
  630. package/dist/reporting/reporters/ControlLoopReporter.js +0 -417
  631. package/dist/reporting/reporters/ControlLoopReporter.js.map +0 -1
  632. package/dist/reporting/reporters/HumanReadableReporter.d.ts +0 -140
  633. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +0 -1
  634. package/dist/reporting/reporters/HumanReadableReporter.js +0 -524
  635. package/dist/reporting/reporters/HumanReadableReporter.js.map +0 -1
  636. package/dist/reporting/reporters/JSONReporter.d.ts +0 -251
  637. package/dist/reporting/reporters/JSONReporter.d.ts.map +0 -1
  638. package/dist/reporting/reporters/JSONReporter.js +0 -325
  639. package/dist/reporting/reporters/JSONReporter.js.map +0 -1
  640. package/dist/reporting/reporters/index.d.ts +0 -14
  641. package/dist/reporting/reporters/index.d.ts.map +0 -1
  642. package/dist/reporting/reporters/index.js +0 -19
  643. package/dist/reporting/reporters/index.js.map +0 -1
  644. package/dist/reporting/types.d.ts +0 -427
  645. package/dist/reporting/types.d.ts.map +0 -1
  646. package/dist/reporting/types.js +0 -12
  647. package/dist/reporting/types.js.map +0 -1
@@ -0,0 +1,930 @@
1
+ "use strict";
2
+ /**
3
+ * Protocol Handler for Agent-to-Agent Communication
4
+ *
5
+ * Manages protocol state machine, message signing/verification using Ed25519,
6
+ * heartbeat/keepalive management, protocol version negotiation, and rate limiting.
7
+ *
8
+ * @module edge/p2p/protocol/ProtocolHandler
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ProtocolHandler = exports.ProtocolEventType = void 0;
13
+ exports.createProtocolHandler = createProtocolHandler;
14
+ const crypto_1 = require("../crypto");
15
+ const types_1 = require("./types");
16
+ const MessageEncoder_1 = require("./MessageEncoder");
17
+ /**
18
+ * Protocol handler event types
19
+ */
20
+ var ProtocolEventType;
21
+ (function (ProtocolEventType) {
22
+ ProtocolEventType["STATE_CHANGED"] = "state_changed";
23
+ ProtocolEventType["MESSAGE_SIGNED"] = "message_signed";
24
+ ProtocolEventType["MESSAGE_VERIFIED"] = "message_verified";
25
+ ProtocolEventType["VERIFICATION_FAILED"] = "verification_failed";
26
+ ProtocolEventType["HANDSHAKE_STARTED"] = "handshake_started";
27
+ ProtocolEventType["HANDSHAKE_COMPLETED"] = "handshake_completed";
28
+ ProtocolEventType["HANDSHAKE_FAILED"] = "handshake_failed";
29
+ ProtocolEventType["HEARTBEAT_SENT"] = "heartbeat_sent";
30
+ ProtocolEventType["HEARTBEAT_RECEIVED"] = "heartbeat_received";
31
+ ProtocolEventType["HEARTBEAT_TIMEOUT"] = "heartbeat_timeout";
32
+ ProtocolEventType["RATE_LIMITED"] = "rate_limited";
33
+ ProtocolEventType["CLOSING"] = "closing";
34
+ ProtocolEventType["CLOSED"] = "closed";
35
+ })(ProtocolEventType || (exports.ProtocolEventType = ProtocolEventType = {}));
36
+ // ============================================
37
+ // ProtocolHandler Class
38
+ // ============================================
39
+ /**
40
+ * Protocol handler for agent-to-agent communication
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const handler = new ProtocolHandler({
45
+ * identity: myIdentity,
46
+ * keyPair: myKeyPair,
47
+ * });
48
+ *
49
+ * // Start handshake
50
+ * const handshakeEnvelope = await handler.createHandshake();
51
+ *
52
+ * // Process incoming handshake
53
+ * const result = await handler.processHandshake(receivedEnvelope);
54
+ *
55
+ * // Create signed message
56
+ * const envelope = await handler.createMessage(MessageType.REQUEST, payload);
57
+ *
58
+ * // Verify incoming message
59
+ * const verified = await handler.verifyMessage(receivedEnvelope);
60
+ * ```
61
+ */
62
+ class ProtocolHandler {
63
+ constructor(config) {
64
+ this.state = types_1.ProtocolState.IDLE;
65
+ this.eventHandlers = [];
66
+ // Session state
67
+ this.sessionId = null;
68
+ this.remoteIdentity = null;
69
+ this.agreedVersion = types_1.PROTOCOL_VERSION;
70
+ this.agreedFeatures = [];
71
+ // Heartbeat state
72
+ this.heartbeatSequence = 0;
73
+ this.lastHeartbeatSent = 0;
74
+ this.lastHeartbeatReceived = 0;
75
+ this.heartbeatTimer = null;
76
+ this.heartbeatTimeoutTimer = null;
77
+ // Message tracking
78
+ this.messageSequence = 0;
79
+ this.processedMessages = new Set();
80
+ this.messageTimestamps = new Map();
81
+ // Tracing
82
+ this.currentTraceId = null;
83
+ this.identity = config.identity;
84
+ this.keyPair = config.keyPair;
85
+ this.config = {
86
+ identity: config.identity,
87
+ keyPair: config.keyPair,
88
+ supportedVersions: config.supportedVersions ?? [types_1.PROTOCOL_VERSION],
89
+ features: config.features ?? types_1.DEFAULT_FEATURES,
90
+ heartbeatInterval: config.heartbeatInterval ?? types_1.DEFAULT_HEARTBEAT_INTERVAL,
91
+ heartbeatTimeout: config.heartbeatTimeout ?? types_1.DEFAULT_HEARTBEAT_INTERVAL * 2,
92
+ rateLimit: config.rateLimit ?? {},
93
+ enableTracing: config.enableTracing ?? false,
94
+ metadata: config.metadata ?? {},
95
+ };
96
+ this.rateLimitConfig = {
97
+ ...types_1.DEFAULT_RATE_LIMIT,
98
+ ...this.config.rateLimit,
99
+ };
100
+ this.rateLimitBucket = {
101
+ tokens: this.rateLimitConfig.burstSize,
102
+ lastRefill: Date.now(),
103
+ messageCount: 0,
104
+ byteCount: 0,
105
+ };
106
+ this.encoder = new MessageEncoder_1.MessageEncoder();
107
+ if (this.config.enableTracing) {
108
+ this.currentTraceId = (0, types_1.generateTraceId)();
109
+ }
110
+ }
111
+ // ============================================
112
+ // State Management
113
+ // ============================================
114
+ /**
115
+ * Get current protocol state
116
+ */
117
+ getState() {
118
+ return this.state;
119
+ }
120
+ /**
121
+ * Transition to a new state
122
+ */
123
+ transitionTo(newState, reason) {
124
+ const oldState = this.state;
125
+ this.state = newState;
126
+ const transition = {
127
+ from: oldState,
128
+ to: newState,
129
+ reason,
130
+ timestamp: Date.now(),
131
+ };
132
+ this.emit({
133
+ type: ProtocolEventType.STATE_CHANGED,
134
+ timestamp: Date.now(),
135
+ details: transition,
136
+ });
137
+ }
138
+ /**
139
+ * Validate state transition
140
+ */
141
+ validateStateTransition(targetState) {
142
+ const validTransitions = {
143
+ [types_1.ProtocolState.IDLE]: [types_1.ProtocolState.CONNECTING, types_1.ProtocolState.CLOSED],
144
+ [types_1.ProtocolState.CONNECTING]: [
145
+ types_1.ProtocolState.ACTIVE,
146
+ types_1.ProtocolState.ERROR,
147
+ types_1.ProtocolState.CLOSED,
148
+ ],
149
+ [types_1.ProtocolState.ACTIVE]: [types_1.ProtocolState.CLOSING, types_1.ProtocolState.ERROR],
150
+ [types_1.ProtocolState.CLOSING]: [types_1.ProtocolState.CLOSED, types_1.ProtocolState.ERROR],
151
+ [types_1.ProtocolState.CLOSED]: [types_1.ProtocolState.IDLE],
152
+ [types_1.ProtocolState.ERROR]: [types_1.ProtocolState.IDLE, types_1.ProtocolState.CLOSED],
153
+ };
154
+ if (!validTransitions[this.state].includes(targetState)) {
155
+ throw new types_1.ProtocolError(`Invalid state transition from ${this.state} to ${targetState}`, types_1.ProtocolErrorCode.INVALID_STATE);
156
+ }
157
+ }
158
+ // ============================================
159
+ // Handshake
160
+ // ============================================
161
+ /**
162
+ * Create handshake message to initiate connection
163
+ */
164
+ async createHandshake() {
165
+ if (this.state !== types_1.ProtocolState.IDLE) {
166
+ throw new types_1.ProtocolError('Can only initiate handshake from IDLE state', types_1.ProtocolErrorCode.INVALID_STATE);
167
+ }
168
+ this.transitionTo(types_1.ProtocolState.CONNECTING, 'Initiating handshake');
169
+ // Generate challenge for identity proof
170
+ const challenge = crypto_1.Signer.generateChallenge();
171
+ // Create identity proof
172
+ const identityProof = await crypto_1.Signer.createIdentityProof(this.keyPair, this.identity, challenge);
173
+ const payload = {
174
+ identityProof: {
175
+ agentId: identityProof.agentId,
176
+ publicKey: identityProof.publicKey,
177
+ challenge: identityProof.challenge,
178
+ signature: identityProof.signature,
179
+ timestamp: identityProof.timestamp,
180
+ expiresIn: identityProof.expiresIn,
181
+ },
182
+ supportedVersions: this.config.supportedVersions,
183
+ preferredVersion: types_1.PROTOCOL_VERSION,
184
+ features: this.config.features,
185
+ metadata: this.config.metadata,
186
+ };
187
+ const envelope = await this.createMessage(types_1.MessageType.HANDSHAKE, payload, '*');
188
+ this.emit({
189
+ type: ProtocolEventType.HANDSHAKE_STARTED,
190
+ timestamp: Date.now(),
191
+ });
192
+ return envelope;
193
+ }
194
+ /**
195
+ * Process incoming handshake and create acknowledgment
196
+ */
197
+ async processHandshake(envelope) {
198
+ // Verify message signature
199
+ const verified = await this.verifyMessage(envelope);
200
+ if (!verified) {
201
+ this.transitionTo(types_1.ProtocolState.ERROR, 'Handshake signature verification failed');
202
+ return {
203
+ success: false,
204
+ error: new types_1.ProtocolError('Handshake signature verification failed', types_1.ProtocolErrorCode.INVALID_SIGNATURE),
205
+ };
206
+ }
207
+ const payload = envelope.payload;
208
+ // Verify identity proof
209
+ const proofResult = await crypto_1.Signer.verifyIdentityProof({
210
+ agentId: payload.identityProof.agentId,
211
+ publicKey: payload.identityProof.publicKey,
212
+ challenge: payload.identityProof.challenge,
213
+ signature: payload.identityProof.signature,
214
+ timestamp: payload.identityProof.timestamp,
215
+ expiresIn: payload.identityProof.expiresIn,
216
+ });
217
+ if (!proofResult.valid) {
218
+ this.transitionTo(types_1.ProtocolState.ERROR, 'Identity proof verification failed');
219
+ return {
220
+ success: false,
221
+ error: new types_1.ProtocolError(`Identity proof verification failed: ${proofResult.error}`, types_1.ProtocolErrorCode.AUTHENTICATION_FAILED),
222
+ };
223
+ }
224
+ // Negotiate version
225
+ const agreedVersion = this.negotiateVersion(payload.supportedVersions);
226
+ if (!agreedVersion) {
227
+ this.transitionTo(types_1.ProtocolState.ERROR, 'No common protocol version');
228
+ return {
229
+ success: false,
230
+ error: new types_1.ProtocolError('No common protocol version supported', types_1.ProtocolErrorCode.UNSUPPORTED_VERSION),
231
+ };
232
+ }
233
+ // Negotiate features
234
+ const agreedFeatures = this.negotiateFeatures(payload.features);
235
+ // Create session
236
+ this.sessionId = (0, types_1.generateSessionId)();
237
+ this.remoteIdentity = {
238
+ agentId: payload.identityProof.agentId,
239
+ publicKey: payload.identityProof.publicKey,
240
+ createdAt: new Date().toISOString(),
241
+ metadata: payload.metadata,
242
+ };
243
+ this.agreedVersion = agreedVersion;
244
+ this.agreedFeatures = agreedFeatures;
245
+ if (this.state === types_1.ProtocolState.IDLE) {
246
+ this.transitionTo(types_1.ProtocolState.CONNECTING, 'Received handshake');
247
+ }
248
+ this.emit({
249
+ type: ProtocolEventType.HANDSHAKE_COMPLETED,
250
+ timestamp: Date.now(),
251
+ details: {
252
+ remoteAgentId: this.remoteIdentity.agentId,
253
+ agreedVersion,
254
+ agreedFeatures,
255
+ sessionId: this.sessionId,
256
+ },
257
+ });
258
+ return {
259
+ success: true,
260
+ agreedVersion,
261
+ agreedFeatures,
262
+ sessionId: this.sessionId,
263
+ remoteIdentity: this.remoteIdentity,
264
+ };
265
+ }
266
+ /**
267
+ * Create handshake acknowledgment
268
+ */
269
+ async createHandshakeAck(result) {
270
+ if (!result.success) {
271
+ throw new types_1.ProtocolError('Cannot acknowledge failed handshake', types_1.ProtocolErrorCode.INVALID_STATE);
272
+ }
273
+ const payload = {
274
+ agreedVersion: result.agreedVersion,
275
+ agreedFeatures: result.agreedFeatures,
276
+ sessionId: result.sessionId,
277
+ timestamp: Date.now(),
278
+ publicKey: this.identity.publicKey,
279
+ };
280
+ const envelope = await this.createMessage(types_1.MessageType.HANDSHAKE_ACK, payload, result.remoteIdentity.agentId);
281
+ // Transition to active state
282
+ this.transitionTo(types_1.ProtocolState.ACTIVE, 'Handshake acknowledgment sent');
283
+ // Start heartbeat
284
+ this.startHeartbeat();
285
+ return envelope;
286
+ }
287
+ /**
288
+ * Process handshake acknowledgment
289
+ */
290
+ async processHandshakeAck(envelope) {
291
+ if (this.state !== types_1.ProtocolState.CONNECTING) {
292
+ throw new types_1.ProtocolError('Not expecting handshake acknowledgment', types_1.ProtocolErrorCode.INVALID_STATE);
293
+ }
294
+ // Verify signature
295
+ const verified = await this.verifyMessage(envelope);
296
+ if (!verified) {
297
+ this.transitionTo(types_1.ProtocolState.ERROR, 'Handshake ack signature verification failed');
298
+ return false;
299
+ }
300
+ const payload = envelope.payload;
301
+ // Store session info
302
+ this.sessionId = payload.sessionId;
303
+ this.agreedVersion = payload.agreedVersion;
304
+ this.agreedFeatures = payload.agreedFeatures;
305
+ this.remoteIdentity = {
306
+ agentId: envelope.header.senderId,
307
+ publicKey: payload.publicKey,
308
+ createdAt: new Date().toISOString(),
309
+ };
310
+ // Transition to active
311
+ this.transitionTo(types_1.ProtocolState.ACTIVE, 'Handshake acknowledgment received');
312
+ // Start heartbeat
313
+ this.startHeartbeat();
314
+ this.emit({
315
+ type: ProtocolEventType.HANDSHAKE_COMPLETED,
316
+ timestamp: Date.now(),
317
+ details: {
318
+ sessionId: this.sessionId,
319
+ agreedVersion: this.agreedVersion,
320
+ agreedFeatures: this.agreedFeatures,
321
+ },
322
+ });
323
+ return true;
324
+ }
325
+ /**
326
+ * Negotiate protocol version
327
+ */
328
+ negotiateVersion(remoteVersions) {
329
+ // Find highest common version
330
+ const commonVersions = this.config.supportedVersions.filter((v) => remoteVersions.includes(v));
331
+ if (commonVersions.length === 0) {
332
+ return null;
333
+ }
334
+ // Sort by version (semantic versioning)
335
+ commonVersions.sort((a, b) => {
336
+ const [aMajor, aMinor, aPatch] = a.split('.').map(Number);
337
+ const [bMajor, bMinor, bPatch] = b.split('.').map(Number);
338
+ return bMajor - aMajor || bMinor - aMinor || bPatch - aPatch;
339
+ });
340
+ return commonVersions[0];
341
+ }
342
+ /**
343
+ * Negotiate features
344
+ */
345
+ negotiateFeatures(remoteFeatures) {
346
+ return this.config.features.filter((f) => remoteFeatures.includes(f));
347
+ }
348
+ // ============================================
349
+ // Message Creation and Signing
350
+ // ============================================
351
+ /**
352
+ * Create a signed protocol envelope
353
+ */
354
+ async createMessage(type, payload, recipientId = '*', options = {}) {
355
+ // Check rate limit
356
+ const rateLimitStatus = this.checkRateLimit(1, 0);
357
+ if (rateLimitStatus.limited) {
358
+ this.emit({
359
+ type: ProtocolEventType.RATE_LIMITED,
360
+ timestamp: Date.now(),
361
+ details: rateLimitStatus,
362
+ });
363
+ throw new types_1.ProtocolError(`Rate limited. Retry after ${rateLimitStatus.retryAfter}ms`, types_1.ProtocolErrorCode.RATE_LIMITED, true);
364
+ }
365
+ // Create header
366
+ const header = {
367
+ version: this.agreedVersion,
368
+ messageId: (0, types_1.generateMessageId)(),
369
+ correlationId: options.correlationId,
370
+ type,
371
+ priority: options.priority ?? types_1.MessagePriority.NORMAL,
372
+ senderId: this.identity.agentId,
373
+ recipientId,
374
+ timestamp: Date.now(),
375
+ ttl: options.ttl ?? types_1.DEFAULT_MESSAGE_TTL,
376
+ hopCount: 0,
377
+ maxHops: 5,
378
+ compressed: false,
379
+ delivery: options.delivery ?? types_1.DeliverySemantics.AT_LEAST_ONCE,
380
+ routing: options.routing ?? types_1.RoutingMode.UNICAST,
381
+ schemaVersion: 1,
382
+ };
383
+ // Create metadata
384
+ const metadata = {};
385
+ if (this.config.enableTracing) {
386
+ metadata.traceId = this.currentTraceId ?? (0, types_1.generateTraceId)();
387
+ metadata.spanId = (0, types_1.generateSpanId)();
388
+ }
389
+ // Create message to sign
390
+ const messageToSign = {
391
+ header,
392
+ payload,
393
+ };
394
+ // Sign message
395
+ const signedMessage = await crypto_1.Signer.sign(this.keyPair, this.identity, messageToSign, true);
396
+ const envelope = {
397
+ header,
398
+ payload,
399
+ signature: signedMessage.signature,
400
+ signerPublicKey: signedMessage.signerPublicKey,
401
+ metadata,
402
+ };
403
+ // Consume rate limit token
404
+ this.consumeRateLimit(1, JSON.stringify(payload).length);
405
+ // Track message
406
+ this.messageSequence++;
407
+ this.messageTimestamps.set(header.messageId, Date.now());
408
+ this.emit({
409
+ type: ProtocolEventType.MESSAGE_SIGNED,
410
+ timestamp: Date.now(),
411
+ details: { messageId: header.messageId, type },
412
+ });
413
+ return envelope;
414
+ }
415
+ /**
416
+ * Verify a signed protocol envelope
417
+ */
418
+ async verifyMessage(envelope) {
419
+ try {
420
+ // Check for duplicates (replay protection)
421
+ if (this.processedMessages.has(envelope.header.messageId)) {
422
+ throw new types_1.ProtocolError('Duplicate message', types_1.ProtocolErrorCode.DUPLICATE);
423
+ }
424
+ // Check TTL
425
+ const age = Date.now() - envelope.header.timestamp;
426
+ if (age > envelope.header.ttl) {
427
+ throw new types_1.ProtocolError('Message expired', types_1.ProtocolErrorCode.TTL_EXPIRED);
428
+ }
429
+ // Check hop count
430
+ if (envelope.header.hopCount > envelope.header.maxHops) {
431
+ throw new types_1.ProtocolError('Max hops exceeded', types_1.ProtocolErrorCode.MAX_HOPS_EXCEEDED);
432
+ }
433
+ // Verify signature
434
+ const messageToVerify = {
435
+ header: envelope.header,
436
+ payload: envelope.payload,
437
+ };
438
+ // Create canonical JSON for verification
439
+ const canonical = crypto_1.Signer.canonicalizeJson(messageToVerify);
440
+ const encoder = new TextEncoder();
441
+ const messageBytes = encoder.encode(canonical);
442
+ // Recreate the signing context
443
+ const signingContext = {
444
+ payload: canonical,
445
+ publicKey: envelope.signerPublicKey,
446
+ signedAt: new Date(envelope.header.timestamp).toISOString(),
447
+ nonce: undefined, // The nonce was included in the original signing
448
+ };
449
+ const signedMessage = {
450
+ payload: messageToVerify,
451
+ signature: envelope.signature,
452
+ signerPublicKey: envelope.signerPublicKey,
453
+ signerId: envelope.header.senderId,
454
+ signedAt: new Date(envelope.header.timestamp).toISOString(),
455
+ };
456
+ const verifyResult = await crypto_1.Signer.verify(signedMessage);
457
+ if (!verifyResult.valid) {
458
+ this.emit({
459
+ type: ProtocolEventType.VERIFICATION_FAILED,
460
+ timestamp: Date.now(),
461
+ details: {
462
+ messageId: envelope.header.messageId,
463
+ error: verifyResult.error,
464
+ },
465
+ });
466
+ return false;
467
+ }
468
+ // Verify sender identity matches signature
469
+ if (verifyResult.signerId !== envelope.header.senderId) {
470
+ this.emit({
471
+ type: ProtocolEventType.VERIFICATION_FAILED,
472
+ timestamp: Date.now(),
473
+ details: {
474
+ messageId: envelope.header.messageId,
475
+ error: 'Sender ID mismatch',
476
+ },
477
+ });
478
+ return false;
479
+ }
480
+ // Mark message as processed
481
+ this.processedMessages.add(envelope.header.messageId);
482
+ // Cleanup old processed messages (keep last 10000)
483
+ if (this.processedMessages.size > 10000) {
484
+ const oldest = Array.from(this.processedMessages).slice(0, 5000);
485
+ for (const id of oldest) {
486
+ this.processedMessages.delete(id);
487
+ }
488
+ }
489
+ this.emit({
490
+ type: ProtocolEventType.MESSAGE_VERIFIED,
491
+ timestamp: Date.now(),
492
+ details: { messageId: envelope.header.messageId },
493
+ });
494
+ return true;
495
+ }
496
+ catch (error) {
497
+ this.emit({
498
+ type: ProtocolEventType.VERIFICATION_FAILED,
499
+ timestamp: Date.now(),
500
+ details: {
501
+ messageId: envelope.header.messageId,
502
+ error: error instanceof Error ? error.message : 'Unknown error',
503
+ },
504
+ });
505
+ return false;
506
+ }
507
+ }
508
+ // ============================================
509
+ // Heartbeat Management
510
+ // ============================================
511
+ /**
512
+ * Start heartbeat timer
513
+ */
514
+ startHeartbeat() {
515
+ if (this.heartbeatTimer)
516
+ return;
517
+ this.heartbeatTimer = setInterval(() => {
518
+ this.sendHeartbeat();
519
+ }, this.config.heartbeatInterval);
520
+ // Send initial heartbeat
521
+ this.sendHeartbeat();
522
+ }
523
+ /**
524
+ * Stop heartbeat timer
525
+ */
526
+ stopHeartbeat() {
527
+ if (this.heartbeatTimer) {
528
+ clearInterval(this.heartbeatTimer);
529
+ this.heartbeatTimer = null;
530
+ }
531
+ if (this.heartbeatTimeoutTimer) {
532
+ clearTimeout(this.heartbeatTimeoutTimer);
533
+ this.heartbeatTimeoutTimer = null;
534
+ }
535
+ }
536
+ /**
537
+ * Send heartbeat message
538
+ */
539
+ async sendHeartbeat() {
540
+ if (this.state !== types_1.ProtocolState.ACTIVE)
541
+ return null;
542
+ const payload = {
543
+ sequence: ++this.heartbeatSequence,
544
+ timestamp: Date.now(),
545
+ isResponse: false,
546
+ stats: {
547
+ messagesSent: this.messageSequence,
548
+ messagesReceived: this.processedMessages.size,
549
+ queueSize: 0, // Will be filled by router
550
+ },
551
+ };
552
+ try {
553
+ const envelope = await this.createMessage(types_1.MessageType.HEARTBEAT, payload, this.remoteIdentity?.agentId ?? '*', { priority: types_1.MessagePriority.HIGH });
554
+ this.lastHeartbeatSent = Date.now();
555
+ // Start timeout timer
556
+ this.startHeartbeatTimeout();
557
+ this.emit({
558
+ type: ProtocolEventType.HEARTBEAT_SENT,
559
+ timestamp: Date.now(),
560
+ details: { sequence: this.heartbeatSequence },
561
+ });
562
+ return envelope;
563
+ }
564
+ catch {
565
+ return null;
566
+ }
567
+ }
568
+ /**
569
+ * Process incoming heartbeat
570
+ */
571
+ async processHeartbeat(envelope) {
572
+ const payload = envelope.payload;
573
+ this.lastHeartbeatReceived = Date.now();
574
+ // Clear timeout timer
575
+ if (this.heartbeatTimeoutTimer) {
576
+ clearTimeout(this.heartbeatTimeoutTimer);
577
+ this.heartbeatTimeoutTimer = null;
578
+ }
579
+ this.emit({
580
+ type: ProtocolEventType.HEARTBEAT_RECEIVED,
581
+ timestamp: Date.now(),
582
+ details: {
583
+ sequence: payload.sequence,
584
+ latency: payload.isResponse ? Date.now() - payload.originalTimestamp : undefined,
585
+ },
586
+ });
587
+ // If this is a request, send response
588
+ if (!payload.isResponse) {
589
+ const responsePayload = {
590
+ sequence: payload.sequence,
591
+ timestamp: Date.now(),
592
+ isResponse: true,
593
+ originalTimestamp: payload.timestamp,
594
+ stats: {
595
+ messagesSent: this.messageSequence,
596
+ messagesReceived: this.processedMessages.size,
597
+ queueSize: 0,
598
+ },
599
+ };
600
+ return this.createMessage(types_1.MessageType.HEARTBEAT, responsePayload, envelope.header.senderId, {
601
+ priority: types_1.MessagePriority.HIGH,
602
+ });
603
+ }
604
+ return null;
605
+ }
606
+ /**
607
+ * Start heartbeat timeout timer
608
+ */
609
+ startHeartbeatTimeout() {
610
+ if (this.heartbeatTimeoutTimer) {
611
+ clearTimeout(this.heartbeatTimeoutTimer);
612
+ }
613
+ this.heartbeatTimeoutTimer = setTimeout(() => {
614
+ this.handleHeartbeatTimeout();
615
+ }, this.config.heartbeatTimeout);
616
+ }
617
+ /**
618
+ * Handle heartbeat timeout
619
+ */
620
+ handleHeartbeatTimeout() {
621
+ this.emit({
622
+ type: ProtocolEventType.HEARTBEAT_TIMEOUT,
623
+ timestamp: Date.now(),
624
+ details: {
625
+ lastSent: this.lastHeartbeatSent,
626
+ lastReceived: this.lastHeartbeatReceived,
627
+ },
628
+ });
629
+ // Transition to error state after timeout
630
+ this.transitionTo(types_1.ProtocolState.ERROR, 'Heartbeat timeout');
631
+ }
632
+ /**
633
+ * Get heartbeat latency (ms)
634
+ */
635
+ getHeartbeatLatency() {
636
+ if (this.lastHeartbeatSent === 0 || this.lastHeartbeatReceived === 0) {
637
+ return null;
638
+ }
639
+ return this.lastHeartbeatReceived - this.lastHeartbeatSent;
640
+ }
641
+ // ============================================
642
+ // Rate Limiting
643
+ // ============================================
644
+ /**
645
+ * Check rate limit without consuming
646
+ */
647
+ checkRateLimit(messages, bytes) {
648
+ this.refillBucket();
649
+ const limited = this.rateLimitBucket.tokens < messages ||
650
+ this.rateLimitBucket.byteCount + bytes > this.rateLimitConfig.bytesPerSecond;
651
+ const remaining = Math.floor(this.rateLimitBucket.tokens);
652
+ const resetIn = this.rateLimitConfig.windowSize - (Date.now() - this.rateLimitBucket.lastRefill);
653
+ return {
654
+ limited,
655
+ currentRate: this.rateLimitBucket.messageCount,
656
+ remaining,
657
+ resetIn: Math.max(0, resetIn),
658
+ retryAfter: limited ? resetIn : undefined,
659
+ };
660
+ }
661
+ /**
662
+ * Consume rate limit tokens
663
+ */
664
+ consumeRateLimit(messages, bytes) {
665
+ this.rateLimitBucket.tokens -= messages;
666
+ this.rateLimitBucket.messageCount += messages;
667
+ this.rateLimitBucket.byteCount += bytes;
668
+ }
669
+ /**
670
+ * Refill rate limit bucket based on elapsed time
671
+ */
672
+ refillBucket() {
673
+ const now = Date.now();
674
+ const elapsed = now - this.rateLimitBucket.lastRefill;
675
+ if (elapsed >= this.rateLimitConfig.windowSize) {
676
+ // Full reset
677
+ this.rateLimitBucket.tokens = this.rateLimitConfig.burstSize;
678
+ this.rateLimitBucket.messageCount = 0;
679
+ this.rateLimitBucket.byteCount = 0;
680
+ this.rateLimitBucket.lastRefill = now;
681
+ }
682
+ else {
683
+ // Partial refill
684
+ const refillRate = this.rateLimitConfig.messagesPerSecond / (1000 / this.rateLimitConfig.windowSize);
685
+ const refillAmount = (elapsed / this.rateLimitConfig.windowSize) * refillRate;
686
+ this.rateLimitBucket.tokens = Math.min(this.rateLimitConfig.burstSize, this.rateLimitBucket.tokens + refillAmount);
687
+ }
688
+ }
689
+ /**
690
+ * Get current rate limit status
691
+ */
692
+ getRateLimitStatus() {
693
+ return this.checkRateLimit(0, 0);
694
+ }
695
+ // ============================================
696
+ // Message Creation Helpers
697
+ // ============================================
698
+ /**
699
+ * Create request message
700
+ */
701
+ async createRequest(method, params, recipientId, timeout) {
702
+ const payload = {
703
+ method,
704
+ params,
705
+ timeout,
706
+ };
707
+ return this.createMessage(types_1.MessageType.REQUEST, payload, recipientId);
708
+ }
709
+ /**
710
+ * Create response message
711
+ */
712
+ async createResponse(correlationId, result, recipientId) {
713
+ const payload = {
714
+ success: true,
715
+ result,
716
+ };
717
+ return this.createMessage(types_1.MessageType.RESPONSE, payload, recipientId, { correlationId });
718
+ }
719
+ /**
720
+ * Create error response
721
+ */
722
+ async createErrorResponse(correlationId, error, recipientId) {
723
+ const payload = {
724
+ success: false,
725
+ error: error.toInfo(),
726
+ };
727
+ return this.createMessage(types_1.MessageType.RESPONSE, payload, recipientId, { correlationId });
728
+ }
729
+ /**
730
+ * Create event message
731
+ */
732
+ async createEvent(event, data, recipientId = '*', requiresAck = false) {
733
+ const payload = {
734
+ event,
735
+ data,
736
+ requiresAck,
737
+ };
738
+ return this.createMessage(types_1.MessageType.EVENT, payload, recipientId, {
739
+ routing: recipientId === '*' ? types_1.RoutingMode.BROADCAST : types_1.RoutingMode.UNICAST,
740
+ });
741
+ }
742
+ /**
743
+ * Create acknowledgment message
744
+ */
745
+ async createAck(messageId, recipientId) {
746
+ const payload = {
747
+ messageId,
748
+ timestamp: Date.now(),
749
+ };
750
+ return this.createMessage(types_1.MessageType.ACK, payload, recipientId, {
751
+ priority: types_1.MessagePriority.HIGH,
752
+ });
753
+ }
754
+ /**
755
+ * Create negative acknowledgment message
756
+ */
757
+ async createNack(messageId, reason, code, recipientId) {
758
+ const payload = {
759
+ messageId,
760
+ reason,
761
+ code,
762
+ retryable: (0, types_1.isRetryableError)(code),
763
+ };
764
+ return this.createMessage(types_1.MessageType.NACK, payload, recipientId, {
765
+ priority: types_1.MessagePriority.HIGH,
766
+ });
767
+ }
768
+ // ============================================
769
+ // Connection Close
770
+ // ============================================
771
+ /**
772
+ * Create close message
773
+ */
774
+ async createClose(code = types_1.CloseCode.NORMAL, reason = 'Connection closed', reconnect = false) {
775
+ this.validateStateTransition(types_1.ProtocolState.CLOSING);
776
+ this.transitionTo(types_1.ProtocolState.CLOSING, reason);
777
+ this.emit({
778
+ type: ProtocolEventType.CLOSING,
779
+ timestamp: Date.now(),
780
+ details: { code, reason, reconnect },
781
+ });
782
+ const payload = {
783
+ code,
784
+ reason,
785
+ reconnect,
786
+ };
787
+ return this.createMessage(types_1.MessageType.CLOSE, payload, this.remoteIdentity?.agentId ?? '*', { priority: types_1.MessagePriority.CRITICAL });
788
+ }
789
+ /**
790
+ * Process close message
791
+ */
792
+ processClose(envelope) {
793
+ const payload = envelope.payload;
794
+ this.transitionTo(types_1.ProtocolState.CLOSED, payload.reason);
795
+ this.stopHeartbeat();
796
+ this.emit({
797
+ type: ProtocolEventType.CLOSED,
798
+ timestamp: Date.now(),
799
+ details: payload,
800
+ });
801
+ return payload;
802
+ }
803
+ /**
804
+ * Close connection
805
+ */
806
+ close() {
807
+ this.stopHeartbeat();
808
+ if (this.state !== types_1.ProtocolState.CLOSED) {
809
+ this.transitionTo(types_1.ProtocolState.CLOSED, 'Local close');
810
+ }
811
+ this.emit({
812
+ type: ProtocolEventType.CLOSED,
813
+ timestamp: Date.now(),
814
+ });
815
+ }
816
+ // ============================================
817
+ // Events
818
+ // ============================================
819
+ /**
820
+ * Add event handler
821
+ */
822
+ on(handler) {
823
+ this.eventHandlers.push(handler);
824
+ }
825
+ /**
826
+ * Remove event handler
827
+ */
828
+ off(handler) {
829
+ const index = this.eventHandlers.indexOf(handler);
830
+ if (index !== -1) {
831
+ this.eventHandlers.splice(index, 1);
832
+ }
833
+ }
834
+ /**
835
+ * Emit event to handlers
836
+ */
837
+ emit(event) {
838
+ for (const handler of this.eventHandlers) {
839
+ try {
840
+ handler(event);
841
+ }
842
+ catch {
843
+ // Ignore handler errors
844
+ }
845
+ }
846
+ }
847
+ // ============================================
848
+ // Getters
849
+ // ============================================
850
+ /**
851
+ * Get session ID
852
+ */
853
+ getSessionId() {
854
+ return this.sessionId;
855
+ }
856
+ /**
857
+ * Get remote identity
858
+ */
859
+ getRemoteIdentity() {
860
+ return this.remoteIdentity;
861
+ }
862
+ /**
863
+ * Get agreed protocol version
864
+ */
865
+ getAgreedVersion() {
866
+ return this.agreedVersion;
867
+ }
868
+ /**
869
+ * Get agreed features
870
+ */
871
+ getAgreedFeatures() {
872
+ return [...this.agreedFeatures];
873
+ }
874
+ /**
875
+ * Check if a feature is enabled
876
+ */
877
+ hasFeature(feature) {
878
+ return this.agreedFeatures.includes(feature);
879
+ }
880
+ /**
881
+ * Get local identity
882
+ */
883
+ getLocalIdentity() {
884
+ return this.identity;
885
+ }
886
+ /**
887
+ * Get message encoder
888
+ */
889
+ getEncoder() {
890
+ return this.encoder;
891
+ }
892
+ // ============================================
893
+ // Reset
894
+ // ============================================
895
+ /**
896
+ * Reset handler state
897
+ */
898
+ reset() {
899
+ this.stopHeartbeat();
900
+ this.state = types_1.ProtocolState.IDLE;
901
+ this.sessionId = null;
902
+ this.remoteIdentity = null;
903
+ this.agreedVersion = types_1.PROTOCOL_VERSION;
904
+ this.agreedFeatures = [];
905
+ this.heartbeatSequence = 0;
906
+ this.lastHeartbeatSent = 0;
907
+ this.lastHeartbeatReceived = 0;
908
+ this.messageSequence = 0;
909
+ this.processedMessages.clear();
910
+ this.messageTimestamps.clear();
911
+ // Reset rate limit bucket
912
+ this.rateLimitBucket = {
913
+ tokens: this.rateLimitConfig.burstSize,
914
+ lastRefill: Date.now(),
915
+ messageCount: 0,
916
+ byteCount: 0,
917
+ };
918
+ }
919
+ }
920
+ exports.ProtocolHandler = ProtocolHandler;
921
+ // ============================================
922
+ // Factory Functions
923
+ // ============================================
924
+ /**
925
+ * Create a new protocol handler
926
+ */
927
+ function createProtocolHandler(config) {
928
+ return new ProtocolHandler(config);
929
+ }
930
+ //# sourceMappingURL=ProtocolHandler.js.map