@weavelogic/knowledge-graph-agent 0.2.0 → 0.4.0

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 (711) hide show
  1. package/README.md +972 -303
  2. package/dist/_virtual/_commonjsHelpers.js +7 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/additionalItems.js +5 -0
  5. package/dist/_virtual/additionalItems.js.map +1 -0
  6. package/dist/_virtual/additionalProperties.js +5 -0
  7. package/dist/_virtual/additionalProperties.js.map +1 -0
  8. package/dist/_virtual/ajv.js +6 -0
  9. package/dist/_virtual/ajv.js.map +1 -0
  10. package/dist/_virtual/ajv2.js +5 -0
  11. package/dist/_virtual/ajv2.js.map +1 -0
  12. package/dist/_virtual/allOf.js +5 -0
  13. package/dist/_virtual/allOf.js.map +1 -0
  14. package/dist/_virtual/anyOf.js +5 -0
  15. package/dist/_virtual/anyOf.js.map +1 -0
  16. package/dist/_virtual/applicability.js +5 -0
  17. package/dist/_virtual/applicability.js.map +1 -0
  18. package/dist/_virtual/boolSchema.js +5 -0
  19. package/dist/_virtual/boolSchema.js.map +1 -0
  20. package/dist/_virtual/code.js +5 -0
  21. package/dist/_virtual/code.js.map +1 -0
  22. package/dist/_virtual/code2.js +5 -0
  23. package/dist/_virtual/code2.js.map +1 -0
  24. package/dist/_virtual/const.js +5 -0
  25. package/dist/_virtual/const.js.map +1 -0
  26. package/dist/_virtual/contains.js +5 -0
  27. package/dist/_virtual/contains.js.map +1 -0
  28. package/dist/_virtual/core.js +5 -0
  29. package/dist/_virtual/core.js.map +1 -0
  30. package/dist/_virtual/dataType.js +5 -0
  31. package/dist/_virtual/dataType.js.map +1 -0
  32. package/dist/_virtual/defaults.js +5 -0
  33. package/dist/_virtual/defaults.js.map +1 -0
  34. package/dist/_virtual/dependencies.js +5 -0
  35. package/dist/_virtual/dependencies.js.map +1 -0
  36. package/dist/_virtual/draft7.js +5 -0
  37. package/dist/_virtual/draft7.js.map +1 -0
  38. package/dist/_virtual/enum.js +5 -0
  39. package/dist/_virtual/enum.js.map +1 -0
  40. package/dist/_virtual/equal.js +5 -0
  41. package/dist/_virtual/equal.js.map +1 -0
  42. package/dist/_virtual/errors.js +5 -0
  43. package/dist/_virtual/errors.js.map +1 -0
  44. package/dist/_virtual/format.js +5 -0
  45. package/dist/_virtual/format.js.map +1 -0
  46. package/dist/_virtual/formats.js +5 -0
  47. package/dist/_virtual/formats.js.map +1 -0
  48. package/dist/_virtual/id.js +5 -0
  49. package/dist/_virtual/id.js.map +1 -0
  50. package/dist/_virtual/if.js +5 -0
  51. package/dist/_virtual/if.js.map +1 -0
  52. package/dist/_virtual/index.js +8 -0
  53. package/dist/_virtual/index.js.map +1 -0
  54. package/dist/_virtual/index10.js +5 -0
  55. package/dist/_virtual/index10.js.map +1 -0
  56. package/dist/_virtual/index11.js +5 -0
  57. package/dist/_virtual/index11.js.map +1 -0
  58. package/dist/_virtual/index12.js +5 -0
  59. package/dist/_virtual/index12.js.map +1 -0
  60. package/dist/_virtual/index2.js +5 -0
  61. package/dist/_virtual/index2.js.map +1 -0
  62. package/dist/_virtual/index3.js +5 -0
  63. package/dist/_virtual/index3.js.map +1 -0
  64. package/dist/_virtual/index4.js +5 -0
  65. package/dist/_virtual/index4.js.map +1 -0
  66. package/dist/_virtual/index5.js +5 -0
  67. package/dist/_virtual/index5.js.map +1 -0
  68. package/dist/_virtual/index6.js +5 -0
  69. package/dist/_virtual/index6.js.map +1 -0
  70. package/dist/_virtual/index7.js +5 -0
  71. package/dist/_virtual/index7.js.map +1 -0
  72. package/dist/_virtual/index8.js +5 -0
  73. package/dist/_virtual/index8.js.map +1 -0
  74. package/dist/_virtual/index9.js +5 -0
  75. package/dist/_virtual/index9.js.map +1 -0
  76. package/dist/_virtual/items.js +5 -0
  77. package/dist/_virtual/items.js.map +1 -0
  78. package/dist/_virtual/items2020.js +5 -0
  79. package/dist/_virtual/items2020.js.map +1 -0
  80. package/dist/_virtual/keyword.js +5 -0
  81. package/dist/_virtual/keyword.js.map +1 -0
  82. package/dist/_virtual/limit.js +5 -0
  83. package/dist/_virtual/limit.js.map +1 -0
  84. package/dist/_virtual/limitItems.js +5 -0
  85. package/dist/_virtual/limitItems.js.map +1 -0
  86. package/dist/_virtual/limitLength.js +5 -0
  87. package/dist/_virtual/limitLength.js.map +1 -0
  88. package/dist/_virtual/limitNumber.js +5 -0
  89. package/dist/_virtual/limitNumber.js.map +1 -0
  90. package/dist/_virtual/limitProperties.js +5 -0
  91. package/dist/_virtual/limitProperties.js.map +1 -0
  92. package/dist/_virtual/metadata.js +5 -0
  93. package/dist/_virtual/metadata.js.map +1 -0
  94. package/dist/_virtual/multipleOf.js +5 -0
  95. package/dist/_virtual/multipleOf.js.map +1 -0
  96. package/dist/_virtual/names.js +5 -0
  97. package/dist/_virtual/names.js.map +1 -0
  98. package/dist/_virtual/not.js +5 -0
  99. package/dist/_virtual/not.js.map +1 -0
  100. package/dist/_virtual/oneOf.js +5 -0
  101. package/dist/_virtual/oneOf.js.map +1 -0
  102. package/dist/_virtual/pattern.js +5 -0
  103. package/dist/_virtual/pattern.js.map +1 -0
  104. package/dist/_virtual/patternProperties.js +5 -0
  105. package/dist/_virtual/patternProperties.js.map +1 -0
  106. package/dist/_virtual/prefixItems.js +5 -0
  107. package/dist/_virtual/prefixItems.js.map +1 -0
  108. package/dist/_virtual/properties.js +5 -0
  109. package/dist/_virtual/properties.js.map +1 -0
  110. package/dist/_virtual/propertyNames.js +5 -0
  111. package/dist/_virtual/propertyNames.js.map +1 -0
  112. package/dist/_virtual/ref.js +5 -0
  113. package/dist/_virtual/ref.js.map +1 -0
  114. package/dist/_virtual/ref_error.js +5 -0
  115. package/dist/_virtual/ref_error.js.map +1 -0
  116. package/dist/_virtual/required.js +5 -0
  117. package/dist/_virtual/required.js.map +1 -0
  118. package/dist/_virtual/resolve.js +5 -0
  119. package/dist/_virtual/resolve.js.map +1 -0
  120. package/dist/_virtual/rules.js +5 -0
  121. package/dist/_virtual/rules.js.map +1 -0
  122. package/dist/_virtual/scope.js +5 -0
  123. package/dist/_virtual/scope.js.map +1 -0
  124. package/dist/_virtual/subschema.js +5 -0
  125. package/dist/_virtual/subschema.js.map +1 -0
  126. package/dist/_virtual/thenElse.js +5 -0
  127. package/dist/_virtual/thenElse.js.map +1 -0
  128. package/dist/_virtual/types.js +5 -0
  129. package/dist/_virtual/types.js.map +1 -0
  130. package/dist/_virtual/ucs2length.js +5 -0
  131. package/dist/_virtual/ucs2length.js.map +1 -0
  132. package/dist/_virtual/uniqueItems.js +5 -0
  133. package/dist/_virtual/uniqueItems.js.map +1 -0
  134. package/dist/_virtual/uri.js +5 -0
  135. package/dist/_virtual/uri.js.map +1 -0
  136. package/dist/_virtual/util.js +5 -0
  137. package/dist/_virtual/util.js.map +1 -0
  138. package/dist/_virtual/validation_error.js +5 -0
  139. package/dist/_virtual/validation_error.js.map +1 -0
  140. package/dist/agents/analyst-agent.d.ts +230 -0
  141. package/dist/agents/analyst-agent.d.ts.map +1 -0
  142. package/dist/agents/analyst-agent.js +793 -0
  143. package/dist/agents/analyst-agent.js.map +1 -0
  144. package/dist/agents/architect-agent.d.ts +248 -0
  145. package/dist/agents/architect-agent.d.ts.map +1 -0
  146. package/dist/agents/architect-agent.js +685 -0
  147. package/dist/agents/architect-agent.js.map +1 -0
  148. package/dist/agents/base-agent.d.ts +169 -0
  149. package/dist/agents/base-agent.d.ts.map +1 -0
  150. package/dist/agents/base-agent.js +441 -0
  151. package/dist/agents/base-agent.js.map +1 -0
  152. package/dist/agents/coder-agent.d.ts +191 -0
  153. package/dist/agents/coder-agent.d.ts.map +1 -0
  154. package/dist/agents/coder-agent.js +1008 -0
  155. package/dist/agents/coder-agent.js.map +1 -0
  156. package/dist/agents/index.d.ts +18 -0
  157. package/dist/agents/index.d.ts.map +1 -0
  158. package/dist/agents/index.js +40 -0
  159. package/dist/agents/index.js.map +1 -0
  160. package/dist/agents/registry.d.ts +213 -0
  161. package/dist/agents/registry.d.ts.map +1 -0
  162. package/dist/agents/registry.js +419 -0
  163. package/dist/agents/registry.js.map +1 -0
  164. package/dist/agents/researcher-agent.d.ts +226 -0
  165. package/dist/agents/researcher-agent.d.ts.map +1 -0
  166. package/dist/agents/researcher-agent.js +572 -0
  167. package/dist/agents/researcher-agent.js.map +1 -0
  168. package/dist/agents/rules-engine.d.ts +320 -0
  169. package/dist/agents/rules-engine.d.ts.map +1 -0
  170. package/dist/agents/rules-engine.js +552 -0
  171. package/dist/agents/rules-engine.js.map +1 -0
  172. package/dist/agents/tester-agent.d.ts +219 -0
  173. package/dist/agents/tester-agent.d.ts.map +1 -0
  174. package/dist/agents/tester-agent.js +683 -0
  175. package/dist/agents/tester-agent.js.map +1 -0
  176. package/dist/agents/types.d.ts +425 -0
  177. package/dist/agents/types.d.ts.map +1 -0
  178. package/dist/agents/types.js +57 -0
  179. package/dist/agents/types.js.map +1 -0
  180. package/dist/audit/config.d.ts +150 -0
  181. package/dist/audit/config.d.ts.map +1 -0
  182. package/dist/audit/config.js +111 -0
  183. package/dist/audit/config.js.map +1 -0
  184. package/dist/audit/index.d.ts +38 -0
  185. package/dist/audit/index.d.ts.map +1 -0
  186. package/dist/audit/services/audit-chain.d.ts +276 -0
  187. package/dist/audit/services/audit-chain.d.ts.map +1 -0
  188. package/dist/audit/services/audit-chain.js +502 -0
  189. package/dist/audit/services/audit-chain.js.map +1 -0
  190. package/dist/audit/services/index.d.ts +11 -0
  191. package/dist/audit/services/index.d.ts.map +1 -0
  192. package/dist/audit/services/syndication.d.ts +334 -0
  193. package/dist/audit/services/syndication.d.ts.map +1 -0
  194. package/dist/audit/services/syndication.js +589 -0
  195. package/dist/audit/services/syndication.js.map +1 -0
  196. package/dist/audit/types.d.ts +453 -0
  197. package/dist/audit/types.d.ts.map +1 -0
  198. package/dist/caching/index.d.ts +55 -0
  199. package/dist/caching/index.d.ts.map +1 -0
  200. package/dist/caching/index.js +206 -0
  201. package/dist/caching/index.js.map +1 -0
  202. package/dist/caching/lru-cache.d.ts +254 -0
  203. package/dist/caching/lru-cache.d.ts.map +1 -0
  204. package/dist/caching/types.d.ts +95 -0
  205. package/dist/caching/types.d.ts.map +1 -0
  206. package/dist/chunking/chunker.d.ts +94 -0
  207. package/dist/chunking/chunker.d.ts.map +1 -0
  208. package/dist/chunking/index.d.ts +125 -0
  209. package/dist/chunking/index.d.ts.map +1 -0
  210. package/dist/chunking/index.js +283 -0
  211. package/dist/chunking/index.js.map +1 -0
  212. package/dist/chunking/types.d.ts +92 -0
  213. package/dist/chunking/types.d.ts.map +1 -0
  214. package/dist/cli/commands/audit.d.ts +21 -0
  215. package/dist/cli/commands/audit.d.ts.map +1 -0
  216. package/dist/cli/commands/audit.js +621 -0
  217. package/dist/cli/commands/audit.js.map +1 -0
  218. package/dist/cli/commands/commit.d.ts +11 -0
  219. package/dist/cli/commands/commit.d.ts.map +1 -0
  220. package/dist/cli/commands/commit.js +379 -0
  221. package/dist/cli/commands/commit.js.map +1 -0
  222. package/dist/cli/commands/config.d.ts +8 -0
  223. package/dist/cli/commands/config.d.ts.map +1 -0
  224. package/dist/cli/commands/config.js +107 -0
  225. package/dist/cli/commands/config.js.map +1 -0
  226. package/dist/cli/commands/cultivate.d.ts +16 -0
  227. package/dist/cli/commands/cultivate.d.ts.map +1 -0
  228. package/dist/cli/commands/cultivate.js +254 -0
  229. package/dist/cli/commands/cultivate.js.map +1 -0
  230. package/dist/cli/commands/diagnostics.d.ts +8 -0
  231. package/dist/cli/commands/diagnostics.d.ts.map +1 -0
  232. package/dist/cli/commands/diagnostics.js +140 -0
  233. package/dist/cli/commands/diagnostics.js.map +1 -0
  234. package/dist/cli/commands/generate.d.ts +13 -0
  235. package/dist/cli/commands/generate.d.ts.map +1 -0
  236. package/dist/cli/commands/init-primitives.d.ts +19 -0
  237. package/dist/cli/commands/init-primitives.d.ts.map +1 -0
  238. package/dist/cli/commands/init-primitives.js +208 -0
  239. package/dist/cli/commands/init-primitives.js.map +1 -0
  240. package/dist/cli/commands/sop.d.ts +14 -0
  241. package/dist/cli/commands/sop.d.ts.map +1 -0
  242. package/dist/cli/commands/sop.js +598 -0
  243. package/dist/cli/commands/sop.js.map +1 -0
  244. package/dist/cli/commands/vector.d.ts +14 -0
  245. package/dist/cli/commands/vector.d.ts.map +1 -0
  246. package/dist/cli/commands/vector.js +429 -0
  247. package/dist/cli/commands/vector.js.map +1 -0
  248. package/dist/cli/commands/workflow.d.ts +12 -0
  249. package/dist/cli/commands/workflow.d.ts.map +1 -0
  250. package/dist/cli/commands/workflow.js +471 -0
  251. package/dist/cli/commands/workflow.js.map +1 -0
  252. package/dist/cli/index.d.ts.map +1 -1
  253. package/dist/cli/index.js +66 -1
  254. package/dist/cli/index.js.map +1 -1
  255. package/dist/config/index.d.ts +153 -0
  256. package/dist/config/index.d.ts.map +1 -0
  257. package/dist/config/index.js +141 -0
  258. package/dist/config/index.js.map +1 -0
  259. package/dist/config/manager.d.ts +136 -0
  260. package/dist/config/manager.d.ts.map +1 -0
  261. package/dist/config/types.d.ts +127 -0
  262. package/dist/config/types.d.ts.map +1 -0
  263. package/dist/core/cache.d.ts +185 -0
  264. package/dist/core/cache.d.ts.map +1 -0
  265. package/dist/core/cache.js +435 -0
  266. package/dist/core/cache.js.map +1 -0
  267. package/dist/cultivation/deep-analyzer.d.ts +129 -0
  268. package/dist/cultivation/deep-analyzer.d.ts.map +1 -0
  269. package/dist/cultivation/deep-analyzer.js +322 -0
  270. package/dist/cultivation/deep-analyzer.js.map +1 -0
  271. package/dist/cultivation/index.d.ts +13 -0
  272. package/dist/cultivation/index.d.ts.map +1 -0
  273. package/dist/cultivation/seed-generator.d.ts +92 -0
  274. package/dist/cultivation/seed-generator.d.ts.map +1 -0
  275. package/dist/cultivation/seed-generator.js +1033 -0
  276. package/dist/cultivation/seed-generator.js.map +1 -0
  277. package/dist/cultivation/types.d.ts +230 -0
  278. package/dist/cultivation/types.d.ts.map +1 -0
  279. package/dist/database/schemas/index.d.ts +85 -0
  280. package/dist/database/schemas/index.d.ts.map +1 -0
  281. package/dist/generators/claude-md.d.ts +7 -0
  282. package/dist/generators/claude-md.d.ts.map +1 -1
  283. package/dist/generators/claude-md.js.map +1 -1
  284. package/dist/generators/docs-init.d.ts +6 -0
  285. package/dist/generators/docs-init.d.ts.map +1 -1
  286. package/dist/generators/docs-init.js.map +1 -1
  287. package/dist/health/checks.d.ts +135 -0
  288. package/dist/health/checks.d.ts.map +1 -0
  289. package/dist/health/index.d.ts +119 -0
  290. package/dist/health/index.d.ts.map +1 -0
  291. package/dist/health/index.js +191 -0
  292. package/dist/health/index.js.map +1 -0
  293. package/dist/health/monitor.d.ts +146 -0
  294. package/dist/health/monitor.d.ts.map +1 -0
  295. package/dist/health/types.d.ts +135 -0
  296. package/dist/health/types.d.ts.map +1 -0
  297. package/dist/index.d.ts +32 -0
  298. package/dist/index.d.ts.map +1 -1
  299. package/dist/index.js +182 -1
  300. package/dist/index.js.map +1 -1
  301. package/dist/integrations/auto-commit.d.ts +175 -0
  302. package/dist/integrations/auto-commit.d.ts.map +1 -0
  303. package/dist/integrations/auto-commit.js +399 -0
  304. package/dist/integrations/auto-commit.js.map +1 -0
  305. package/dist/integrations/git.d.ts +299 -0
  306. package/dist/integrations/git.d.ts.map +1 -0
  307. package/dist/integrations/git.js +465 -0
  308. package/dist/integrations/git.js.map +1 -0
  309. package/dist/mcp-server/bin.d.ts +11 -0
  310. package/dist/mcp-server/bin.d.ts.map +1 -0
  311. package/dist/mcp-server/handlers/index.d.ts +57 -0
  312. package/dist/mcp-server/handlers/index.d.ts.map +1 -0
  313. package/dist/mcp-server/handlers/index.js +235 -0
  314. package/dist/mcp-server/handlers/index.js.map +1 -0
  315. package/dist/mcp-server/index.d.ts +28 -0
  316. package/dist/mcp-server/index.d.ts.map +1 -0
  317. package/dist/mcp-server/server.d.ts +133 -0
  318. package/dist/mcp-server/server.d.ts.map +1 -0
  319. package/dist/mcp-server/server.js +280 -0
  320. package/dist/mcp-server/server.js.map +1 -0
  321. package/dist/mcp-server/tools/agents/index.d.ts +10 -0
  322. package/dist/mcp-server/tools/agents/index.d.ts.map +1 -0
  323. package/dist/mcp-server/tools/agents/list.d.ts +19 -0
  324. package/dist/mcp-server/tools/agents/list.d.ts.map +1 -0
  325. package/dist/mcp-server/tools/agents/spawn.d.ts +19 -0
  326. package/dist/mcp-server/tools/agents/spawn.d.ts.map +1 -0
  327. package/dist/mcp-server/tools/audit/checkpoint.d.ts +58 -0
  328. package/dist/mcp-server/tools/audit/checkpoint.d.ts.map +1 -0
  329. package/dist/mcp-server/tools/audit/checkpoint.js +73 -0
  330. package/dist/mcp-server/tools/audit/checkpoint.js.map +1 -0
  331. package/dist/mcp-server/tools/audit/index.d.ts +53 -0
  332. package/dist/mcp-server/tools/audit/index.d.ts.map +1 -0
  333. package/dist/mcp-server/tools/audit/index.js +12 -0
  334. package/dist/mcp-server/tools/audit/index.js.map +1 -0
  335. package/dist/mcp-server/tools/audit/query.d.ts +58 -0
  336. package/dist/mcp-server/tools/audit/query.d.ts.map +1 -0
  337. package/dist/mcp-server/tools/audit/query.js +125 -0
  338. package/dist/mcp-server/tools/audit/query.js.map +1 -0
  339. package/dist/mcp-server/tools/audit/sync.d.ts +58 -0
  340. package/dist/mcp-server/tools/audit/sync.d.ts.map +1 -0
  341. package/dist/mcp-server/tools/audit/sync.js +126 -0
  342. package/dist/mcp-server/tools/audit/sync.js.map +1 -0
  343. package/dist/mcp-server/tools/graph/generate.d.ts +21 -0
  344. package/dist/mcp-server/tools/graph/generate.d.ts.map +1 -0
  345. package/dist/mcp-server/tools/graph/index.d.ts +11 -0
  346. package/dist/mcp-server/tools/graph/index.d.ts.map +1 -0
  347. package/dist/mcp-server/tools/graph/query.d.ts +22 -0
  348. package/dist/mcp-server/tools/graph/query.d.ts.map +1 -0
  349. package/dist/mcp-server/tools/graph/stats.d.ts +22 -0
  350. package/dist/mcp-server/tools/graph/stats.d.ts.map +1 -0
  351. package/dist/mcp-server/tools/health.d.ts +21 -0
  352. package/dist/mcp-server/tools/health.d.ts.map +1 -0
  353. package/dist/mcp-server/tools/index.d.ts +16 -0
  354. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  355. package/dist/mcp-server/tools/registry.d.ts +90 -0
  356. package/dist/mcp-server/tools/registry.d.ts.map +1 -0
  357. package/dist/mcp-server/tools/registry.js +753 -0
  358. package/dist/mcp-server/tools/registry.js.map +1 -0
  359. package/dist/mcp-server/tools/search/index.d.ts +10 -0
  360. package/dist/mcp-server/tools/search/index.d.ts.map +1 -0
  361. package/dist/mcp-server/tools/search/nodes.d.ts +22 -0
  362. package/dist/mcp-server/tools/search/nodes.d.ts.map +1 -0
  363. package/dist/mcp-server/tools/search/tags.d.ts +22 -0
  364. package/dist/mcp-server/tools/search/tags.d.ts.map +1 -0
  365. package/dist/mcp-server/tools/vector/index.d.ts +12 -0
  366. package/dist/mcp-server/tools/vector/index.d.ts.map +1 -0
  367. package/dist/mcp-server/tools/vector/index.js +12 -0
  368. package/dist/mcp-server/tools/vector/index.js.map +1 -0
  369. package/dist/mcp-server/tools/vector/search.d.ts +41 -0
  370. package/dist/mcp-server/tools/vector/search.d.ts.map +1 -0
  371. package/dist/mcp-server/tools/vector/search.js +224 -0
  372. package/dist/mcp-server/tools/vector/search.js.map +1 -0
  373. package/dist/mcp-server/tools/vector/trajectory.d.ts +39 -0
  374. package/dist/mcp-server/tools/vector/trajectory.d.ts.map +1 -0
  375. package/dist/mcp-server/tools/vector/trajectory.js +170 -0
  376. package/dist/mcp-server/tools/vector/trajectory.js.map +1 -0
  377. package/dist/mcp-server/tools/vector/upsert.d.ts +44 -0
  378. package/dist/mcp-server/tools/vector/upsert.d.ts.map +1 -0
  379. package/dist/mcp-server/tools/vector/upsert.js +175 -0
  380. package/dist/mcp-server/tools/vector/upsert.js.map +1 -0
  381. package/dist/mcp-server/tools/workflow/index.d.ts +29 -0
  382. package/dist/mcp-server/tools/workflow/index.d.ts.map +1 -0
  383. package/dist/mcp-server/tools/workflow/index.js +12 -0
  384. package/dist/mcp-server/tools/workflow/index.js.map +1 -0
  385. package/dist/mcp-server/tools/workflow/list.d.ts +41 -0
  386. package/dist/mcp-server/tools/workflow/list.d.ts.map +1 -0
  387. package/dist/mcp-server/tools/workflow/list.js +195 -0
  388. package/dist/mcp-server/tools/workflow/list.js.map +1 -0
  389. package/dist/mcp-server/tools/workflow/start.d.ts +40 -0
  390. package/dist/mcp-server/tools/workflow/start.d.ts.map +1 -0
  391. package/dist/mcp-server/tools/workflow/start.js +165 -0
  392. package/dist/mcp-server/tools/workflow/start.js.map +1 -0
  393. package/dist/mcp-server/tools/workflow/status.d.ts +38 -0
  394. package/dist/mcp-server/tools/workflow/status.d.ts.map +1 -0
  395. package/dist/mcp-server/tools/workflow/status.js +97 -0
  396. package/dist/mcp-server/tools/workflow/status.js.map +1 -0
  397. package/dist/mcp-server/types/index.d.ts +286 -0
  398. package/dist/mcp-server/types/index.d.ts.map +1 -0
  399. package/dist/memory/index.d.ts +10 -0
  400. package/dist/memory/index.d.ts.map +1 -0
  401. package/dist/memory/vault-sync.d.ts +212 -0
  402. package/dist/memory/vault-sync.d.ts.map +1 -0
  403. package/dist/memory/vault-sync.js +463 -0
  404. package/dist/memory/vault-sync.js.map +1 -0
  405. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +296 -0
  406. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  407. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +71 -0
  408. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  409. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +26 -0
  410. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  411. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +407 -0
  412. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  413. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1332 -0
  414. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  415. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +71 -0
  416. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  417. package/dist/node_modules/ajv/dist/ajv.js +84 -0
  418. package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
  419. package/dist/node_modules/ajv/dist/compile/codegen/code.js +160 -0
  420. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  421. package/dist/node_modules/ajv/dist/compile/codegen/index.js +728 -0
  422. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  423. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +152 -0
  424. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  425. package/dist/node_modules/ajv/dist/compile/errors.js +131 -0
  426. package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
  427. package/dist/node_modules/ajv/dist/compile/index.js +234 -0
  428. package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
  429. package/dist/node_modules/ajv/dist/compile/names.js +44 -0
  430. package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
  431. package/dist/node_modules/ajv/dist/compile/ref_error.js +22 -0
  432. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  433. package/dist/node_modules/ajv/dist/compile/resolve.js +163 -0
  434. package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  435. package/dist/node_modules/ajv/dist/compile/rules.js +35 -0
  436. package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
  437. package/dist/node_modules/ajv/dist/compile/util.js +173 -0
  438. package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
  439. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
  440. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  441. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +58 -0
  442. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  443. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +193 -0
  444. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  445. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +43 -0
  446. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  447. package/dist/node_modules/ajv/dist/compile/validate/index.js +522 -0
  448. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  449. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +126 -0
  450. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  451. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +89 -0
  452. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  453. package/dist/node_modules/ajv/dist/core.js +628 -0
  454. package/dist/node_modules/ajv/dist/core.js.map +1 -0
  455. package/dist/node_modules/ajv/dist/refs/data.json.js +24 -0
  456. package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
  457. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +25 -0
  458. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
  459. package/dist/node_modules/ajv/dist/runtime/equal.js +16 -0
  460. package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  461. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +30 -0
  462. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  463. package/dist/node_modules/ajv/dist/runtime/uri.js +16 -0
  464. package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  465. package/dist/node_modules/ajv/dist/runtime/validation_error.js +20 -0
  466. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  467. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  468. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  469. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +114 -0
  470. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  471. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +32 -0
  472. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  473. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +22 -0
  474. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  475. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +100 -0
  476. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  477. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +103 -0
  478. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  479. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +75 -0
  480. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  481. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +68 -0
  482. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  483. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +64 -0
  484. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  485. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +43 -0
  486. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  487. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
  488. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  489. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
  490. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  491. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +81 -0
  492. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  493. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
  494. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  495. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +66 -0
  496. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  497. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +49 -0
  498. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  499. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +23 -0
  500. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  501. package/dist/node_modules/ajv/dist/vocabularies/code.js +140 -0
  502. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  503. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
  504. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  505. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
  506. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  507. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +132 -0
  508. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  509. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +114 -0
  510. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  511. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
  512. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  513. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
  514. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  515. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +95 -0
  516. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  517. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +16 -0
  518. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  519. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
  520. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  521. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +36 -0
  522. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  523. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +56 -0
  524. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  525. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +52 -0
  526. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  527. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +34 -0
  528. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  529. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +39 -0
  530. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  531. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +37 -0
  532. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  533. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +34 -0
  534. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  535. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +33 -0
  536. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  537. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +34 -0
  538. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  539. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +89 -0
  540. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  541. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
  542. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  543. package/dist/node_modules/ajv-formats/dist/formats.js +209 -0
  544. package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
  545. package/dist/node_modules/ajv-formats/dist/index.js +51 -0
  546. package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
  547. package/dist/node_modules/ajv-formats/dist/limit.js +80 -0
  548. package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
  549. package/dist/node_modules/fast-deep-equal/index.js +39 -0
  550. package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
  551. package/dist/node_modules/fast-uri/index.js +261 -0
  552. package/dist/node_modules/fast-uri/index.js.map +1 -0
  553. package/dist/node_modules/fast-uri/lib/schemes.js +215 -0
  554. package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
  555. package/dist/node_modules/fast-uri/lib/utils.js +261 -0
  556. package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
  557. package/dist/node_modules/json-schema-traverse/index.js +92 -0
  558. package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
  559. package/dist/node_modules/zod/v4/classic/errors.js +37 -0
  560. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  561. package/dist/node_modules/zod/v4/classic/iso.js +43 -0
  562. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  563. package/dist/node_modules/zod/v4/classic/parse.js +13 -0
  564. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  565. package/dist/node_modules/zod/v4/classic/schemas.js +688 -0
  566. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  567. package/dist/node_modules/zod/v4/core/api.js +492 -0
  568. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  569. package/dist/node_modules/zod/v4/core/checks.js +405 -0
  570. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  571. package/dist/node_modules/zod/v4/core/core.js +58 -0
  572. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  573. package/dist/node_modules/zod/v4/core/doc.js +38 -0
  574. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  575. package/dist/node_modules/zod/v4/core/errors.js +82 -0
  576. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  577. package/dist/node_modules/zod/v4/core/parse.js +60 -0
  578. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  579. package/dist/node_modules/zod/v4/core/regexes.js +87 -0
  580. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  581. package/dist/node_modules/zod/v4/core/registries.js +52 -0
  582. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  583. package/dist/node_modules/zod/v4/core/schemas.js +1283 -0
  584. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  585. package/dist/node_modules/zod/v4/core/util.js +341 -0
  586. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  587. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  588. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  589. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
  590. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  591. package/dist/reasoning/index.d.ts +74 -0
  592. package/dist/reasoning/index.d.ts.map +1 -0
  593. package/dist/reasoning/index.js +124 -0
  594. package/dist/reasoning/index.js.map +1 -0
  595. package/dist/reasoning/tracker.d.ts +210 -0
  596. package/dist/reasoning/tracker.d.ts.map +1 -0
  597. package/dist/reasoning/types.d.ts +146 -0
  598. package/dist/reasoning/types.d.ts.map +1 -0
  599. package/dist/recovery/backup.d.ts +110 -0
  600. package/dist/recovery/backup.d.ts.map +1 -0
  601. package/dist/recovery/index.d.ts +70 -0
  602. package/dist/recovery/index.d.ts.map +1 -0
  603. package/dist/recovery/index.js +186 -0
  604. package/dist/recovery/index.js.map +1 -0
  605. package/dist/recovery/integrity.d.ts +74 -0
  606. package/dist/recovery/integrity.d.ts.map +1 -0
  607. package/dist/recovery/types.d.ts +94 -0
  608. package/dist/recovery/types.d.ts.map +1 -0
  609. package/dist/services/index.d.ts +130 -0
  610. package/dist/services/index.d.ts.map +1 -0
  611. package/dist/services/index.js +134 -0
  612. package/dist/services/index.js.map +1 -0
  613. package/dist/services/manager.d.ts +140 -0
  614. package/dist/services/manager.d.ts.map +1 -0
  615. package/dist/services/types.d.ts +106 -0
  616. package/dist/services/types.d.ts.map +1 -0
  617. package/dist/services/watchers.d.ts +95 -0
  618. package/dist/services/watchers.d.ts.map +1 -0
  619. package/dist/sops/compliance-checker.d.ts +83 -0
  620. package/dist/sops/compliance-checker.d.ts.map +1 -0
  621. package/dist/sops/compliance-checker.js +399 -0
  622. package/dist/sops/compliance-checker.js.map +1 -0
  623. package/dist/sops/gap-analyzer.d.ts +124 -0
  624. package/dist/sops/gap-analyzer.d.ts.map +1 -0
  625. package/dist/sops/gap-analyzer.js +313 -0
  626. package/dist/sops/gap-analyzer.js.map +1 -0
  627. package/dist/sops/index.d.ts +14 -0
  628. package/dist/sops/index.d.ts.map +1 -0
  629. package/dist/sops/overlay-manager.d.ts +115 -0
  630. package/dist/sops/overlay-manager.d.ts.map +1 -0
  631. package/dist/sops/overlay-manager.js +394 -0
  632. package/dist/sops/overlay-manager.js.map +1 -0
  633. package/dist/sops/registry.d.ts +73 -0
  634. package/dist/sops/registry.d.ts.map +1 -0
  635. package/dist/sops/registry.js +919 -0
  636. package/dist/sops/registry.js.map +1 -0
  637. package/dist/sops/types.d.ts +377 -0
  638. package/dist/sops/types.d.ts.map +1 -0
  639. package/dist/sops/types.js +46 -0
  640. package/dist/sops/types.js.map +1 -0
  641. package/dist/utils/error-recovery.d.ts +230 -0
  642. package/dist/utils/error-recovery.d.ts.map +1 -0
  643. package/dist/utils/error-recovery.js +228 -0
  644. package/dist/utils/error-recovery.js.map +1 -0
  645. package/dist/utils/error-taxonomy.d.ts +149 -0
  646. package/dist/utils/error-taxonomy.d.ts.map +1 -0
  647. package/dist/utils/error-taxonomy.js +260 -0
  648. package/dist/utils/error-taxonomy.js.map +1 -0
  649. package/dist/utils/index.d.ts +11 -0
  650. package/dist/utils/index.d.ts.map +1 -0
  651. package/dist/utils/logger.d.ts +139 -0
  652. package/dist/utils/logger.d.ts.map +1 -0
  653. package/dist/utils/logger.js +311 -0
  654. package/dist/utils/logger.js.map +1 -0
  655. package/dist/vector/config.d.ts +300 -0
  656. package/dist/vector/config.d.ts.map +1 -0
  657. package/dist/vector/config.js +124 -0
  658. package/dist/vector/config.js.map +1 -0
  659. package/dist/vector/index.d.ts +50 -0
  660. package/dist/vector/index.d.ts.map +1 -0
  661. package/dist/vector/services/index.d.ts +13 -0
  662. package/dist/vector/services/index.d.ts.map +1 -0
  663. package/dist/vector/services/trajectory-tracker.d.ts +405 -0
  664. package/dist/vector/services/trajectory-tracker.d.ts.map +1 -0
  665. package/dist/vector/services/trajectory-tracker.js +445 -0
  666. package/dist/vector/services/trajectory-tracker.js.map +1 -0
  667. package/dist/vector/services/vector-store.d.ts +339 -0
  668. package/dist/vector/services/vector-store.d.ts.map +1 -0
  669. package/dist/vector/services/vector-store.js +748 -0
  670. package/dist/vector/services/vector-store.js.map +1 -0
  671. package/dist/vector/types.d.ts +677 -0
  672. package/dist/vector/types.d.ts.map +1 -0
  673. package/dist/workflow/adapters/goap-adapter.d.ts +196 -0
  674. package/dist/workflow/adapters/goap-adapter.d.ts.map +1 -0
  675. package/dist/workflow/adapters/goap-adapter.js +706 -0
  676. package/dist/workflow/adapters/goap-adapter.js.map +1 -0
  677. package/dist/workflow/adapters/index.d.ts +10 -0
  678. package/dist/workflow/adapters/index.d.ts.map +1 -0
  679. package/dist/workflow/config.d.ts +135 -0
  680. package/dist/workflow/config.d.ts.map +1 -0
  681. package/dist/workflow/config.js +92 -0
  682. package/dist/workflow/config.js.map +1 -0
  683. package/dist/workflow/handlers/index.d.ts +9 -0
  684. package/dist/workflow/handlers/index.d.ts.map +1 -0
  685. package/dist/workflow/handlers/webhook-handlers.d.ts +397 -0
  686. package/dist/workflow/handlers/webhook-handlers.d.ts.map +1 -0
  687. package/dist/workflow/handlers/webhook-handlers.js +454 -0
  688. package/dist/workflow/handlers/webhook-handlers.js.map +1 -0
  689. package/dist/workflow/index.d.ts +42 -0
  690. package/dist/workflow/index.d.ts.map +1 -0
  691. package/dist/workflow/services/index.d.ts +9 -0
  692. package/dist/workflow/services/index.d.ts.map +1 -0
  693. package/dist/workflow/services/workflow-service.d.ts +318 -0
  694. package/dist/workflow/services/workflow-service.d.ts.map +1 -0
  695. package/dist/workflow/services/workflow-service.js +577 -0
  696. package/dist/workflow/services/workflow-service.js.map +1 -0
  697. package/dist/workflow/types.d.ts +470 -0
  698. package/dist/workflow/types.d.ts.map +1 -0
  699. package/dist/workflow/workflows/realtime-collab.d.ts +245 -0
  700. package/dist/workflow/workflows/realtime-collab.d.ts.map +1 -0
  701. package/dist/workflows/index.d.ts +11 -0
  702. package/dist/workflows/index.d.ts.map +1 -0
  703. package/dist/workflows/registry.d.ts +118 -0
  704. package/dist/workflows/registry.d.ts.map +1 -0
  705. package/dist/workflows/registry.js +575 -0
  706. package/dist/workflows/registry.js.map +1 -0
  707. package/dist/workflows/types.d.ts +322 -0
  708. package/dist/workflows/types.d.ts.map +1 -0
  709. package/dist/workflows/types.js +16 -0
  710. package/dist/workflows/types.js.map +1 -0
  711. package/package.json +1 -1
