@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,235 @@
1
+ import { McpError, ErrorCode } from "../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.js";
2
+ import { createLogger } from "../../utils/logger.js";
3
+ import { getToolHandler } from "../tools/registry.js";
4
+ const logger = createLogger("mcp-handler");
5
+ async function handleToolCall(request) {
6
+ const startTime = Date.now();
7
+ const { name: toolName, arguments: params = {} } = request.params;
8
+ logger.debug("Handling tool call", { toolName, paramKeys: Object.keys(params || {}) });
9
+ ({
10
+ requestId: generateRequestId()
11
+ });
12
+ try {
13
+ const handler = getToolHandler(toolName);
14
+ if (!handler) {
15
+ logger.warn(`Unknown tool requested: ${toolName}`);
16
+ throw new McpError(
17
+ ErrorCode.MethodNotFound,
18
+ `Unknown tool: ${toolName}`
19
+ );
20
+ }
21
+ validateParams(params, toolName);
22
+ const result = await handler(params);
23
+ const executionTime = Date.now() - startTime;
24
+ logger.debug(`Tool ${toolName} completed in ${executionTime}ms`, {
25
+ success: result.success,
26
+ hasData: !!result.data
27
+ });
28
+ return formatResponse(result, executionTime);
29
+ } catch (error) {
30
+ const executionTime = Date.now() - startTime;
31
+ logger.error(
32
+ `Tool ${toolName} failed after ${executionTime}ms`,
33
+ error instanceof Error ? error : void 0
34
+ );
35
+ if (error instanceof McpError) {
36
+ throw error;
37
+ }
38
+ throw new McpError(
39
+ ErrorCode.InternalError,
40
+ `Tool execution failed: ${error instanceof Error ? error.message : String(error)}`
41
+ );
42
+ }
43
+ }
44
+ const VALIDATION_LIMITS = {
45
+ MAX_OBJECT_DEPTH: 10,
46
+ MAX_ARRAY_LENGTH: 1e3,
47
+ MAX_STRING_LENGTH: 1e5
48
+ };
49
+ function validateParams(params, toolName) {
50
+ if (params === null || params === void 0) {
51
+ return;
52
+ }
53
+ if (typeof params !== "object" || Array.isArray(params)) {
54
+ throw new McpError(
55
+ ErrorCode.InvalidParams,
56
+ `Invalid parameters for tool ${toolName}: expected object, got ${Array.isArray(params) ? "array" : typeof params}`
57
+ );
58
+ }
59
+ validateValueRecursive(params, toolName, "", 0);
60
+ }
61
+ function validateValueRecursive(value, toolName, path, depth) {
62
+ if (depth > VALIDATION_LIMITS.MAX_OBJECT_DEPTH) {
63
+ throw new McpError(
64
+ ErrorCode.InvalidParams,
65
+ `Parameter nesting too deep at ${path || "root"} for tool ${toolName}: maximum depth is ${VALIDATION_LIMITS.MAX_OBJECT_DEPTH} levels`
66
+ );
67
+ }
68
+ if (value === null || value === void 0) {
69
+ return;
70
+ }
71
+ if (typeof value === "string") {
72
+ validateString(value, toolName, path);
73
+ } else if (Array.isArray(value)) {
74
+ validateArray(value, toolName, path, depth);
75
+ } else if (typeof value === "object") {
76
+ validateObject(value, toolName, path, depth);
77
+ }
78
+ }
79
+ function validateString(value, toolName, path) {
80
+ const paramName = path || "value";
81
+ if (value.length > VALIDATION_LIMITS.MAX_STRING_LENGTH) {
82
+ throw new McpError(
83
+ ErrorCode.InvalidParams,
84
+ `Parameter ${paramName} exceeds maximum length (${VALIDATION_LIMITS.MAX_STRING_LENGTH} characters) for tool ${toolName}`
85
+ );
86
+ }
87
+ if (isPathLike(path) && containsPathTraversal(value)) {
88
+ throw new McpError(
89
+ ErrorCode.InvalidParams,
90
+ `Parameter ${paramName} contains invalid path traversal sequence for tool ${toolName}`
91
+ );
92
+ }
93
+ if (value.includes("\0")) {
94
+ throw new McpError(
95
+ ErrorCode.InvalidParams,
96
+ `Parameter ${paramName} contains invalid null byte for tool ${toolName}`
97
+ );
98
+ }
99
+ }
100
+ function validateArray(value, toolName, path, depth) {
101
+ const paramName = path || "array";
102
+ if (value.length > VALIDATION_LIMITS.MAX_ARRAY_LENGTH) {
103
+ throw new McpError(
104
+ ErrorCode.InvalidParams,
105
+ `Parameter ${paramName} exceeds maximum array length (${VALIDATION_LIMITS.MAX_ARRAY_LENGTH} items) for tool ${toolName}`
106
+ );
107
+ }
108
+ for (let i = 0; i < value.length; i++) {
109
+ validateValueRecursive(value[i], toolName, `${path}[${i}]`, depth + 1);
110
+ }
111
+ }
112
+ function validateObject(value, toolName, path, depth) {
113
+ for (const [key, propValue] of Object.entries(value)) {
114
+ const propPath = path ? `${path}.${key}` : key;
115
+ validateValueRecursive(propValue, toolName, propPath, depth + 1);
116
+ }
117
+ }
118
+ function isPathLike(paramPath) {
119
+ const pathIndicators = [
120
+ "path",
121
+ "file",
122
+ "dir",
123
+ "directory",
124
+ "folder",
125
+ "location",
126
+ "source",
127
+ "dest",
128
+ "destination",
129
+ "target",
130
+ "uri",
131
+ "url"
132
+ ];
133
+ const lowerPath = paramPath.toLowerCase();
134
+ return pathIndicators.some(
135
+ (indicator) => lowerPath.includes(indicator) || lowerPath.endsWith(indicator)
136
+ );
137
+ }
138
+ function containsPathTraversal(value) {
139
+ if (value.includes("..")) {
140
+ return true;
141
+ }
142
+ try {
143
+ const decoded = decodeURIComponent(value.toLowerCase());
144
+ if (decoded.includes("..")) {
145
+ return true;
146
+ }
147
+ } catch {
148
+ }
149
+ return false;
150
+ }
151
+ function formatResponse(result, executionTime) {
152
+ const enrichedResult = {
153
+ ...result,
154
+ metadata: {
155
+ ...result.metadata,
156
+ executionTime
157
+ }
158
+ };
159
+ return {
160
+ content: [
161
+ {
162
+ type: "text",
163
+ text: JSON.stringify(enrichedResult, null, 2)
164
+ }
165
+ ]
166
+ };
167
+ }
168
+ function generateRequestId() {
169
+ return `req_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
170
+ }
171
+ function handleError(error, context) {
172
+ logger.error(
173
+ `Tool execution error: ${context.toolName}`,
174
+ error instanceof Error ? error : void 0,
175
+ { requestId: context.requestId }
176
+ );
177
+ if (error instanceof McpError) {
178
+ return error;
179
+ }
180
+ if (error instanceof Error) {
181
+ if (error.message.includes("not found") || error.message.includes("does not exist")) {
182
+ return new McpError(
183
+ ErrorCode.InvalidParams,
184
+ `${context.toolName} failed: ${error.message}`
185
+ );
186
+ }
187
+ if (error.message.includes("permission") || error.message.includes("unauthorized")) {
188
+ return new McpError(
189
+ ErrorCode.InvalidRequest,
190
+ `${context.toolName} failed: ${error.message}`
191
+ );
192
+ }
193
+ if (error.message.includes("timeout")) {
194
+ return new McpError(
195
+ ErrorCode.InternalError,
196
+ `${context.toolName} timed out: ${error.message}`
197
+ );
198
+ }
199
+ return new McpError(
200
+ ErrorCode.InternalError,
201
+ `${context.toolName} failed: ${error.message}`
202
+ );
203
+ }
204
+ return new McpError(
205
+ ErrorCode.InternalError,
206
+ `${context.toolName} failed: ${String(error)}`
207
+ );
208
+ }
209
+ function createErrorResult(error, toolName) {
210
+ return {
211
+ success: false,
212
+ error: error instanceof Error ? error.message : String(error),
213
+ metadata: {
214
+ toolName,
215
+ timestamp: Date.now()
216
+ }
217
+ };
218
+ }
219
+ function createSuccessResult(data, metadata) {
220
+ return {
221
+ success: true,
222
+ data,
223
+ metadata: {
224
+ ...metadata,
225
+ timestamp: Date.now()
226
+ }
227
+ };
228
+ }
229
+ export {
230
+ createErrorResult,
231
+ createSuccessResult,
232
+ handleError,
233
+ handleToolCall
234
+ };
235
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/mcp-server/handlers/index.ts"],"sourcesContent":["/**\n * MCP Tool Request Handler\n *\n * Handles incoming tool call requests from MCP clients.\n * Validates parameters, executes handlers, and formats responses.\n *\n * @module mcp-server/handlers\n */\n\nimport {\n ErrorCode,\n McpError,\n type CallToolResult,\n} from '@modelcontextprotocol/sdk/types.js';\nimport type { ToolContext, ToolResult } from '../types/index.js';\nimport { createLogger } from '../../utils/index.js';\nimport { getToolHandler } from '../tools/registry.js';\n\nconst logger = createLogger('mcp-handler');\n\n/**\n * MCP CallToolRequest params structure\n */\ninterface CallToolParams {\n name: string;\n arguments?: Record<string, unknown>;\n}\n\n/**\n * MCP request structure\n */\ninterface MCPRequest {\n params: CallToolParams;\n}\n\n/**\n * Handle tool call requests from MCP clients\n *\n * @param request - MCP call tool request\n * @returns MCP response with tool result\n * @throws McpError if tool not found or execution fails\n */\nexport async function handleToolCall(request: MCPRequest): Promise<CallToolResult> {\n const startTime = Date.now();\n const { name: toolName, arguments: params = {} } = request.params;\n\n // Log only parameter keys, not values, to avoid exposing sensitive data\n logger.debug('Handling tool call', { toolName, paramKeys: Object.keys(params || {}) });\n\n const context: ToolContext = {\n toolName,\n params,\n timestamp: startTime,\n requestId: generateRequestId(),\n };\n\n try {\n // Get handler from registry\n const handler = getToolHandler(toolName);\n\n if (!handler) {\n logger.warn(`Unknown tool requested: ${toolName}`);\n throw new McpError(\n ErrorCode.MethodNotFound,\n `Unknown tool: ${toolName}`\n );\n }\n\n // Validate parameters\n validateParams(params, toolName);\n\n // Execute handler\n const result = await handler(params);\n\n const executionTime = Date.now() - startTime;\n logger.debug(`Tool ${toolName} completed in ${executionTime}ms`, {\n success: result.success,\n hasData: !!result.data,\n });\n\n // Format response\n return formatResponse(result, executionTime);\n } catch (error) {\n const executionTime = Date.now() - startTime;\n logger.error(\n `Tool ${toolName} failed after ${executionTime}ms`,\n error instanceof Error ? error : undefined\n );\n\n // Re-throw MCP errors as-is\n if (error instanceof McpError) {\n throw error;\n }\n\n // Wrap other errors\n throw new McpError(\n ErrorCode.InternalError,\n `Tool execution failed: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n}\n\n/**\n * Security constants for input validation\n *\n * SECURITY: These limits prevent various attack vectors:\n * - MAX_OBJECT_DEPTH: Prevents stack overflow from deeply nested objects\n * - MAX_ARRAY_LENGTH: Prevents memory exhaustion from large arrays\n * - MAX_STRING_LENGTH: Prevents DoS from excessively long strings\n */\nconst VALIDATION_LIMITS = {\n MAX_OBJECT_DEPTH: 10,\n MAX_ARRAY_LENGTH: 1000,\n MAX_STRING_LENGTH: 100000,\n} as const;\n\n/**\n * Validate tool parameters with comprehensive security checks\n *\n * SECURITY: This function performs multi-layered input validation to protect against:\n * 1. Stack overflow attacks via deeply nested objects (max 10 levels)\n * 2. Memory exhaustion via large arrays (max 1000 items)\n * 3. DoS via excessively long strings (max 100000 chars)\n * 4. Path traversal attacks via '..' sequences and null bytes in paths\n *\n * @param params - Parameters to validate\n * @param toolName - Tool name for error messages\n * @throws McpError if parameters are invalid or potentially malicious\n */\nfunction validateParams(params: unknown, toolName: string): void {\n // Null/undefined is valid (empty params)\n if (params === null || params === undefined) {\n return;\n }\n\n // Must be an object\n if (typeof params !== 'object' || Array.isArray(params)) {\n throw new McpError(\n ErrorCode.InvalidParams,\n `Invalid parameters for tool ${toolName}: expected object, got ${Array.isArray(params) ? 'array' : typeof params}`\n );\n }\n\n // SECURITY: Perform recursive validation with depth tracking\n validateValueRecursive(params, toolName, '', 0);\n}\n\n/**\n * Recursively validate a value with security checks\n *\n * SECURITY: Validates nested structures to prevent:\n * - Deep nesting attacks (stack overflow)\n * - Large array attacks (memory exhaustion)\n * - Path traversal in string values\n * - Null byte injection\n *\n * @param value - Value to validate\n * @param toolName - Tool name for error context\n * @param path - Current property path for error messages\n * @param depth - Current nesting depth\n * @throws McpError if validation fails\n */\nfunction validateValueRecursive(\n value: unknown,\n toolName: string,\n path: string,\n depth: number\n): void {\n // SECURITY: Prevent stack overflow from deeply nested objects\n // Attackers may send deeply nested JSON to exhaust call stack\n if (depth > VALIDATION_LIMITS.MAX_OBJECT_DEPTH) {\n throw new McpError(\n ErrorCode.InvalidParams,\n `Parameter nesting too deep at ${path || 'root'} for tool ${toolName}: ` +\n `maximum depth is ${VALIDATION_LIMITS.MAX_OBJECT_DEPTH} levels`\n );\n }\n\n // Handle null/undefined (valid leaf values)\n if (value === null || value === undefined) {\n return;\n }\n\n // Validate based on type\n if (typeof value === 'string') {\n validateString(value, toolName, path);\n } else if (Array.isArray(value)) {\n validateArray(value, toolName, path, depth);\n } else if (typeof value === 'object') {\n validateObject(value as Record<string, unknown>, toolName, path, depth);\n }\n // Primitives (number, boolean) are always valid\n}\n\n/**\n * Validate string values for security issues\n *\n * SECURITY: Checks for:\n * - Excessive length (DoS prevention)\n * - Path traversal sequences (..)\n * - Null byte injection (\\x00)\n *\n * @param value - String value to validate\n * @param toolName - Tool name for error context\n * @param path - Property path for error messages\n * @throws McpError if string contains malicious content\n */\nfunction validateString(value: string, toolName: string, path: string): void {\n const paramName = path || 'value';\n\n // SECURITY: Check for excessively long strings (potential DoS)\n // Large strings can exhaust memory or cause slow processing\n if (value.length > VALIDATION_LIMITS.MAX_STRING_LENGTH) {\n throw new McpError(\n ErrorCode.InvalidParams,\n `Parameter ${paramName} exceeds maximum length (${VALIDATION_LIMITS.MAX_STRING_LENGTH} characters) for tool ${toolName}`\n );\n }\n\n // SECURITY: Check for path traversal attacks\n // Detects attempts to escape directory boundaries using '..' sequences\n // This prevents unauthorized file system access\n if (isPathLike(path) && containsPathTraversal(value)) {\n throw new McpError(\n ErrorCode.InvalidParams,\n `Parameter ${paramName} contains invalid path traversal sequence for tool ${toolName}`\n );\n }\n\n // SECURITY: Check for null byte injection\n // Null bytes can truncate strings in C-based systems, potentially bypassing validation\n // They have no legitimate use in parameter values\n if (value.includes('\\x00')) {\n throw new McpError(\n ErrorCode.InvalidParams,\n `Parameter ${paramName} contains invalid null byte for tool ${toolName}`\n );\n }\n}\n\n/**\n * Validate array values for security issues\n *\n * SECURITY: Prevents memory exhaustion from excessively large arrays\n *\n * @param value - Array to validate\n * @param toolName - Tool name for error context\n * @param path - Property path for error messages\n * @param depth - Current nesting depth\n * @throws McpError if array is too large or contains invalid items\n */\nfunction validateArray(\n value: unknown[],\n toolName: string,\n path: string,\n depth: number\n): void {\n const paramName = path || 'array';\n\n // SECURITY: Check for excessively large arrays (memory exhaustion prevention)\n // Large arrays can consume excessive memory during processing\n if (value.length > VALIDATION_LIMITS.MAX_ARRAY_LENGTH) {\n throw new McpError(\n ErrorCode.InvalidParams,\n `Parameter ${paramName} exceeds maximum array length (${VALIDATION_LIMITS.MAX_ARRAY_LENGTH} items) for tool ${toolName}`\n );\n }\n\n // Recursively validate each array element\n for (let i = 0; i < value.length; i++) {\n validateValueRecursive(value[i], toolName, `${path}[${i}]`, depth + 1);\n }\n}\n\n/**\n * Validate object values recursively\n *\n * @param value - Object to validate\n * @param toolName - Tool name for error context\n * @param path - Property path for error messages\n * @param depth - Current nesting depth\n * @throws McpError if object contains invalid values\n */\nfunction validateObject(\n value: Record<string, unknown>,\n toolName: string,\n path: string,\n depth: number\n): void {\n for (const [key, propValue] of Object.entries(value)) {\n const propPath = path ? `${path}.${key}` : key;\n validateValueRecursive(propValue, toolName, propPath, depth + 1);\n }\n}\n\n/**\n * Check if a parameter path suggests it contains a file/directory path\n *\n * SECURITY: Identifies path-like parameters that should be checked for traversal attacks\n *\n * @param paramPath - The parameter's property path (e.g., \"config.filePath\")\n * @returns True if the parameter name suggests it's a path\n */\nfunction isPathLike(paramPath: string): boolean {\n const pathIndicators = [\n 'path',\n 'file',\n 'dir',\n 'directory',\n 'folder',\n 'location',\n 'source',\n 'dest',\n 'destination',\n 'target',\n 'uri',\n 'url',\n ];\n\n const lowerPath = paramPath.toLowerCase();\n return pathIndicators.some(\n (indicator) => lowerPath.includes(indicator) || lowerPath.endsWith(indicator)\n );\n}\n\n/**\n * Check if a string contains path traversal sequences\n *\n * SECURITY: Detects various forms of path traversal attacks:\n * - Direct '..' sequences\n * - URL-encoded '..' (%2e%2e)\n * - Mixed encoding\n *\n * @param value - String to check for path traversal\n * @returns True if path traversal detected\n */\nfunction containsPathTraversal(value: string): boolean {\n // SECURITY: Check for literal '..' path traversal\n if (value.includes('..')) {\n return true;\n }\n\n // SECURITY: Check for URL-encoded path traversal\n // %2e is URL-encoded '.', so %2e%2e or %2e. or .%2e are all '..'\n try {\n const decoded = decodeURIComponent(value.toLowerCase());\n if (decoded.includes('..')) {\n return true;\n }\n } catch {\n // If decoding fails, the string may contain malformed encoding\n // which is suspicious but not necessarily path traversal\n }\n\n return false;\n}\n\n/**\n * Format tool result as MCP response\n *\n * @param result - Tool execution result\n * @param executionTime - Execution time in milliseconds\n * @returns Formatted MCP response\n */\nfunction formatResponse(result: ToolResult, executionTime: number): CallToolResult {\n // Add execution time to metadata\n const enrichedResult: ToolResult = {\n ...result,\n metadata: {\n ...result.metadata,\n executionTime,\n },\n };\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(enrichedResult, null, 2),\n },\n ],\n };\n}\n\n/**\n * Generate unique request ID for tracing\n */\nfunction generateRequestId(): string {\n return `req_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Handle errors and convert to MCP errors\n *\n * @param error - Original error\n * @param context - Tool execution context\n * @returns MCP error\n */\nexport function handleError(error: unknown, context: ToolContext): McpError {\n logger.error(\n `Tool execution error: ${context.toolName}`,\n error instanceof Error ? error : undefined,\n { requestId: context.requestId }\n );\n\n // Return as-is if already MCP error\n if (error instanceof McpError) {\n return error;\n }\n\n // Handle specific error types\n if (error instanceof Error) {\n // Check for known error patterns\n if (error.message.includes('not found') || error.message.includes('does not exist')) {\n return new McpError(\n ErrorCode.InvalidParams,\n `${context.toolName} failed: ${error.message}`\n );\n }\n\n if (error.message.includes('permission') || error.message.includes('unauthorized')) {\n return new McpError(\n ErrorCode.InvalidRequest,\n `${context.toolName} failed: ${error.message}`\n );\n }\n\n if (error.message.includes('timeout')) {\n return new McpError(\n ErrorCode.InternalError,\n `${context.toolName} timed out: ${error.message}`\n );\n }\n\n // Generic error\n return new McpError(\n ErrorCode.InternalError,\n `${context.toolName} failed: ${error.message}`\n );\n }\n\n // Unknown error type\n return new McpError(\n ErrorCode.InternalError,\n `${context.toolName} failed: ${String(error)}`\n );\n}\n\n/**\n * Create error response for tool failures\n *\n * @param error - Error message or object\n * @param toolName - Tool that failed\n * @returns Tool result indicating failure\n */\nexport function createErrorResult(error: unknown, toolName: string): ToolResult {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n metadata: {\n toolName,\n timestamp: Date.now(),\n },\n };\n}\n\n/**\n * Create success response for tool results\n *\n * @param data - Result data\n * @param metadata - Additional metadata\n * @returns Tool result indicating success\n */\nexport function createSuccessResult(\n data: unknown,\n metadata?: Record<string, unknown>\n): ToolResult {\n return {\n success: true,\n data,\n metadata: {\n ...metadata,\n timestamp: Date.now(),\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Knowledge Graph MCP Server
3
+ *
4
+ * Model Context Protocol server for knowledge graph operations.
5
+ * Exposes knowledge graph functionality to Claude Desktop and other MCP clients.
6
+ *
7
+ * @module mcp-server
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { createMCPServer, KnowledgeGraphMCPServer } from './mcp-server';
12
+ *
13
+ * // Create and run server
14
+ * const server = await createMCPServer({
15
+ * name: 'my-kg-server',
16
+ * version: '1.0.0',
17
+ * });
18
+ *
19
+ * // Check health
20
+ * const health = server.getHealth();
21
+ * console.log('Server status:', health.status);
22
+ * ```
23
+ */
24
+ export { KnowledgeGraphMCPServer, createMCPServer, runServer, } from './server.js';
25
+ export type { MCPServerConfig, ServerHealth, ToolCategory, ToolHandler, ToolHandlerEntry, ToolResult, ToolContext, ToolInputSchema, ToolDefinition, GraphQueryParams, GraphNodeResult, AgentInvokeParams, AgentResult, WorkflowParams, WorkflowResult, MemoryParams, MemoryResult, } from './types/index.js';
26
+ export { initializeTools, registerTool, getToolHandler, getToolDefinition, getToolDefinitions, getToolCategories, hasToolRegistered, getToolCount, clearRegistry, getDatabase, getCache, getProjectRoot, } from './tools/index.js';
27
+ export { handleToolCall, handleError, createErrorResult, createSuccessResult, } from './handlers/index.js';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp-server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Knowledge Graph MCP Server
3
+ *
4
+ * Main MCP server implementation for exposing knowledge graph functionality
5
+ * to Claude Desktop and other MCP clients.
6
+ *
7
+ * @module mcp-server/server
8
+ */
9
+ import type { MCPServerConfig, ServerHealth } from './types/index.js';
10
+ import type { KnowledgeGraphDatabase } from '../core/database.js';
11
+ import type { ShadowCache } from '../core/cache.js';
12
+ /**
13
+ * Knowledge Graph MCP Server
14
+ *
15
+ * Provides MCP protocol implementation for knowledge graph operations.
16
+ * Supports tool listing and execution over stdio transport.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const server = new KnowledgeGraphMCPServer();
21
+ * await server.run();
22
+ * ```
23
+ */
24
+ export declare class KnowledgeGraphMCPServer {
25
+ private server;
26
+ private isRunning;
27
+ private startTime;
28
+ private requestCount;
29
+ private config;
30
+ private requestCounts;
31
+ private readonly MAX_REQUESTS_PER_MINUTE;
32
+ private database?;
33
+ private cache?;
34
+ private projectRoot?;
35
+ /**
36
+ * Create new MCP server instance
37
+ *
38
+ * @param config - Server configuration
39
+ * @param database - Knowledge graph database instance
40
+ * @param cache - Shadow cache instance
41
+ * @param projectRoot - Project root path
42
+ */
43
+ constructor(config?: Partial<MCPServerConfig>, database?: KnowledgeGraphDatabase, cache?: ShadowCache, projectRoot?: string);
44
+ /**
45
+ * Check rate limit and throw if exceeded
46
+ *
47
+ * Implements a fixed-window rate limit of MAX_REQUESTS_PER_MINUTE per minute.
48
+ * Cleans up old entries to prevent memory leaks.
49
+ *
50
+ * @throws McpError if rate limit is exceeded
51
+ */
52
+ private checkRateLimit;
53
+ /**
54
+ * Setup MCP request handlers
55
+ */
56
+ private setupHandlers;
57
+ /**
58
+ * Start the MCP server
59
+ *
60
+ * @throws Error if server is already running
61
+ */
62
+ run(): Promise<void>;
63
+ /**
64
+ * Shutdown the MCP server gracefully
65
+ */
66
+ shutdown(): Promise<void>;
67
+ /**
68
+ * Get server health status
69
+ *
70
+ * @returns Health status object
71
+ */
72
+ getHealth(): ServerHealth;
73
+ /**
74
+ * Check if server is currently running
75
+ *
76
+ * @returns true if server is running
77
+ */
78
+ isServerRunning(): boolean;
79
+ /**
80
+ * Get server configuration
81
+ *
82
+ * @returns Server configuration
83
+ */
84
+ getConfig(): MCPServerConfig;
85
+ /**
86
+ * Get request count
87
+ *
88
+ * @returns Number of requests handled
89
+ */
90
+ getRequestCount(): number;
91
+ /**
92
+ * Get server uptime in milliseconds
93
+ *
94
+ * @returns Uptime in milliseconds, 0 if not running
95
+ */
96
+ getUptime(): number;
97
+ }
98
+ /**
99
+ * Create and start an MCP server
100
+ *
101
+ * Convenience function for creating and running an MCP server in one call.
102
+ *
103
+ * @param config - Server configuration
104
+ * @param database - Knowledge graph database instance
105
+ * @param cache - Shadow cache instance
106
+ * @param projectRoot - Project root path
107
+ * @returns Running MCP server instance
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const server = await createMCPServer(
112
+ * { name: 'my-kg-server' },
113
+ * database,
114
+ * cache,
115
+ * '/my/project'
116
+ * );
117
+ * ```
118
+ */
119
+ export declare function createMCPServer(config?: Partial<MCPServerConfig>, database?: KnowledgeGraphDatabase, cache?: ShadowCache, projectRoot?: string): Promise<KnowledgeGraphMCPServer>;
120
+ /**
121
+ * Run MCP server as standalone process
122
+ *
123
+ * Entry point for running the MCP server from command line.
124
+ *
125
+ * @param options - Server options
126
+ */
127
+ export declare function runServer(options?: {
128
+ config?: Partial<MCPServerConfig>;
129
+ database?: KnowledgeGraphDatabase;
130
+ cache?: ShadowCache;
131
+ projectRoot?: string;
132
+ }): Promise<void>;
133
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAyBpD;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,MAAM,CAAkB;IAGhC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IAE/C,OAAO,CAAC,QAAQ,CAAC,CAAyB;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAE7B;;;;;;;OAOG;gBAED,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,QAAQ,CAAC,EAAE,sBAAsB,EACjC,KAAK,CAAC,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,MAAM;IAoCtB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyDrB;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B/B;;;;OAIG;IACH,SAAS,IAAI,YAAY;IAczB;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACH,SAAS,IAAI,eAAe;IAI5B;;;;OAIG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,SAAS,IAAI,MAAM;CAGpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,QAAQ,CAAC,EAAE,sBAAsB,EACjC,KAAK,CAAC,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,uBAAuB,CAAC,CAIlC;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB"}