@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,572 @@
1
+ import * as fs from "fs/promises";
2
+ import * as path from "path";
3
+ import { BaseAgent } from "./base-agent.js";
4
+ import { AgentType } from "./types.js";
5
+ class ResearcherAgent extends BaseAgent {
6
+ /** File type patterns for analysis */
7
+ codePatterns = [
8
+ "**/*.ts",
9
+ "**/*.tsx",
10
+ "**/*.js",
11
+ "**/*.jsx",
12
+ "**/*.mts",
13
+ "**/*.mjs"
14
+ ];
15
+ /** Documentation patterns */
16
+ docPatterns = ["**/*.md", "**/*.mdx", "**/*.txt"];
17
+ /** Knowledge graph reference */
18
+ knowledgeGraph = null;
19
+ constructor(config) {
20
+ super({
21
+ type: AgentType.RESEARCHER,
22
+ taskTimeout: 12e4,
23
+ // 2 minutes
24
+ capabilities: ["research", "pattern-analysis", "documentation"],
25
+ ...config
26
+ });
27
+ }
28
+ // ==========================================================================
29
+ // Knowledge Graph Integration
30
+ // ==========================================================================
31
+ /**
32
+ * Set knowledge graph for context-aware research
33
+ */
34
+ setKnowledgeGraph(graph) {
35
+ this.knowledgeGraph = graph;
36
+ this.logger.debug("Knowledge graph attached", {
37
+ nodeCount: graph.getMetadata().nodeCount
38
+ });
39
+ }
40
+ // ==========================================================================
41
+ // Task Execution
42
+ // ==========================================================================
43
+ /**
44
+ * Execute research task
45
+ */
46
+ async executeTask(task) {
47
+ const startTime = /* @__PURE__ */ new Date();
48
+ const input = task.input?.data;
49
+ if (!input?.query) {
50
+ return this.createErrorResult(
51
+ "VALIDATION_ERROR",
52
+ "Research query is required in task input.data",
53
+ startTime
54
+ );
55
+ }
56
+ try {
57
+ const projectRoot = task.input?.context?.projectRoot || process.cwd();
58
+ const result = await this.research(input, projectRoot);
59
+ const artifacts = [{
60
+ type: "report",
61
+ name: "research-findings",
62
+ content: JSON.stringify(result, null, 2),
63
+ mimeType: "application/json"
64
+ }];
65
+ return this.createSuccessResult(result, startTime, artifacts);
66
+ } catch (error) {
67
+ const message = error instanceof Error ? error.message : String(error);
68
+ return this.createErrorResult("RESEARCH_ERROR", `Research failed: ${message}`, startTime);
69
+ }
70
+ }
71
+ // ==========================================================================
72
+ // Public Research Methods
73
+ // ==========================================================================
74
+ /**
75
+ * Perform research based on query
76
+ */
77
+ async research(query, projectRoot) {
78
+ this.logger.info("Starting research", { query: query.query, type: query.type });
79
+ const findings = [];
80
+ const patterns = [];
81
+ let filesAnalyzed = 0;
82
+ const kgFindings = await this.researchKnowledgeGraph(query);
83
+ findings.push(...kgFindings);
84
+ const codeFindings = await this.researchCodebase(query, projectRoot);
85
+ findings.push(...codeFindings.findings);
86
+ patterns.push(...codeFindings.patterns);
87
+ filesAnalyzed = codeFindings.filesAnalyzed;
88
+ if (query.type === "documentation" || query.type === "general") {
89
+ const docFindings = await this.researchDocumentation(query, projectRoot);
90
+ findings.push(...docFindings);
91
+ }
92
+ if (query.type === "pattern" || query.type === "general") {
93
+ const detectedPatterns = await this.analyzePatterns(query.query, projectRoot);
94
+ patterns.push(...detectedPatterns);
95
+ }
96
+ findings.sort((a, b) => b.relevance - a.relevance);
97
+ const summary = this.generateSummary(query, findings, patterns);
98
+ const recommendations = this.generateRecommendations(findings, patterns);
99
+ return {
100
+ query,
101
+ findings: findings.slice(0, query.maxResults || 20),
102
+ summary,
103
+ filesAnalyzed,
104
+ patterns,
105
+ recommendations
106
+ };
107
+ }
108
+ /**
109
+ * Analyze patterns in the codebase
110
+ */
111
+ async analyzePatterns(query, projectRoot) {
112
+ this.logger.debug("Analyzing patterns", { query });
113
+ const patterns = [];
114
+ if (this.knowledgeGraph) {
115
+ const nodes = this.getRelevantNodes(query, 20);
116
+ const patternNodes = nodes.filter(
117
+ (n) => n.type === "technical" || n.tags.some((t) => t.includes("pattern"))
118
+ );
119
+ for (const node of patternNodes) {
120
+ patterns.push({
121
+ name: node.title,
122
+ category: node.type,
123
+ description: node.frontmatter.description || `Pattern from ${node.path}`,
124
+ locations: [node.path],
125
+ frequency: 1,
126
+ recommended: node.status === "active",
127
+ relatedPatterns: node.frontmatter.related
128
+ });
129
+ }
130
+ }
131
+ const detectedPatterns = await this.detectCodePatterns(projectRoot, query);
132
+ patterns.push(...detectedPatterns);
133
+ return patterns;
134
+ }
135
+ /**
136
+ * Find references across the codebase
137
+ */
138
+ async findReferences(searchTerm, projectRoot, options) {
139
+ this.logger.debug("Finding references", { searchTerm, projectRoot });
140
+ const references = [];
141
+ const filePatterns = options?.filePatterns || this.codePatterns;
142
+ const maxResults = options?.maxResults || 50;
143
+ try {
144
+ const files = await this.findFiles(projectRoot, filePatterns);
145
+ for (const file of files) {
146
+ if (references.length >= maxResults) break;
147
+ try {
148
+ const content = await fs.readFile(file, "utf-8");
149
+ const lines = content.split("\n");
150
+ for (let i = 0; i < lines.length; i++) {
151
+ if (lines[i].toLowerCase().includes(searchTerm.toLowerCase())) {
152
+ references.push({
153
+ file: path.relative(projectRoot, file),
154
+ line: i + 1,
155
+ code: lines[i].trim(),
156
+ context: this.getContext(lines, i),
157
+ relevance: this.calculateRelevance(lines[i], searchTerm)
158
+ });
159
+ }
160
+ }
161
+ } catch {
162
+ }
163
+ }
164
+ } catch (error) {
165
+ this.logger.warn("Error finding references", { error });
166
+ }
167
+ return references.sort((a, b) => b.relevance - a.relevance).slice(0, maxResults);
168
+ }
169
+ /**
170
+ * Summarize research findings
171
+ */
172
+ summarizeFindings(findings) {
173
+ if (findings.length === 0) {
174
+ return "No relevant findings were discovered.";
175
+ }
176
+ const bySource = {
177
+ code: findings.filter((f) => f.source === "code"),
178
+ documentation: findings.filter((f) => f.source === "documentation"),
179
+ "knowledge-graph": findings.filter((f) => f.source === "knowledge-graph")
180
+ };
181
+ const parts = [
182
+ `Found ${findings.length} relevant findings:`
183
+ ];
184
+ if (bySource.code.length > 0) {
185
+ parts.push(`- ${bySource.code.length} from codebase analysis`);
186
+ }
187
+ if (bySource.documentation.length > 0) {
188
+ parts.push(`- ${bySource.documentation.length} from documentation`);
189
+ }
190
+ if (bySource["knowledge-graph"].length > 0) {
191
+ parts.push(`- ${bySource["knowledge-graph"].length} from knowledge graph`);
192
+ }
193
+ const topFindings = findings.slice(0, 3);
194
+ if (topFindings.length > 0) {
195
+ parts.push("\nTop findings:");
196
+ for (const finding of topFindings) {
197
+ parts.push(`- ${finding.title}: ${finding.description.slice(0, 100)}...`);
198
+ }
199
+ }
200
+ return parts.join("\n");
201
+ }
202
+ // ==========================================================================
203
+ // Private Research Methods
204
+ // ==========================================================================
205
+ /**
206
+ * Get relevant nodes from knowledge graph
207
+ */
208
+ getRelevantNodes(query, limit = 10) {
209
+ if (!this.knowledgeGraph) {
210
+ return [];
211
+ }
212
+ const allNodes = this.knowledgeGraph.getAllNodes();
213
+ const queryLower = query.toLowerCase();
214
+ const queryTerms = queryLower.split(/\s+/);
215
+ const scored = allNodes.map((node) => {
216
+ let score = 0;
217
+ const titleLower = node.title.toLowerCase();
218
+ const contentLower = node.content.toLowerCase();
219
+ for (const term of queryTerms) {
220
+ if (titleLower.includes(term)) score += 10;
221
+ if (node.tags.some((t) => t.toLowerCase().includes(term))) score += 5;
222
+ if (contentLower.includes(term)) score += 1;
223
+ }
224
+ return { node, score };
225
+ });
226
+ return scored.filter((s) => s.score > 0).sort((a, b) => b.score - a.score).slice(0, limit).map((s) => s.node);
227
+ }
228
+ /**
229
+ * Research from knowledge graph
230
+ */
231
+ async researchKnowledgeGraph(query) {
232
+ const findings = [];
233
+ if (!this.knowledgeGraph) {
234
+ return findings;
235
+ }
236
+ const nodes = this.getRelevantNodes(query.query, 15);
237
+ for (const node of nodes) {
238
+ findings.push({
239
+ title: node.title,
240
+ description: node.frontmatter.description || node.content.slice(0, 200),
241
+ relevance: this.calculateNodeRelevance(node, query.query),
242
+ source: "knowledge-graph",
243
+ relatedNodes: this.knowledgeGraph.findRelated(node.id, 1).map((n) => n.title)
244
+ });
245
+ }
246
+ return findings;
247
+ }
248
+ /**
249
+ * Research from codebase
250
+ */
251
+ async researchCodebase(query, projectRoot) {
252
+ const findings = [];
253
+ const patterns = [];
254
+ let filesAnalyzed = 0;
255
+ try {
256
+ const scope = query.scope?.length ? query.scope.map((s) => path.join(projectRoot, s)) : [projectRoot];
257
+ for (const scopePath of scope) {
258
+ const files = await this.findFiles(scopePath, this.codePatterns);
259
+ filesAnalyzed += files.length;
260
+ for (const file of files) {
261
+ try {
262
+ const content = await fs.readFile(file, "utf-8");
263
+ const relativePath = path.relative(projectRoot, file);
264
+ if (content.toLowerCase().includes(query.query.toLowerCase())) {
265
+ const references = query.includeCode ? await this.findReferences(query.query, projectRoot, {
266
+ maxResults: 5,
267
+ filePatterns: [relativePath]
268
+ }) : [];
269
+ findings.push({
270
+ title: `Match in ${path.basename(file)}`,
271
+ description: `Found relevant content in ${relativePath}`,
272
+ relevance: this.calculateContentRelevance(content, query.query),
273
+ source: "code",
274
+ references
275
+ });
276
+ }
277
+ } catch {
278
+ }
279
+ }
280
+ }
281
+ } catch (error) {
282
+ this.logger.warn("Error researching codebase", { error });
283
+ }
284
+ return { findings, patterns, filesAnalyzed };
285
+ }
286
+ /**
287
+ * Research from documentation
288
+ */
289
+ async researchDocumentation(query, projectRoot) {
290
+ const findings = [];
291
+ try {
292
+ const files = await this.findFiles(projectRoot, this.docPatterns);
293
+ for (const file of files) {
294
+ try {
295
+ const content = await fs.readFile(file, "utf-8");
296
+ const relativePath = path.relative(projectRoot, file);
297
+ if (content.toLowerCase().includes(query.query.toLowerCase())) {
298
+ findings.push({
299
+ title: this.extractDocTitle(content) || path.basename(file),
300
+ description: this.extractDocDescription(content, query.query),
301
+ relevance: this.calculateContentRelevance(content, query.query),
302
+ source: "documentation"
303
+ });
304
+ }
305
+ } catch {
306
+ }
307
+ }
308
+ } catch (error) {
309
+ this.logger.warn("Error researching documentation", { error });
310
+ }
311
+ return findings;
312
+ }
313
+ /**
314
+ * Detect code patterns
315
+ */
316
+ async detectCodePatterns(projectRoot, query) {
317
+ const patterns = [];
318
+ const patternCounts = {};
319
+ const patternDetectors = [
320
+ {
321
+ name: "Singleton Pattern",
322
+ regex: /getInstance\s*\(\)|private\s+static\s+instance/,
323
+ category: "creational",
324
+ description: "Singleton pattern for single instance management"
325
+ },
326
+ {
327
+ name: "Factory Pattern",
328
+ regex: /create[A-Z]\w+\s*\(|factory\s*[=:]/i,
329
+ category: "creational",
330
+ description: "Factory pattern for object creation"
331
+ },
332
+ {
333
+ name: "Observer Pattern",
334
+ regex: /subscribe\s*\(|addEventListener|on[A-Z]\w+\s*\(/,
335
+ category: "behavioral",
336
+ description: "Observer pattern for event handling"
337
+ },
338
+ {
339
+ name: "Async/Await Pattern",
340
+ regex: /async\s+\w+.*\{[\s\S]*?await\s+/,
341
+ category: "async",
342
+ description: "Modern async/await pattern"
343
+ },
344
+ {
345
+ name: "Error Handling Pattern",
346
+ regex: /try\s*\{[\s\S]*?\}\s*catch/,
347
+ category: "error-handling",
348
+ description: "Try-catch error handling pattern"
349
+ },
350
+ {
351
+ name: "Dependency Injection",
352
+ regex: /constructor\s*\([^)]*private\s+readonly|@Inject|@Injectable/,
353
+ category: "structural",
354
+ description: "Dependency injection pattern"
355
+ }
356
+ ];
357
+ try {
358
+ const files = await this.findFiles(projectRoot, this.codePatterns);
359
+ for (const file of files) {
360
+ try {
361
+ const content = await fs.readFile(file, "utf-8");
362
+ const relativePath = path.relative(projectRoot, file);
363
+ for (const detector of patternDetectors) {
364
+ if (detector.regex.test(content)) {
365
+ if (!patternCounts[detector.name]) {
366
+ patternCounts[detector.name] = {
367
+ locations: [],
368
+ description: detector.description
369
+ };
370
+ }
371
+ patternCounts[detector.name].locations.push(relativePath);
372
+ }
373
+ }
374
+ } catch {
375
+ }
376
+ }
377
+ } catch (error) {
378
+ this.logger.warn("Error detecting patterns", { error });
379
+ }
380
+ for (const [name, data] of Object.entries(patternCounts)) {
381
+ if (data.locations.length > 0) {
382
+ patterns.push({
383
+ name,
384
+ category: "detected",
385
+ description: data.description,
386
+ locations: data.locations,
387
+ frequency: data.locations.length,
388
+ recommended: true
389
+ });
390
+ }
391
+ }
392
+ return patterns.sort((a, b) => b.frequency - a.frequency);
393
+ }
394
+ // ==========================================================================
395
+ // Utility Methods
396
+ // ==========================================================================
397
+ /**
398
+ * Find files matching patterns
399
+ */
400
+ async findFiles(dir, patterns) {
401
+ const files = [];
402
+ try {
403
+ const entries = await fs.readdir(dir, { withFileTypes: true });
404
+ for (const entry of entries) {
405
+ const fullPath = path.join(dir, entry.name);
406
+ if (entry.name === "node_modules" || entry.name === ".git" || entry.name === "dist" || entry.name === "build" || entry.name.startsWith(".")) {
407
+ continue;
408
+ }
409
+ if (entry.isDirectory()) {
410
+ const subFiles = await this.findFiles(fullPath, patterns);
411
+ files.push(...subFiles);
412
+ } else if (entry.isFile()) {
413
+ for (const pattern of patterns) {
414
+ const ext = pattern.replace("**/*", "");
415
+ if (entry.name.endsWith(ext)) {
416
+ files.push(fullPath);
417
+ break;
418
+ }
419
+ }
420
+ }
421
+ }
422
+ } catch {
423
+ }
424
+ return files;
425
+ }
426
+ /**
427
+ * Get context around a line
428
+ */
429
+ getContext(lines, lineIndex, range = 2) {
430
+ const start = Math.max(0, lineIndex - range);
431
+ const end = Math.min(lines.length, lineIndex + range + 1);
432
+ return lines.slice(start, end).join("\n");
433
+ }
434
+ /**
435
+ * Calculate relevance of a match
436
+ */
437
+ calculateRelevance(line, searchTerm) {
438
+ const lineLower = line.toLowerCase();
439
+ const termLower = searchTerm.toLowerCase();
440
+ let score = 0.5;
441
+ if (lineLower.includes(termLower)) {
442
+ score += 0.2;
443
+ }
444
+ if (new RegExp(`\\b${termLower}\\b`, "i").test(line)) {
445
+ score += 0.2;
446
+ }
447
+ if (/^(export\s+)?(function|class|const|let|var|interface|type)\s+/.test(line)) {
448
+ score += 0.1;
449
+ }
450
+ return Math.min(1, score);
451
+ }
452
+ /**
453
+ * Calculate node relevance
454
+ */
455
+ calculateNodeRelevance(node, query) {
456
+ const queryLower = query.toLowerCase();
457
+ const terms = queryLower.split(/\s+/);
458
+ let score = 0.3;
459
+ for (const term of terms) {
460
+ if (node.title.toLowerCase().includes(term)) score += 0.2;
461
+ if (node.tags.some((t) => t.toLowerCase().includes(term))) score += 0.15;
462
+ if (node.content.toLowerCase().includes(term)) score += 0.05;
463
+ }
464
+ return Math.min(1, score);
465
+ }
466
+ /**
467
+ * Calculate content relevance
468
+ */
469
+ calculateContentRelevance(content, query) {
470
+ const queryLower = query.toLowerCase();
471
+ const terms = queryLower.split(/\s+/);
472
+ let score = 0.3;
473
+ let matchCount = 0;
474
+ for (const term of terms) {
475
+ const regex = new RegExp(term, "gi");
476
+ const matches = content.match(regex);
477
+ if (matches) {
478
+ matchCount += matches.length;
479
+ }
480
+ }
481
+ const density = matchCount / (content.length / 1e3);
482
+ score += Math.min(0.5, density * 0.1);
483
+ return Math.min(1, score);
484
+ }
485
+ /**
486
+ * Extract title from documentation
487
+ */
488
+ extractDocTitle(content) {
489
+ const headingMatch = content.match(/^#\s+(.+)$/m);
490
+ if (headingMatch) {
491
+ return headingMatch[1].trim();
492
+ }
493
+ const frontmatterMatch = content.match(/^---[\s\S]*?title:\s*(.+?)[\s\n]/m);
494
+ if (frontmatterMatch) {
495
+ return frontmatterMatch[1].replace(/['"]/g, "").trim();
496
+ }
497
+ return null;
498
+ }
499
+ /**
500
+ * Extract description from documentation
501
+ */
502
+ extractDocDescription(content, query) {
503
+ const queryLower = query.toLowerCase();
504
+ const paragraphs = content.split(/\n\n+/);
505
+ for (const para of paragraphs) {
506
+ if (para.toLowerCase().includes(queryLower) && !para.startsWith("#")) {
507
+ return para.slice(0, 200).trim() + (para.length > 200 ? "..." : "");
508
+ }
509
+ }
510
+ for (const para of paragraphs) {
511
+ if (!para.startsWith("#") && para.length > 20) {
512
+ return para.slice(0, 200).trim() + (para.length > 200 ? "..." : "");
513
+ }
514
+ }
515
+ return "Documentation content";
516
+ }
517
+ /**
518
+ * Generate summary from findings
519
+ */
520
+ generateSummary(query, findings, patterns) {
521
+ const parts = [
522
+ `Research on "${query.query}" (${query.type}):`
523
+ ];
524
+ if (findings.length === 0 && patterns.length === 0) {
525
+ return `No relevant findings for "${query.query}".`;
526
+ }
527
+ parts.push(`Found ${findings.length} relevant findings and ${patterns.length} patterns.`);
528
+ if (findings.length > 0) {
529
+ const topFinding = findings[0];
530
+ parts.push(`Top finding: ${topFinding.title} (${Math.round(topFinding.relevance * 100)}% relevance)`);
531
+ }
532
+ if (patterns.length > 0) {
533
+ const topPattern = patterns[0];
534
+ parts.push(`Most common pattern: ${topPattern.name} (${topPattern.frequency} occurrences)`);
535
+ }
536
+ return parts.join("\n");
537
+ }
538
+ /**
539
+ * Generate recommendations from research
540
+ */
541
+ generateRecommendations(findings, patterns) {
542
+ const recommendations = [];
543
+ const patternsByCategory = {};
544
+ for (const pattern of patterns) {
545
+ if (!patternsByCategory[pattern.category]) {
546
+ patternsByCategory[pattern.category] = [];
547
+ }
548
+ patternsByCategory[pattern.category].push(pattern);
549
+ }
550
+ if (patternsByCategory["error-handling"]?.length) {
551
+ recommendations.push("Good error handling patterns detected. Consider standardizing across the codebase.");
552
+ }
553
+ if (patternsByCategory["async"]?.length) {
554
+ recommendations.push("Modern async/await patterns in use. Ensure consistent error handling in async code.");
555
+ }
556
+ if (!patternsByCategory["structural"]?.length) {
557
+ recommendations.push("Consider implementing dependency injection for better testability.");
558
+ }
559
+ const docFindings = findings.filter((f) => f.source === "documentation");
560
+ if (docFindings.length < findings.length * 0.2) {
561
+ recommendations.push("Consider improving documentation coverage for this topic.");
562
+ }
563
+ if (recommendations.length === 0) {
564
+ recommendations.push("Review findings and patterns to identify improvement opportunities.");
565
+ }
566
+ return recommendations;
567
+ }
568
+ }
569
+ export {
570
+ ResearcherAgent
571
+ };
572
+ //# sourceMappingURL=researcher-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcher-agent.js","sources":["../../src/agents/researcher-agent.ts"],"sourcesContent":["/**\n * Researcher Agent\n *\n * Specialized agent for codebase research, pattern analysis, and documentation research.\n * Extends BaseAgent with research-specific capabilities and knowledge graph integration.\n *\n * @module agents/researcher-agent\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { BaseAgent } from './base-agent.js';\nimport {\n AgentType,\n TaskPriority,\n type AgentTask,\n type AgentResult,\n type ResearcherAgentConfig,\n type ResultArtifact,\n} from './types.js';\nimport { KnowledgeGraphManager } from '../core/graph.js';\nimport type { KnowledgeNode } from '../core/types.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Research query type\n */\nexport type ResearchQueryType =\n | 'codebase'\n | 'pattern'\n | 'documentation'\n | 'reference'\n | 'general';\n\n/**\n * Research query input\n */\nexport interface ResearchQuery {\n /** Query string */\n query: string;\n /** Type of research */\n type: ResearchQueryType;\n /** Scope of research (file paths, directories, or patterns) */\n scope?: string[];\n /** Include code snippets in results */\n includeCode?: boolean;\n /** Maximum results to return */\n maxResults?: number;\n}\n\n/**\n * Code reference found during research\n */\nexport interface CodeReference {\n /** File path */\n file: string;\n /** Line number */\n line: number;\n /** Code snippet */\n code: string;\n /** Context around the reference */\n context?: string;\n /** Relevance score (0-1) */\n relevance: number;\n}\n\n/**\n * Detected pattern\n */\nexport interface DetectedPattern {\n /** Pattern name */\n name: string;\n /** Pattern category */\n category: string;\n /** Description of the pattern */\n description: string;\n /** Files where pattern is found */\n locations: string[];\n /** Frequency/occurrence count */\n frequency: number;\n /** Whether this is a recommended pattern */\n recommended: boolean;\n /** Related patterns */\n relatedPatterns?: string[];\n}\n\n/**\n * Research finding\n */\nexport interface ResearchFinding {\n /** Finding title */\n title: string;\n /** Finding description */\n description: string;\n /** Relevance score (0-1) */\n relevance: number;\n /** Source of the finding */\n source: 'code' | 'documentation' | 'knowledge-graph';\n /** Related code references */\n references?: CodeReference[];\n /** Related patterns */\n patterns?: DetectedPattern[];\n /** Related knowledge nodes */\n relatedNodes?: string[];\n}\n\n/**\n * Research result data\n */\nexport interface ResearchResultData {\n /** Query that was executed */\n query: ResearchQuery;\n /** Findings from the research */\n findings: ResearchFinding[];\n /** Summary of findings */\n summary: string;\n /** Total files analyzed */\n filesAnalyzed: number;\n /** Patterns detected */\n patterns: DetectedPattern[];\n /** Recommendations */\n recommendations: string[];\n}\n\n// ============================================================================\n// Researcher Agent\n// ============================================================================\n\n/**\n * Researcher Agent\n *\n * Capabilities:\n * - Codebase research and exploration\n * - Pattern detection and analysis\n * - Documentation research\n * - Reference finding across the codebase\n *\n * @example\n * ```typescript\n * const researcher = new ResearcherAgent({\n * name: 'research-agent',\n * type: AgentType.RESEARCHER,\n * });\n *\n * const result = await researcher.execute({\n * id: 'task-1',\n * description: 'Research authentication patterns',\n * priority: TaskPriority.MEDIUM,\n * input: {\n * data: {\n * query: 'authentication',\n * type: 'pattern',\n * scope: ['src/auth']\n * }\n * },\n * createdAt: new Date()\n * });\n * ```\n */\nexport class ResearcherAgent extends BaseAgent {\n /** File type patterns for analysis */\n private readonly codePatterns = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.js',\n '**/*.jsx',\n '**/*.mts',\n '**/*.mjs',\n ];\n\n /** Documentation patterns */\n private readonly docPatterns = ['**/*.md', '**/*.mdx', '**/*.txt'];\n\n /** Knowledge graph reference */\n private knowledgeGraph: KnowledgeGraphManager | null = null;\n\n constructor(config: Partial<ResearcherAgentConfig> & { name: string }) {\n super({\n type: AgentType.RESEARCHER,\n taskTimeout: 120000, // 2 minutes\n capabilities: ['research', 'pattern-analysis', 'documentation'],\n ...config,\n });\n }\n\n // ==========================================================================\n // Knowledge Graph Integration\n // ==========================================================================\n\n /**\n * Set knowledge graph for context-aware research\n */\n setKnowledgeGraph(graph: KnowledgeGraphManager): void {\n this.knowledgeGraph = graph;\n this.logger.debug('Knowledge graph attached', {\n nodeCount: graph.getMetadata().nodeCount,\n });\n }\n\n // ==========================================================================\n // Task Execution\n // ==========================================================================\n\n /**\n * Execute research task\n */\n protected async executeTask(task: AgentTask): Promise<AgentResult<ResearchResultData>> {\n const startTime = new Date();\n const input = task.input?.data as ResearchQuery | undefined;\n\n if (!input?.query) {\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n 'Research query is required in task input.data',\n startTime\n ) as AgentResult<ResearchResultData>;\n }\n\n try {\n const projectRoot = (task.input?.context?.projectRoot as string) || process.cwd();\n const result = await this.research(input, projectRoot);\n\n const artifacts: ResultArtifact[] = [{\n type: 'report',\n name: 'research-findings',\n content: JSON.stringify(result, null, 2),\n mimeType: 'application/json',\n }];\n\n return this.createSuccessResult(result, startTime, artifacts);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return this.createErrorResult('RESEARCH_ERROR', `Research failed: ${message}`, startTime) as AgentResult<ResearchResultData>;\n }\n }\n\n // ==========================================================================\n // Public Research Methods\n // ==========================================================================\n\n /**\n * Perform research based on query\n */\n async research(query: ResearchQuery, projectRoot: string): Promise<ResearchResultData> {\n this.logger.info('Starting research', { query: query.query, type: query.type });\n\n const findings: ResearchFinding[] = [];\n const patterns: DetectedPattern[] = [];\n let filesAnalyzed = 0;\n\n // Research from knowledge graph\n const kgFindings = await this.researchKnowledgeGraph(query);\n findings.push(...kgFindings);\n\n // Research from codebase\n const codeFindings = await this.researchCodebase(query, projectRoot);\n findings.push(...codeFindings.findings);\n patterns.push(...codeFindings.patterns);\n filesAnalyzed = codeFindings.filesAnalyzed;\n\n // Research documentation\n if (query.type === 'documentation' || query.type === 'general') {\n const docFindings = await this.researchDocumentation(query, projectRoot);\n findings.push(...docFindings);\n }\n\n // Analyze patterns\n if (query.type === 'pattern' || query.type === 'general') {\n const detectedPatterns = await this.analyzePatterns(query.query, projectRoot);\n patterns.push(...detectedPatterns);\n }\n\n // Sort findings by relevance\n findings.sort((a, b) => b.relevance - a.relevance);\n\n // Generate summary and recommendations\n const summary = this.generateSummary(query, findings, patterns);\n const recommendations = this.generateRecommendations(findings, patterns);\n\n return {\n query,\n findings: findings.slice(0, query.maxResults || 20),\n summary,\n filesAnalyzed,\n patterns,\n recommendations,\n };\n }\n\n /**\n * Analyze patterns in the codebase\n */\n async analyzePatterns(query: string, projectRoot: string): Promise<DetectedPattern[]> {\n this.logger.debug('Analyzing patterns', { query });\n\n const patterns: DetectedPattern[] = [];\n\n // Get patterns from knowledge graph\n if (this.knowledgeGraph) {\n const nodes = this.getRelevantNodes(query, 20);\n const patternNodes = nodes.filter(n =>\n n.type === 'technical' || n.tags.some(t => t.includes('pattern'))\n );\n\n for (const node of patternNodes) {\n patterns.push({\n name: node.title,\n category: node.type,\n description: (node.frontmatter.description as string) || `Pattern from ${node.path}`,\n locations: [node.path],\n frequency: 1,\n recommended: node.status === 'active',\n relatedPatterns: node.frontmatter.related as string[] | undefined,\n });\n }\n }\n\n // Detect common patterns from codebase\n const detectedPatterns = await this.detectCodePatterns(projectRoot, query);\n patterns.push(...detectedPatterns);\n\n return patterns;\n }\n\n /**\n * Find references across the codebase\n */\n async findReferences(\n searchTerm: string,\n projectRoot: string,\n options?: { maxResults?: number; filePatterns?: string[] }\n ): Promise<CodeReference[]> {\n this.logger.debug('Finding references', { searchTerm, projectRoot });\n\n const references: CodeReference[] = [];\n const filePatterns = options?.filePatterns || this.codePatterns;\n const maxResults = options?.maxResults || 50;\n\n try {\n const files = await this.findFiles(projectRoot, filePatterns);\n\n for (const file of files) {\n if (references.length >= maxResults) break;\n\n try {\n const content = await fs.readFile(file, 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].toLowerCase().includes(searchTerm.toLowerCase())) {\n references.push({\n file: path.relative(projectRoot, file),\n line: i + 1,\n code: lines[i].trim(),\n context: this.getContext(lines, i),\n relevance: this.calculateRelevance(lines[i], searchTerm),\n });\n }\n }\n } catch {\n // Skip files that can't be read\n }\n }\n } catch (error) {\n this.logger.warn('Error finding references', { error });\n }\n\n return references.sort((a, b) => b.relevance - a.relevance).slice(0, maxResults);\n }\n\n /**\n * Summarize research findings\n */\n summarizeFindings(findings: ResearchFinding[]): string {\n if (findings.length === 0) {\n return 'No relevant findings were discovered.';\n }\n\n const bySource = {\n code: findings.filter(f => f.source === 'code'),\n documentation: findings.filter(f => f.source === 'documentation'),\n 'knowledge-graph': findings.filter(f => f.source === 'knowledge-graph'),\n };\n\n const parts: string[] = [\n `Found ${findings.length} relevant findings:`,\n ];\n\n if (bySource.code.length > 0) {\n parts.push(`- ${bySource.code.length} from codebase analysis`);\n }\n if (bySource.documentation.length > 0) {\n parts.push(`- ${bySource.documentation.length} from documentation`);\n }\n if (bySource['knowledge-graph'].length > 0) {\n parts.push(`- ${bySource['knowledge-graph'].length} from knowledge graph`);\n }\n\n // Top findings\n const topFindings = findings.slice(0, 3);\n if (topFindings.length > 0) {\n parts.push('\\nTop findings:');\n for (const finding of topFindings) {\n parts.push(`- ${finding.title}: ${finding.description.slice(0, 100)}...`);\n }\n }\n\n return parts.join('\\n');\n }\n\n // ==========================================================================\n // Private Research Methods\n // ==========================================================================\n\n /**\n * Get relevant nodes from knowledge graph\n */\n private getRelevantNodes(query: string, limit = 10): KnowledgeNode[] {\n if (!this.knowledgeGraph) {\n return [];\n }\n\n const allNodes = this.knowledgeGraph.getAllNodes();\n const queryLower = query.toLowerCase();\n const queryTerms = queryLower.split(/\\s+/);\n\n const scored = allNodes.map(node => {\n let score = 0;\n const titleLower = node.title.toLowerCase();\n const contentLower = node.content.toLowerCase();\n\n for (const term of queryTerms) {\n if (titleLower.includes(term)) score += 10;\n if (node.tags.some(t => t.toLowerCase().includes(term))) score += 5;\n if (contentLower.includes(term)) score += 1;\n }\n\n return { node, score };\n });\n\n return scored\n .filter(s => s.score > 0)\n .sort((a, b) => b.score - a.score)\n .slice(0, limit)\n .map(s => s.node);\n }\n\n /**\n * Research from knowledge graph\n */\n private async researchKnowledgeGraph(query: ResearchQuery): Promise<ResearchFinding[]> {\n const findings: ResearchFinding[] = [];\n\n if (!this.knowledgeGraph) {\n return findings;\n }\n\n const nodes = this.getRelevantNodes(query.query, 15);\n\n for (const node of nodes) {\n findings.push({\n title: node.title,\n description: (node.frontmatter.description as string) || node.content.slice(0, 200),\n relevance: this.calculateNodeRelevance(node, query.query),\n source: 'knowledge-graph',\n relatedNodes: this.knowledgeGraph.findRelated(node.id, 1).map(n => n.title),\n });\n }\n\n return findings;\n }\n\n /**\n * Research from codebase\n */\n private async researchCodebase(\n query: ResearchQuery,\n projectRoot: string\n ): Promise<{ findings: ResearchFinding[]; patterns: DetectedPattern[]; filesAnalyzed: number }> {\n const findings: ResearchFinding[] = [];\n const patterns: DetectedPattern[] = [];\n let filesAnalyzed = 0;\n\n try {\n const scope = query.scope?.length\n ? query.scope.map(s => path.join(projectRoot, s))\n : [projectRoot];\n\n for (const scopePath of scope) {\n const files = await this.findFiles(scopePath, this.codePatterns);\n filesAnalyzed += files.length;\n\n for (const file of files) {\n try {\n const content = await fs.readFile(file, 'utf-8');\n const relativePath = path.relative(projectRoot, file);\n\n if (content.toLowerCase().includes(query.query.toLowerCase())) {\n const references = query.includeCode\n ? await this.findReferences(query.query, projectRoot, {\n maxResults: 5,\n filePatterns: [relativePath],\n })\n : [];\n\n findings.push({\n title: `Match in ${path.basename(file)}`,\n description: `Found relevant content in ${relativePath}`,\n relevance: this.calculateContentRelevance(content, query.query),\n source: 'code',\n references,\n });\n }\n } catch {\n // Skip files that can't be read\n }\n }\n }\n } catch (error) {\n this.logger.warn('Error researching codebase', { error });\n }\n\n return { findings, patterns, filesAnalyzed };\n }\n\n /**\n * Research from documentation\n */\n private async researchDocumentation(\n query: ResearchQuery,\n projectRoot: string\n ): Promise<ResearchFinding[]> {\n const findings: ResearchFinding[] = [];\n\n try {\n const files = await this.findFiles(projectRoot, this.docPatterns);\n\n for (const file of files) {\n try {\n const content = await fs.readFile(file, 'utf-8');\n const relativePath = path.relative(projectRoot, file);\n\n if (content.toLowerCase().includes(query.query.toLowerCase())) {\n findings.push({\n title: this.extractDocTitle(content) || path.basename(file),\n description: this.extractDocDescription(content, query.query),\n relevance: this.calculateContentRelevance(content, query.query),\n source: 'documentation',\n });\n }\n } catch {\n // Skip files that can't be read\n }\n }\n } catch (error) {\n this.logger.warn('Error researching documentation', { error });\n }\n\n return findings;\n }\n\n /**\n * Detect code patterns\n */\n private async detectCodePatterns(\n projectRoot: string,\n query: string\n ): Promise<DetectedPattern[]> {\n const patterns: DetectedPattern[] = [];\n const patternCounts: Record<string, { locations: string[]; description: string }> = {};\n\n const patternDetectors: Array<{\n name: string;\n regex: RegExp;\n category: string;\n description: string;\n }> = [\n {\n name: 'Singleton Pattern',\n regex: /getInstance\\s*\\(\\)|private\\s+static\\s+instance/,\n category: 'creational',\n description: 'Singleton pattern for single instance management',\n },\n {\n name: 'Factory Pattern',\n regex: /create[A-Z]\\w+\\s*\\(|factory\\s*[=:]/i,\n category: 'creational',\n description: 'Factory pattern for object creation',\n },\n {\n name: 'Observer Pattern',\n regex: /subscribe\\s*\\(|addEventListener|on[A-Z]\\w+\\s*\\(/,\n category: 'behavioral',\n description: 'Observer pattern for event handling',\n },\n {\n name: 'Async/Await Pattern',\n regex: /async\\s+\\w+.*\\{[\\s\\S]*?await\\s+/,\n category: 'async',\n description: 'Modern async/await pattern',\n },\n {\n name: 'Error Handling Pattern',\n regex: /try\\s*\\{[\\s\\S]*?\\}\\s*catch/,\n category: 'error-handling',\n description: 'Try-catch error handling pattern',\n },\n {\n name: 'Dependency Injection',\n regex: /constructor\\s*\\([^)]*private\\s+readonly|@Inject|@Injectable/,\n category: 'structural',\n description: 'Dependency injection pattern',\n },\n ];\n\n try {\n const files = await this.findFiles(projectRoot, this.codePatterns);\n\n for (const file of files) {\n try {\n const content = await fs.readFile(file, 'utf-8');\n const relativePath = path.relative(projectRoot, file);\n\n for (const detector of patternDetectors) {\n if (detector.regex.test(content)) {\n if (!patternCounts[detector.name]) {\n patternCounts[detector.name] = {\n locations: [],\n description: detector.description,\n };\n }\n patternCounts[detector.name].locations.push(relativePath);\n }\n }\n } catch {\n // Skip files that can't be read\n }\n }\n } catch (error) {\n this.logger.warn('Error detecting patterns', { error });\n }\n\n for (const [name, data] of Object.entries(patternCounts)) {\n if (data.locations.length > 0) {\n patterns.push({\n name,\n category: 'detected',\n description: data.description,\n locations: data.locations,\n frequency: data.locations.length,\n recommended: true,\n });\n }\n }\n\n return patterns.sort((a, b) => b.frequency - a.frequency);\n }\n\n // ==========================================================================\n // Utility Methods\n // ==========================================================================\n\n /**\n * Find files matching patterns\n */\n private async findFiles(dir: string, patterns: string[]): Promise<string[]> {\n const files: string[] = [];\n\n try {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n\n if (\n entry.name === 'node_modules' ||\n entry.name === '.git' ||\n entry.name === 'dist' ||\n entry.name === 'build' ||\n entry.name.startsWith('.')\n ) {\n continue;\n }\n\n if (entry.isDirectory()) {\n const subFiles = await this.findFiles(fullPath, patterns);\n files.push(...subFiles);\n } else if (entry.isFile()) {\n for (const pattern of patterns) {\n const ext = pattern.replace('**/*', '');\n if (entry.name.endsWith(ext)) {\n files.push(fullPath);\n break;\n }\n }\n }\n }\n } catch {\n // Directory doesn't exist or can't be read\n }\n\n return files;\n }\n\n /**\n * Get context around a line\n */\n private getContext(lines: string[], lineIndex: number, range = 2): string {\n const start = Math.max(0, lineIndex - range);\n const end = Math.min(lines.length, lineIndex + range + 1);\n return lines.slice(start, end).join('\\n');\n }\n\n /**\n * Calculate relevance of a match\n */\n private calculateRelevance(line: string, searchTerm: string): number {\n const lineLower = line.toLowerCase();\n const termLower = searchTerm.toLowerCase();\n\n let score = 0.5;\n\n if (lineLower.includes(termLower)) {\n score += 0.2;\n }\n\n if (new RegExp(`\\\\b${termLower}\\\\b`, 'i').test(line)) {\n score += 0.2;\n }\n\n if (/^(export\\s+)?(function|class|const|let|var|interface|type)\\s+/.test(line)) {\n score += 0.1;\n }\n\n return Math.min(1, score);\n }\n\n /**\n * Calculate node relevance\n */\n private calculateNodeRelevance(node: KnowledgeNode, query: string): number {\n const queryLower = query.toLowerCase();\n const terms = queryLower.split(/\\s+/);\n\n let score = 0.3;\n\n for (const term of terms) {\n if (node.title.toLowerCase().includes(term)) score += 0.2;\n if (node.tags.some(t => t.toLowerCase().includes(term))) score += 0.15;\n if (node.content.toLowerCase().includes(term)) score += 0.05;\n }\n\n return Math.min(1, score);\n }\n\n /**\n * Calculate content relevance\n */\n private calculateContentRelevance(content: string, query: string): number {\n const queryLower = query.toLowerCase();\n const terms = queryLower.split(/\\s+/);\n\n let score = 0.3;\n let matchCount = 0;\n\n for (const term of terms) {\n const regex = new RegExp(term, 'gi');\n const matches = content.match(regex);\n if (matches) {\n matchCount += matches.length;\n }\n }\n\n const density = matchCount / (content.length / 1000);\n score += Math.min(0.5, density * 0.1);\n\n return Math.min(1, score);\n }\n\n /**\n * Extract title from documentation\n */\n private extractDocTitle(content: string): string | null {\n const headingMatch = content.match(/^#\\s+(.+)$/m);\n if (headingMatch) {\n return headingMatch[1].trim();\n }\n\n const frontmatterMatch = content.match(/^---[\\s\\S]*?title:\\s*(.+?)[\\s\\n]/m);\n if (frontmatterMatch) {\n return frontmatterMatch[1].replace(/['\"]/g, '').trim();\n }\n\n return null;\n }\n\n /**\n * Extract description from documentation\n */\n private extractDocDescription(content: string, query: string): string {\n const queryLower = query.toLowerCase();\n\n const paragraphs = content.split(/\\n\\n+/);\n for (const para of paragraphs) {\n if (para.toLowerCase().includes(queryLower) && !para.startsWith('#')) {\n return para.slice(0, 200).trim() + (para.length > 200 ? '...' : '');\n }\n }\n\n for (const para of paragraphs) {\n if (!para.startsWith('#') && para.length > 20) {\n return para.slice(0, 200).trim() + (para.length > 200 ? '...' : '');\n }\n }\n\n return 'Documentation content';\n }\n\n /**\n * Generate summary from findings\n */\n private generateSummary(\n query: ResearchQuery,\n findings: ResearchFinding[],\n patterns: DetectedPattern[]\n ): string {\n const parts: string[] = [\n `Research on \"${query.query}\" (${query.type}):`,\n ];\n\n if (findings.length === 0 && patterns.length === 0) {\n return `No relevant findings for \"${query.query}\".`;\n }\n\n parts.push(`Found ${findings.length} relevant findings and ${patterns.length} patterns.`);\n\n if (findings.length > 0) {\n const topFinding = findings[0];\n parts.push(`Top finding: ${topFinding.title} (${Math.round(topFinding.relevance * 100)}% relevance)`);\n }\n\n if (patterns.length > 0) {\n const topPattern = patterns[0];\n parts.push(`Most common pattern: ${topPattern.name} (${topPattern.frequency} occurrences)`);\n }\n\n return parts.join('\\n');\n }\n\n /**\n * Generate recommendations from research\n */\n private generateRecommendations(\n findings: ResearchFinding[],\n patterns: DetectedPattern[]\n ): string[] {\n const recommendations: string[] = [];\n\n const patternsByCategory: Record<string, DetectedPattern[]> = {};\n for (const pattern of patterns) {\n if (!patternsByCategory[pattern.category]) {\n patternsByCategory[pattern.category] = [];\n }\n patternsByCategory[pattern.category].push(pattern);\n }\n\n if (patternsByCategory['error-handling']?.length) {\n recommendations.push('Good error handling patterns detected. Consider standardizing across the codebase.');\n }\n\n if (patternsByCategory['async']?.length) {\n recommendations.push('Modern async/await patterns in use. Ensure consistent error handling in async code.');\n }\n\n if (!patternsByCategory['structural']?.length) {\n recommendations.push('Consider implementing dependency injection for better testability.');\n }\n\n const docFindings = findings.filter(f => f.source === 'documentation');\n if (docFindings.length < findings.length * 0.2) {\n recommendations.push('Consider improving documentation coverage for this topic.');\n }\n\n if (recommendations.length === 0) {\n recommendations.push('Review findings and patterns to identify improvement opportunities.');\n }\n\n return recommendations;\n }\n}\n\n"],"names":[],"mappings":"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"}