@@ -0,0 +1,589 @@
1
+ import { createLogger } from "../../utils/logger.js";
2
+ const logger = createLogger("syndication");
3
+ const DEFAULT_CONFIG = {
4
+ peers: [],
5
+ autoSync: false,
6
+ syncInterval: 5 * 60 * 1e3,
7
+ // 5 minutes
8
+ requestTimeout: 3e4,
9
+ // 30 seconds
10
+ maxEventsPerRequest: 1e3,
11
+ retryOnError: true,
12
+ maxRetries: 3,
13
+ retryBaseDelay: 1e3,
14
+ // 1 second
15
+ retryMaxDelay: 3e4
16
+ // 30 seconds
17
+ };
18
+ class SyndicationService {
19
+ config;
20
+ peers = /* @__PURE__ */ new Map();
21
+ syncTimer;
22
+ isRunning = false;
23
+ syncInProgress = false;
24
+ retryAttempts = /* @__PURE__ */ new Map();
25
+ /**
26
+ * Create a new syndication service instance
27
+ *
28
+ * @param config - Configuration with required auditChain
29
+ */
30
+ constructor(config) {
31
+ this.config = {
32
+ ...DEFAULT_CONFIG,
33
+ ...config
34
+ };
35
+ for (const endpoint of this.config.peers) {
36
+ const peerId = this.generatePeerId(endpoint);
37
+ this.peers.set(peerId, {
38
+ id: peerId,
39
+ endpoint,
40
+ status: "disconnected",
41
+ eventsReceived: 0,
42
+ eventsSent: 0,
43
+ errors: 0
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Generate a deterministic peer ID from endpoint URL
49
+ *
50
+ * @param endpoint - Peer endpoint URL
51
+ * @returns Generated peer ID
52
+ */
53
+ generatePeerId(endpoint) {
54
+ let hash = 0;
55
+ for (let i = 0; i < endpoint.length; i++) {
56
+ const char = endpoint.charCodeAt(i);
57
+ hash = (hash << 5) - hash + char;
58
+ hash = hash & hash;
59
+ }
60
+ return `peer-${Math.abs(hash).toString(36)}`;
61
+ }
62
+ /**
63
+ * Calculate exponential backoff delay
64
+ *
65
+ * @param attempt - Current retry attempt number
66
+ * @returns Delay in milliseconds
67
+ */
68
+ calculateBackoff(attempt) {
69
+ const delay = this.config.retryBaseDelay * Math.pow(2, attempt);
70
+ const jitter = Math.random() * 0.3 * delay;
71
+ return Math.min(delay + jitter, this.config.retryMaxDelay);
72
+ }
73
+ /**
74
+ * Start the syndication service
75
+ *
76
+ * Connects to all configured peers and starts automatic
77
+ * synchronization if enabled.
78
+ */
79
+ async start() {
80
+ if (this.isRunning) {
81
+ logger.warn("Syndication service already running");
82
+ return;
83
+ }
84
+ logger.info("Starting syndication service", {
85
+ peers: this.peers.size,
86
+ autoSync: this.config.autoSync,
87
+ syncInterval: this.config.syncInterval
88
+ });
89
+ this.isRunning = true;
90
+ await this.connectToPeers();
91
+ if (this.config.autoSync) {
92
+ this.startAutoSync();
93
+ }
94
+ logger.info("Syndication service started", {
95
+ connectedPeers: this.getConnectedPeers().length
96
+ });
97
+ }
98
+ /**
99
+ * Stop the syndication service
100
+ *
101
+ * Disconnects from all peers and stops automatic synchronization.
102
+ */
103
+ async stop() {
104
+ if (!this.isRunning) {
105
+ return;
106
+ }
107
+ logger.info("Stopping syndication service");
108
+ if (this.syncTimer) {
109
+ clearInterval(this.syncTimer);
110
+ this.syncTimer = void 0;
111
+ }
112
+ const maxWait = 5e3;
113
+ const startWait = Date.now();
114
+ while (this.syncInProgress && Date.now() - startWait < maxWait) {
115
+ await new Promise((resolve) => setTimeout(resolve, 100));
116
+ }
117
+ for (const peer of this.peers.values()) {
118
+ peer.status = "disconnected";
119
+ }
120
+ this.isRunning = false;
121
+ this.retryAttempts.clear();
122
+ logger.info("Syndication service stopped");
123
+ }
124
+ /**
125
+ * Connect to all configured peers
126
+ */
127
+ async connectToPeers() {
128
+ const connectPromises = Array.from(this.peers.values()).map(async (peer) => {
129
+ try {
130
+ await this.connectToPeer(peer.id);
131
+ } catch (error) {
132
+ logger.warn("Failed to connect to peer", {
133
+ peerId: peer.id,
134
+ error: error instanceof Error ? error.message : String(error)
135
+ });
136
+ }
137
+ });
138
+ await Promise.allSettled(connectPromises);
139
+ }
140
+ /**
141
+ * Establish connection to a specific peer
142
+ *
143
+ * @param peerId - Peer identifier
144
+ * @returns True if connection successful
145
+ */
146
+ async connectToPeer(peerId) {
147
+ const peer = this.peers.get(peerId);
148
+ if (!peer) {
149
+ logger.warn("Peer not found", { peerId });
150
+ return false;
151
+ }
152
+ try {
153
+ const startTime = Date.now();
154
+ await new Promise((resolve) => setTimeout(resolve, 50));
155
+ peer.status = "connected";
156
+ peer.latency = Date.now() - startTime;
157
+ this.retryAttempts.set(peerId, 0);
158
+ logger.debug("Connected to peer", {
159
+ peerId,
160
+ endpoint: peer.endpoint,
161
+ latency: peer.latency
162
+ });
163
+ return true;
164
+ } catch (error) {
165
+ peer.status = "error";
166
+ peer.errors++;
167
+ peer.lastError = error instanceof Error ? error.message : String(error);
168
+ logger.error("Failed to connect to peer", void 0, {
169
+ peerId,
170
+ errorMessage: peer.lastError
171
+ });
172
+ return false;
173
+ }
174
+ }
175
+ /**
176
+ * Disconnect from a specific peer
177
+ *
178
+ * @param peerId - Peer identifier
179
+ */
180
+ async disconnectPeer(peerId) {
181
+ const peer = this.peers.get(peerId);
182
+ if (peer) {
183
+ peer.status = "disconnected";
184
+ logger.debug("Disconnected from peer", { peerId });
185
+ }
186
+ }
187
+ /**
188
+ * Start automatic periodic synchronization
189
+ */
190
+ startAutoSync() {
191
+ if (this.syncTimer) {
192
+ clearInterval(this.syncTimer);
193
+ }
194
+ this.syncTimer = setInterval(async () => {
195
+ if (!this.syncInProgress) {
196
+ try {
197
+ await this.syncWithAllPeers();
198
+ } catch (err) {
199
+ logger.error("Auto-sync failed", err instanceof Error ? err : void 0, {
200
+ errorMessage: err instanceof Error ? err.message : String(err)
201
+ });
202
+ }
203
+ }
204
+ }, this.config.syncInterval);
205
+ logger.debug("Auto-sync started", { interval: this.config.syncInterval });
206
+ }
207
+ /**
208
+ * Stop automatic synchronization
209
+ */
210
+ stopAutoSync() {
211
+ if (this.syncTimer) {
212
+ clearInterval(this.syncTimer);
213
+ this.syncTimer = void 0;
214
+ logger.debug("Auto-sync stopped");
215
+ }
216
+ }
217
+ /**
218
+ * Synchronize with all connected peers
219
+ *
220
+ * @returns Array of sync results for each peer
221
+ */
222
+ async syncWithAllPeers() {
223
+ if (this.syncInProgress) {
224
+ logger.warn("Sync already in progress, skipping");
225
+ return [];
226
+ }
227
+ this.syncInProgress = true;
228
+ const results = [];
229
+ try {
230
+ const connectedPeers = this.getConnectedPeers();
231
+ logger.debug("Starting sync with all peers", { count: connectedPeers.length });
232
+ for (const peer of connectedPeers) {
233
+ const result = await this.syncWithPeer(peer.id);
234
+ results.push(result);
235
+ if (!result.success && this.config.retryOnError) {
236
+ const attempts = (this.retryAttempts.get(peer.id) || 0) + 1;
237
+ this.retryAttempts.set(peer.id, attempts);
238
+ if (attempts <= this.config.maxRetries) {
239
+ const delay = this.calculateBackoff(attempts);
240
+ logger.debug("Scheduling retry", { peerId: peer.id, attempt: attempts, delay });
241
+ setTimeout(() => this.syncWithPeer(peer.id), delay);
242
+ } else {
243
+ logger.warn("Max retries exceeded for peer", { peerId: peer.id });
244
+ }
245
+ }
246
+ }
247
+ const successful = results.filter((r) => r.success).length;
248
+ logger.info("Sync completed", {
249
+ total: results.length,
250
+ successful,
251
+ failed: results.length - successful
252
+ });
253
+ } finally {
254
+ this.syncInProgress = false;
255
+ }
256
+ return results;
257
+ }
258
+ /**
259
+ * Synchronize with a specific peer
260
+ *
261
+ * @param peerId - Peer identifier
262
+ * @returns Sync result
263
+ */
264
+ async syncWithPeer(peerId) {
265
+ const peer = this.peers.get(peerId);
266
+ if (!peer) {
267
+ return {
268
+ peerId,
269
+ success: false,
270
+ eventsReceived: 0,
271
+ eventsSent: 0,
272
+ duration: 0,
273
+ error: "Peer not found"
274
+ };
275
+ }
276
+ if (peer.status !== "connected") {
277
+ const connected = await this.connectToPeer(peerId);
278
+ if (!connected) {
279
+ return {
280
+ peerId,
281
+ success: false,
282
+ eventsReceived: 0,
283
+ eventsSent: 0,
284
+ duration: 0,
285
+ error: "Peer not connected"
286
+ };
287
+ }
288
+ }
289
+ const startTime = Date.now();
290
+ peer.status;
291
+ peer.status = "syncing";
292
+ try {
293
+ await this.config.auditChain.appendEvent({
294
+ type: "SyncStarted",
295
+ peerId,
296
+ direction: "bidirectional"
297
+ });
298
+ const checkpoint = this.config.auditChain.getLatestCheckpoint();
299
+ const request = {
300
+ requester: this.config.auditChain.getConfig().agentDid,
301
+ lastCheckpointHeight: checkpoint?.height ?? -1,
302
+ lastEventRoot: checkpoint?.eventRoot,
303
+ maxEvents: this.config.maxEventsPerRequest
304
+ };
305
+ const response = await this.fetchFromPeer(peer, request);
306
+ let eventsReceived = 0;
307
+ for (const event of response.events) {
308
+ const validation = await this.config.auditChain.validateAndInsert(event);
309
+ if (validation.valid) {
310
+ eventsReceived++;
311
+ } else {
312
+ logger.debug("Received invalid event", {
313
+ eventId: event.id,
314
+ errors: validation.errors
315
+ });
316
+ }
317
+ }
318
+ const ourEvents = await this.getEventsSince(peer.lastCheckpointHeight ?? -1);
319
+ const eventsSent = await this.sendToPeer(peer, ourEvents);
320
+ peer.eventsReceived += eventsReceived;
321
+ peer.eventsSent += eventsSent;
322
+ peer.lastSyncTime = /* @__PURE__ */ new Date();
323
+ peer.lastCheckpointHeight = response.checkpoint?.height ?? peer.lastCheckpointHeight;
324
+ peer.status = "connected";
325
+ this.retryAttempts.set(peerId, 0);
326
+ const duration = Date.now() - startTime;
327
+ await this.config.auditChain.appendEvent({
328
+ type: "SyncCompleted",
329
+ peerId,
330
+ eventsTransferred: eventsReceived + eventsSent,
331
+ duration
332
+ });
333
+ logger.info("Sync with peer completed", {
334
+ peerId,
335
+ eventsReceived,
336
+ eventsSent,
337
+ duration
338
+ });
339
+ return {
340
+ peerId,
341
+ success: true,
342
+ eventsReceived,
343
+ eventsSent,
344
+ newCheckpointHeight: response.checkpoint?.height,
345
+ duration
346
+ };
347
+ } catch (err) {
348
+ peer.status = "error";
349
+ peer.errors++;
350
+ peer.lastError = err instanceof Error ? err.message : String(err);
351
+ const duration = Date.now() - startTime;
352
+ logger.error("Sync with peer failed", err instanceof Error ? err : void 0, {
353
+ peerId,
354
+ errorMessage: peer.lastError,
355
+ duration
356
+ });
357
+ return {
358
+ peerId,
359
+ success: false,
360
+ eventsReceived: 0,
361
+ eventsSent: 0,
362
+ duration,
363
+ error: peer.lastError
364
+ };
365
+ }
366
+ }
367
+ /**
368
+ * Fetch events from a peer
369
+ *
370
+ * In production, this would make an HTTP/WebSocket request.
371
+ *
372
+ * @param peer - Peer information
373
+ * @param request - Sync request
374
+ * @returns Sync response
375
+ */
376
+ async fetchFromPeer(peer, _request) {
377
+ await new Promise((resolve) => setTimeout(resolve, 10));
378
+ return {
379
+ provider: peer.did || `did:exo:${peer.id}`,
380
+ events: [],
381
+ hasMore: false
382
+ };
383
+ }
384
+ /**
385
+ * Send events to a peer
386
+ *
387
+ * In production, this would make an HTTP/WebSocket request.
388
+ *
389
+ * @param peer - Peer information
390
+ * @param events - Events to send
391
+ * @returns Number of events successfully sent
392
+ */
393
+ async sendToPeer(_peer, events) {
394
+ await new Promise((resolve) => setTimeout(resolve, 10));
395
+ return events.length;
396
+ }
397
+ /**
398
+ * Get events since a specific checkpoint height
399
+ *
400
+ * Uses the audit chain's query capability to retrieve events
401
+ * that occurred after the specified checkpoint.
402
+ *
403
+ * @param checkpointHeight - Height to query from
404
+ * @returns Array of events
405
+ */
406
+ async getEventsSince(checkpointHeight) {
407
+ const result = await this.config.auditChain.queryEvents({
408
+ limit: this.config.maxEventsPerRequest
409
+ });
410
+ if (checkpointHeight < 0) {
411
+ return result.events;
412
+ }
413
+ return result.events.slice(checkpointHeight);
414
+ }
415
+ /**
416
+ * Add a new peer to the syndication network
417
+ *
418
+ * @param endpoint - Peer endpoint URL
419
+ * @returns Generated peer ID
420
+ */
421
+ addPeer(endpoint) {
422
+ const peerId = this.generatePeerId(endpoint);
423
+ if (!this.peers.has(peerId)) {
424
+ this.peers.set(peerId, {
425
+ id: peerId,
426
+ endpoint,
427
+ status: "disconnected",
428
+ eventsReceived: 0,
429
+ eventsSent: 0,
430
+ errors: 0
431
+ });
432
+ logger.debug("Added peer", { peerId, endpoint });
433
+ if (this.isRunning) {
434
+ this.connectToPeer(peerId).catch((error) => {
435
+ logger.warn("Failed to connect to new peer", {
436
+ peerId,
437
+ error: error instanceof Error ? error.message : String(error)
438
+ });
439
+ });
440
+ }
441
+ } else {
442
+ logger.debug("Peer already exists", { peerId, endpoint });
443
+ }
444
+ return peerId;
445
+ }
446
+ /**
447
+ * Remove a peer from the syndication network
448
+ *
449
+ * @param peerId - Peer identifier
450
+ * @returns True if peer was removed
451
+ */
452
+ removePeer(peerId) {
453
+ const removed = this.peers.delete(peerId);
454
+ if (removed) {
455
+ this.retryAttempts.delete(peerId);
456
+ logger.debug("Removed peer", { peerId });
457
+ }
458
+ return removed;
459
+ }
460
+ /**
461
+ * Get information about a specific peer
462
+ *
463
+ * @param peerId - Peer identifier
464
+ * @returns Peer information or undefined
465
+ */
466
+ getPeer(peerId) {
467
+ return this.peers.get(peerId);
468
+ }
469
+ /**
470
+ * Get all registered peers
471
+ *
472
+ * @returns Array of all peer information
473
+ */
474
+ getAllPeers() {
475
+ return Array.from(this.peers.values());
476
+ }
477
+ /**
478
+ * Get currently connected peers
479
+ *
480
+ * @returns Array of connected peer information
481
+ */
482
+ getConnectedPeers() {
483
+ return Array.from(this.peers.values()).filter((p) => p.status === "connected");
484
+ }
485
+ /**
486
+ * Get peers in error state
487
+ *
488
+ * @returns Array of error state peer information
489
+ */
490
+ getErrorPeers() {
491
+ return Array.from(this.peers.values()).filter((p) => p.status === "error");
492
+ }
493
+ /**
494
+ * Get comprehensive service statistics
495
+ *
496
+ * @returns Statistics object
497
+ */
498
+ getStats() {
499
+ let totalEventsReceived = 0;
500
+ let totalEventsSent = 0;
501
+ let totalErrors = 0;
502
+ let connectedPeers = 0;
503
+ let syncingPeers = 0;
504
+ let errorPeers = 0;
505
+ for (const peer of this.peers.values()) {
506
+ totalEventsReceived += peer.eventsReceived;
507
+ totalEventsSent += peer.eventsSent;
508
+ totalErrors += peer.errors;
509
+ switch (peer.status) {
510
+ case "connected":
511
+ connectedPeers++;
512
+ break;
513
+ case "syncing":
514
+ syncingPeers++;
515
+ break;
516
+ case "error":
517
+ errorPeers++;
518
+ break;
519
+ }
520
+ }
521
+ return {
522
+ totalPeers: this.peers.size,
523
+ connectedPeers,
524
+ syncingPeers,
525
+ errorPeers,
526
+ totalEventsReceived,
527
+ totalEventsSent,
528
+ totalErrors,
529
+ isRunning: this.isRunning,
530
+ autoSyncEnabled: this.config.autoSync,
531
+ syncInterval: this.config.syncInterval
532
+ };
533
+ }
534
+ /**
535
+ * Force an immediate sync with all peers
536
+ *
537
+ * @returns Array of sync results
538
+ */
539
+ async forceSyncNow() {
540
+ logger.info("Force sync requested");
541
+ return await this.syncWithAllPeers();
542
+ }
543
+ /**
544
+ * Check if the service is currently running
545
+ *
546
+ * @returns True if running
547
+ */
548
+ isServiceRunning() {
549
+ return this.isRunning;
550
+ }
551
+ /**
552
+ * Check if a sync is currently in progress
553
+ *
554
+ * @returns True if syncing
555
+ */
556
+ isSyncing() {
557
+ return this.syncInProgress;
558
+ }
559
+ /**
560
+ * Update service configuration
561
+ *
562
+ * Note: Some config changes require restart to take effect.
563
+ *
564
+ * @param updates - Configuration updates
565
+ */
566
+ updateConfig(updates) {
567
+ const previousAutoSync = this.config.autoSync;
568
+ const previousInterval = this.config.syncInterval;
569
+ Object.assign(this.config, updates);
570
+ if (this.isRunning) {
571
+ if (updates.autoSync !== void 0 || updates.syncInterval !== void 0) {
572
+ if (this.config.autoSync && (!previousAutoSync || this.config.syncInterval !== previousInterval)) {
573
+ this.startAutoSync();
574
+ } else if (!this.config.autoSync && previousAutoSync) {
575
+ this.stopAutoSync();
576
+ }
577
+ }
578
+ }
579
+ logger.debug("Configuration updated", { updates });
580
+ }
581
+ }
582
+ function createSyndicationService(config) {
583
+ return new SyndicationService(config);
584
+ }
585
+ export {
586
+ SyndicationService,
587
+ createSyndicationService
588
+ };
589
+ //# sourceMappingURL=syndication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syndication.js","sources":["../../../src/audit/services/syndication.ts"],"sourcesContent":["/**\n * Syndication Service\n *\n * Handles cross-environment event synchronization between\n * multiple audit chain instances using peer-to-peer communication.\n *\n * Features:\n * - Peer connection management with health tracking\n * - Bidirectional event synchronization\n * - Conflict detection and resolution\n * - Automatic periodic sync with configurable intervals\n * - Exponential backoff for failed sync attempts\n *\n * @module audit/services/syndication\n */\n\nimport type {\n Blake3Hash,\n Did,\n LedgerEvent,\n Checkpoint,\n SyncRequest,\n SyncResponse,\n KnowledgeGraphEventPayload,\n} from '../types.js';\nimport { AuditChain } from './audit-chain.js';\nimport { createLogger } from '../../utils/index.js';\n\nconst logger = createLogger('syndication');\n\n/**\n * Peer connection status\n */\nexport type PeerStatus = 'connected' | 'disconnected' | 'syncing' | 'error';\n\n/**\n * Peer information\n */\nexport interface PeerInfo {\n /** Unique peer identifier */\n id: string;\n /** Network endpoint URL */\n endpoint: string;\n /** Peer's decentralized identifier */\n did?: Did;\n /** Current connection status */\n status: PeerStatus;\n /** Timestamp of last successful sync */\n lastSyncTime?: Date;\n /** Height of last synced checkpoint */\n lastCheckpointHeight?: number;\n /** Total events received from this peer */\n eventsReceived: number;\n /** Total events sent to this peer */\n eventsSent: number;\n /** Cumulative error count */\n errors: number;\n /** Last error message */\n lastError?: string;\n /** Connection latency in milliseconds */\n latency?: number;\n}\n\n/**\n * Sync operation result\n */\nexport interface SyncResult {\n /** ID of the synced peer */\n peerId: string;\n /** Whether sync completed successfully */\n success: boolean;\n /** Number of events received during sync */\n eventsReceived: number;\n /** Number of events sent during sync */\n eventsSent: number;\n /** New checkpoint height after sync */\n newCheckpointHeight?: number;\n /** Sync duration in milliseconds */\n duration: number;\n /** Error message if sync failed */\n error?: string;\n}\n\n/**\n * Syndication service configuration\n */\nexport interface SyndicationConfig {\n /** Local audit chain instance */\n auditChain: AuditChain;\n /** Initial peer endpoints */\n peers: string[];\n /** Enable automatic periodic synchronization */\n autoSync: boolean;\n /** Interval between auto-syncs in milliseconds */\n syncInterval: number;\n /** Timeout for sync requests in milliseconds */\n requestTimeout: number;\n /** Maximum events to transfer per sync request */\n maxEventsPerRequest: number;\n /** Retry failed syncs automatically */\n retryOnError: boolean;\n /** Maximum retry attempts before giving up */\n maxRetries: number;\n /** Base delay for exponential backoff in milliseconds */\n retryBaseDelay: number;\n /** Maximum delay between retries in milliseconds */\n retryMaxDelay: number;\n}\n\n/**\n * Default syndication configuration values\n */\nconst DEFAULT_CONFIG: Omit<SyndicationConfig, 'auditChain'> = {\n peers: [],\n autoSync: false,\n syncInterval: 5 * 60 * 1000, // 5 minutes\n requestTimeout: 30000, // 30 seconds\n maxEventsPerRequest: 1000,\n retryOnError: true,\n maxRetries: 3,\n retryBaseDelay: 1000, // 1 second\n retryMaxDelay: 30000, // 30 seconds\n};\n\n/**\n * Syndication Service\n *\n * Manages peer-to-peer synchronization of audit events across\n * multiple environments. Provides:\n *\n * - Peer discovery and connection management\n * - Bidirectional event synchronization\n * - Conflict detection with hash-based resolution\n * - Automatic periodic sync with health monitoring\n * - Statistics and observability\n *\n * @example\n * ```typescript\n * const auditChain = createAuditChain({ agentDid: 'did:exo:agent-1' });\n * await auditChain.initialize();\n *\n * const syndication = createSyndicationService({\n * auditChain,\n * peers: ['https://peer1.example.com/audit', 'https://peer2.example.com/audit'],\n * autoSync: true,\n * syncInterval: 60000, // 1 minute\n * });\n *\n * await syndication.start();\n *\n * // Manual sync trigger\n * const results = await syndication.syncWithAllPeers();\n * ```\n */\nexport class SyndicationService {\n private config: SyndicationConfig;\n private peers: Map<string, PeerInfo> = new Map();\n private syncTimer?: ReturnType<typeof setInterval>;\n private isRunning: boolean = false;\n private syncInProgress: boolean = false;\n private retryAttempts: Map<string, number> = new Map();\n\n /**\n * Create a new syndication service instance\n *\n * @param config - Configuration with required auditChain\n */\n constructor(config: Partial<SyndicationConfig> & { auditChain: AuditChain }) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...config,\n };\n\n // Initialize peers from config\n for (const endpoint of this.config.peers) {\n const peerId = this.generatePeerId(endpoint);\n this.peers.set(peerId, {\n id: peerId,\n endpoint,\n status: 'disconnected',\n eventsReceived: 0,\n eventsSent: 0,\n errors: 0,\n });\n }\n }\n\n /**\n * Generate a deterministic peer ID from endpoint URL\n *\n * @param endpoint - Peer endpoint URL\n * @returns Generated peer ID\n */\n private generatePeerId(endpoint: string): string {\n // Simple hash for peer ID generation\n let hash = 0;\n for (let i = 0; i < endpoint.length; i++) {\n const char = endpoint.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return `peer-${Math.abs(hash).toString(36)}`;\n }\n\n /**\n * Calculate exponential backoff delay\n *\n * @param attempt - Current retry attempt number\n * @returns Delay in milliseconds\n */\n private calculateBackoff(attempt: number): number {\n const delay = this.config.retryBaseDelay * Math.pow(2, attempt);\n const jitter = Math.random() * 0.3 * delay; // 30% jitter\n return Math.min(delay + jitter, this.config.retryMaxDelay);\n }\n\n /**\n * Start the syndication service\n *\n * Connects to all configured peers and starts automatic\n * synchronization if enabled.\n */\n async start(): Promise<void> {\n if (this.isRunning) {\n logger.warn('Syndication service already running');\n return;\n }\n\n logger.info('Starting syndication service', {\n peers: this.peers.size,\n autoSync: this.config.autoSync,\n syncInterval: this.config.syncInterval,\n });\n\n this.isRunning = true;\n\n // Connect to all peers\n await this.connectToPeers();\n\n // Start auto-sync if enabled\n if (this.config.autoSync) {\n this.startAutoSync();\n }\n\n logger.info('Syndication service started', {\n connectedPeers: this.getConnectedPeers().length,\n });\n }\n\n /**\n * Stop the syndication service\n *\n * Disconnects from all peers and stops automatic synchronization.\n */\n async stop(): Promise<void> {\n if (!this.isRunning) {\n return;\n }\n\n logger.info('Stopping syndication service');\n\n // Stop auto-sync\n if (this.syncTimer) {\n clearInterval(this.syncTimer);\n this.syncTimer = undefined;\n }\n\n // Wait for any in-progress sync to complete\n const maxWait = 5000;\n const startWait = Date.now();\n while (this.syncInProgress && Date.now() - startWait < maxWait) {\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n\n // Disconnect from peers\n for (const peer of this.peers.values()) {\n peer.status = 'disconnected';\n }\n\n this.isRunning = false;\n this.retryAttempts.clear();\n logger.info('Syndication service stopped');\n }\n\n /**\n * Connect to all configured peers\n */\n private async connectToPeers(): Promise<void> {\n const connectPromises = Array.from(this.peers.values()).map(async (peer) => {\n try {\n await this.connectToPeer(peer.id);\n } catch (error) {\n logger.warn('Failed to connect to peer', {\n peerId: peer.id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n await Promise.allSettled(connectPromises);\n }\n\n /**\n * Establish connection to a specific peer\n *\n * @param peerId - Peer identifier\n * @returns True if connection successful\n */\n async connectToPeer(peerId: string): Promise<boolean> {\n const peer = this.peers.get(peerId);\n if (!peer) {\n logger.warn('Peer not found', { peerId });\n return false;\n }\n\n try {\n // In production, would establish WebSocket or HTTP/2 connection\n // For now, simulate connection with health check\n const startTime = Date.now();\n\n // Simulate network latency\n await new Promise(resolve => setTimeout(resolve, 50));\n\n peer.status = 'connected';\n peer.latency = Date.now() - startTime;\n this.retryAttempts.set(peerId, 0);\n\n logger.debug('Connected to peer', {\n peerId,\n endpoint: peer.endpoint,\n latency: peer.latency,\n });\n\n return true;\n } catch (error) {\n peer.status = 'error';\n peer.errors++;\n peer.lastError = error instanceof Error ? error.message : String(error);\n\n logger.error('Failed to connect to peer', undefined, {\n peerId,\n errorMessage: peer.lastError,\n });\n\n return false;\n }\n }\n\n /**\n * Disconnect from a specific peer\n *\n * @param peerId - Peer identifier\n */\n async disconnectPeer(peerId: string): Promise<void> {\n const peer = this.peers.get(peerId);\n if (peer) {\n peer.status = 'disconnected';\n logger.debug('Disconnected from peer', { peerId });\n }\n }\n\n /**\n * Start automatic periodic synchronization\n */\n private startAutoSync(): void {\n if (this.syncTimer) {\n clearInterval(this.syncTimer);\n }\n\n this.syncTimer = setInterval(async () => {\n if (!this.syncInProgress) {\n try {\n await this.syncWithAllPeers();\n } catch (err) {\n logger.error('Auto-sync failed', err instanceof Error ? err : undefined, {\n errorMessage: err instanceof Error ? err.message : String(err),\n });\n }\n }\n }, this.config.syncInterval);\n\n logger.debug('Auto-sync started', { interval: this.config.syncInterval });\n }\n\n /**\n * Stop automatic synchronization\n */\n stopAutoSync(): void {\n if (this.syncTimer) {\n clearInterval(this.syncTimer);\n this.syncTimer = undefined;\n logger.debug('Auto-sync stopped');\n }\n }\n\n /**\n * Synchronize with all connected peers\n *\n * @returns Array of sync results for each peer\n */\n async syncWithAllPeers(): Promise<SyncResult[]> {\n if (this.syncInProgress) {\n logger.warn('Sync already in progress, skipping');\n return [];\n }\n\n this.syncInProgress = true;\n const results: SyncResult[] = [];\n\n try {\n const connectedPeers = this.getConnectedPeers();\n logger.debug('Starting sync with all peers', { count: connectedPeers.length });\n\n for (const peer of connectedPeers) {\n const result = await this.syncWithPeer(peer.id);\n results.push(result);\n\n // Handle retry logic for failed syncs\n if (!result.success && this.config.retryOnError) {\n const attempts = (this.retryAttempts.get(peer.id) || 0) + 1;\n this.retryAttempts.set(peer.id, attempts);\n\n if (attempts <= this.config.maxRetries) {\n const delay = this.calculateBackoff(attempts);\n logger.debug('Scheduling retry', { peerId: peer.id, attempt: attempts, delay });\n setTimeout(() => this.syncWithPeer(peer.id), delay);\n } else {\n logger.warn('Max retries exceeded for peer', { peerId: peer.id });\n }\n }\n }\n\n const successful = results.filter(r => r.success).length;\n logger.info('Sync completed', {\n total: results.length,\n successful,\n failed: results.length - successful,\n });\n } finally {\n this.syncInProgress = false;\n }\n\n return results;\n }\n\n /**\n * Synchronize with a specific peer\n *\n * @param peerId - Peer identifier\n * @returns Sync result\n */\n async syncWithPeer(peerId: string): Promise<SyncResult> {\n const peer = this.peers.get(peerId);\n if (!peer) {\n return {\n peerId,\n success: false,\n eventsReceived: 0,\n eventsSent: 0,\n duration: 0,\n error: 'Peer not found',\n };\n }\n\n if (peer.status !== 'connected') {\n // Try to reconnect\n const connected = await this.connectToPeer(peerId);\n if (!connected) {\n return {\n peerId,\n success: false,\n eventsReceived: 0,\n eventsSent: 0,\n duration: 0,\n error: 'Peer not connected',\n };\n }\n }\n\n const startTime = Date.now();\n const previousStatus = peer.status;\n peer.status = 'syncing';\n\n try {\n // Log sync start event\n await this.config.auditChain.appendEvent({\n type: 'SyncStarted',\n peerId,\n direction: 'bidirectional',\n } as KnowledgeGraphEventPayload);\n\n // Create sync request with current state\n const checkpoint = this.config.auditChain.getLatestCheckpoint();\n const request: SyncRequest = {\n requester: this.config.auditChain.getConfig().agentDid,\n lastCheckpointHeight: checkpoint?.height ?? -1,\n lastEventRoot: checkpoint?.eventRoot,\n maxEvents: this.config.maxEventsPerRequest,\n };\n\n // Fetch events from peer\n const response = await this.fetchFromPeer(peer, request);\n\n // Process received events\n let eventsReceived = 0;\n for (const event of response.events) {\n const validation = await this.config.auditChain.validateAndInsert(event);\n if (validation.valid) {\n eventsReceived++;\n } else {\n logger.debug('Received invalid event', {\n eventId: event.id,\n errors: validation.errors,\n });\n }\n }\n\n // Send our events to peer\n const ourEvents = await this.getEventsSince(peer.lastCheckpointHeight ?? -1);\n const eventsSent = await this.sendToPeer(peer, ourEvents);\n\n // Update peer stats\n peer.eventsReceived += eventsReceived;\n peer.eventsSent += eventsSent;\n peer.lastSyncTime = new Date();\n peer.lastCheckpointHeight = response.checkpoint?.height ?? peer.lastCheckpointHeight;\n peer.status = 'connected';\n\n // Reset retry counter on success\n this.retryAttempts.set(peerId, 0);\n\n const duration = Date.now() - startTime;\n\n // Log sync completion event\n await this.config.auditChain.appendEvent({\n type: 'SyncCompleted',\n peerId,\n eventsTransferred: eventsReceived + eventsSent,\n duration,\n } as KnowledgeGraphEventPayload);\n\n logger.info('Sync with peer completed', {\n peerId,\n eventsReceived,\n eventsSent,\n duration,\n });\n\n return {\n peerId,\n success: true,\n eventsReceived,\n eventsSent,\n newCheckpointHeight: response.checkpoint?.height,\n duration,\n };\n } catch (err) {\n peer.status = 'error';\n peer.errors++;\n peer.lastError = err instanceof Error ? err.message : String(err);\n const duration = Date.now() - startTime;\n\n logger.error('Sync with peer failed', err instanceof Error ? err : undefined, {\n peerId,\n errorMessage: peer.lastError,\n duration,\n });\n\n return {\n peerId,\n success: false,\n eventsReceived: 0,\n eventsSent: 0,\n duration,\n error: peer.lastError,\n };\n }\n }\n\n /**\n * Fetch events from a peer\n *\n * In production, this would make an HTTP/WebSocket request.\n *\n * @param peer - Peer information\n * @param request - Sync request\n * @returns Sync response\n */\n private async fetchFromPeer(peer: PeerInfo, _request: SyncRequest): Promise<SyncResponse> {\n // In production implementation:\n // - Make HTTP POST to peer.endpoint/sync\n // - Set timeout from config.requestTimeout\n // - Handle authentication/authorization\n // - Verify response signatures\n\n // Simulate network operation\n await new Promise(resolve => setTimeout(resolve, 10));\n\n // Return empty response for now\n return {\n provider: peer.did || (`did:exo:${peer.id}` as Did),\n events: [],\n hasMore: false,\n };\n }\n\n /**\n * Send events to a peer\n *\n * In production, this would make an HTTP/WebSocket request.\n *\n * @param peer - Peer information\n * @param events - Events to send\n * @returns Number of events successfully sent\n */\n private async sendToPeer(_peer: PeerInfo, events: LedgerEvent[]): Promise<number> {\n // In production implementation:\n // - Make HTTP POST to peer.endpoint/events\n // - Batch events if exceeding maxEventsPerRequest\n // - Handle acknowledgments\n // - Retry failed sends\n\n // Simulate network operation\n await new Promise(resolve => setTimeout(resolve, 10));\n\n return events.length;\n }\n\n /**\n * Get events since a specific checkpoint height\n *\n * Uses the audit chain's query capability to retrieve events\n * that occurred after the specified checkpoint.\n *\n * @param checkpointHeight - Height to query from\n * @returns Array of events\n */\n private async getEventsSince(checkpointHeight: number): Promise<LedgerEvent[]> {\n const result = await this.config.auditChain.queryEvents({\n limit: this.config.maxEventsPerRequest,\n });\n\n // The events are returned in HLC order from queryEvents\n // For checkpoint-based filtering, we use the total count as a proxy\n // In production, would use more efficient index-based query\n // that tracks checkpoint heights directly\n if (checkpointHeight < 0) {\n return result.events;\n }\n\n // Return events beyond the checkpoint count\n return result.events.slice(checkpointHeight);\n }\n\n /**\n * Add a new peer to the syndication network\n *\n * @param endpoint - Peer endpoint URL\n * @returns Generated peer ID\n */\n addPeer(endpoint: string): string {\n const peerId = this.generatePeerId(endpoint);\n\n if (!this.peers.has(peerId)) {\n this.peers.set(peerId, {\n id: peerId,\n endpoint,\n status: 'disconnected',\n eventsReceived: 0,\n eventsSent: 0,\n errors: 0,\n });\n\n logger.debug('Added peer', { peerId, endpoint });\n\n // Auto-connect if service is running\n if (this.isRunning) {\n this.connectToPeer(peerId).catch((error) => {\n logger.warn('Failed to connect to new peer', {\n peerId,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n }\n } else {\n logger.debug('Peer already exists', { peerId, endpoint });\n }\n\n return peerId;\n }\n\n /**\n * Remove a peer from the syndication network\n *\n * @param peerId - Peer identifier\n * @returns True if peer was removed\n */\n removePeer(peerId: string): boolean {\n const removed = this.peers.delete(peerId);\n if (removed) {\n this.retryAttempts.delete(peerId);\n logger.debug('Removed peer', { peerId });\n }\n return removed;\n }\n\n /**\n * Get information about a specific peer\n *\n * @param peerId - Peer identifier\n * @returns Peer information or undefined\n */\n getPeer(peerId: string): PeerInfo | undefined {\n return this.peers.get(peerId);\n }\n\n /**\n * Get all registered peers\n *\n * @returns Array of all peer information\n */\n getAllPeers(): PeerInfo[] {\n return Array.from(this.peers.values());\n }\n\n /**\n * Get currently connected peers\n *\n * @returns Array of connected peer information\n */\n getConnectedPeers(): PeerInfo[] {\n return Array.from(this.peers.values()).filter(p => p.status === 'connected');\n }\n\n /**\n * Get peers in error state\n *\n * @returns Array of error state peer information\n */\n getErrorPeers(): PeerInfo[] {\n return Array.from(this.peers.values()).filter(p => p.status === 'error');\n }\n\n /**\n * Get comprehensive service statistics\n *\n * @returns Statistics object\n */\n getStats(): {\n totalPeers: number;\n connectedPeers: number;\n syncingPeers: number;\n errorPeers: number;\n totalEventsReceived: number;\n totalEventsSent: number;\n totalErrors: number;\n isRunning: boolean;\n autoSyncEnabled: boolean;\n syncInterval: number;\n } {\n let totalEventsReceived = 0;\n let totalEventsSent = 0;\n let totalErrors = 0;\n let connectedPeers = 0;\n let syncingPeers = 0;\n let errorPeers = 0;\n\n for (const peer of this.peers.values()) {\n totalEventsReceived += peer.eventsReceived;\n totalEventsSent += peer.eventsSent;\n totalErrors += peer.errors;\n\n switch (peer.status) {\n case 'connected':\n connectedPeers++;\n break;\n case 'syncing':\n syncingPeers++;\n break;\n case 'error':\n errorPeers++;\n break;\n }\n }\n\n return {\n totalPeers: this.peers.size,\n connectedPeers,\n syncingPeers,\n errorPeers,\n totalEventsReceived,\n totalEventsSent,\n totalErrors,\n isRunning: this.isRunning,\n autoSyncEnabled: this.config.autoSync,\n syncInterval: this.config.syncInterval,\n };\n }\n\n /**\n * Force an immediate sync with all peers\n *\n * @returns Array of sync results\n */\n async forceSyncNow(): Promise<SyncResult[]> {\n logger.info('Force sync requested');\n return await this.syncWithAllPeers();\n }\n\n /**\n * Check if the service is currently running\n *\n * @returns True if running\n */\n isServiceRunning(): boolean {\n return this.isRunning;\n }\n\n /**\n * Check if a sync is currently in progress\n *\n * @returns True if syncing\n */\n isSyncing(): boolean {\n return this.syncInProgress;\n }\n\n /**\n * Update service configuration\n *\n * Note: Some config changes require restart to take effect.\n *\n * @param updates - Configuration updates\n */\n updateConfig(updates: Partial<Omit<SyndicationConfig, 'auditChain'>>): void {\n const previousAutoSync = this.config.autoSync;\n const previousInterval = this.config.syncInterval;\n\n Object.assign(this.config, updates);\n\n // Handle auto-sync changes\n if (this.isRunning) {\n if (updates.autoSync !== undefined || updates.syncInterval !== undefined) {\n if (this.config.autoSync && (!previousAutoSync || this.config.syncInterval !== previousInterval)) {\n this.startAutoSync();\n } else if (!this.config.autoSync && previousAutoSync) {\n this.stopAutoSync();\n }\n }\n }\n\n logger.debug('Configuration updated', { updates });\n }\n}\n\n/**\n * Create a syndication service instance\n *\n * @param config - Configuration with required auditChain\n * @returns Configured SyndicationService instance\n *\n * @example\n * ```typescript\n * const syndication = createSyndicationService({\n * auditChain,\n * peers: ['https://peer1.example.com/audit'],\n * autoSync: true,\n * });\n * ```\n */\nexport function createSyndicationService(\n config: Partial<SyndicationConfig> & { auditChain: AuditChain }\n): SyndicationService {\n return new SyndicationService(config);\n}\n"],"names":[],"mappings":"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"}