@weavelogic/knowledge-graph-agent 0.2.0 → 0.3.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 (585) hide show
  1. package/README.md +686 -304
  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/caching/index.d.ts +55 -0
  181. package/dist/caching/index.d.ts.map +1 -0
  182. package/dist/caching/index.js +206 -0
  183. package/dist/caching/index.js.map +1 -0
  184. package/dist/caching/lru-cache.d.ts +254 -0
  185. package/dist/caching/lru-cache.d.ts.map +1 -0
  186. package/dist/caching/types.d.ts +95 -0
  187. package/dist/caching/types.d.ts.map +1 -0
  188. package/dist/chunking/chunker.d.ts +94 -0
  189. package/dist/chunking/chunker.d.ts.map +1 -0
  190. package/dist/chunking/index.d.ts +125 -0
  191. package/dist/chunking/index.d.ts.map +1 -0
  192. package/dist/chunking/index.js +283 -0
  193. package/dist/chunking/index.js.map +1 -0
  194. package/dist/chunking/types.d.ts +92 -0
  195. package/dist/chunking/types.d.ts.map +1 -0
  196. package/dist/cli/commands/commit.d.ts +11 -0
  197. package/dist/cli/commands/commit.d.ts.map +1 -0
  198. package/dist/cli/commands/commit.js +379 -0
  199. package/dist/cli/commands/commit.js.map +1 -0
  200. package/dist/cli/commands/config.d.ts +8 -0
  201. package/dist/cli/commands/config.d.ts.map +1 -0
  202. package/dist/cli/commands/config.js +107 -0
  203. package/dist/cli/commands/config.js.map +1 -0
  204. package/dist/cli/commands/cultivate.d.ts +16 -0
  205. package/dist/cli/commands/cultivate.d.ts.map +1 -0
  206. package/dist/cli/commands/cultivate.js +254 -0
  207. package/dist/cli/commands/cultivate.js.map +1 -0
  208. package/dist/cli/commands/diagnostics.d.ts +8 -0
  209. package/dist/cli/commands/diagnostics.d.ts.map +1 -0
  210. package/dist/cli/commands/diagnostics.js +140 -0
  211. package/dist/cli/commands/diagnostics.js.map +1 -0
  212. package/dist/cli/commands/generate.d.ts +13 -0
  213. package/dist/cli/commands/generate.d.ts.map +1 -0
  214. package/dist/cli/commands/init-primitives.d.ts +19 -0
  215. package/dist/cli/commands/init-primitives.d.ts.map +1 -0
  216. package/dist/cli/commands/init-primitives.js +208 -0
  217. package/dist/cli/commands/init-primitives.js.map +1 -0
  218. package/dist/cli/commands/sop.d.ts +14 -0
  219. package/dist/cli/commands/sop.d.ts.map +1 -0
  220. package/dist/cli/commands/sop.js +598 -0
  221. package/dist/cli/commands/sop.js.map +1 -0
  222. package/dist/cli/index.d.ts.map +1 -1
  223. package/dist/cli/index.js +40 -1
  224. package/dist/cli/index.js.map +1 -1
  225. package/dist/config/index.d.ts +153 -0
  226. package/dist/config/index.d.ts.map +1 -0
  227. package/dist/config/index.js +141 -0
  228. package/dist/config/index.js.map +1 -0
  229. package/dist/config/manager.d.ts +136 -0
  230. package/dist/config/manager.d.ts.map +1 -0
  231. package/dist/config/types.d.ts +127 -0
  232. package/dist/config/types.d.ts.map +1 -0
  233. package/dist/core/cache.d.ts +185 -0
  234. package/dist/core/cache.d.ts.map +1 -0
  235. package/dist/core/cache.js +435 -0
  236. package/dist/core/cache.js.map +1 -0
  237. package/dist/cultivation/deep-analyzer.d.ts +129 -0
  238. package/dist/cultivation/deep-analyzer.d.ts.map +1 -0
  239. package/dist/cultivation/deep-analyzer.js +322 -0
  240. package/dist/cultivation/deep-analyzer.js.map +1 -0
  241. package/dist/cultivation/index.d.ts +13 -0
  242. package/dist/cultivation/index.d.ts.map +1 -0
  243. package/dist/cultivation/seed-generator.d.ts +92 -0
  244. package/dist/cultivation/seed-generator.d.ts.map +1 -0
  245. package/dist/cultivation/seed-generator.js +1033 -0
  246. package/dist/cultivation/seed-generator.js.map +1 -0
  247. package/dist/cultivation/types.d.ts +230 -0
  248. package/dist/cultivation/types.d.ts.map +1 -0
  249. package/dist/generators/claude-md.d.ts +7 -0
  250. package/dist/generators/claude-md.d.ts.map +1 -1
  251. package/dist/generators/claude-md.js.map +1 -1
  252. package/dist/generators/docs-init.d.ts +6 -0
  253. package/dist/generators/docs-init.d.ts.map +1 -1
  254. package/dist/generators/docs-init.js.map +1 -1
  255. package/dist/health/checks.d.ts +135 -0
  256. package/dist/health/checks.d.ts.map +1 -0
  257. package/dist/health/index.d.ts +119 -0
  258. package/dist/health/index.d.ts.map +1 -0
  259. package/dist/health/index.js +191 -0
  260. package/dist/health/index.js.map +1 -0
  261. package/dist/health/monitor.d.ts +146 -0
  262. package/dist/health/monitor.d.ts.map +1 -0
  263. package/dist/health/types.d.ts +135 -0
  264. package/dist/health/types.d.ts.map +1 -0
  265. package/dist/index.d.ts +30 -0
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +173 -1
  268. package/dist/index.js.map +1 -1
  269. package/dist/integrations/auto-commit.d.ts +175 -0
  270. package/dist/integrations/auto-commit.d.ts.map +1 -0
  271. package/dist/integrations/auto-commit.js +399 -0
  272. package/dist/integrations/auto-commit.js.map +1 -0
  273. package/dist/integrations/git.d.ts +299 -0
  274. package/dist/integrations/git.d.ts.map +1 -0
  275. package/dist/integrations/git.js +465 -0
  276. package/dist/integrations/git.js.map +1 -0
  277. package/dist/mcp-server/bin.d.ts +11 -0
  278. package/dist/mcp-server/bin.d.ts.map +1 -0
  279. package/dist/mcp-server/handlers/index.d.ts +57 -0
  280. package/dist/mcp-server/handlers/index.d.ts.map +1 -0
  281. package/dist/mcp-server/handlers/index.js +235 -0
  282. package/dist/mcp-server/handlers/index.js.map +1 -0
  283. package/dist/mcp-server/index.d.ts +28 -0
  284. package/dist/mcp-server/index.d.ts.map +1 -0
  285. package/dist/mcp-server/server.d.ts +133 -0
  286. package/dist/mcp-server/server.d.ts.map +1 -0
  287. package/dist/mcp-server/server.js +280 -0
  288. package/dist/mcp-server/server.js.map +1 -0
  289. package/dist/mcp-server/tools/agents/index.d.ts +10 -0
  290. package/dist/mcp-server/tools/agents/index.d.ts.map +1 -0
  291. package/dist/mcp-server/tools/agents/list.d.ts +19 -0
  292. package/dist/mcp-server/tools/agents/list.d.ts.map +1 -0
  293. package/dist/mcp-server/tools/agents/spawn.d.ts +19 -0
  294. package/dist/mcp-server/tools/agents/spawn.d.ts.map +1 -0
  295. package/dist/mcp-server/tools/graph/generate.d.ts +21 -0
  296. package/dist/mcp-server/tools/graph/generate.d.ts.map +1 -0
  297. package/dist/mcp-server/tools/graph/index.d.ts +11 -0
  298. package/dist/mcp-server/tools/graph/index.d.ts.map +1 -0
  299. package/dist/mcp-server/tools/graph/query.d.ts +22 -0
  300. package/dist/mcp-server/tools/graph/query.d.ts.map +1 -0
  301. package/dist/mcp-server/tools/graph/stats.d.ts +22 -0
  302. package/dist/mcp-server/tools/graph/stats.d.ts.map +1 -0
  303. package/dist/mcp-server/tools/health.d.ts +21 -0
  304. package/dist/mcp-server/tools/health.d.ts.map +1 -0
  305. package/dist/mcp-server/tools/index.d.ts +13 -0
  306. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  307. package/dist/mcp-server/tools/registry.d.ts +90 -0
  308. package/dist/mcp-server/tools/registry.d.ts.map +1 -0
  309. package/dist/mcp-server/tools/registry.js +663 -0
  310. package/dist/mcp-server/tools/registry.js.map +1 -0
  311. package/dist/mcp-server/tools/search/index.d.ts +10 -0
  312. package/dist/mcp-server/tools/search/index.d.ts.map +1 -0
  313. package/dist/mcp-server/tools/search/nodes.d.ts +22 -0
  314. package/dist/mcp-server/tools/search/nodes.d.ts.map +1 -0
  315. package/dist/mcp-server/tools/search/tags.d.ts +22 -0
  316. package/dist/mcp-server/tools/search/tags.d.ts.map +1 -0
  317. package/dist/mcp-server/types/index.d.ts +286 -0
  318. package/dist/mcp-server/types/index.d.ts.map +1 -0
  319. package/dist/memory/index.d.ts +10 -0
  320. package/dist/memory/index.d.ts.map +1 -0
  321. package/dist/memory/vault-sync.d.ts +212 -0
  322. package/dist/memory/vault-sync.d.ts.map +1 -0
  323. package/dist/memory/vault-sync.js +463 -0
  324. package/dist/memory/vault-sync.js.map +1 -0
  325. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +296 -0
  326. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  327. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +71 -0
  328. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  329. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +26 -0
  330. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  331. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +407 -0
  332. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  333. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1332 -0
  334. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  335. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +71 -0
  336. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  337. package/dist/node_modules/ajv/dist/ajv.js +84 -0
  338. package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
  339. package/dist/node_modules/ajv/dist/compile/codegen/code.js +160 -0
  340. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  341. package/dist/node_modules/ajv/dist/compile/codegen/index.js +728 -0
  342. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  343. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +152 -0
  344. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  345. package/dist/node_modules/ajv/dist/compile/errors.js +131 -0
  346. package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
  347. package/dist/node_modules/ajv/dist/compile/index.js +234 -0
  348. package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
  349. package/dist/node_modules/ajv/dist/compile/names.js +44 -0
  350. package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
  351. package/dist/node_modules/ajv/dist/compile/ref_error.js +22 -0
  352. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  353. package/dist/node_modules/ajv/dist/compile/resolve.js +163 -0
  354. package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  355. package/dist/node_modules/ajv/dist/compile/rules.js +35 -0
  356. package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
  357. package/dist/node_modules/ajv/dist/compile/util.js +173 -0
  358. package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
  359. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
  360. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  361. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +58 -0
  362. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  363. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +193 -0
  364. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  365. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +43 -0
  366. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  367. package/dist/node_modules/ajv/dist/compile/validate/index.js +522 -0
  368. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  369. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +126 -0
  370. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  371. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +89 -0
  372. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  373. package/dist/node_modules/ajv/dist/core.js +628 -0
  374. package/dist/node_modules/ajv/dist/core.js.map +1 -0
  375. package/dist/node_modules/ajv/dist/refs/data.json.js +24 -0
  376. package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
  377. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +25 -0
  378. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
  379. package/dist/node_modules/ajv/dist/runtime/equal.js +16 -0
  380. package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  381. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +30 -0
  382. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  383. package/dist/node_modules/ajv/dist/runtime/uri.js +16 -0
  384. package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  385. package/dist/node_modules/ajv/dist/runtime/validation_error.js +20 -0
  386. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  387. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  388. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  389. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +114 -0
  390. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  391. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +32 -0
  392. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  393. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +22 -0
  394. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  395. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +100 -0
  396. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  397. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +103 -0
  398. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  399. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +75 -0
  400. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  401. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +68 -0
  402. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  403. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +64 -0
  404. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  405. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +43 -0
  406. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  407. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
  408. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  409. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
  410. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  411. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +81 -0
  412. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  413. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
  414. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  415. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +66 -0
  416. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  417. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +49 -0
  418. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  419. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +23 -0
  420. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  421. package/dist/node_modules/ajv/dist/vocabularies/code.js +140 -0
  422. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  423. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
  424. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  425. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
  426. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  427. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +132 -0
  428. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  429. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +114 -0
  430. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  431. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
  432. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  433. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
  434. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  435. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +95 -0
  436. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  437. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +16 -0
  438. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  439. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
  440. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  441. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +36 -0
  442. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  443. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +56 -0
  444. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  445. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +52 -0
  446. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  447. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +34 -0
  448. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  449. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +39 -0
  450. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  451. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +37 -0
  452. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  453. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +34 -0
  454. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  455. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +33 -0
  456. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  457. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +34 -0
  458. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  459. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +89 -0
  460. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  461. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
  462. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  463. package/dist/node_modules/ajv-formats/dist/formats.js +209 -0
  464. package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
  465. package/dist/node_modules/ajv-formats/dist/index.js +51 -0
  466. package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
  467. package/dist/node_modules/ajv-formats/dist/limit.js +80 -0
  468. package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
  469. package/dist/node_modules/fast-deep-equal/index.js +39 -0
  470. package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
  471. package/dist/node_modules/fast-uri/index.js +261 -0
  472. package/dist/node_modules/fast-uri/index.js.map +1 -0
  473. package/dist/node_modules/fast-uri/lib/schemes.js +215 -0
  474. package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
  475. package/dist/node_modules/fast-uri/lib/utils.js +261 -0
  476. package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
  477. package/dist/node_modules/json-schema-traverse/index.js +92 -0
  478. package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
  479. package/dist/node_modules/zod/v4/classic/errors.js +37 -0
  480. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  481. package/dist/node_modules/zod/v4/classic/iso.js +43 -0
  482. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  483. package/dist/node_modules/zod/v4/classic/parse.js +13 -0
  484. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  485. package/dist/node_modules/zod/v4/classic/schemas.js +688 -0
  486. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  487. package/dist/node_modules/zod/v4/core/api.js +492 -0
  488. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  489. package/dist/node_modules/zod/v4/core/checks.js +405 -0
  490. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  491. package/dist/node_modules/zod/v4/core/core.js +58 -0
  492. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  493. package/dist/node_modules/zod/v4/core/doc.js +38 -0
  494. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  495. package/dist/node_modules/zod/v4/core/errors.js +82 -0
  496. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  497. package/dist/node_modules/zod/v4/core/parse.js +60 -0
  498. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  499. package/dist/node_modules/zod/v4/core/regexes.js +87 -0
  500. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  501. package/dist/node_modules/zod/v4/core/registries.js +52 -0
  502. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  503. package/dist/node_modules/zod/v4/core/schemas.js +1283 -0
  504. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  505. package/dist/node_modules/zod/v4/core/util.js +341 -0
  506. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  507. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  508. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  509. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
  510. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  511. package/dist/reasoning/index.d.ts +74 -0
  512. package/dist/reasoning/index.d.ts.map +1 -0
  513. package/dist/reasoning/index.js +124 -0
  514. package/dist/reasoning/index.js.map +1 -0
  515. package/dist/reasoning/tracker.d.ts +210 -0
  516. package/dist/reasoning/tracker.d.ts.map +1 -0
  517. package/dist/reasoning/types.d.ts +146 -0
  518. package/dist/reasoning/types.d.ts.map +1 -0
  519. package/dist/recovery/backup.d.ts +110 -0
  520. package/dist/recovery/backup.d.ts.map +1 -0
  521. package/dist/recovery/index.d.ts +70 -0
  522. package/dist/recovery/index.d.ts.map +1 -0
  523. package/dist/recovery/index.js +186 -0
  524. package/dist/recovery/index.js.map +1 -0
  525. package/dist/recovery/integrity.d.ts +74 -0
  526. package/dist/recovery/integrity.d.ts.map +1 -0
  527. package/dist/recovery/types.d.ts +94 -0
  528. package/dist/recovery/types.d.ts.map +1 -0
  529. package/dist/services/index.d.ts +130 -0
  530. package/dist/services/index.d.ts.map +1 -0
  531. package/dist/services/index.js +134 -0
  532. package/dist/services/index.js.map +1 -0
  533. package/dist/services/manager.d.ts +140 -0
  534. package/dist/services/manager.d.ts.map +1 -0
  535. package/dist/services/types.d.ts +106 -0
  536. package/dist/services/types.d.ts.map +1 -0
  537. package/dist/services/watchers.d.ts +95 -0
  538. package/dist/services/watchers.d.ts.map +1 -0
  539. package/dist/sops/compliance-checker.d.ts +83 -0
  540. package/dist/sops/compliance-checker.d.ts.map +1 -0
  541. package/dist/sops/compliance-checker.js +399 -0
  542. package/dist/sops/compliance-checker.js.map +1 -0
  543. package/dist/sops/gap-analyzer.d.ts +124 -0
  544. package/dist/sops/gap-analyzer.d.ts.map +1 -0
  545. package/dist/sops/gap-analyzer.js +313 -0
  546. package/dist/sops/gap-analyzer.js.map +1 -0
  547. package/dist/sops/index.d.ts +14 -0
  548. package/dist/sops/index.d.ts.map +1 -0
  549. package/dist/sops/overlay-manager.d.ts +115 -0
  550. package/dist/sops/overlay-manager.d.ts.map +1 -0
  551. package/dist/sops/overlay-manager.js +394 -0
  552. package/dist/sops/overlay-manager.js.map +1 -0
  553. package/dist/sops/registry.d.ts +73 -0
  554. package/dist/sops/registry.d.ts.map +1 -0
  555. package/dist/sops/registry.js +919 -0
  556. package/dist/sops/registry.js.map +1 -0
  557. package/dist/sops/types.d.ts +377 -0
  558. package/dist/sops/types.d.ts.map +1 -0
  559. package/dist/sops/types.js +46 -0
  560. package/dist/sops/types.js.map +1 -0
  561. package/dist/utils/error-recovery.d.ts +230 -0
  562. package/dist/utils/error-recovery.d.ts.map +1 -0
  563. package/dist/utils/error-recovery.js +228 -0
  564. package/dist/utils/error-recovery.js.map +1 -0
  565. package/dist/utils/error-taxonomy.d.ts +149 -0
  566. package/dist/utils/error-taxonomy.d.ts.map +1 -0
  567. package/dist/utils/error-taxonomy.js +260 -0
  568. package/dist/utils/error-taxonomy.js.map +1 -0
  569. package/dist/utils/index.d.ts +11 -0
  570. package/dist/utils/index.d.ts.map +1 -0
  571. package/dist/utils/logger.d.ts +139 -0
  572. package/dist/utils/logger.d.ts.map +1 -0
  573. package/dist/utils/logger.js +311 -0
  574. package/dist/utils/logger.js.map +1 -0
  575. package/dist/workflows/index.d.ts +11 -0
  576. package/dist/workflows/index.d.ts.map +1 -0
  577. package/dist/workflows/registry.d.ts +118 -0
  578. package/dist/workflows/registry.d.ts.map +1 -0
  579. package/dist/workflows/registry.js +575 -0
  580. package/dist/workflows/registry.js.map +1 -0
  581. package/dist/workflows/types.d.ts +322 -0
  582. package/dist/workflows/types.d.ts.map +1 -0
  583. package/dist/workflows/types.js +16 -0
  584. package/dist/workflows/types.js.map +1 -0
  585. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyst-agent.js","sources":["../../src/agents/analyst-agent.ts"],"sourcesContent":["/**\n * Analyst Agent\n *\n * Specialized agent for code analysis, metrics calculation, and quality assessment.\n * Extends BaseAgent with static analysis capabilities and knowledge graph integration.\n *\n * @module agents/analyst-agent\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { BaseAgent } from './base-agent.js';\nimport {\n AgentType,\n type AgentTask,\n type AgentResult,\n type AnalystAgentConfig,\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 * Analysis type\n */\nexport type AnalysisType = 'code' | 'data' | 'performance' | 'security' | 'quality';\n\n/**\n * Code metrics\n */\nexport interface CodeMetrics {\n /** Total lines of code */\n totalLines: number;\n /** Lines of code (excluding comments/blanks) */\n linesOfCode: number;\n /** Comment lines */\n commentLines: number;\n /** Blank lines */\n blankLines: number;\n /** Number of files */\n fileCount: number;\n /** Number of functions */\n functionCount: number;\n /** Number of classes */\n classCount: number;\n /** Average function length */\n avgFunctionLength: number;\n /** Maximum function length */\n maxFunctionLength: number;\n /** Cyclomatic complexity */\n cyclomaticComplexity: number;\n /** Cognitive complexity */\n cognitiveComplexity: number;\n /** Maintainability index (0-100) */\n maintainabilityIndex: number;\n /** Technical debt estimate (hours) */\n technicalDebt: number;\n}\n\n/**\n * Quality issue\n */\nexport interface QualityIssue {\n /** Issue type/category */\n type: string;\n /** Severity level */\n severity: 'info' | 'warning' | 'error' | 'critical';\n /** Issue message */\n message: string;\n /** File path */\n file?: string;\n /** Line number */\n line?: number;\n /** Column number */\n column?: number;\n /** Rule that triggered the issue */\n rule?: string;\n /** Suggested fix */\n suggestion?: string;\n}\n\n/**\n * Quality assessment result\n */\nexport interface QualityAssessment {\n /** Overall quality score (0-100) */\n score: number;\n /** Quality grade (A-F) */\n grade: 'A' | 'B' | 'C' | 'D' | 'F';\n /** Code metrics */\n metrics: CodeMetrics;\n /** Issues found */\n issues: QualityIssue[];\n /** Recommendations */\n recommendations: string[];\n /** Analysis timestamp */\n timestamp: Date;\n}\n\n/**\n * File analysis result\n */\nexport interface FileAnalysis {\n /** File path */\n path: string;\n /** File type */\n type: string;\n /** Lines of code */\n linesOfCode: number;\n /** Complexity score */\n complexity: number;\n /** Issues in this file */\n issues: QualityIssue[];\n /** Dependencies */\n dependencies: string[];\n /** Exports */\n exports: string[];\n}\n\n/**\n * Project analysis result\n */\nexport interface ProjectAnalysis {\n /** Project name */\n name: string;\n /** Root path */\n rootPath: string;\n /** Overall quality assessment */\n quality: QualityAssessment;\n /** Per-file analysis */\n files: FileAnalysis[];\n /** Dependency analysis */\n dependencies: {\n internal: string[];\n external: string[];\n unused: string[];\n missing: string[];\n };\n /** Hotspots (complex/problematic areas) */\n hotspots: Array<{\n file: string;\n reason: string;\n severity: 'low' | 'medium' | 'high';\n }>;\n}\n\n/**\n * Analyst task type\n */\nexport type AnalystTaskType = 'analyze' | 'metrics' | 'quality' | 'issues';\n\n// ============================================================================\n// Analyst Agent\n// ============================================================================\n\n/**\n * Analyst Agent\n *\n * Capabilities:\n * - Code analysis and metrics calculation\n * - Quality assessment and scoring\n * - Issue detection and reporting\n * - Dependency analysis\n *\n * @example\n * ```typescript\n * const analyst = new AnalystAgent({\n * name: 'analyst-agent',\n * type: AgentType.ANALYST,\n * analysisType: 'quality',\n * });\n *\n * const result = await analyst.execute({\n * id: 'task-1',\n * description: 'Analyze project quality',\n * priority: TaskPriority.MEDIUM,\n * input: {\n * data: {\n * projectRoot: '/path/to/project',\n * analysisType: 'quality'\n * }\n * },\n * createdAt: new Date()\n * });\n * ```\n */\nexport class AnalystAgent extends BaseAgent {\n /** File patterns to analyze */\n private readonly codePatterns = ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs'];\n\n /** Knowledge graph reference */\n private knowledgeGraph: KnowledgeGraphManager | null = null;\n\n constructor(config: Partial<AnalystAgentConfig> & { name: string }) {\n super({\n type: AgentType.ANALYST,\n taskTimeout: 300000, // 5 minutes for large projects\n capabilities: ['code-analysis', 'metrics', 'quality-assessment'],\n ...config,\n });\n }\n\n // ==========================================================================\n // Knowledge Graph Integration\n // ==========================================================================\n\n /**\n * Set knowledge graph for context-aware analysis\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 analyst task\n */\n protected async executeTask(task: AgentTask): Promise<AgentResult> {\n const startTime = new Date();\n const taskType = (task.input?.parameters?.taskType as AnalystTaskType) || 'analyze';\n\n switch (taskType) {\n case 'analyze':\n return this.handleAnalyzeTask(task, startTime);\n case 'metrics':\n return this.handleMetricsTask(task, startTime);\n case 'quality':\n return this.handleQualityTask(task, startTime);\n case 'issues':\n return this.handleIssuesTask(task, startTime);\n default:\n return this.createErrorResult(\n 'INVALID_TASK_TYPE',\n `Unknown task type: ${taskType}`,\n startTime\n );\n }\n }\n\n // ==========================================================================\n // Public Methods\n // ==========================================================================\n\n /**\n * Analyze code and generate metrics\n */\n async analyzeCode(code: string, filePath: string): Promise<FileAnalysis> {\n this.logger.info('Analyzing code', { file: filePath });\n\n const metrics = await this.calculateCodeMetrics(code);\n const issues = this.findIssues(code, filePath);\n const dependencies = this.extractDependencies(code);\n const exports = this.extractExports(code);\n\n return {\n path: filePath,\n type: path.extname(filePath).slice(1),\n linesOfCode: metrics.linesOfCode,\n complexity: metrics.cyclomaticComplexity,\n issues,\n dependencies,\n exports,\n };\n }\n\n /**\n * Calculate code metrics\n *\n * @remarks Renamed from calculateMetrics to avoid conflict with BaseAgent private method\n */\n async calculateCodeMetrics(code: string): Promise<CodeMetrics> {\n this.logger.debug('Calculating metrics');\n\n const lines = code.split('\\n');\n const totalLines = lines.length;\n const blankLines = lines.filter(l => l.trim().length === 0).length;\n const commentLines = this.countCommentLines(code);\n const linesOfCode = totalLines - blankLines - commentLines;\n\n const functionCount = this.countFunctions(code);\n const classCount = this.countClasses(code);\n const avgFunctionLength = this.calculateAverageFunctionLength(code);\n const maxFunctionLength = this.calculateMaxFunctionLength(code);\n const cyclomaticComplexity = this.calculateCyclomaticComplexity(code);\n const cognitiveComplexity = this.calculateCognitiveComplexity(code);\n\n // Calculate maintainability index\n const halsteadVolume = Math.log2(linesOfCode + 1) * linesOfCode;\n const maintainabilityIndex = Math.max(\n 0,\n Math.min(\n 100,\n 171 - 5.2 * Math.log(halsteadVolume) - 0.23 * cyclomaticComplexity - 16.2 * Math.log(linesOfCode)\n )\n );\n\n // Estimate technical debt (simplified calculation)\n const technicalDebt = this.estimateTechnicalDebt(\n linesOfCode,\n cyclomaticComplexity,\n maintainabilityIndex\n );\n\n return {\n totalLines,\n linesOfCode,\n commentLines,\n blankLines,\n fileCount: 1,\n functionCount,\n classCount,\n avgFunctionLength: Math.round(avgFunctionLength),\n maxFunctionLength,\n cyclomaticComplexity,\n cognitiveComplexity,\n maintainabilityIndex: Math.round(maintainabilityIndex),\n technicalDebt,\n };\n }\n\n /**\n * Assess code quality\n */\n async assessQuality(code: string, filePath: string): Promise<QualityAssessment> {\n this.logger.info('Assessing quality', { file: filePath });\n\n const metrics = await this.calculateCodeMetrics(code);\n const issues = this.findIssues(code, filePath);\n const recommendations = this.generateRecommendations(metrics, issues);\n\n // Calculate score based on metrics and issues\n const score = this.calculateQualityScore(metrics, issues);\n const grade = this.scoreToGrade(score);\n\n return {\n score,\n grade,\n metrics,\n issues,\n recommendations,\n timestamp: new Date(),\n };\n }\n\n /**\n * Find issues in code\n */\n findIssues(code: string, filePath: string): QualityIssue[] {\n this.logger.debug('Finding issues', { file: filePath });\n\n const issues: QualityIssue[] = [];\n const lines = code.split('\\n');\n\n // Check for common issues\n issues.push(...this.findComplexityIssues(code, lines, filePath));\n issues.push(...this.findStyleIssues(code, lines, filePath));\n issues.push(...this.findSecurityIssues(code, lines, filePath));\n issues.push(...this.findMaintainabilityIssues(code, lines, filePath));\n\n return issues.sort((a, b) => {\n const severityOrder = { critical: 0, error: 1, warning: 2, info: 3 };\n return severityOrder[a.severity] - severityOrder[b.severity];\n });\n }\n\n /**\n * Analyze entire project\n */\n async analyzeProject(projectRoot: string): Promise<ProjectAnalysis> {\n this.logger.info('Analyzing project', { root: projectRoot });\n\n const files = await this.findFiles(projectRoot);\n const fileAnalyses: FileAnalysis[] = [];\n let aggregatedMetrics: CodeMetrics = this.createEmptyMetrics();\n const allIssues: QualityIssue[] = [];\n const allDependencies = new Set<string>();\n const allExports = new Set<string>();\n\n for (const file of files) {\n try {\n const content = await fs.readFile(file, 'utf-8');\n const analysis = await this.analyzeCode(content, path.relative(projectRoot, file));\n\n fileAnalyses.push(analysis);\n allIssues.push(...analysis.issues);\n analysis.dependencies.forEach(d => allDependencies.add(d));\n analysis.exports.forEach(e => allExports.add(e));\n\n // Aggregate metrics\n const metrics = await this.calculateCodeMetrics(content);\n aggregatedMetrics = this.aggregateMetrics(aggregatedMetrics, metrics);\n } catch (error) {\n this.logger.warn(`Failed to analyze ${file}`, { error });\n }\n }\n\n // Calculate overall quality\n const score = this.calculateQualityScore(aggregatedMetrics, allIssues);\n const grade = this.scoreToGrade(score);\n const recommendations = this.generateRecommendations(aggregatedMetrics, allIssues);\n\n // Identify hotspots\n const hotspots = this.identifyHotspots(fileAnalyses);\n\n // Analyze dependencies\n const dependencies = this.analyzeDependencies(\n fileAnalyses,\n allDependencies,\n allExports\n );\n\n return {\n name: path.basename(projectRoot),\n rootPath: projectRoot,\n quality: {\n score,\n grade,\n metrics: aggregatedMetrics,\n issues: allIssues,\n recommendations,\n timestamp: new Date(),\n },\n files: fileAnalyses,\n dependencies,\n hotspots,\n };\n }\n\n // ==========================================================================\n // Private Task Handlers\n // ==========================================================================\n\n private async handleAnalyzeTask(\n task: AgentTask,\n startTime: Date\n ): Promise<AgentResult<ProjectAnalysis | FileAnalysis>> {\n const input = task.input?.data as {\n projectRoot?: string;\n code?: string;\n filePath?: string;\n } | undefined;\n\n if (input?.projectRoot) {\n try {\n const analysis = await this.analyzeProject(input.projectRoot);\n return this.createSuccessResult(analysis, startTime);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return this.createErrorResult('ANALYSIS_ERROR', `Project analysis failed: ${message}`, startTime) as AgentResult<ProjectAnalysis | FileAnalysis>;\n }\n }\n\n if (input?.code && input?.filePath) {\n try {\n const analysis = await this.analyzeCode(input.code, input.filePath);\n return this.createSuccessResult(analysis, startTime);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return this.createErrorResult('ANALYSIS_ERROR', `Code analysis failed: ${message}`, startTime) as AgentResult<ProjectAnalysis | FileAnalysis>;\n }\n }\n\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n 'Either projectRoot or code+filePath is required',\n startTime\n ) as AgentResult<ProjectAnalysis | FileAnalysis>;\n }\n\n private async handleMetricsTask(\n task: AgentTask,\n startTime: Date\n ): Promise<AgentResult<CodeMetrics>> {\n const input = task.input?.data as { code: string } | undefined;\n\n if (!input?.code) {\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n 'Code is required for metrics calculation',\n startTime\n ) as AgentResult<CodeMetrics>;\n }\n\n try {\n const metrics = await this.calculateCodeMetrics(input.code);\n return this.createSuccessResult(metrics, startTime);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return this.createErrorResult('METRICS_ERROR', `Metrics calculation failed: ${message}`, startTime) as AgentResult<CodeMetrics>;\n }\n }\n\n private async handleQualityTask(\n task: AgentTask,\n startTime: Date\n ): Promise<AgentResult<QualityAssessment>> {\n const input = task.input?.data as { code: string; filePath: string } | undefined;\n\n if (!input?.code) {\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n 'Code and file path are required for quality assessment',\n startTime\n ) as AgentResult<QualityAssessment>;\n }\n\n try {\n const assessment = await this.assessQuality(input.code, input.filePath);\n return this.createSuccessResult(assessment, startTime);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return this.createErrorResult('QUALITY_ERROR', `Quality assessment failed: ${message}`, startTime) as AgentResult<QualityAssessment>;\n }\n }\n\n private async handleIssuesTask(\n task: AgentTask,\n startTime: Date\n ): Promise<AgentResult<QualityIssue[]>> {\n const input = task.input?.data as { code: string; filePath: string } | undefined;\n\n if (!input?.code) {\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n 'Code and file path are required for issue detection',\n startTime\n ) as AgentResult<QualityIssue[]>;\n }\n\n try {\n const issues = this.findIssues(input.code, input.filePath);\n return this.createSuccessResult(issues, startTime);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return this.createErrorResult('ISSUES_ERROR', `Issue detection failed: ${message}`, startTime) as AgentResult<QualityIssue[]>;\n }\n }\n\n // ==========================================================================\n // Metrics Calculation\n // ==========================================================================\n\n private countCommentLines(code: string): number {\n let count = 0;\n let inBlockComment = false;\n\n for (const line of code.split('\\n')) {\n const trimmed = line.trim();\n\n if (inBlockComment) {\n count++;\n if (trimmed.includes('*/')) {\n inBlockComment = false;\n }\n } else if (trimmed.startsWith('//')) {\n count++;\n } else if (trimmed.startsWith('/*')) {\n count++;\n if (!trimmed.includes('*/')) {\n inBlockComment = true;\n }\n }\n }\n\n return count;\n }\n\n private countFunctions(code: string): number {\n const patterns = [\n /function\\s+\\w+/g,\n /\\w+\\s*[=:]\\s*(?:async\\s+)?function/g,\n /\\w+\\s*[=:]\\s*(?:async\\s+)?\\([^)]*\\)\\s*=>/g,\n /(?:async\\s+)?(\\w+)\\s*\\([^)]*\\)\\s*(?::\\s*[^{]+)?\\s*\\{/g,\n ];\n\n let count = 0;\n for (const pattern of patterns) {\n const matches = code.match(pattern);\n if (matches) {\n count += matches.length;\n }\n }\n\n return count;\n }\n\n private countClasses(code: string): number {\n const matches = code.match(/\\bclass\\s+\\w+/g);\n return matches ? matches.length : 0;\n }\n\n private calculateAverageFunctionLength(code: string): number {\n const functionCount = this.countFunctions(code);\n if (functionCount === 0) return 0;\n\n const lines = code.split('\\n').filter(l => l.trim().length > 0);\n return lines.length / functionCount;\n }\n\n private calculateMaxFunctionLength(code: string): number {\n let maxLength = 0;\n let currentLength = 0;\n let braceCount = 0;\n let inFunction = false;\n\n for (const line of code.split('\\n')) {\n if (/(?:function|=>)\\s*\\{?/.test(line) && !inFunction) {\n inFunction = true;\n currentLength = 0;\n }\n\n if (inFunction) {\n currentLength++;\n braceCount += (line.match(/{/g) || []).length;\n braceCount -= (line.match(/}/g) || []).length;\n\n if (braceCount <= 0) {\n maxLength = Math.max(maxLength, currentLength);\n inFunction = false;\n currentLength = 0;\n }\n }\n }\n\n return maxLength;\n }\n\n private calculateCyclomaticComplexity(code: string): number {\n let complexity = 1;\n\n const patterns = [\n /\\bif\\s*\\(/g,\n /\\belse\\s+if\\s*\\(/g,\n /\\bfor\\s*\\(/g,\n /\\bwhile\\s*\\(/g,\n /\\bcase\\s+/g,\n /\\bcatch\\s*\\(/g,\n /\\?\\s*[^:]+\\s*:/g,\n /&&/g,\n /\\|\\|/g,\n ];\n\n for (const pattern of patterns) {\n const matches = code.match(pattern);\n if (matches) {\n complexity += matches.length;\n }\n }\n\n return complexity;\n }\n\n private calculateCognitiveComplexity(code: string): number {\n let complexity = 0;\n let nestingLevel = 0;\n\n for (const line of code.split('\\n')) {\n if (/\\b(if|for|while|switch)\\s*\\(/.test(line)) {\n complexity += 1 + nestingLevel;\n nestingLevel++;\n }\n\n if (/\\belse\\b/.test(line)) {\n complexity += 1;\n }\n\n const closingBraces = (line.match(/}/g) || []).length;\n nestingLevel = Math.max(0, nestingLevel - closingBraces);\n\n const logicalOps = (line.match(/&&|\\|\\|/g) || []).length;\n complexity += logicalOps;\n }\n\n return complexity;\n }\n\n private estimateTechnicalDebt(\n linesOfCode: number,\n complexity: number,\n maintainability: number\n ): number {\n // Simplified technical debt estimation in hours\n const complexityDebt = Math.max(0, complexity - 10) * 0.5;\n const maintainabilityDebt = Math.max(0, 100 - maintainability) * 0.1;\n const sizeDebt = Math.max(0, linesOfCode - 500) * 0.01;\n\n return Math.round((complexityDebt + maintainabilityDebt + sizeDebt) * 10) / 10;\n }\n\n // ==========================================================================\n // Issue Detection\n // ==========================================================================\n\n private findComplexityIssues(\n code: string,\n lines: string[],\n filePath: string\n ): QualityIssue[] {\n const issues: QualityIssue[] = [];\n\n // Check for deep nesting\n let maxNesting = 0;\n let maxNestingLine = 0;\n let currentNesting = 0;\n\n for (let i = 0; i < lines.length; i++) {\n currentNesting += (lines[i].match(/{/g) || []).length;\n currentNesting -= (lines[i].match(/}/g) || []).length;\n\n if (currentNesting > maxNesting) {\n maxNesting = currentNesting;\n maxNestingLine = i + 1;\n }\n }\n\n if (maxNesting > 4) {\n issues.push({\n type: 'complexity',\n severity: maxNesting > 6 ? 'error' : 'warning',\n message: `Deep nesting detected (${maxNesting} levels)`,\n file: filePath,\n line: maxNestingLine,\n rule: 'max-depth',\n suggestion: 'Consider extracting nested logic into separate functions',\n });\n }\n\n // Check for long functions\n const complexity = this.calculateCyclomaticComplexity(code);\n if (complexity > 15) {\n issues.push({\n type: 'complexity',\n severity: complexity > 25 ? 'error' : 'warning',\n message: `High cyclomatic complexity (${complexity})`,\n file: filePath,\n rule: 'complexity',\n suggestion: 'Break down complex functions into smaller, focused ones',\n });\n }\n\n return issues;\n }\n\n private findStyleIssues(\n code: string,\n lines: string[],\n filePath: string\n ): QualityIssue[] {\n const issues: QualityIssue[] = [];\n\n // Check for console.log statements\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].includes('console.log')) {\n issues.push({\n type: 'style',\n severity: 'warning',\n message: 'Unexpected console.log statement',\n file: filePath,\n line: i + 1,\n rule: 'no-console',\n suggestion: 'Remove or replace with proper logging',\n });\n }\n }\n\n // Check for var usage\n for (let i = 0; i < lines.length; i++) {\n if (/\\bvar\\s+/.test(lines[i])) {\n issues.push({\n type: 'style',\n severity: 'warning',\n message: 'Use const or let instead of var',\n file: filePath,\n line: i + 1,\n rule: 'no-var',\n suggestion: 'Replace var with const or let',\n });\n }\n }\n\n // Check for long lines\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length > 120) {\n issues.push({\n type: 'style',\n severity: 'info',\n message: `Line too long (${lines[i].length} characters)`,\n file: filePath,\n line: i + 1,\n rule: 'max-len',\n suggestion: 'Break long lines for better readability',\n });\n }\n }\n\n return issues;\n }\n\n private findSecurityIssues(\n code: string,\n lines: string[],\n filePath: string\n ): QualityIssue[] {\n const issues: QualityIssue[] = [];\n\n // Check for eval usage\n for (let i = 0; i < lines.length; i++) {\n if (/\\beval\\s*\\(/.test(lines[i])) {\n issues.push({\n type: 'security',\n severity: 'critical',\n message: 'Avoid using eval()',\n file: filePath,\n line: i + 1,\n rule: 'no-eval',\n suggestion: 'Use safer alternatives to eval',\n });\n }\n }\n\n // Check for hardcoded secrets patterns\n for (let i = 0; i < lines.length; i++) {\n if (/(?:password|secret|api_key|apikey)\\s*[:=]\\s*['\"][^'\"]+['\"]/i.test(lines[i])) {\n issues.push({\n type: 'security',\n severity: 'critical',\n message: 'Potential hardcoded secret detected',\n file: filePath,\n line: i + 1,\n rule: 'no-secrets',\n suggestion: 'Use environment variables for secrets',\n });\n }\n }\n\n // Check for innerHTML usage\n for (let i = 0; i < lines.length; i++) {\n if (/\\.innerHTML\\s*=/.test(lines[i])) {\n issues.push({\n type: 'security',\n severity: 'warning',\n message: 'Avoid using innerHTML, potential XSS vulnerability',\n file: filePath,\n line: i + 1,\n rule: 'no-inner-html',\n suggestion: 'Use textContent or sanitize HTML',\n });\n }\n }\n\n return issues;\n }\n\n private findMaintainabilityIssues(\n code: string,\n lines: string[],\n filePath: string\n ): QualityIssue[] {\n const issues: QualityIssue[] = [];\n\n // Check for TODO/FIXME comments\n for (let i = 0; i < lines.length; i++) {\n if (/\\/\\/\\s*(TODO|FIXME|HACK|XXX)/i.test(lines[i])) {\n const match = lines[i].match(/\\/\\/\\s*(TODO|FIXME|HACK|XXX)/i);\n issues.push({\n type: 'maintainability',\n severity: 'info',\n message: `${match![1]} comment found`,\n file: filePath,\n line: i + 1,\n rule: 'no-warning-comments',\n suggestion: 'Address and remove the comment',\n });\n }\n }\n\n // Check for magic numbers\n for (let i = 0; i < lines.length; i++) {\n if (/[^a-zA-Z]\\d{3,}[^a-zA-Z]/.test(lines[i]) && !lines[i].includes('//')) {\n issues.push({\n type: 'maintainability',\n severity: 'info',\n message: 'Magic number detected',\n file: filePath,\n line: i + 1,\n rule: 'no-magic-numbers',\n suggestion: 'Extract to a named constant',\n });\n }\n }\n\n // Check for any type usage\n for (let i = 0; i < lines.length; i++) {\n if (/:\\s*any\\b/.test(lines[i])) {\n issues.push({\n type: 'maintainability',\n severity: 'warning',\n message: 'Avoid using any type',\n file: filePath,\n line: i + 1,\n rule: 'no-any',\n suggestion: 'Use a more specific type',\n });\n }\n }\n\n return issues;\n }\n\n // ==========================================================================\n // Quality Scoring\n // ==========================================================================\n\n private calculateQualityScore(metrics: CodeMetrics, issues: QualityIssue[]): number {\n let score = 100;\n\n // Deduct for complexity\n if (metrics.cyclomaticComplexity > 10) {\n score -= Math.min(20, (metrics.cyclomaticComplexity - 10) * 2);\n }\n\n // Deduct for maintainability\n score -= Math.max(0, 50 - metrics.maintainabilityIndex) * 0.5;\n\n // Deduct for issues\n const issueDeductions = {\n critical: 10,\n error: 5,\n warning: 2,\n info: 0.5,\n };\n\n for (const issue of issues) {\n score -= issueDeductions[issue.severity];\n }\n\n return Math.max(0, Math.min(100, Math.round(score)));\n }\n\n private scoreToGrade(score: number): 'A' | 'B' | 'C' | 'D' | 'F' {\n if (score >= 90) return 'A';\n if (score >= 80) return 'B';\n if (score >= 70) return 'C';\n if (score >= 60) return 'D';\n return 'F';\n }\n\n // ==========================================================================\n // Recommendations\n // ==========================================================================\n\n private generateRecommendations(\n metrics: CodeMetrics,\n issues: QualityIssue[]\n ): string[] {\n const recommendations: string[] = [];\n\n if (metrics.cyclomaticComplexity > 15) {\n recommendations.push(\n 'Reduce cyclomatic complexity by breaking down complex functions'\n );\n }\n\n if (metrics.maintainabilityIndex < 50) {\n recommendations.push(\n 'Improve code maintainability through refactoring and documentation'\n );\n }\n\n if (metrics.avgFunctionLength > 30) {\n recommendations.push(\n 'Keep functions shorter (under 30 lines) for better readability'\n );\n }\n\n const criticalIssues = issues.filter(i => i.severity === 'critical');\n if (criticalIssues.length > 0) {\n recommendations.push(\n `Address ${criticalIssues.length} critical issue(s) immediately`\n );\n }\n\n const securityIssues = issues.filter(i => i.type === 'security');\n if (securityIssues.length > 0) {\n recommendations.push(\n `Fix ${securityIssues.length} security issue(s) to improve safety`\n );\n }\n\n if (metrics.commentLines / metrics.linesOfCode < 0.1) {\n recommendations.push(\n 'Consider adding more documentation comments'\n );\n }\n\n if (recommendations.length === 0) {\n recommendations.push('Code quality is good! Keep up the good work.');\n }\n\n return recommendations;\n }\n\n // ==========================================================================\n // Helper Methods\n // ==========================================================================\n\n private createEmptyMetrics(): CodeMetrics {\n return {\n totalLines: 0,\n linesOfCode: 0,\n commentLines: 0,\n blankLines: 0,\n fileCount: 0,\n functionCount: 0,\n classCount: 0,\n avgFunctionLength: 0,\n maxFunctionLength: 0,\n cyclomaticComplexity: 0,\n cognitiveComplexity: 0,\n maintainabilityIndex: 100,\n technicalDebt: 0,\n };\n }\n\n private aggregateMetrics(current: CodeMetrics, additional: CodeMetrics): CodeMetrics {\n return {\n totalLines: current.totalLines + additional.totalLines,\n linesOfCode: current.linesOfCode + additional.linesOfCode,\n commentLines: current.commentLines + additional.commentLines,\n blankLines: current.blankLines + additional.blankLines,\n fileCount: current.fileCount + 1,\n functionCount: current.functionCount + additional.functionCount,\n classCount: current.classCount + additional.classCount,\n avgFunctionLength: Math.round(\n (current.avgFunctionLength * current.fileCount + additional.avgFunctionLength) /\n (current.fileCount + 1)\n ),\n maxFunctionLength: Math.max(current.maxFunctionLength, additional.maxFunctionLength),\n cyclomaticComplexity: current.cyclomaticComplexity + additional.cyclomaticComplexity,\n cognitiveComplexity: current.cognitiveComplexity + additional.cognitiveComplexity,\n maintainabilityIndex: Math.round(\n (current.maintainabilityIndex * current.fileCount + additional.maintainabilityIndex) /\n (current.fileCount + 1)\n ),\n technicalDebt: current.technicalDebt + additional.technicalDebt,\n };\n }\n\n private extractDependencies(code: string): string[] {\n const dependencies: string[] = [];\n\n // Extract imports\n const importRegex = /import\\s+(?:.*?\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n let match;\n while ((match = importRegex.exec(code)) !== null) {\n dependencies.push(match[1]);\n }\n\n // Extract requires\n const requireRegex = /require\\s*\\(['\"]([^'\"]+)['\"]\\)/g;\n while ((match = requireRegex.exec(code)) !== null) {\n dependencies.push(match[1]);\n }\n\n return [...new Set(dependencies)];\n }\n\n private extractExports(code: string): string[] {\n const exports: string[] = [];\n\n // Named exports\n const namedExportRegex = /export\\s+(?:const|let|var|function|class)\\s+(\\w+)/g;\n let match;\n while ((match = namedExportRegex.exec(code)) !== null) {\n exports.push(match[1]);\n }\n\n // Export declarations\n const exportDeclRegex = /export\\s*\\{([^}]+)\\}/g;\n while ((match = exportDeclRegex.exec(code)) !== null) {\n const names = match[1].split(',').map(n => n.trim().split(/\\s+as\\s+/)[0]);\n exports.push(...names);\n }\n\n return [...new Set(exports.filter(e => e))];\n }\n\n private identifyHotspots(files: FileAnalysis[]): Array<{\n file: string;\n reason: string;\n severity: 'low' | 'medium' | 'high';\n }> {\n const hotspots: Array<{\n file: string;\n reason: string;\n severity: 'low' | 'medium' | 'high';\n }> = [];\n\n for (const file of files) {\n if (file.complexity > 20) {\n hotspots.push({\n file: file.path,\n reason: `High complexity (${file.complexity})`,\n severity: file.complexity > 30 ? 'high' : 'medium',\n });\n }\n\n const criticalIssues = file.issues.filter(i => i.severity === 'critical');\n if (criticalIssues.length > 0) {\n hotspots.push({\n file: file.path,\n reason: `${criticalIssues.length} critical issue(s)`,\n severity: 'high',\n });\n }\n\n if (file.linesOfCode > 500) {\n hotspots.push({\n file: file.path,\n reason: `Large file (${file.linesOfCode} LOC)`,\n severity: file.linesOfCode > 1000 ? 'high' : 'medium',\n });\n }\n }\n\n return hotspots.sort((a, b) => {\n const order = { high: 0, medium: 1, low: 2 };\n return order[a.severity] - order[b.severity];\n });\n }\n\n private analyzeDependencies(\n files: FileAnalysis[],\n allDependencies: Set<string>,\n allExports: Set<string>\n ): {\n internal: string[];\n external: string[];\n unused: string[];\n missing: string[];\n } {\n const internal: string[] = [];\n const external: string[] = [];\n\n for (const dep of allDependencies) {\n if (dep.startsWith('.') || dep.startsWith('/')) {\n internal.push(dep);\n } else {\n external.push(dep);\n }\n }\n\n // Simplified unused/missing detection\n return {\n internal: [...new Set(internal)],\n external: [...new Set(external)],\n unused: [], // Would require deeper analysis\n missing: [], // Would require package.json parsing\n };\n }\n\n private async findFiles(dir: 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);\n files.push(...subFiles);\n } else if (entry.isFile()) {\n const ext = path.extname(entry.name);\n if (this.codePatterns.includes(ext)) {\n files.push(fullPath);\n }\n }\n }\n } catch {\n // Directory doesn't exist or can't be read\n }\n\n return files;\n }\n}\n\n"],"names":["exports"],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Architect Agent
