@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,435 @@
1
+ import { existsSync, readFileSync, mkdirSync, writeFileSync, statSync } from "fs";
2
+ import { join, dirname, relative } from "path";
3
+ import { createHash } from "crypto";
4
+ import { createLogger } from "../utils/logger.js";
5
+ const logger = createLogger("shadow-cache");
6
+ const CACHE_VERSION = 1;
7
+ const CACHE_FILENAME = "shadow-cache.json";
8
+ class ShadowCache {
9
+ projectRoot;
10
+ cacheDir;
11
+ cachePath;
12
+ defaultTTL;
13
+ maxEntries;
14
+ persist;
15
+ entries = /* @__PURE__ */ new Map();
16
+ hitCount = 0;
17
+ missCount = 0;
18
+ loaded = false;
19
+ dirty = false;
20
+ createdAt;
21
+ updatedAt;
22
+ constructor(options) {
23
+ this.projectRoot = options.projectRoot;
24
+ this.cacheDir = options.cacheDir || ".kg";
25
+ this.cachePath = join(this.projectRoot, this.cacheDir, CACHE_FILENAME);
26
+ this.defaultTTL = options.defaultTTL || 60 * 60 * 1e3;
27
+ this.maxEntries = options.maxEntries || 1e4;
28
+ this.persist = options.persist !== false;
29
+ this.createdAt = Date.now();
30
+ this.updatedAt = Date.now();
31
+ }
32
+ /**
33
+ * Load cache from disk
34
+ */
35
+ async load() {
36
+ if (!this.persist) {
37
+ this.loaded = true;
38
+ return true;
39
+ }
40
+ try {
41
+ if (existsSync(this.cachePath)) {
42
+ const data = JSON.parse(readFileSync(this.cachePath, "utf-8"));
43
+ if (data.projectRoot !== this.projectRoot) {
44
+ logger.warn("Cache project root mismatch, starting fresh");
45
+ this.loaded = true;
46
+ return false;
47
+ }
48
+ if (data.version !== CACHE_VERSION) {
49
+ logger.warn("Cache version mismatch, starting fresh", {
50
+ cacheVersion: data.version,
51
+ expectedVersion: CACHE_VERSION
52
+ });
53
+ this.loaded = true;
54
+ return false;
55
+ }
56
+ this.entries = new Map(Object.entries(data.entries));
57
+ this.createdAt = data.createdAt;
58
+ this.updatedAt = data.updatedAt;
59
+ this.loaded = true;
60
+ logger.info("Cache loaded", { entries: this.entries.size });
61
+ return true;
62
+ }
63
+ } catch (error) {
64
+ logger.error("Failed to load cache", error instanceof Error ? error : new Error(String(error)));
65
+ }
66
+ this.loaded = true;
67
+ return false;
68
+ }
69
+ /**
70
+ * Save cache to disk
71
+ */
72
+ async save() {
73
+ if (!this.persist || !this.dirty) {
74
+ return true;
75
+ }
76
+ try {
77
+ const cacheDir = dirname(this.cachePath);
78
+ if (!existsSync(cacheDir)) {
79
+ mkdirSync(cacheDir, { recursive: true });
80
+ }
81
+ await this.prune();
82
+ const data = {
83
+ version: CACHE_VERSION,
84
+ projectRoot: this.projectRoot,
85
+ createdAt: this.createdAt,
86
+ updatedAt: Date.now(),
87
+ entries: Object.fromEntries(this.entries)
88
+ };
89
+ writeFileSync(this.cachePath, JSON.stringify(data, null, 2));
90
+ this.updatedAt = data.updatedAt;
91
+ this.dirty = false;
92
+ logger.info("Cache saved", { entries: this.entries.size });
93
+ return true;
94
+ } catch (error) {
95
+ logger.error("Failed to save cache", error instanceof Error ? error : new Error(String(error)));
96
+ return false;
97
+ }
98
+ }
99
+ /**
100
+ * Get cached metadata for a file
101
+ */
102
+ get(filePath) {
103
+ const relativePath = this.normalizePath(filePath);
104
+ const entry = this.entries.get(relativePath);
105
+ if (entry) {
106
+ this.hitCount++;
107
+ return entry;
108
+ }
109
+ this.missCount++;
110
+ return void 0;
111
+ }
112
+ /**
113
+ * Set cached metadata for a file
114
+ */
115
+ set(filePath, metadata) {
116
+ const relativePath = this.normalizePath(filePath);
117
+ const fullPath = join(this.projectRoot, relativePath);
118
+ let entry;
119
+ if (metadata.hash && metadata.size !== void 0 && metadata.mtime !== void 0) {
120
+ entry = {
121
+ path: relativePath,
122
+ size: metadata.size,
123
+ mtime: metadata.mtime,
124
+ hash: metadata.hash,
125
+ type: metadata.type || this.inferFileType(relativePath),
126
+ cachedAt: Date.now()
127
+ };
128
+ } else {
129
+ entry = this.computeMetadata(fullPath, relativePath);
130
+ }
131
+ this.entries.set(relativePath, entry);
132
+ this.dirty = true;
133
+ return entry;
134
+ }
135
+ /**
136
+ * Remove a file from cache
137
+ */
138
+ delete(filePath) {
139
+ const relativePath = this.normalizePath(filePath);
140
+ const deleted = this.entries.delete(relativePath);
141
+ if (deleted) {
142
+ this.dirty = true;
143
+ }
144
+ return deleted;
145
+ }
146
+ /**
147
+ * Check if a file exists in cache
148
+ */
149
+ has(filePath) {
150
+ const relativePath = this.normalizePath(filePath);
151
+ return this.entries.has(relativePath);
152
+ }
153
+ /**
154
+ * Check if a file has changed since caching
155
+ */
156
+ hasChanged(filePath) {
157
+ const relativePath = this.normalizePath(filePath);
158
+ const fullPath = join(this.projectRoot, relativePath);
159
+ const cached = this.entries.get(relativePath);
160
+ if (!cached) {
161
+ return true;
162
+ }
163
+ try {
164
+ const stats = statSync(fullPath);
165
+ if (stats.mtimeMs !== cached.mtime || stats.size !== cached.size) {
166
+ return true;
167
+ }
168
+ return false;
169
+ } catch {
170
+ return true;
171
+ }
172
+ }
173
+ /**
174
+ * Detect changes for a list of files
175
+ */
176
+ async detectChanges(filePaths) {
177
+ const changes = [];
178
+ const currentFiles = /* @__PURE__ */ new Set();
179
+ for (const filePath of filePaths) {
180
+ const relativePath = this.normalizePath(filePath);
181
+ const fullPath = join(this.projectRoot, relativePath);
182
+ currentFiles.add(relativePath);
183
+ const cached = this.entries.get(relativePath);
184
+ try {
185
+ const stats = statSync(fullPath);
186
+ const newMeta = this.computeMetadata(fullPath, relativePath);
187
+ if (!cached) {
188
+ changes.push({
189
+ path: relativePath,
190
+ change: "added",
191
+ newMeta
192
+ });
193
+ } else if (cached.mtime !== stats.mtimeMs || cached.size !== stats.size) {
194
+ if (cached.hash !== newMeta.hash) {
195
+ changes.push({
196
+ path: relativePath,
197
+ change: "modified",
198
+ oldMeta: cached,
199
+ newMeta
200
+ });
201
+ } else {
202
+ changes.push({
203
+ path: relativePath,
204
+ change: "unchanged",
205
+ oldMeta: cached,
206
+ newMeta
207
+ });
208
+ }
209
+ } else {
210
+ changes.push({
211
+ path: relativePath,
212
+ change: "unchanged",
213
+ oldMeta: cached,
214
+ newMeta: cached
215
+ });
216
+ }
217
+ } catch {
218
+ if (cached) {
219
+ changes.push({
220
+ path: relativePath,
221
+ change: "deleted",
222
+ oldMeta: cached
223
+ });
224
+ }
225
+ }
226
+ }
227
+ for (const [path, meta] of this.entries) {
228
+ if (!currentFiles.has(path)) {
229
+ changes.push({
230
+ path,
231
+ change: "deleted",
232
+ oldMeta: meta
233
+ });
234
+ }
235
+ }
236
+ return changes;
237
+ }
238
+ /**
239
+ * Update cache with detected changes
240
+ */
241
+ applyChanges(changes) {
242
+ for (const change of changes) {
243
+ switch (change.change) {
244
+ case "added":
245
+ case "modified":
246
+ if (change.newMeta) {
247
+ this.entries.set(change.path, change.newMeta);
248
+ }
249
+ break;
250
+ case "deleted":
251
+ this.entries.delete(change.path);
252
+ break;
253
+ }
254
+ }
255
+ this.dirty = true;
256
+ }
257
+ /**
258
+ * Get cache statistics
259
+ */
260
+ getStats() {
261
+ let staleCount = 0;
262
+ const now = Date.now();
263
+ for (const entry of this.entries.values()) {
264
+ if (now - entry.cachedAt > this.defaultTTL) {
265
+ staleCount++;
266
+ }
267
+ }
268
+ const totalRequests = this.hitCount + this.missCount;
269
+ return {
270
+ totalEntries: this.entries.size,
271
+ hitCount: this.hitCount,
272
+ missCount: this.missCount,
273
+ hitRate: totalRequests > 0 ? this.hitCount / totalRequests : 0,
274
+ sizeBytes: this.estimateSize(),
275
+ lastUpdated: this.updatedAt,
276
+ staleEntries: staleCount
277
+ };
278
+ }
279
+ /**
280
+ * Clear all cache entries
281
+ */
282
+ clear() {
283
+ this.entries.clear();
284
+ this.hitCount = 0;
285
+ this.missCount = 0;
286
+ this.dirty = true;
287
+ }
288
+ /**
289
+ * Prune stale entries
290
+ */
291
+ async prune() {
292
+ const now = Date.now();
293
+ let prunedCount = 0;
294
+ for (const [path, entry] of this.entries) {
295
+ if (now - entry.cachedAt > this.defaultTTL) {
296
+ this.entries.delete(path);
297
+ prunedCount++;
298
+ }
299
+ }
300
+ if (this.entries.size > this.maxEntries) {
301
+ const entries = Array.from(this.entries.entries()).sort((a, b) => a[1].cachedAt - b[1].cachedAt);
302
+ const toRemove = entries.slice(0, entries.length - this.maxEntries);
303
+ for (const [path] of toRemove) {
304
+ this.entries.delete(path);
305
+ prunedCount++;
306
+ }
307
+ }
308
+ if (prunedCount > 0) {
309
+ this.dirty = true;
310
+ logger.info("Pruned cache entries", { count: prunedCount });
311
+ }
312
+ return prunedCount;
313
+ }
314
+ /**
315
+ * Get all cached file paths
316
+ */
317
+ getAllPaths() {
318
+ return Array.from(this.entries.keys());
319
+ }
320
+ /**
321
+ * Get files by type
322
+ */
323
+ getByType(type) {
324
+ return Array.from(this.entries.values()).filter((e) => e.type === type);
325
+ }
326
+ /**
327
+ * Invalidate entries matching a pattern
328
+ */
329
+ invalidate(pattern) {
330
+ let count = 0;
331
+ for (const path of this.entries.keys()) {
332
+ if (pattern.test(path)) {
333
+ this.entries.delete(path);
334
+ count++;
335
+ }
336
+ }
337
+ if (count > 0) {
338
+ this.dirty = true;
339
+ }
340
+ return count;
341
+ }
342
+ // Private helpers
343
+ normalizePath(filePath) {
344
+ if (filePath.startsWith(this.projectRoot)) {
345
+ return relative(this.projectRoot, filePath);
346
+ }
347
+ return filePath;
348
+ }
349
+ computeMetadata(fullPath, relativePath) {
350
+ const stats = statSync(fullPath);
351
+ const content = readFileSync(fullPath);
352
+ const hash = createHash("md5").update(content).digest("hex");
353
+ return {
354
+ path: relativePath,
355
+ size: stats.size,
356
+ mtime: stats.mtimeMs,
357
+ hash,
358
+ type: this.inferFileType(relativePath),
359
+ cachedAt: Date.now()
360
+ };
361
+ }
362
+ inferFileType(filePath) {
363
+ const ext = filePath.split(".").pop()?.toLowerCase() || "";
364
+ const filename = filePath.split("/").pop()?.toLowerCase() || "";
365
+ if (filename === "dockerfile" || filename.startsWith("dockerfile.")) {
366
+ return "docker";
367
+ }
368
+ if (filename.includes("docker-compose") || filename === "compose.yml" || filename === "compose.yaml") {
369
+ return "docker";
370
+ }
371
+ switch (ext) {
372
+ case "md":
373
+ case "mdx":
374
+ return "markdown";
375
+ case "ts":
376
+ case "tsx":
377
+ case "mts":
378
+ case "cts":
379
+ return "typescript";
380
+ case "js":
381
+ case "jsx":
382
+ case "mjs":
383
+ case "cjs":
384
+ return "javascript";
385
+ case "py":
386
+ case "pyw":
387
+ return "python";
388
+ case "rs":
389
+ return "rust";
390
+ case "go":
391
+ return "go";
392
+ case "java":
393
+ return "java";
394
+ case "php":
395
+ return "php";
396
+ case "rb":
397
+ return "ruby";
398
+ case "yml":
399
+ case "yaml":
400
+ return "yaml";
401
+ case "json":
402
+ return "json";
403
+ case "toml":
404
+ return "toml";
405
+ case "ini":
406
+ case "env":
407
+ case "conf":
408
+ case "config":
409
+ return "config";
410
+ default:
411
+ return "other";
412
+ }
413
+ }
414
+ estimateSize() {
415
+ let size = 0;
416
+ for (const entry of this.entries.values()) {
417
+ size += entry.path.length + entry.hash.length + 100;
418
+ }
419
+ return size;
420
+ }
421
+ }
422
+ function createShadowCache(options) {
423
+ return new ShadowCache(options);
424
+ }
425
+ async function loadShadowCache(projectRoot) {
426
+ const cache = new ShadowCache({ projectRoot });
427
+ await cache.load();
428
+ return cache;
429
+ }
430
+ export {
431
+ ShadowCache,
432
+ createShadowCache,
433
+ loadShadowCache
434
+ };
435
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sources":["../../src/core/cache.ts"],"sourcesContent":["/**\n * Shadow Cache - File Metadata Caching\n *\n * Provides a caching layer for file metadata to enable incremental updates\n * and improve performance when analyzing large codebases.\n *\n * @module core/cache\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync, statSync } from 'fs';\nimport { join, relative, dirname } from 'path';\nimport { createHash } from 'crypto';\nimport { createLogger } from '../utils/index.js';\n\nconst logger = createLogger('shadow-cache');\n\n/**\n * File metadata stored in cache\n */\nexport interface FileMetadata {\n /** Relative path from project root */\n path: string;\n /** File size in bytes */\n size: number;\n /** Modification time (Unix timestamp) */\n mtime: number;\n /** Content hash (MD5) */\n hash: string;\n /** File type inferred from extension */\n type: FileType;\n /** When this entry was cached */\n cachedAt: number;\n}\n\n/**\n * File types for classification\n */\nexport type FileType =\n | 'markdown'\n | 'typescript'\n | 'javascript'\n | 'python'\n | 'rust'\n | 'go'\n | 'java'\n | 'php'\n | 'ruby'\n | 'yaml'\n | 'json'\n | 'toml'\n | 'config'\n | 'docker'\n | 'other';\n\n/**\n * Cache entry change type\n */\nexport type ChangeType = 'added' | 'modified' | 'deleted' | 'unchanged';\n\n/**\n * File change information\n */\nexport interface FileChange {\n path: string;\n change: ChangeType;\n oldMeta?: FileMetadata;\n newMeta?: FileMetadata;\n}\n\n/**\n * Cache statistics\n */\nexport interface CacheStats {\n totalEntries: number;\n hitCount: number;\n missCount: number;\n hitRate: number;\n sizeBytes: number;\n lastUpdated: number | null;\n staleEntries: number;\n}\n\n/**\n * Shadow Cache options\n */\nexport interface ShadowCacheOptions {\n /** Project root directory */\n projectRoot: string;\n /** Cache directory (relative to .kg) */\n cacheDir?: string;\n /** Default TTL in milliseconds (default: 1 hour) */\n defaultTTL?: number;\n /** Maximum entries before pruning (default: 10000) */\n maxEntries?: number;\n /** Enable persistence to disk (default: true) */\n persist?: boolean;\n}\n\n/**\n * Cache data structure stored on disk\n */\ninterface CacheData {\n version: number;\n projectRoot: string;\n createdAt: number;\n updatedAt: number;\n entries: Record<string, FileMetadata>;\n}\n\nconst CACHE_VERSION = 1;\nconst CACHE_FILENAME = 'shadow-cache.json';\n\n/**\n * Shadow Cache for file metadata\n *\n * Provides efficient caching of file metadata to enable:\n * - Incremental graph updates (only process changed files)\n * - Fast file existence/modification checks\n * - Content hash comparison\n *\n * @example\n * ```typescript\n * const cache = new ShadowCache({ projectRoot: '/my/project' });\n * await cache.load();\n *\n * // Check for changes\n * const changes = await cache.detectChanges(['docs/**\\/*.md']);\n *\n * // Process only changed files\n * for (const change of changes) {\n * if (change.change !== 'unchanged') {\n * console.log(`${change.path}: ${change.change}`);\n * }\n * }\n *\n * // Update cache with processed files\n * await cache.save();\n * ```\n */\nexport class ShadowCache {\n private projectRoot: string;\n private cacheDir: string;\n private cachePath: string;\n private defaultTTL: number;\n private maxEntries: number;\n private persist: boolean;\n\n private entries: Map<string, FileMetadata> = new Map();\n private hitCount = 0;\n private missCount = 0;\n private loaded = false;\n private dirty = false;\n private createdAt: number;\n private updatedAt: number;\n\n constructor(options: ShadowCacheOptions) {\n this.projectRoot = options.projectRoot;\n this.cacheDir = options.cacheDir || '.kg';\n this.cachePath = join(this.projectRoot, this.cacheDir, CACHE_FILENAME);\n this.defaultTTL = options.defaultTTL || 60 * 60 * 1000; // 1 hour\n this.maxEntries = options.maxEntries || 10000;\n this.persist = options.persist !== false;\n this.createdAt = Date.now();\n this.updatedAt = Date.now();\n }\n\n /**\n * Load cache from disk\n */\n async load(): Promise<boolean> {\n if (!this.persist) {\n this.loaded = true;\n return true;\n }\n\n try {\n if (existsSync(this.cachePath)) {\n const data = JSON.parse(readFileSync(this.cachePath, 'utf-8')) as CacheData;\n\n // Verify cache is for this project\n if (data.projectRoot !== this.projectRoot) {\n logger.warn('Cache project root mismatch, starting fresh');\n this.loaded = true;\n return false;\n }\n\n // Check version compatibility\n if (data.version !== CACHE_VERSION) {\n logger.warn('Cache version mismatch, starting fresh', {\n cacheVersion: data.version,\n expectedVersion: CACHE_VERSION,\n });\n this.loaded = true;\n return false;\n }\n\n // Load entries\n this.entries = new Map(Object.entries(data.entries));\n this.createdAt = data.createdAt;\n this.updatedAt = data.updatedAt;\n this.loaded = true;\n\n logger.info('Cache loaded', { entries: this.entries.size });\n return true;\n }\n } catch (error) {\n logger.error('Failed to load cache', error instanceof Error ? error : new Error(String(error)));\n }\n\n this.loaded = true;\n return false;\n }\n\n /**\n * Save cache to disk\n */\n async save(): Promise<boolean> {\n if (!this.persist || !this.dirty) {\n return true;\n }\n\n try {\n // Ensure cache directory exists\n const cacheDir = dirname(this.cachePath);\n if (!existsSync(cacheDir)) {\n mkdirSync(cacheDir, { recursive: true });\n }\n\n // Prune if needed\n await this.prune();\n\n const data: CacheData = {\n version: CACHE_VERSION,\n projectRoot: this.projectRoot,\n createdAt: this.createdAt,\n updatedAt: Date.now(),\n entries: Object.fromEntries(this.entries),\n };\n\n writeFileSync(this.cachePath, JSON.stringify(data, null, 2));\n this.updatedAt = data.updatedAt;\n this.dirty = false;\n\n logger.info('Cache saved', { entries: this.entries.size });\n return true;\n } catch (error) {\n logger.error('Failed to save cache', error instanceof Error ? error : new Error(String(error)));\n return false;\n }\n }\n\n /**\n * Get cached metadata for a file\n */\n get(filePath: string): FileMetadata | undefined {\n const relativePath = this.normalizePath(filePath);\n const entry = this.entries.get(relativePath);\n\n if (entry) {\n this.hitCount++;\n return entry;\n }\n\n this.missCount++;\n return undefined;\n }\n\n /**\n * Set cached metadata for a file\n */\n set(filePath: string, metadata: Partial<FileMetadata>): FileMetadata {\n const relativePath = this.normalizePath(filePath);\n const fullPath = join(this.projectRoot, relativePath);\n\n let entry: FileMetadata;\n\n if (metadata.hash && metadata.size !== undefined && metadata.mtime !== undefined) {\n // Full metadata provided\n entry = {\n path: relativePath,\n size: metadata.size,\n mtime: metadata.mtime,\n hash: metadata.hash,\n type: metadata.type || this.inferFileType(relativePath),\n cachedAt: Date.now(),\n };\n } else {\n // Compute from file\n entry = this.computeMetadata(fullPath, relativePath);\n }\n\n this.entries.set(relativePath, entry);\n this.dirty = true;\n return entry;\n }\n\n /**\n * Remove a file from cache\n */\n delete(filePath: string): boolean {\n const relativePath = this.normalizePath(filePath);\n const deleted = this.entries.delete(relativePath);\n if (deleted) {\n this.dirty = true;\n }\n return deleted;\n }\n\n /**\n * Check if a file exists in cache\n */\n has(filePath: string): boolean {\n const relativePath = this.normalizePath(filePath);\n return this.entries.has(relativePath);\n }\n\n /**\n * Check if a file has changed since caching\n */\n hasChanged(filePath: string): boolean {\n const relativePath = this.normalizePath(filePath);\n const fullPath = join(this.projectRoot, relativePath);\n const cached = this.entries.get(relativePath);\n\n if (!cached) {\n return true; // Not in cache = changed (new file)\n }\n\n try {\n const stats = statSync(fullPath);\n // Quick check: mtime and size\n if (stats.mtimeMs !== cached.mtime || stats.size !== cached.size) {\n return true;\n }\n return false;\n } catch {\n return true; // File doesn't exist = changed (deleted)\n }\n }\n\n /**\n * Detect changes for a list of files\n */\n async detectChanges(filePaths: string[]): Promise<FileChange[]> {\n const changes: FileChange[] = [];\n const currentFiles = new Set<string>();\n\n for (const filePath of filePaths) {\n const relativePath = this.normalizePath(filePath);\n const fullPath = join(this.projectRoot, relativePath);\n currentFiles.add(relativePath);\n\n const cached = this.entries.get(relativePath);\n\n try {\n const stats = statSync(fullPath);\n const newMeta = this.computeMetadata(fullPath, relativePath);\n\n if (!cached) {\n changes.push({\n path: relativePath,\n change: 'added',\n newMeta,\n });\n } else if (cached.mtime !== stats.mtimeMs || cached.size !== stats.size) {\n // Full hash comparison for definitive change detection\n if (cached.hash !== newMeta.hash) {\n changes.push({\n path: relativePath,\n change: 'modified',\n oldMeta: cached,\n newMeta,\n });\n } else {\n // mtime changed but content same (touch, etc.)\n changes.push({\n path: relativePath,\n change: 'unchanged',\n oldMeta: cached,\n newMeta,\n });\n }\n } else {\n changes.push({\n path: relativePath,\n change: 'unchanged',\n oldMeta: cached,\n newMeta: cached,\n });\n }\n } catch {\n if (cached) {\n changes.push({\n path: relativePath,\n change: 'deleted',\n oldMeta: cached,\n });\n }\n }\n }\n\n // Detect deleted files (in cache but not in current list)\n for (const [path, meta] of this.entries) {\n if (!currentFiles.has(path)) {\n changes.push({\n path,\n change: 'deleted',\n oldMeta: meta,\n });\n }\n }\n\n return changes;\n }\n\n /**\n * Update cache with detected changes\n */\n applyChanges(changes: FileChange[]): void {\n for (const change of changes) {\n switch (change.change) {\n case 'added':\n case 'modified':\n if (change.newMeta) {\n this.entries.set(change.path, change.newMeta);\n }\n break;\n case 'deleted':\n this.entries.delete(change.path);\n break;\n }\n }\n this.dirty = true;\n }\n\n /**\n * Get cache statistics\n */\n getStats(): CacheStats {\n let staleCount = 0;\n const now = Date.now();\n\n for (const entry of this.entries.values()) {\n if (now - entry.cachedAt > this.defaultTTL) {\n staleCount++;\n }\n }\n\n const totalRequests = this.hitCount + this.missCount;\n\n return {\n totalEntries: this.entries.size,\n hitCount: this.hitCount,\n missCount: this.missCount,\n hitRate: totalRequests > 0 ? this.hitCount / totalRequests : 0,\n sizeBytes: this.estimateSize(),\n lastUpdated: this.updatedAt,\n staleEntries: staleCount,\n };\n }\n\n /**\n * Clear all cache entries\n */\n clear(): void {\n this.entries.clear();\n this.hitCount = 0;\n this.missCount = 0;\n this.dirty = true;\n }\n\n /**\n * Prune stale entries\n */\n async prune(): Promise<number> {\n const now = Date.now();\n let prunedCount = 0;\n\n // Prune by TTL\n for (const [path, entry] of this.entries) {\n if (now - entry.cachedAt > this.defaultTTL) {\n this.entries.delete(path);\n prunedCount++;\n }\n }\n\n // Prune by max entries (LRU-ish: oldest cached first)\n if (this.entries.size > this.maxEntries) {\n const entries = Array.from(this.entries.entries())\n .sort((a, b) => a[1].cachedAt - b[1].cachedAt);\n\n const toRemove = entries.slice(0, entries.length - this.maxEntries);\n for (const [path] of toRemove) {\n this.entries.delete(path);\n prunedCount++;\n }\n }\n\n if (prunedCount > 0) {\n this.dirty = true;\n logger.info('Pruned cache entries', { count: prunedCount });\n }\n\n return prunedCount;\n }\n\n /**\n * Get all cached file paths\n */\n getAllPaths(): string[] {\n return Array.from(this.entries.keys());\n }\n\n /**\n * Get files by type\n */\n getByType(type: FileType): FileMetadata[] {\n return Array.from(this.entries.values()).filter(e => e.type === type);\n }\n\n /**\n * Invalidate entries matching a pattern\n */\n invalidate(pattern: RegExp): number {\n let count = 0;\n for (const path of this.entries.keys()) {\n if (pattern.test(path)) {\n this.entries.delete(path);\n count++;\n }\n }\n if (count > 0) {\n this.dirty = true;\n }\n return count;\n }\n\n // Private helpers\n\n private normalizePath(filePath: string): string {\n // Make path relative to project root\n if (filePath.startsWith(this.projectRoot)) {\n return relative(this.projectRoot, filePath);\n }\n return filePath;\n }\n\n private computeMetadata(fullPath: string, relativePath: string): FileMetadata {\n const stats = statSync(fullPath);\n const content = readFileSync(fullPath);\n const hash = createHash('md5').update(content).digest('hex');\n\n return {\n path: relativePath,\n size: stats.size,\n mtime: stats.mtimeMs,\n hash,\n type: this.inferFileType(relativePath),\n cachedAt: Date.now(),\n };\n }\n\n private inferFileType(filePath: string): FileType {\n const ext = filePath.split('.').pop()?.toLowerCase() || '';\n const filename = filePath.split('/').pop()?.toLowerCase() || '';\n\n // Docker files\n if (filename === 'dockerfile' || filename.startsWith('dockerfile.')) {\n return 'docker';\n }\n if (filename.includes('docker-compose') || filename === 'compose.yml' || filename === 'compose.yaml') {\n return 'docker';\n }\n\n // By extension\n switch (ext) {\n case 'md':\n case 'mdx':\n return 'markdown';\n case 'ts':\n case 'tsx':\n case 'mts':\n case 'cts':\n return 'typescript';\n case 'js':\n case 'jsx':\n case 'mjs':\n case 'cjs':\n return 'javascript';\n case 'py':\n case 'pyw':\n return 'python';\n case 'rs':\n return 'rust';\n case 'go':\n return 'go';\n case 'java':\n return 'java';\n case 'php':\n return 'php';\n case 'rb':\n return 'ruby';\n case 'yml':\n case 'yaml':\n return 'yaml';\n case 'json':\n return 'json';\n case 'toml':\n return 'toml';\n case 'ini':\n case 'env':\n case 'conf':\n case 'config':\n return 'config';\n default:\n return 'other';\n }\n }\n\n private estimateSize(): number {\n // Rough estimate: JSON serialization size\n let size = 0;\n for (const entry of this.entries.values()) {\n size += entry.path.length + entry.hash.length + 100; // ~100 bytes overhead per entry\n }\n return size;\n }\n}\n\n/**\n * Create a shadow cache for a project\n */\nexport function createShadowCache(options: ShadowCacheOptions): ShadowCache {\n return new ShadowCache(options);\n}\n\n/**\n * Load or create shadow cache for a project\n */\nexport async function loadShadowCache(projectRoot: string): Promise<ShadowCache> {\n const cache = new ShadowCache({ projectRoot });\n await cache.load();\n return cache;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * DeepAnalyzer - Claude-Flow Integration for Deep Codebase Analysis
3
+ *
4
+ * Uses claude-flow agents for comprehensive codebase analysis:
5
+ * - Pattern detection and architectural insights
6
+ * - Documentation gap analysis
7
+ * - Standards compliance checking
8
+ *
9
+ * @module cultivation/deep-analyzer
10
+ */
11
+ /**
12
+ * Deep analyzer options
13
+ */
14
+ export interface DeepAnalyzerOptions {
15
+ /** Project root directory */
16
+ projectRoot: string;
17
+ /** Documentation path (relative to project root) */
18
+ docsPath?: string;
19
+ /** Output directory for analysis results */
20
+ outputDir?: string;
21
+ /** Enable verbose logging */
22
+ verbose?: boolean;
23
+ /** Maximum agents to spawn */
24
+ maxAgents?: number;
25
+ /** Agent execution mode */
26
+ agentMode?: 'sequential' | 'parallel' | 'adaptive';
27
+ /** Timeout for each agent (ms) */
28
+ agentTimeout?: number;
29
+ }
30
+ /**
31
+ * Analysis result from an agent
32
+ */
33
+ export interface AgentResult {
34
+ name: string;
35
+ type: string;
36
+ success: boolean;
37
+ insights: string[];
38
+ documents: Array<{
39
+ path: string;
40
+ title: string;
41
+ }>;
42
+ duration: number;
43
+ error?: string;
44
+ }
45
+ /**
46
+ * Deep analysis result
47
+ */
48
+ export interface DeepAnalysisResult {
49
+ success: boolean;
50
+ agentsSpawned: number;
51
+ insightsCount: number;
52
+ documentsCreated: number;
53
+ results: AgentResult[];
54
+ duration: number;
55
+ errors: string[];
56
+ }
57
+ /**
58
+ * DeepAnalyzer - Uses claude-flow for deep codebase analysis
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const analyzer = new DeepAnalyzer({
63
+ * projectRoot: '/my/project',
64
+ * docsPath: 'docs',
65
+ * });
66
+ *
67
+ * const result = await analyzer.analyze();
68
+ * console.log(`Generated ${result.insightsCount} insights`);
69
+ * ```
70
+ */
71
+ export declare class DeepAnalyzer {
72
+ private projectRoot;
73
+ private docsPath;
74
+ private outputDir;
75
+ private verbose;
76
+ private maxAgents;
77
+ private agentMode;
78
+ private agentTimeout;
79
+ constructor(options: DeepAnalyzerOptions);
80
+ /**
81
+ * Check if claude-flow is available
82
+ */
83
+ isAvailable(): Promise<boolean>;
84
+ /**
85
+ * Run deep analysis
86
+ */
87
+ analyze(): Promise<DeepAnalysisResult>;
88
+ /**
89
+ * Execute agents in parallel
90
+ */
91
+ private executeParallel;
92
+ /**
93
+ * Execute agents sequentially
94
+ */
95
+ private executeSequential;
96
+ /**
97
+ * Execute agents adaptively (start with 2, scale based on success)
98
+ */
99
+ private executeAdaptive;
100
+ /**
101
+ * Execute a single agent
102
+ */
103
+ private executeAgent;
104
+ /**
105
+ * Build prompt for agent
106
+ */
107
+ private buildPrompt;
108
+ /**
109
+ * Run claude-flow agent
110
+ */
111
+ private runClaudeFlowAgent;
112
+ /**
113
+ * Extract insights from agent output
114
+ */
115
+ private extractInsights;
116
+ /**
117
+ * Format output for documentation
118
+ */
119
+ private formatOutput;
120
+ }
121
+ /**
122
+ * Create a deep analyzer instance
123
+ */
124
+ export declare function createDeepAnalyzer(options: DeepAnalyzerOptions): DeepAnalyzer;
125
+ /**
126
+ * Run deep analysis on a project
127
+ */
128
+ export declare function analyzeDeep(projectRoot: string, docsPath?: string): Promise<DeepAnalysisResult>;
129
+ //# sourceMappingURL=deep-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-analyzer.d.ts","sourceRoot":"","sources":["../../src/cultivation/deep-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACnD,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAYD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,mBAAmB;IAWxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAerC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyF5C;;OAEG;YACW,eAAe;IAK7B;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;YACW,eAAe;IA2B7B;;OAEG;YACW,YAAY;IA0C1B;;OAEG;IACH,OAAO,CAAC,WAAW;IA8BnB;;OAEG;YACW,kBAAkB;IA2ChC;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,YAAY;CA4BrB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAE7E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAG7B"}