@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,575 @@
1
+ import { createLogger } from "../utils/logger.js";
2
+ import { WorkflowStatus } from "./types.js";
3
+ const logger = createLogger("workflow-registry");
4
+ function generateExecutionId() {
5
+ const timestamp = Date.now().toString(36);
6
+ const random = Math.random().toString(36).substring(2, 10);
7
+ return `exec_${timestamp}_${random}`;
8
+ }
9
+ class WorkflowRegistry {
10
+ workflows = /* @__PURE__ */ new Map();
11
+ executions = /* @__PURE__ */ new Map();
12
+ history = [];
13
+ activeExecutions = /* @__PURE__ */ new Set();
14
+ eventListeners = /* @__PURE__ */ new Map();
15
+ abortControllers = /* @__PURE__ */ new Map();
16
+ options;
17
+ constructor(options = {}) {
18
+ this.options = {
19
+ maxConcurrentExecutions: options.maxConcurrentExecutions ?? 10,
20
+ defaultStepTimeout: options.defaultStepTimeout ?? 3e5,
21
+ // 5 minutes
22
+ defaultRetries: options.defaultRetries ?? 3,
23
+ defaultRetryDelay: options.defaultRetryDelay ?? 1e3,
24
+ persistHistory: options.persistHistory ?? true,
25
+ maxHistoryEntries: options.maxHistoryEntries ?? 1e3,
26
+ logger: options.logger ?? ((level, msg, data) => {
27
+ if (level === "error") logger.error(msg, data);
28
+ else if (level === "warn") logger.warn(msg, data);
29
+ else if (level === "debug") logger.debug(msg, data);
30
+ else logger.info(msg, data);
31
+ })
32
+ };
33
+ }
34
+ /**
35
+ * Register a workflow definition
36
+ */
37
+ register(workflow) {
38
+ this.validateWorkflow(workflow);
39
+ if (this.workflows.has(workflow.id)) {
40
+ logger.warn("Overwriting existing workflow", { workflowId: workflow.id });
41
+ }
42
+ this.workflows.set(workflow.id, workflow);
43
+ logger.info("Workflow registered", {
44
+ workflowId: workflow.id,
45
+ version: workflow.version,
46
+ steps: workflow.steps.length
47
+ });
48
+ }
49
+ /**
50
+ * Unregister a workflow definition
51
+ */
52
+ unregister(workflowId) {
53
+ const existed = this.workflows.delete(workflowId);
54
+ if (existed) {
55
+ logger.info("Workflow unregistered", { workflowId });
56
+ }
57
+ return existed;
58
+ }
59
+ /**
60
+ * Get a workflow definition by ID
61
+ */
62
+ get(workflowId) {
63
+ return this.workflows.get(workflowId);
64
+ }
65
+ /**
66
+ * List all registered workflows
67
+ */
68
+ list(options = {}) {
69
+ let workflows = Array.from(this.workflows.values());
70
+ if (options.tags && options.tags.length > 0) {
71
+ workflows = workflows.filter(
72
+ (w) => w.tags?.some((t) => options.tags.includes(t))
73
+ );
74
+ }
75
+ if (options.version) {
76
+ const versionPattern = new RegExp(options.version);
77
+ workflows = workflows.filter((w) => versionPattern.test(w.version));
78
+ }
79
+ if (options.namePattern) {
80
+ const namePattern = new RegExp(options.namePattern, "i");
81
+ workflows = workflows.filter((w) => namePattern.test(w.name));
82
+ }
83
+ const offset = options.offset ?? 0;
84
+ const limit = options.limit ?? workflows.length;
85
+ workflows = workflows.slice(offset, offset + limit);
86
+ return workflows;
87
+ }
88
+ /**
89
+ * Execute a workflow
90
+ */
91
+ async execute(workflowId, input, options = {}) {
92
+ const workflow = this.workflows.get(workflowId);
93
+ if (!workflow) {
94
+ throw new Error(`Workflow not found: ${workflowId}`);
95
+ }
96
+ if (this.activeExecutions.size >= this.options.maxConcurrentExecutions) {
97
+ throw new Error("Maximum concurrent executions reached");
98
+ }
99
+ const executionId = generateExecutionId();
100
+ const abortController = new AbortController();
101
+ this.abortControllers.set(executionId, abortController);
102
+ const execution = {
103
+ id: executionId,
104
+ workflowId,
105
+ status: WorkflowStatus.Pending,
106
+ input,
107
+ state: { ...workflow.initialState },
108
+ steps: /* @__PURE__ */ new Map(),
109
+ createdAt: /* @__PURE__ */ new Date(),
110
+ metadata: options.metadata,
111
+ progress: 0
112
+ };
113
+ for (const step of workflow.steps) {
114
+ execution.steps.set(step.id, {
115
+ stepId: step.id,
116
+ status: WorkflowStatus.Pending,
117
+ attempts: 0
118
+ });
119
+ }
120
+ this.executions.set(executionId, execution);
121
+ this.activeExecutions.add(executionId);
122
+ try {
123
+ execution.status = WorkflowStatus.Running;
124
+ execution.startedAt = /* @__PURE__ */ new Date();
125
+ this.emitEvent("workflow:started", executionId, workflowId);
126
+ const context = {
127
+ workflowId,
128
+ stepId: "",
129
+ previousResults: /* @__PURE__ */ new Map(),
130
+ state: execution.state,
131
+ log: (message, data) => {
132
+ this.options.logger("info", `[${workflowId}] ${message}`, data);
133
+ },
134
+ signal: abortController.signal
135
+ };
136
+ if (workflow.onStart) {
137
+ await workflow.onStart(input, context);
138
+ }
139
+ const completedSteps = /* @__PURE__ */ new Set();
140
+ const stepResults = /* @__PURE__ */ new Map();
141
+ await this.executeSteps(
142
+ workflow,
143
+ execution,
144
+ context,
145
+ completedSteps,
146
+ stepResults
147
+ );
148
+ const output = workflow.transformOutput ? workflow.transformOutput(stepResults) : stepResults.get(workflow.steps[workflow.steps.length - 1]?.id);
149
+ execution.output = output;
150
+ execution.status = WorkflowStatus.Completed;
151
+ execution.completedAt = /* @__PURE__ */ new Date();
152
+ execution.durationMs = execution.completedAt.getTime() - execution.startedAt.getTime();
153
+ execution.progress = 100;
154
+ if (workflow.onComplete) {
155
+ await workflow.onComplete(output, context);
156
+ }
157
+ this.emitEvent("workflow:completed", executionId, workflowId);
158
+ return this.createResult(execution, stepResults);
159
+ } catch (error) {
160
+ const errorMessage = error instanceof Error ? error.message : String(error);
161
+ const errorStack = error instanceof Error ? error.stack : void 0;
162
+ execution.error = errorMessage;
163
+ execution.errorStack = errorStack;
164
+ execution.status = WorkflowStatus.Failed;
165
+ execution.completedAt = /* @__PURE__ */ new Date();
166
+ execution.durationMs = execution.startedAt ? execution.completedAt.getTime() - execution.startedAt.getTime() : 0;
167
+ if (workflow.onError) {
168
+ const context = {
169
+ workflowId,
170
+ stepId: "",
171
+ previousResults: /* @__PURE__ */ new Map(),
172
+ state: execution.state,
173
+ log: (message, data) => {
174
+ this.options.logger("info", `[${workflowId}] ${message}`, data);
175
+ }
176
+ };
177
+ await workflow.onError(error instanceof Error ? error : new Error(errorMessage), context);
178
+ }
179
+ if (workflow.enableRollback) {
180
+ await this.rollback(execution, workflow);
181
+ }
182
+ this.emitEvent("workflow:failed", executionId, workflowId, void 0, { error: errorMessage });
183
+ return this.createResult(execution, /* @__PURE__ */ new Map());
184
+ } finally {
185
+ this.activeExecutions.delete(executionId);
186
+ this.abortControllers.delete(executionId);
187
+ if (this.options.persistHistory) {
188
+ this.history.push(execution);
189
+ if (this.history.length > this.options.maxHistoryEntries) {
190
+ this.history.shift();
191
+ }
192
+ }
193
+ }
194
+ }
195
+ /**
196
+ * Cancel a running workflow execution
197
+ */
198
+ cancel(executionId) {
199
+ const execution = this.executions.get(executionId);
200
+ if (!execution || execution.status !== WorkflowStatus.Running) {
201
+ return false;
202
+ }
203
+ const abortController = this.abortControllers.get(executionId);
204
+ if (abortController) {
205
+ abortController.abort();
206
+ }
207
+ execution.status = WorkflowStatus.Cancelled;
208
+ execution.completedAt = /* @__PURE__ */ new Date();
209
+ this.emitEvent("workflow:cancelled", executionId, execution.workflowId);
210
+ return true;
211
+ }
212
+ /**
213
+ * Get execution by ID
214
+ */
215
+ getExecution(executionId) {
216
+ return this.executions.get(executionId);
217
+ }
218
+ /**
219
+ * Get execution history
220
+ */
221
+ getHistory(options = {}) {
222
+ let history = [...this.history];
223
+ if (options.workflowId) {
224
+ history = history.filter((e) => e.workflowId === options.workflowId);
225
+ }
226
+ if (options.status) {
227
+ history = history.filter((e) => e.status === options.status);
228
+ }
229
+ if (options.after) {
230
+ history = history.filter((e) => e.startedAt && e.startedAt >= options.after);
231
+ }
232
+ if (options.before) {
233
+ history = history.filter((e) => e.startedAt && e.startedAt <= options.before);
234
+ }
235
+ history.sort((a, b) => {
236
+ const aTime = a.startedAt?.getTime() ?? a.createdAt.getTime();
237
+ const bTime = b.startedAt?.getTime() ?? b.createdAt.getTime();
238
+ return options.sortOrder === "asc" ? aTime - bTime : bTime - aTime;
239
+ });
240
+ const offset = options.offset ?? 0;
241
+ const limit = options.limit ?? history.length;
242
+ return history.slice(offset, offset + limit);
243
+ }
244
+ /**
245
+ * Add event listener
246
+ */
247
+ on(event, listener) {
248
+ if (!this.eventListeners.has(event)) {
249
+ this.eventListeners.set(event, /* @__PURE__ */ new Set());
250
+ }
251
+ this.eventListeners.get(event).add(listener);
252
+ }
253
+ /**
254
+ * Remove event listener
255
+ */
256
+ off(event, listener) {
257
+ this.eventListeners.get(event)?.delete(listener);
258
+ }
259
+ /**
260
+ * Clear all executions and history
261
+ */
262
+ clear() {
263
+ this.executions.clear();
264
+ this.history = [];
265
+ this.activeExecutions.clear();
266
+ }
267
+ // Private methods
268
+ validateWorkflow(workflow) {
269
+ if (!workflow.id) {
270
+ throw new Error("Workflow must have an id");
271
+ }
272
+ if (!workflow.name) {
273
+ throw new Error("Workflow must have a name");
274
+ }
275
+ if (!workflow.version) {
276
+ throw new Error("Workflow must have a version");
277
+ }
278
+ if (!workflow.steps || workflow.steps.length === 0) {
279
+ throw new Error("Workflow must have at least one step");
280
+ }
281
+ const stepIds = /* @__PURE__ */ new Set();
282
+ for (const step of workflow.steps) {
283
+ if (!step.id) {
284
+ throw new Error("Step must have an id");
285
+ }
286
+ if (!step.name) {
287
+ throw new Error(`Step ${step.id} must have a name`);
288
+ }
289
+ if (!step.handler) {
290
+ throw new Error(`Step ${step.id} must have a handler`);
291
+ }
292
+ if (stepIds.has(step.id)) {
293
+ throw new Error(`Duplicate step id: ${step.id}`);
294
+ }
295
+ stepIds.add(step.id);
296
+ }
297
+ for (const step of workflow.steps) {
298
+ if (step.dependencies) {
299
+ for (const dep of step.dependencies) {
300
+ if (!stepIds.has(dep)) {
301
+ throw new Error(`Step ${step.id} depends on unknown step: ${dep}`);
302
+ }
303
+ }
304
+ }
305
+ }
306
+ this.checkCircularDependencies(workflow.steps);
307
+ }
308
+ checkCircularDependencies(steps) {
309
+ const visited = /* @__PURE__ */ new Set();
310
+ const recursionStack = /* @__PURE__ */ new Set();
311
+ const dfs = (stepId) => {
312
+ visited.add(stepId);
313
+ recursionStack.add(stepId);
314
+ const step = steps.find((s) => s.id === stepId);
315
+ if (step?.dependencies) {
316
+ for (const dep of step.dependencies) {
317
+ if (!visited.has(dep)) {
318
+ if (dfs(dep)) return true;
319
+ } else if (recursionStack.has(dep)) {
320
+ return true;
321
+ }
322
+ }
323
+ }
324
+ recursionStack.delete(stepId);
325
+ return false;
326
+ };
327
+ for (const step of steps) {
328
+ if (!visited.has(step.id)) {
329
+ if (dfs(step.id)) {
330
+ throw new Error(`Circular dependency detected involving step: ${step.id}`);
331
+ }
332
+ }
333
+ }
334
+ }
335
+ async executeSteps(workflow, execution, context, completedSteps, stepResults) {
336
+ const remainingSteps = workflow.steps.filter((s) => !completedSteps.has(s.id));
337
+ if (remainingSteps.length === 0) {
338
+ return;
339
+ }
340
+ const executableSteps = remainingSteps.filter((step) => {
341
+ if (!step.dependencies || step.dependencies.length === 0) {
342
+ return true;
343
+ }
344
+ return step.dependencies.every((dep) => completedSteps.has(dep));
345
+ });
346
+ if (executableSteps.length === 0) {
347
+ throw new Error("No executable steps found but workflow not complete");
348
+ }
349
+ const parallelSteps = executableSteps.filter((s) => s.parallel !== false);
350
+ const sequentialSteps = executableSteps.filter((s) => s.parallel === false);
351
+ if (parallelSteps.length > 0) {
352
+ await Promise.all(
353
+ parallelSteps.map(
354
+ (step) => this.executeStep(step, workflow, execution, context, stepResults)
355
+ )
356
+ );
357
+ parallelSteps.forEach((s) => completedSteps.add(s.id));
358
+ }
359
+ for (const step of sequentialSteps) {
360
+ await this.executeStep(step, workflow, execution, context, stepResults);
361
+ completedSteps.add(step.id);
362
+ }
363
+ execution.progress = Math.round(completedSteps.size / workflow.steps.length * 100);
364
+ await this.executeSteps(workflow, execution, context, completedSteps, stepResults);
365
+ }
366
+ async executeStep(step, workflow, execution, context, stepResults) {
367
+ const stepExecution = execution.steps.get(step.id);
368
+ execution.currentStep = step.id;
369
+ if (context.signal?.aborted) {
370
+ throw new Error("Workflow cancelled");
371
+ }
372
+ context.stepId = step.id;
373
+ context.previousResults = new Map(stepResults);
374
+ if (step.condition) {
375
+ const shouldRun = await step.condition(context);
376
+ if (!shouldRun) {
377
+ stepExecution.status = WorkflowStatus.Completed;
378
+ stepExecution.skipped = true;
379
+ stepExecution.skipReason = "Condition not met";
380
+ this.emitEvent("step:skipped", execution.id, workflow.id, step.id);
381
+ return;
382
+ }
383
+ }
384
+ stepExecution.status = WorkflowStatus.Running;
385
+ stepExecution.startedAt = /* @__PURE__ */ new Date();
386
+ this.emitEvent("step:started", execution.id, workflow.id, step.id);
387
+ const timeout = step.timeout ?? this.options.defaultStepTimeout;
388
+ const maxRetries = step.retries ?? this.options.defaultRetries;
389
+ const retryDelay = step.retryDelay ?? this.options.defaultRetryDelay;
390
+ let lastError = null;
391
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
392
+ stepExecution.attempts = attempt + 1;
393
+ try {
394
+ const input = step.transformInput ? step.transformInput(context.previousResults) : context.previousResults.get(step.dependencies?.[0] ?? "");
395
+ const result = await this.executeWithTimeout(
396
+ step.handler(input, context),
397
+ timeout,
398
+ `Step ${step.id} timed out after ${timeout}ms`
399
+ );
400
+ stepExecution.result = result;
401
+ stepExecution.status = WorkflowStatus.Completed;
402
+ stepExecution.completedAt = /* @__PURE__ */ new Date();
403
+ stepExecution.durationMs = stepExecution.completedAt.getTime() - stepExecution.startedAt.getTime();
404
+ stepResults.set(step.id, result);
405
+ this.emitEvent("step:completed", execution.id, workflow.id, step.id);
406
+ return;
407
+ } catch (error) {
408
+ lastError = error instanceof Error ? error : new Error(String(error));
409
+ if (attempt < maxRetries) {
410
+ this.emitEvent("step:retrying", execution.id, workflow.id, step.id, {
411
+ attempt: attempt + 1,
412
+ error: lastError.message
413
+ });
414
+ await this.sleep(retryDelay * Math.pow(2, attempt));
415
+ }
416
+ }
417
+ }
418
+ stepExecution.error = lastError?.message ?? "Unknown error";
419
+ stepExecution.errorStack = lastError?.stack;
420
+ stepExecution.status = WorkflowStatus.Failed;
421
+ stepExecution.completedAt = /* @__PURE__ */ new Date();
422
+ stepExecution.durationMs = stepExecution.completedAt.getTime() - stepExecution.startedAt.getTime();
423
+ this.emitEvent("step:failed", execution.id, workflow.id, step.id, {
424
+ error: stepExecution.error
425
+ });
426
+ if (step.optional) {
427
+ stepExecution.skipped = true;
428
+ stepExecution.skipReason = "Failed but optional";
429
+ return;
430
+ }
431
+ throw lastError ?? new Error(`Step ${step.id} failed`);
432
+ }
433
+ async rollback(execution, workflow) {
434
+ execution.status = WorkflowStatus.RollingBack;
435
+ this.emitEvent("rollback:started", execution.id, workflow.id);
436
+ const context = {
437
+ workflowId: workflow.id,
438
+ stepId: "",
439
+ previousResults: /* @__PURE__ */ new Map(),
440
+ state: execution.state,
441
+ log: (message, data) => {
442
+ this.options.logger("info", `[${workflow.id}] ${message}`, data);
443
+ }
444
+ };
445
+ const completedSteps = workflow.steps.filter((s) => {
446
+ const stepExec = execution.steps.get(s.id);
447
+ return stepExec?.status === WorkflowStatus.Completed && !stepExec.skipped;
448
+ }).reverse();
449
+ let rollbackFailed = false;
450
+ for (const step of completedSteps) {
451
+ if (!step.rollback) continue;
452
+ context.stepId = step.id;
453
+ const stepExec = execution.steps.get(step.id);
454
+ try {
455
+ await step.rollback(stepExec.result, context);
456
+ logger.info("Step rolled back", { stepId: step.id });
457
+ } catch (error) {
458
+ logger.error(
459
+ "Rollback failed for step",
460
+ error instanceof Error ? error : new Error(String(error)),
461
+ { stepId: step.id }
462
+ );
463
+ rollbackFailed = true;
464
+ }
465
+ }
466
+ execution.rolledBack = true;
467
+ execution.status = rollbackFailed ? WorkflowStatus.Failed : WorkflowStatus.RolledBack;
468
+ this.emitEvent(
469
+ rollbackFailed ? "rollback:failed" : "rollback:completed",
470
+ execution.id,
471
+ workflow.id
472
+ );
473
+ }
474
+ async executeWithTimeout(promise, timeoutMs, errorMessage) {
475
+ const timeoutPromise = new Promise((_, reject) => {
476
+ setTimeout(() => reject(new Error(errorMessage)), timeoutMs);
477
+ });
478
+ return Promise.race([promise, timeoutPromise]);
479
+ }
480
+ sleep(ms) {
481
+ return new Promise((resolve) => setTimeout(resolve, ms));
482
+ }
483
+ createResult(execution, stepResults) {
484
+ const stepErrors = /* @__PURE__ */ new Map();
485
+ let completedSteps = 0;
486
+ let failedSteps = 0;
487
+ let skippedSteps = 0;
488
+ let totalRetries = 0;
489
+ for (const [stepId, stepExec] of execution.steps) {
490
+ if (stepExec.status === WorkflowStatus.Completed) {
491
+ if (stepExec.skipped) {
492
+ skippedSteps++;
493
+ } else {
494
+ completedSteps++;
495
+ }
496
+ } else if (stepExec.status === WorkflowStatus.Failed) {
497
+ failedSteps++;
498
+ if (stepExec.error) {
499
+ stepErrors.set(stepId, stepExec.error);
500
+ }
501
+ }
502
+ totalRetries += Math.max(0, stepExec.attempts - 1);
503
+ }
504
+ const stats = {
505
+ totalSteps: execution.steps.size,
506
+ completedSteps,
507
+ failedSteps,
508
+ skippedSteps,
509
+ totalRetries,
510
+ startTime: execution.startedAt ?? execution.createdAt,
511
+ endTime: execution.completedAt ?? /* @__PURE__ */ new Date(),
512
+ totalDurationMs: execution.durationMs ?? 0,
513
+ avgStepDurationMs: completedSteps > 0 ? (execution.durationMs ?? 0) / completedSteps : 0
514
+ };
515
+ return {
516
+ success: execution.status === WorkflowStatus.Completed,
517
+ executionId: execution.id,
518
+ workflowId: execution.workflowId,
519
+ status: execution.status,
520
+ output: execution.output,
521
+ error: execution.error,
522
+ errorStack: execution.errorStack,
523
+ durationMs: execution.durationMs ?? 0,
524
+ stepResults,
525
+ stepErrors,
526
+ rolledBack: execution.rolledBack ?? false,
527
+ stats
528
+ };
529
+ }
530
+ emitEvent(type, executionId, workflowId, stepId, data) {
531
+ const event = {
532
+ type,
533
+ executionId,
534
+ workflowId,
535
+ stepId,
536
+ timestamp: /* @__PURE__ */ new Date(),
537
+ data,
538
+ error: data?.error
539
+ };
540
+ const specificListeners = this.eventListeners.get(type);
541
+ if (specificListeners) {
542
+ for (const listener of specificListeners) {
543
+ try {
544
+ const result = listener(event);
545
+ if (result instanceof Promise) {
546
+ result.catch((err) => logger.error("Event listener error", err));
547
+ }
548
+ } catch (error) {
549
+ logger.error("Event listener error", error);
550
+ }
551
+ }
552
+ }
553
+ const wildcardListeners = this.eventListeners.get("*");
554
+ if (wildcardListeners) {
555
+ for (const listener of wildcardListeners) {
556
+ try {
557
+ const result = listener(event);
558
+ if (result instanceof Promise) {
559
+ result.catch((err) => logger.error("Event listener error", err));
560
+ }
561
+ } catch (error) {
562
+ logger.error("Event listener error", error);
563
+ }
564
+ }
565
+ }
566
+ }
567
+ }
568
+ function createWorkflowRegistry(options) {
569
+ return new WorkflowRegistry(options);
570
+ }
571
+ export {
572
+ WorkflowRegistry,
573
+ createWorkflowRegistry
574
+ };
575
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sources":["../../src/workflows/registry.ts"],"sourcesContent":["/**\n * Workflow Registry\n *\n * Manages workflow definitions, execution, and history tracking.\n * Supports step dependencies, parallel execution, and rollback.\n *\n * @module workflows/registry\n */\n\nimport { createLogger } from '../utils/index.js';\nimport {\n WorkflowStatus,\n type WorkflowDefinition,\n type WorkflowStep,\n type WorkflowExecution,\n type WorkflowResult,\n type WorkflowExecutionStats,\n type StepExecution,\n type StepContext,\n type WorkflowRegistryOptions,\n type WorkflowListOptions,\n type ExecutionHistoryOptions,\n type WorkflowEvent,\n type WorkflowEventType,\n type WorkflowEventListener,\n} from './types.js';\n\nconst logger = createLogger('workflow-registry');\n\n/**\n * Generate unique execution ID\n */\nfunction generateExecutionId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 10);\n return `exec_${timestamp}_${random}`;\n}\n\n/**\n * Workflow Registry\n *\n * Central registry for managing workflow definitions and executions.\n *\n * @example\n * ```typescript\n * const registry = new WorkflowRegistry();\n *\n * // Register a workflow\n * registry.register({\n * id: 'sync-workflow',\n * name: 'Sync Knowledge Graph',\n * version: '1.0.0',\n * steps: [\n * {\n * id: 'analyze',\n * name: 'Analyze Changes',\n * handler: async (input, ctx) => {\n * // Analyze logic\n * return { changes: [] };\n * },\n * },\n * {\n * id: 'sync',\n * name: 'Sync to Memory',\n * dependencies: ['analyze'],\n * handler: async (input, ctx) => {\n * const analysis = ctx.previousResults.get('analyze');\n * // Sync logic\n * },\n * },\n * ],\n * });\n *\n * // Execute workflow\n * const result = await registry.execute('sync-workflow', { projectRoot: '.' });\n * ```\n */\nexport class WorkflowRegistry {\n private workflows: Map<string, WorkflowDefinition> = new Map();\n private executions: Map<string, WorkflowExecution> = new Map();\n private history: WorkflowExecution[] = [];\n private activeExecutions: Set<string> = new Set();\n private eventListeners: Map<WorkflowEventType | '*', Set<WorkflowEventListener>> = new Map();\n private abortControllers: Map<string, AbortController> = new Map();\n\n private options: Required<WorkflowRegistryOptions>;\n\n constructor(options: WorkflowRegistryOptions = {}) {\n this.options = {\n maxConcurrentExecutions: options.maxConcurrentExecutions ?? 10,\n defaultStepTimeout: options.defaultStepTimeout ?? 300000, // 5 minutes\n defaultRetries: options.defaultRetries ?? 3,\n defaultRetryDelay: options.defaultRetryDelay ?? 1000,\n persistHistory: options.persistHistory ?? true,\n maxHistoryEntries: options.maxHistoryEntries ?? 1000,\n logger: options.logger ?? ((level, msg, data) => {\n if (level === 'error') logger.error(msg, data as Error | undefined);\n else if (level === 'warn') logger.warn(msg, data);\n else if (level === 'debug') logger.debug(msg, data);\n else logger.info(msg, data);\n }),\n };\n }\n\n /**\n * Register a workflow definition\n */\n register<TInput = unknown, TOutput = unknown>(\n workflow: WorkflowDefinition<TInput, TOutput>\n ): void {\n // Validate workflow\n this.validateWorkflow(workflow as WorkflowDefinition);\n\n // Check for duplicate\n if (this.workflows.has(workflow.id)) {\n logger.warn('Overwriting existing workflow', { workflowId: workflow.id });\n }\n\n // Store with type assertion - the generic types are preserved at runtime\n this.workflows.set(workflow.id, workflow as unknown as WorkflowDefinition);\n logger.info('Workflow registered', {\n workflowId: workflow.id,\n version: workflow.version,\n steps: workflow.steps.length,\n });\n }\n\n /**\n * Unregister a workflow definition\n */\n unregister(workflowId: string): boolean {\n const existed = this.workflows.delete(workflowId);\n if (existed) {\n logger.info('Workflow unregistered', { workflowId });\n }\n return existed;\n }\n\n /**\n * Get a workflow definition by ID\n */\n get<TInput = unknown, TOutput = unknown>(\n workflowId: string\n ): WorkflowDefinition<TInput, TOutput> | undefined {\n return this.workflows.get(workflowId) as WorkflowDefinition<TInput, TOutput> | undefined;\n }\n\n /**\n * List all registered workflows\n */\n list(options: WorkflowListOptions = {}): WorkflowDefinition[] {\n let workflows = Array.from(this.workflows.values());\n\n // Filter by tags\n if (options.tags && options.tags.length > 0) {\n workflows = workflows.filter(w =>\n w.tags?.some(t => options.tags!.includes(t))\n );\n }\n\n // Filter by version\n if (options.version) {\n const versionPattern = new RegExp(options.version);\n workflows = workflows.filter(w => versionPattern.test(w.version));\n }\n\n // Filter by name pattern\n if (options.namePattern) {\n const namePattern = new RegExp(options.namePattern, 'i');\n workflows = workflows.filter(w => namePattern.test(w.name));\n }\n\n // Apply pagination\n const offset = options.offset ?? 0;\n const limit = options.limit ?? workflows.length;\n workflows = workflows.slice(offset, offset + limit);\n\n return workflows;\n }\n\n /**\n * Execute a workflow\n */\n async execute<TInput = unknown, TOutput = unknown>(\n workflowId: string,\n input: TInput,\n options: { metadata?: Record<string, unknown> } = {}\n ): Promise<WorkflowResult<TOutput>> {\n const workflow = this.workflows.get(workflowId);\n if (!workflow) {\n throw new Error(`Workflow not found: ${workflowId}`);\n }\n\n // Check concurrent execution limit\n if (this.activeExecutions.size >= this.options.maxConcurrentExecutions) {\n throw new Error('Maximum concurrent executions reached');\n }\n\n // Create execution record\n const executionId = generateExecutionId();\n const abortController = new AbortController();\n this.abortControllers.set(executionId, abortController);\n\n const execution: WorkflowExecution<TInput, TOutput> = {\n id: executionId,\n workflowId,\n status: WorkflowStatus.Pending,\n input,\n state: { ...workflow.initialState },\n steps: new Map(),\n createdAt: new Date(),\n metadata: options.metadata,\n progress: 0,\n };\n\n // Initialize step executions\n for (const step of workflow.steps) {\n execution.steps.set(step.id, {\n stepId: step.id,\n status: WorkflowStatus.Pending,\n attempts: 0,\n });\n }\n\n this.executions.set(executionId, execution as WorkflowExecution);\n this.activeExecutions.add(executionId);\n\n try {\n // Start execution\n execution.status = WorkflowStatus.Running;\n execution.startedAt = new Date();\n this.emitEvent('workflow:started', executionId, workflowId);\n\n // Create step context\n const context: StepContext = {\n workflowId,\n stepId: '',\n previousResults: new Map(),\n state: execution.state,\n log: (message, data) => {\n this.options.logger('info', `[${workflowId}] ${message}`, data);\n },\n signal: abortController.signal,\n };\n\n // Call onStart hook\n if (workflow.onStart) {\n await workflow.onStart(input as never, context);\n }\n\n // Execute steps in dependency order\n const completedSteps: Set<string> = new Set();\n const stepResults = new Map<string, unknown>();\n\n await this.executeSteps(\n workflow,\n execution as WorkflowExecution,\n context,\n completedSteps,\n stepResults\n );\n\n // Transform output\n const output = workflow.transformOutput\n ? workflow.transformOutput(stepResults)\n : stepResults.get(workflow.steps[workflow.steps.length - 1]?.id);\n\n execution.output = output as TOutput;\n execution.status = WorkflowStatus.Completed;\n execution.completedAt = new Date();\n execution.durationMs = execution.completedAt.getTime() - execution.startedAt.getTime();\n execution.progress = 100;\n\n // Call onComplete hook\n if (workflow.onComplete) {\n await workflow.onComplete(output as never, context);\n }\n\n this.emitEvent('workflow:completed', executionId, workflowId);\n\n return this.createResult(execution as WorkflowExecution, stepResults);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const errorStack = error instanceof Error ? error.stack : undefined;\n\n execution.error = errorMessage;\n execution.errorStack = errorStack;\n execution.status = WorkflowStatus.Failed;\n execution.completedAt = new Date();\n execution.durationMs = execution.startedAt\n ? execution.completedAt.getTime() - execution.startedAt.getTime()\n : 0;\n\n // Call onError hook\n if (workflow.onError) {\n const context: StepContext = {\n workflowId,\n stepId: '',\n previousResults: new Map(),\n state: execution.state,\n log: (message, data) => {\n this.options.logger('info', `[${workflowId}] ${message}`, data);\n },\n };\n await workflow.onError(error instanceof Error ? error : new Error(errorMessage), context);\n }\n\n // Attempt rollback if enabled\n if (workflow.enableRollback) {\n await this.rollback(execution as WorkflowExecution, workflow);\n }\n\n this.emitEvent('workflow:failed', executionId, workflowId, undefined, { error: errorMessage });\n\n return this.createResult(execution as WorkflowExecution, new Map());\n } finally {\n this.activeExecutions.delete(executionId);\n this.abortControllers.delete(executionId);\n\n // Add to history\n if (this.options.persistHistory) {\n this.history.push(execution as WorkflowExecution);\n if (this.history.length > this.options.maxHistoryEntries) {\n this.history.shift();\n }\n }\n }\n }\n\n /**\n * Cancel a running workflow execution\n */\n cancel(executionId: string): boolean {\n const execution = this.executions.get(executionId);\n if (!execution || execution.status !== WorkflowStatus.Running) {\n return false;\n }\n\n const abortController = this.abortControllers.get(executionId);\n if (abortController) {\n abortController.abort();\n }\n\n execution.status = WorkflowStatus.Cancelled;\n execution.completedAt = new Date();\n this.emitEvent('workflow:cancelled', executionId, execution.workflowId);\n\n return true;\n }\n\n /**\n * Get execution by ID\n */\n getExecution(executionId: string): WorkflowExecution | undefined {\n return this.executions.get(executionId);\n }\n\n /**\n * Get execution history\n */\n getHistory(options: ExecutionHistoryOptions = {}): WorkflowExecution[] {\n let history = [...this.history];\n\n // Apply filters\n if (options.workflowId) {\n history = history.filter(e => e.workflowId === options.workflowId);\n }\n if (options.status) {\n history = history.filter(e => e.status === options.status);\n }\n if (options.after) {\n history = history.filter(e => e.startedAt && e.startedAt >= options.after!);\n }\n if (options.before) {\n history = history.filter(e => e.startedAt && e.startedAt <= options.before!);\n }\n\n // Sort\n history.sort((a, b) => {\n const aTime = a.startedAt?.getTime() ?? a.createdAt.getTime();\n const bTime = b.startedAt?.getTime() ?? b.createdAt.getTime();\n return options.sortOrder === 'asc' ? aTime - bTime : bTime - aTime;\n });\n\n // Apply pagination\n const offset = options.offset ?? 0;\n const limit = options.limit ?? history.length;\n return history.slice(offset, offset + limit);\n }\n\n /**\n * Add event listener\n */\n on(event: WorkflowEventType | '*', listener: WorkflowEventListener): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, new Set());\n }\n this.eventListeners.get(event)!.add(listener);\n }\n\n /**\n * Remove event listener\n */\n off(event: WorkflowEventType | '*', listener: WorkflowEventListener): void {\n this.eventListeners.get(event)?.delete(listener);\n }\n\n /**\n * Clear all executions and history\n */\n clear(): void {\n this.executions.clear();\n this.history = [];\n this.activeExecutions.clear();\n }\n\n // Private methods\n\n private validateWorkflow(workflow: WorkflowDefinition): void {\n if (!workflow.id) {\n throw new Error('Workflow must have an id');\n }\n if (!workflow.name) {\n throw new Error('Workflow must have a name');\n }\n if (!workflow.version) {\n throw new Error('Workflow must have a version');\n }\n if (!workflow.steps || workflow.steps.length === 0) {\n throw new Error('Workflow must have at least one step');\n }\n\n // Validate steps\n const stepIds = new Set<string>();\n for (const step of workflow.steps) {\n if (!step.id) {\n throw new Error('Step must have an id');\n }\n if (!step.name) {\n throw new Error(`Step ${step.id} must have a name`);\n }\n if (!step.handler) {\n throw new Error(`Step ${step.id} must have a handler`);\n }\n if (stepIds.has(step.id)) {\n throw new Error(`Duplicate step id: ${step.id}`);\n }\n stepIds.add(step.id);\n }\n\n // Validate dependencies\n for (const step of workflow.steps) {\n if (step.dependencies) {\n for (const dep of step.dependencies) {\n if (!stepIds.has(dep)) {\n throw new Error(`Step ${step.id} depends on unknown step: ${dep}`);\n }\n }\n }\n }\n\n // Check for circular dependencies\n this.checkCircularDependencies(workflow.steps);\n }\n\n private checkCircularDependencies(steps: WorkflowStep[]): void {\n const visited = new Set<string>();\n const recursionStack = new Set<string>();\n\n const dfs = (stepId: string): boolean => {\n visited.add(stepId);\n recursionStack.add(stepId);\n\n const step = steps.find(s => s.id === stepId);\n if (step?.dependencies) {\n for (const dep of step.dependencies) {\n if (!visited.has(dep)) {\n if (dfs(dep)) return true;\n } else if (recursionStack.has(dep)) {\n return true;\n }\n }\n }\n\n recursionStack.delete(stepId);\n return false;\n };\n\n for (const step of steps) {\n if (!visited.has(step.id)) {\n if (dfs(step.id)) {\n throw new Error(`Circular dependency detected involving step: ${step.id}`);\n }\n }\n }\n }\n\n private async executeSteps(\n workflow: WorkflowDefinition,\n execution: WorkflowExecution,\n context: StepContext,\n completedSteps: Set<string>,\n stepResults: Map<string, unknown>\n ): Promise<void> {\n const remainingSteps = workflow.steps.filter(s => !completedSteps.has(s.id));\n\n if (remainingSteps.length === 0) {\n return;\n }\n\n // Find steps that can be executed (all dependencies completed)\n const executableSteps = remainingSteps.filter(step => {\n if (!step.dependencies || step.dependencies.length === 0) {\n return true;\n }\n return step.dependencies.every(dep => completedSteps.has(dep));\n });\n\n if (executableSteps.length === 0) {\n // This shouldn't happen if dependency validation is correct\n throw new Error('No executable steps found but workflow not complete');\n }\n\n // Group parallel steps\n const parallelSteps = executableSteps.filter(s => s.parallel !== false);\n const sequentialSteps = executableSteps.filter(s => s.parallel === false);\n\n // Execute parallel steps concurrently\n if (parallelSteps.length > 0) {\n await Promise.all(\n parallelSteps.map(step =>\n this.executeStep(step, workflow, execution, context, stepResults)\n )\n );\n parallelSteps.forEach(s => completedSteps.add(s.id));\n }\n\n // Execute sequential steps one by one\n for (const step of sequentialSteps) {\n await this.executeStep(step, workflow, execution, context, stepResults);\n completedSteps.add(step.id);\n }\n\n // Update progress\n execution.progress = Math.round((completedSteps.size / workflow.steps.length) * 100);\n\n // Continue with remaining steps\n await this.executeSteps(workflow, execution, context, completedSteps, stepResults);\n }\n\n private async executeStep(\n step: WorkflowStep,\n workflow: WorkflowDefinition,\n execution: WorkflowExecution,\n context: StepContext,\n stepResults: Map<string, unknown>\n ): Promise<void> {\n const stepExecution = execution.steps.get(step.id)!;\n execution.currentStep = step.id;\n\n // Check abort signal\n if (context.signal?.aborted) {\n throw new Error('Workflow cancelled');\n }\n\n // Update context\n context.stepId = step.id;\n context.previousResults = new Map(stepResults);\n\n // Check condition\n if (step.condition) {\n const shouldRun = await step.condition(context);\n if (!shouldRun) {\n stepExecution.status = WorkflowStatus.Completed;\n stepExecution.skipped = true;\n stepExecution.skipReason = 'Condition not met';\n this.emitEvent('step:skipped', execution.id, workflow.id, step.id);\n return;\n }\n }\n\n stepExecution.status = WorkflowStatus.Running;\n stepExecution.startedAt = new Date();\n this.emitEvent('step:started', execution.id, workflow.id, step.id);\n\n const timeout = step.timeout ?? this.options.defaultStepTimeout;\n const maxRetries = step.retries ?? this.options.defaultRetries;\n const retryDelay = step.retryDelay ?? this.options.defaultRetryDelay;\n\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n stepExecution.attempts = attempt + 1;\n\n try {\n // Get input\n const input = step.transformInput\n ? step.transformInput(context.previousResults)\n : context.previousResults.get(step.dependencies?.[0] ?? '');\n\n // Execute with timeout\n const result = await this.executeWithTimeout(\n step.handler(input, context),\n timeout,\n `Step ${step.id} timed out after ${timeout}ms`\n );\n\n stepExecution.result = result;\n stepExecution.status = WorkflowStatus.Completed;\n stepExecution.completedAt = new Date();\n stepExecution.durationMs =\n stepExecution.completedAt.getTime() - stepExecution.startedAt!.getTime();\n\n stepResults.set(step.id, result);\n this.emitEvent('step:completed', execution.id, workflow.id, step.id);\n return;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n if (attempt < maxRetries) {\n this.emitEvent('step:retrying', execution.id, workflow.id, step.id, {\n attempt: attempt + 1,\n error: lastError.message,\n });\n await this.sleep(retryDelay * Math.pow(2, attempt)); // Exponential backoff\n }\n }\n }\n\n // All retries exhausted\n stepExecution.error = lastError?.message ?? 'Unknown error';\n stepExecution.errorStack = lastError?.stack;\n stepExecution.status = WorkflowStatus.Failed;\n stepExecution.completedAt = new Date();\n stepExecution.durationMs =\n stepExecution.completedAt.getTime() - stepExecution.startedAt!.getTime();\n\n this.emitEvent('step:failed', execution.id, workflow.id, step.id, {\n error: stepExecution.error,\n });\n\n // If step is optional, don't throw\n if (step.optional) {\n stepExecution.skipped = true;\n stepExecution.skipReason = 'Failed but optional';\n return;\n }\n\n throw lastError ?? new Error(`Step ${step.id} failed`);\n }\n\n private async rollback(\n execution: WorkflowExecution,\n workflow: WorkflowDefinition\n ): Promise<void> {\n execution.status = WorkflowStatus.RollingBack;\n this.emitEvent('rollback:started', execution.id, workflow.id);\n\n const context: StepContext = {\n workflowId: workflow.id,\n stepId: '',\n previousResults: new Map(),\n state: execution.state,\n log: (message, data) => {\n this.options.logger('info', `[${workflow.id}] ${message}`, data);\n },\n };\n\n // Get completed steps in reverse order\n const completedSteps = workflow.steps\n .filter(s => {\n const stepExec = execution.steps.get(s.id);\n return stepExec?.status === WorkflowStatus.Completed && !stepExec.skipped;\n })\n .reverse();\n\n let rollbackFailed = false;\n\n for (const step of completedSteps) {\n if (!step.rollback) continue;\n\n context.stepId = step.id;\n const stepExec = execution.steps.get(step.id)!;\n\n try {\n await step.rollback(stepExec.result, context);\n logger.info('Step rolled back', { stepId: step.id });\n } catch (error) {\n logger.error(\n 'Rollback failed for step',\n error instanceof Error ? error : new Error(String(error)),\n { stepId: step.id }\n );\n rollbackFailed = true;\n }\n }\n\n execution.rolledBack = true;\n execution.status = rollbackFailed ? WorkflowStatus.Failed : WorkflowStatus.RolledBack;\n this.emitEvent(\n rollbackFailed ? 'rollback:failed' : 'rollback:completed',\n execution.id,\n workflow.id\n );\n }\n\n private async executeWithTimeout<T>(\n promise: Promise<T>,\n timeoutMs: number,\n errorMessage: string\n ): Promise<T> {\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error(errorMessage)), timeoutMs);\n });\n return Promise.race([promise, timeoutPromise]);\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n private createResult<TOutput>(\n execution: WorkflowExecution,\n stepResults: Map<string, unknown>\n ): WorkflowResult<TOutput> {\n const stepErrors = new Map<string, string>();\n let completedSteps = 0;\n let failedSteps = 0;\n let skippedSteps = 0;\n let totalRetries = 0;\n\n for (const [stepId, stepExec] of execution.steps) {\n if (stepExec.status === WorkflowStatus.Completed) {\n if (stepExec.skipped) {\n skippedSteps++;\n } else {\n completedSteps++;\n }\n } else if (stepExec.status === WorkflowStatus.Failed) {\n failedSteps++;\n if (stepExec.error) {\n stepErrors.set(stepId, stepExec.error);\n }\n }\n totalRetries += Math.max(0, stepExec.attempts - 1);\n }\n\n const stats: WorkflowExecutionStats = {\n totalSteps: execution.steps.size,\n completedSteps,\n failedSteps,\n skippedSteps,\n totalRetries,\n startTime: execution.startedAt ?? execution.createdAt,\n endTime: execution.completedAt ?? new Date(),\n totalDurationMs: execution.durationMs ?? 0,\n avgStepDurationMs: completedSteps > 0 ? (execution.durationMs ?? 0) / completedSteps : 0,\n };\n\n return {\n success: execution.status === WorkflowStatus.Completed,\n executionId: execution.id,\n workflowId: execution.workflowId,\n status: execution.status,\n output: execution.output as TOutput,\n error: execution.error,\n errorStack: execution.errorStack,\n durationMs: execution.durationMs ?? 0,\n stepResults,\n stepErrors,\n rolledBack: execution.rolledBack ?? false,\n stats,\n };\n }\n\n private emitEvent(\n type: WorkflowEventType,\n executionId: string,\n workflowId: string,\n stepId?: string,\n data?: Record<string, unknown>\n ): void {\n const event: WorkflowEvent = {\n type,\n executionId,\n workflowId,\n stepId,\n timestamp: new Date(),\n data,\n error: data?.error as string | undefined,\n };\n\n // Emit to specific listeners\n const specificListeners = this.eventListeners.get(type);\n if (specificListeners) {\n for (const listener of specificListeners) {\n try {\n const result = listener(event);\n if (result instanceof Promise) {\n result.catch(err => logger.error('Event listener error', err));\n }\n } catch (error) {\n logger.error('Event listener error', error as Error);\n }\n }\n }\n\n // Emit to wildcard listeners\n const wildcardListeners = this.eventListeners.get('*');\n if (wildcardListeners) {\n for (const listener of wildcardListeners) {\n try {\n const result = listener(event);\n if (result instanceof Promise) {\n result.catch(err => logger.error('Event listener error', err));\n }\n } catch (error) {\n logger.error('Event listener error', error as Error);\n }\n }\n }\n }\n}\n\n/**\n * Create a workflow registry instance\n */\nexport function createWorkflowRegistry(\n options?: WorkflowRegistryOptions\n): WorkflowRegistry {\n return new WorkflowRegistry(options);\n}\n"],"names":[],"mappings":"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"}