3
+ *
4
+ * Specialized agent for architecture analysis, design decisions, and dependency analysis.
5
+ * Extends BaseAgent with system design capabilities and knowledge graph integration.
6
+ *
7
+ * @module agents/architect-agent
8
+ */
9
+ import { BaseAgent } from './base-agent.js';
10
+ import { type AgentTask, type AgentResult, type ArchitectAgentConfig } from './types.js';
11
+ import { KnowledgeGraphManager } from '../core/graph.js';
12
+ /**
13
+ * Architecture pattern
14
+ */
15
+ export type ArchitecturePattern = 'mvc' | 'mvvm' | 'clean-architecture' | 'hexagonal' | 'microservices' | 'monolith' | 'serverless' | 'event-driven' | 'layered' | 'modular';
16
+ /**
17
+ * Component type
18
+ */
19
+ export type ComponentType = 'service' | 'controller' | 'repository' | 'model' | 'view' | 'utility' | 'middleware' | 'handler' | 'factory' | 'adapter';
20
+ /**
21
+ * Architecture component
22
+ */
23
+ export interface ArchitectureComponent {
24
+ /** Component name */
25
+ name: string;
26
+ /** Component type */
27
+ type: ComponentType;
28
+ /** File path */
29
+ path: string;
30
+ /** Component description */
31
+ description?: string;
32
+ /** Dependencies (other components) */
33
+ dependencies: string[];
34
+ /** Dependents (components that depend on this) */
35
+ dependents: string[];
36
+ /** Exports provided */
37
+ exports: string[];
38
+ /** Lines of code */
39
+ linesOfCode: number;
40
+ /** Complexity score */
41
+ complexity: number;
42
+ }
43
+ /**
44
+ * Architecture layer
45
+ */
46
+ export interface ArchitectureLayer {
47
+ /** Layer name */
48
+ name: string;
49
+ /** Layer level (0 = highest, like UI) */
50
+ level: number;
51
+ /** Components in this layer */
52
+ components: string[];
53
+ /** Allowed dependencies (layer names) */
54
+ allowedDependencies: string[];
55
+ /** Actual dependencies found */
56
+ actualDependencies: string[];
57
+ /** Violations (dependencies to wrong layers) */
58
+ violations: string[];
59
+ }
60
+ /**
61
+ * Dependency graph node
62
+ */
63
+ export interface DependencyNode {
64
+ /** Node identifier */
65
+ id: string;
66
+ /** Node label */
67
+ label: string;
68
+ /** Node type */
69
+ type: ComponentType;
70
+ /** Outgoing edges (dependencies) */
71
+ outgoing: string[];
72
+ /** Incoming edges (dependents) */
73
+ incoming: string[];
74
+ /** Metrics */
75
+ metrics: {
76
+ fanIn: number;
77
+ fanOut: number;
78
+ instability: number;
79
+ abstractness: number;
80
+ };
81
+ }
82
+ /**
83
+ * Dependency analysis result
84
+ */
85
+ export interface DependencyAnalysis {
86
+ /** Dependency graph */
87
+ graph: DependencyNode[];
88
+ /** Circular dependencies */
89
+ cycles: string[][];
90
+ /** Orphan modules (no deps or dependents) */
91
+ orphans: string[];
92
+ /** Hub modules (many dependencies) */
93
+ hubs: Array<{
94
+ module: string;
95
+ connections: number;
96
+ }>;
97
+ /** Recommendations */
98
+ recommendations: string[];
99
+ }
100
+ /**
101
+ * Design decision
102
+ */
103
+ export interface DesignDecision {
104
+ /** Decision title */
105
+ title: string;
106
+ /** Decision category */
107
+ category: 'structure' | 'pattern' | 'technology' | 'integration' | 'security';
108
+ /** Decision description */
109
+ description: string;
110
+ /** Rationale */
111
+ rationale: string;
112
+ /** Pros */
113
+ pros: string[];
114
+ /** Cons */
115
+ cons: string[];
116
+ /** Alternatives considered */
117
+ alternatives?: string[];
118
+ /** Priority */
119
+ priority: 'low' | 'medium' | 'high';
120
+ }
121
+ /**
122
+ * Architecture analysis result
123
+ */
124
+ export interface ArchitectureAnalysis {
125
+ /** Project name */
126
+ projectName: string;
127
+ /** Detected patterns */
128
+ patterns: ArchitecturePattern[];
129
+ /** Architecture layers */
130
+ layers: ArchitectureLayer[];
131
+ /** Components */
132
+ components: ArchitectureComponent[];
133
+ /** Dependency analysis */
134
+ dependencies: DependencyAnalysis;
135
+ /** Design decisions/recommendations */
136
+ decisions: DesignDecision[];
137
+ /** Overall health score (0-100) */
138
+ healthScore: number;
139
+ /** Analysis timestamp */
140
+ timestamp: Date;
141
+ }
142
+ /**
143
+ * Design suggestion
144
+ */
145
+ export interface DesignSuggestion {
146
+ /** Suggestion type */
147
+ type: 'refactor' | 'extract' | 'merge' | 'introduce' | 'remove';
148
+ /** Target component/module */
149
+ target: string;
150
+ /** Description */
151
+ description: string;
152
+ /** Priority */
153
+ priority: 'low' | 'medium' | 'high';
154
+ /** Expected benefit */
155
+ benefit: string;
156
+ /** Effort estimate */
157
+ effort: 'low' | 'medium' | 'high';
158
+ }
159
+ /**
160
+ * Architect task type
161
+ */
162
+ export type ArchitectTaskType = 'analyze' | 'design' | 'dependencies' | 'suggest';
163
+ /**
164
+ * Architect Agent
165
+ *
166
+ * Capabilities:
167
+ * - Architecture analysis and pattern detection
168
+ * - Design decision recommendations
169
+ * - Dependency analysis and visualization
170
+ * - Layer validation
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * const architect = new ArchitectAgent({
175
+ * name: 'architect-agent',
176
+ * type: AgentType.ARCHITECT,
177
+ * });
178
+ *
179
+ * const result = await architect.execute({
180
+ * id: 'task-1',
181
+ * description: 'Analyze project architecture',
182
+ * priority: TaskPriority.MEDIUM,
183
+ * input: {
184
+ * data: {
185
+ * projectRoot: '/path/to/project'
186
+ * }
187
+ * },
188
+ * createdAt: new Date()
189
+ * });
190
+ * ```
191
+ */
192
+ export declare class ArchitectAgent extends BaseAgent {
193
+ /** File patterns to analyze */
194
+ private readonly codePatterns;
195
+ /** Knowledge graph reference */
196
+ private knowledgeGraph;
197
+ /** Layer definitions for common architectures */
198
+ private readonly layerDefinitions;
199
+ constructor(config: Partial<ArchitectAgentConfig> & {
200
+ name: string;
201
+ });
202
+ /**
203
+ * Set knowledge graph for context-aware analysis
204
+ */
205
+ setKnowledgeGraph(graph: KnowledgeGraphManager): void;
206
+ /**
207
+ * Execute architect task
208
+ */
209
+ protected executeTask(task: AgentTask): Promise<AgentResult>;
210
+ /**
211
+ * Analyze project architecture
212
+ */
213
+ analyzeArchitecture(projectRoot: string): Promise<ArchitectureAnalysis>;
214
+ /**
215
+ * Suggest design improvements
216
+ */
217
+ suggestDesign(projectRoot: string): Promise<DesignSuggestion[]>;
218
+ /**
219
+ * Map dependencies between modules
220
+ */
221
+ mapDependencies(projectRoot: string): Promise<DependencyAnalysis>;
222
+ private handleAnalyzeTask;
223
+ private handleDesignTask;
224
+ private handleDependenciesTask;
225
+ private handleSuggestTask;
226
+ private discoverComponents;
227
+ private analyzeComponent;
228
+ private inferComponentType;
229
+ private resolveDependencies;
230
+ private resolveDependencyPath;
231
+ private detectPatterns;
232
+ private identifyLayers;
233
+ private inferLayer;
234
+ private findLayerDependencies;
235
+ private analyzeDependencies;
236
+ private buildDependencyGraph;
237
+ private findCycles;
238
+ private findOrphans;
239
+ private findHubs;
240
+ private generateDependencyRecommendations;
241
+ private generateDesignDecisions;
242
+ private calculateHealthScore;
243
+ private extractDependencies;
244
+ private extractExports;
245
+ private calculateComplexity;
246
+ private findFiles;
247
+ }
248
+ //# sourceMappingURL=architect-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-agent.d.ts","sourceRoot":"","sources":["../../src/agents/architect-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAOzD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL,MAAM,GACN,oBAAoB,GACpB,WAAW,GACX,eAAe,GACf,UAAU,GACV,YAAY,GACZ,cAAc,GACd,SAAS,GACT,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kDAAkD;IAClD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yCAAyC;IACzC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gDAAgD;IAChD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sCAAsC;IACtC,IAAI,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,sBAAsB;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,CAAC;IAC9E,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW;IACX,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,0BAA0B;IAC1B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,iBAAiB;IACjB,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,0BAA0B;IAC1B,YAAY,EAAE,kBAAkB,CAAC;IACjC,uCAAuC;IACvC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;IAChE,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAMlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAC3C,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAE/E,gCAAgC;IAChC,OAAO,CAAC,cAAc,CAAsC;IAE5D,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAM/B;gBAEU,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAapE;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAWrD;;OAEG;cACa,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BlE;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiC7E;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA8ErE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAWzD,iBAAiB;YA8BjB,gBAAgB;YAuBhB,sBAAsB;YAuBtB,iBAAiB;YA2BjB,kBAAkB;IAqBhC,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,iCAAiC;IAqCzC,OAAO,CAAC,uBAAuB;IAuE/B,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,mBAAmB;YAyBb,SAAS;CAmCxB"}