@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,175 @@
1
+ /**
2
+ * Auto-Commit Integration
3
+ *
4
+ * Provides automatic commit functionality with intelligent message generation
5
+ * based on knowledge graph changes and file modifications.
6
+ *
7
+ * @module integrations/auto-commit
8
+ */
9
+ import { GitClient, GitStatusSummary } from './git.js';
10
+ import { Logger, KnowledgeGraphError } from '../utils/index.js';
11
+ /**
12
+ * Auto-commit configuration
13
+ */
14
+ export interface AutoCommitConfig {
15
+ /** Git client instance (created if not provided) */
16
+ gitClient?: GitClient;
17
+ /** Logger instance */
18
+ logger?: Logger;
19
+ /** Working directory */
20
+ workingDirectory?: string;
21
+ /** Prefix for auto-generated commit messages */
22
+ messagePrefix?: string;
23
+ /** Whether to include file list in commit message */
24
+ includeFileList?: boolean;
25
+ /** Maximum number of files to list in commit message */
26
+ maxFilesInMessage?: number;
27
+ /** Custom commit message template */
28
+ messageTemplate?: string;
29
+ /** Whether to stage all changes before commit */
30
+ stageAll?: boolean;
31
+ /** Files or patterns to always exclude */
32
+ excludePatterns?: string[];
33
+ }
34
+ /**
35
+ * Change type categories
36
+ */
37
+ export declare enum ChangeType {
38
+ ADD = "add",
39
+ UPDATE = "update",
40
+ DELETE = "delete",
41
+ RENAME = "rename",
42
+ REFACTOR = "refactor",
43
+ FIX = "fix",
44
+ DOCS = "docs",
45
+ CONFIG = "config",
46
+ STYLE = "style",
47
+ TEST = "test",
48
+ BUILD = "build",
49
+ CHORE = "chore"
50
+ }
51
+ /**
52
+ * Analyzed change information
53
+ */
54
+ export interface ChangeAnalysis {
55
+ /** Primary change type */
56
+ type: ChangeType;
57
+ /** Affected scope (e.g., component name) */
58
+ scope?: string;
59
+ /** Brief description of changes */
60
+ description: string;
61
+ /** Whether this is a breaking change */
62
+ breaking: boolean;
63
+ /** Files involved in this change */
64
+ files: string[];
65
+ /** Additional context */
66
+ context?: Record<string, unknown>;
67
+ }
68
+ /**
69
+ * Commit decision result
70
+ */
71
+ export interface CommitDecision {
72
+ /** Whether to proceed with commit */
73
+ shouldCommit: boolean;
74
+ /** Reason for the decision */
75
+ reason: string;
76
+ /** Suggested commit message if should commit */
77
+ suggestedMessage?: string;
78
+ /** Analysis of changes */
79
+ analysis?: ChangeAnalysis;
80
+ }
81
+ /**
82
+ * Auto-commit result
83
+ */
84
+ export interface AutoCommitResult {
85
+ /** Whether the commit was successful */
86
+ success: boolean;
87
+ /** Commit hash if successful */
88
+ hash?: string;
89
+ /** Generated commit message */
90
+ message?: string;
91
+ /** Error message if failed */
92
+ error?: string;
93
+ /** Change analysis */
94
+ analysis?: ChangeAnalysis;
95
+ }
96
+ /**
97
+ * Auto-commit error
98
+ */
99
+ export declare class AutoCommitError extends KnowledgeGraphError {
100
+ constructor(message: string);
101
+ }
102
+ /**
103
+ * AutoCommit Class
104
+ *
105
+ * Provides intelligent auto-commit functionality with smart message generation.
106
+ */
107
+ export declare class AutoCommit {
108
+ private git;
109
+ private logger;
110
+ private config;
111
+ constructor(config?: AutoCommitConfig);
112
+ /**
113
+ * Analyze changes and determine the appropriate change type
114
+ */
115
+ analyzeChanges(status?: GitStatusSummary): Promise<ChangeAnalysis>;
116
+ /**
117
+ * Generate a commit message based on analysis
118
+ */
119
+ generateCommitMessage(analysis: ChangeAnalysis): string;
120
+ /**
121
+ * Determine if changes should be committed
122
+ */
123
+ shouldCommit(options?: {
124
+ minFiles?: number;
125
+ minChanges?: number;
126
+ excludeTypes?: ChangeType[];
127
+ }): Promise<CommitDecision>;
128
+ /**
129
+ * Perform an auto-commit
130
+ */
131
+ commit(options?: {
132
+ message?: string;
133
+ stageAll?: boolean;
134
+ files?: string[];
135
+ dryRun?: boolean;
136
+ }): Promise<AutoCommitResult>;
137
+ /**
138
+ * Smart commit with knowledge graph awareness
139
+ */
140
+ smartCommit(options?: {
141
+ knowledgeGraphChanges?: {
142
+ nodesAdded?: number;
143
+ nodesUpdated?: number;
144
+ nodesDeleted?: number;
145
+ linksChanged?: number;
146
+ };
147
+ additionalContext?: Record<string, unknown>;
148
+ dryRun?: boolean;
149
+ }): Promise<AutoCommitResult>;
150
+ /**
151
+ * Get file change type based on path and extension
152
+ */
153
+ private getFileChangeType;
154
+ /**
155
+ * Get scope from file path
156
+ */
157
+ private getFileScope;
158
+ /**
159
+ * Generate description based on files and type
160
+ */
161
+ private generateDescription;
162
+ /**
163
+ * Get verb for change type
164
+ */
165
+ private getTypeVerb;
166
+ /**
167
+ * Filter out excluded files
168
+ */
169
+ private filterExcludedFiles;
170
+ }
171
+ /**
172
+ * Create an AutoCommit instance
173
+ */
174
+ export declare function createAutoCommit(config?: AutoCommitConfig): AutoCommit;
175
+ //# sourceMappingURL=auto-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-commit.d.ts","sourceRoot":"","sources":["../../src/integrations/auto-commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,399 @@
1
+ import { createGitClient } from "./git.js";
2
+ import { createLogger } from "../utils/logger.js";
3
+ const FILE_TYPE_MAPPINGS = {
4
+ // Documentation
5
+ ".md": "docs",
6
+ ".mdx": "docs",
7
+ ".txt": "docs",
8
+ ".rst": "docs",
9
+ // Configuration
10
+ ".json": "config",
11
+ ".yaml": "config",
12
+ ".yml": "config",
13
+ ".toml": "config",
14
+ ".ini": "config",
15
+ ".env": "config",
16
+ ".config": "config",
17
+ // Tests
18
+ ".test.ts": "test",
19
+ ".test.js": "test",
20
+ ".spec.ts": "test",
21
+ ".spec.js": "test",
22
+ // Build
23
+ ".dockerfile": "build",
24
+ ".dockerignore": "build",
25
+ // Style
26
+ ".css": "style",
27
+ ".scss": "style",
28
+ ".sass": "style",
29
+ ".less": "style"
30
+ /* STYLE */
31
+ };
32
+ const DIRECTORY_SCOPE_MAPPINGS = {
33
+ "src/cli": "cli",
34
+ "src/core": "core",
35
+ "src/utils": "utils",
36
+ "src/integrations": "integrations",
37
+ "src/templates": "templates",
38
+ "tests": "test",
39
+ "docs": "docs",
40
+ "scripts": "scripts"
41
+ };
42
+ class AutoCommit {
43
+ git;
44
+ logger;
45
+ config;
46
+ constructor(config = {}) {
47
+ this.config = {
48
+ gitClient: config.gitClient || createGitClient({ workingDirectory: config.workingDirectory }),
49
+ logger: config.logger || createLogger("auto-commit"),
50
+ workingDirectory: config.workingDirectory || process.cwd(),
51
+ messagePrefix: config.messagePrefix || "",
52
+ includeFileList: config.includeFileList ?? true,
53
+ maxFilesInMessage: config.maxFilesInMessage ?? 5,
54
+ messageTemplate: config.messageTemplate || "{type}{scope}: {description}",
55
+ stageAll: config.stageAll ?? false,
56
+ excludePatterns: config.excludePatterns || [".env", ".env.local", "*.log", "node_modules"]
57
+ };
58
+ this.git = this.config.gitClient;
59
+ this.logger = this.config.logger;
60
+ }
61
+ /**
62
+ * Analyze changes and determine the appropriate change type
63
+ */
64
+ async analyzeChanges(status) {
65
+ const currentStatus = status || await this.git.getStatus();
66
+ const files = currentStatus.files.map((f) => f.path);
67
+ if (files.length === 0) {
68
+ return {
69
+ type: "chore",
70
+ description: "no changes detected",
71
+ breaking: false,
72
+ files: []
73
+ };
74
+ }
75
+ const typeScores = {};
76
+ const scopes = [];
77
+ for (const file of files) {
78
+ const fileType = this.getFileChangeType(file);
79
+ typeScores[fileType] = (typeScores[fileType] || 0) + 1;
80
+ const scope2 = this.getFileScope(file);
81
+ if (scope2 && !scopes.includes(scope2)) {
82
+ scopes.push(scope2);
83
+ }
84
+ }
85
+ let primaryType = "update";
86
+ let maxScore = 0;
87
+ for (const [type, score] of Object.entries(typeScores)) {
88
+ if (score > maxScore) {
89
+ maxScore = score;
90
+ primaryType = type;
91
+ }
92
+ }
93
+ const addedFiles = currentStatus.files.filter((f) => f.indexStatus === "A" || f.workingTreeStatus === "?");
94
+ const deletedFiles = currentStatus.files.filter((f) => f.indexStatus === "D" || f.workingTreeStatus === "D");
95
+ if (addedFiles.length > deletedFiles.length && addedFiles.length > currentStatus.modified) {
96
+ primaryType = "add";
97
+ } else if (deletedFiles.length > addedFiles.length && deletedFiles.length > currentStatus.modified) {
98
+ primaryType = "delete";
99
+ }
100
+ const description = this.generateDescription(files, primaryType, currentStatus);
101
+ const scope = scopes.length === 1 ? scopes[0] : scopes.length > 1 ? scopes.slice(0, 2).join(",") : void 0;
102
+ return {
103
+ type: primaryType,
104
+ scope,
105
+ description,
106
+ breaking: false,
107
+ files,
108
+ context: {
109
+ staged: currentStatus.staged,
110
+ modified: currentStatus.modified,
111
+ untracked: currentStatus.untracked,
112
+ deleted: currentStatus.deleted
113
+ }
114
+ };
115
+ }
116
+ /**
117
+ * Generate a commit message based on analysis
118
+ */
119
+ generateCommitMessage(analysis) {
120
+ const { type, scope, description, breaking, files } = analysis;
121
+ let message = this.config.messageTemplate.replace("{type}", type).replace("{scope}", scope ? `(${scope})` : "").replace("{description}", description);
122
+ if (this.config.messagePrefix) {
123
+ message = `${this.config.messagePrefix} ${message}`;
124
+ }
125
+ if (breaking) {
126
+ message = message.replace(":", "!:");
127
+ }
128
+ if (this.config.includeFileList && files.length > 0) {
129
+ const fileList = files.slice(0, this.config.maxFilesInMessage);
130
+ const remaining = files.length - fileList.length;
131
+ message += "\n\nFiles:\n";
132
+ message += fileList.map((f) => `- ${f}`).join("\n");
133
+ if (remaining > 0) {
134
+ message += `
135
+ - ... and ${remaining} more files`;
136
+ }
137
+ }
138
+ return message;
139
+ }
140
+ /**
141
+ * Determine if changes should be committed
142
+ */
143
+ async shouldCommit(options = {}) {
144
+ const minFiles = options.minFiles ?? 1;
145
+ const minChanges = options.minChanges ?? 1;
146
+ const excludeTypes = options.excludeTypes ?? [];
147
+ try {
148
+ const status = await this.git.getStatus();
149
+ if (status.isClean) {
150
+ return {
151
+ shouldCommit: false,
152
+ reason: "No changes to commit"
153
+ };
154
+ }
155
+ if (status.files.length < minFiles) {
156
+ return {
157
+ shouldCommit: false,
158
+ reason: `Not enough files changed (${status.files.length} < ${minFiles})`
159
+ };
160
+ }
161
+ const analysis = await this.analyzeChanges(status);
162
+ if (excludeTypes.includes(analysis.type)) {
163
+ return {
164
+ shouldCommit: false,
165
+ reason: `Change type "${analysis.type}" is excluded`,
166
+ analysis
167
+ };
168
+ }
169
+ const filteredFiles = this.filterExcludedFiles(status.files.map((f) => f.path));
170
+ if (filteredFiles.length === 0) {
171
+ return {
172
+ shouldCommit: false,
173
+ reason: "All changes match exclude patterns",
174
+ analysis
175
+ };
176
+ }
177
+ const diff = await this.git.getDiff();
178
+ const totalChanges = diff.insertions + diff.deletions;
179
+ if (totalChanges < minChanges) {
180
+ return {
181
+ shouldCommit: false,
182
+ reason: `Not enough changes (${totalChanges} < ${minChanges})`,
183
+ analysis
184
+ };
185
+ }
186
+ const suggestedMessage = this.generateCommitMessage(analysis);
187
+ return {
188
+ shouldCommit: true,
189
+ reason: `${status.files.length} files changed with ${totalChanges} line changes`,
190
+ suggestedMessage,
191
+ analysis
192
+ };
193
+ } catch (error) {
194
+ return {
195
+ shouldCommit: false,
196
+ reason: `Error analyzing changes: ${error instanceof Error ? error.message : String(error)}`
197
+ };
198
+ }
199
+ }
200
+ /**
201
+ * Perform an auto-commit
202
+ */
203
+ async commit(options = {}) {
204
+ try {
205
+ const stageAll = options.stageAll ?? this.config.stageAll;
206
+ if (stageAll) {
207
+ await this.git.add(".");
208
+ } else if (options.files && options.files.length > 0) {
209
+ await this.git.add(options.files);
210
+ }
211
+ const status = await this.git.getStatus();
212
+ const analysis = await this.analyzeChanges(status);
213
+ const message = options.message || this.generateCommitMessage(analysis);
214
+ if (options.dryRun) {
215
+ this.logger.info("Dry run - would commit with message:", { message });
216
+ return {
217
+ success: true,
218
+ message,
219
+ analysis
220
+ };
221
+ }
222
+ const result = await this.git.commit({ message });
223
+ if (result.success) {
224
+ this.logger.info("Auto-commit successful", {
225
+ hash: result.hash,
226
+ message
227
+ });
228
+ return {
229
+ success: true,
230
+ hash: result.hash,
231
+ message,
232
+ analysis
233
+ };
234
+ }
235
+ return {
236
+ success: false,
237
+ error: result.error,
238
+ message,
239
+ analysis
240
+ };
241
+ } catch (error) {
242
+ const errorMessage = error instanceof Error ? error.message : String(error);
243
+ this.logger.error("Auto-commit failed", new Error(errorMessage));
244
+ return {
245
+ success: false,
246
+ error: errorMessage
247
+ };
248
+ }
249
+ }
250
+ /**
251
+ * Smart commit with knowledge graph awareness
252
+ */
253
+ async smartCommit(options = {}) {
254
+ const decision = await this.shouldCommit();
255
+ if (!decision.shouldCommit) {
256
+ return {
257
+ success: false,
258
+ error: decision.reason
259
+ };
260
+ }
261
+ let message = decision.suggestedMessage || "";
262
+ if (options.knowledgeGraphChanges) {
263
+ const { nodesAdded, nodesUpdated, nodesDeleted, linksChanged } = options.knowledgeGraphChanges;
264
+ const kgChanges = [];
265
+ if (nodesAdded) kgChanges.push(`${nodesAdded} nodes added`);
266
+ if (nodesUpdated) kgChanges.push(`${nodesUpdated} nodes updated`);
267
+ if (nodesDeleted) kgChanges.push(`${nodesDeleted} nodes deleted`);
268
+ if (linksChanged) kgChanges.push(`${linksChanged} links changed`);
269
+ if (kgChanges.length > 0) {
270
+ message += `
271
+
272
+ Knowledge Graph:
273
+ - ${kgChanges.join("\n- ")}`;
274
+ }
275
+ }
276
+ if (options.additionalContext) {
277
+ message += `
278
+
279
+ Context:
280
+ ${JSON.stringify(options.additionalContext, null, 2)}`;
281
+ }
282
+ return this.commit({
283
+ message,
284
+ stageAll: true,
285
+ dryRun: options.dryRun
286
+ });
287
+ }
288
+ /**
289
+ * Get file change type based on path and extension
290
+ */
291
+ getFileChangeType(filePath) {
292
+ const lowerPath = filePath.toLowerCase();
293
+ if (lowerPath.includes(".test.") || lowerPath.includes(".spec.") || lowerPath.includes("/tests/")) {
294
+ return "test";
295
+ }
296
+ if (lowerPath.includes("dockerfile") || lowerPath.includes("makefile") || lowerPath.includes(".github/workflows")) {
297
+ return "build";
298
+ }
299
+ for (const [ext, type] of Object.entries(FILE_TYPE_MAPPINGS)) {
300
+ if (lowerPath.endsWith(ext)) {
301
+ return type;
302
+ }
303
+ }
304
+ if (lowerPath.includes("config") || lowerPath.includes("settings")) {
305
+ return "config";
306
+ }
307
+ return "update";
308
+ }
309
+ /**
310
+ * Get scope from file path
311
+ */
312
+ getFileScope(filePath) {
313
+ for (const [dir, scope] of Object.entries(DIRECTORY_SCOPE_MAPPINGS)) {
314
+ if (filePath.startsWith(dir) || filePath.includes(`/${dir}/`)) {
315
+ return scope;
316
+ }
317
+ }
318
+ const parts = filePath.split("/");
319
+ if (parts.length > 2 && parts[0] === "src") {
320
+ return parts[1];
321
+ }
322
+ return void 0;
323
+ }
324
+ /**
325
+ * Generate description based on files and type
326
+ */
327
+ generateDescription(files, type, status) {
328
+ if (files.length === 1) {
329
+ const fileName = files[0].split("/").pop() || files[0];
330
+ return `${this.getTypeVerb(type)} ${fileName}`;
331
+ }
332
+ const extensions = new Set(files.map((f) => {
333
+ const ext = f.split(".").pop();
334
+ return ext ? `.${ext}` : "";
335
+ }));
336
+ if (extensions.size === 1 && extensions.has(".md")) {
337
+ return `${this.getTypeVerb(type)} documentation`;
338
+ }
339
+ if (extensions.size === 1 && (extensions.has(".ts") || extensions.has(".js"))) {
340
+ return `${this.getTypeVerb(type)} source files`;
341
+ }
342
+ return `${this.getTypeVerb(type)} ${files.length} files`;
343
+ }
344
+ /**
345
+ * Get verb for change type
346
+ */
347
+ getTypeVerb(type) {
348
+ switch (type) {
349
+ case "add":
350
+ return "add";
351
+ case "delete":
352
+ return "remove";
353
+ case "update":
354
+ return "update";
355
+ case "refactor":
356
+ return "refactor";
357
+ case "fix":
358
+ return "fix";
359
+ case "docs":
360
+ return "document";
361
+ case "config":
362
+ return "configure";
363
+ case "style":
364
+ return "style";
365
+ case "test":
366
+ return "test";
367
+ case "build":
368
+ return "build";
369
+ case "chore":
370
+ return "chore";
371
+ default:
372
+ return "update";
373
+ }
374
+ }
375
+ /**
376
+ * Filter out excluded files
377
+ */
378
+ filterExcludedFiles(files) {
379
+ return files.filter((file) => {
380
+ for (const pattern of this.config.excludePatterns) {
381
+ if (pattern.includes("*")) {
382
+ const regex = new RegExp(pattern.replace(/\*/g, ".*"));
383
+ if (regex.test(file)) return false;
384
+ } else if (file.includes(pattern)) {
385
+ return false;
386
+ }
387
+ }
388
+ return true;
389
+ });
390
+ }
391
+ }
392
+ function createAutoCommit(config = {}) {
393
+ return new AutoCommit(config);
394
+ }
395
+ export {
396
+ AutoCommit,
397
+ createAutoCommit
398
+ };
399
+ //# sourceMappingURL=auto-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-commit.js","sources":["../../src/integrations/auto-commit.ts"],"sourcesContent":["/**\n * Auto-Commit Integration\n *\n * Provides automatic commit functionality with intelligent message generation\n * based on knowledge graph changes and file modifications.\n *\n * @module integrations/auto-commit\n */\n\nimport { GitClient, GitStatusSummary, GitDiffSummary, createGitClient } from './git.js';\nimport { createLogger, Logger, KnowledgeGraphError, ErrorCategory, ErrorSeverity } from '../utils/index.js';\n\n/**\n * Auto-commit configuration\n */\nexport interface AutoCommitConfig {\n /** Git client instance (created if not provided) */\n gitClient?: GitClient;\n /** Logger instance */\n logger?: Logger;\n /** Working directory */\n workingDirectory?: string;\n /** Prefix for auto-generated commit messages */\n messagePrefix?: string;\n /** Whether to include file list in commit message */\n includeFileList?: boolean;\n /** Maximum number of files to list in commit message */\n maxFilesInMessage?: number;\n /** Custom commit message template */\n messageTemplate?: string;\n /** Whether to stage all changes before commit */\n stageAll?: boolean;\n /** Files or patterns to always exclude */\n excludePatterns?: string[];\n}\n\n/**\n * Change type categories\n */\nexport enum ChangeType {\n ADD = 'add',\n UPDATE = 'update',\n DELETE = 'delete',\n RENAME = 'rename',\n REFACTOR = 'refactor',\n FIX = 'fix',\n DOCS = 'docs',\n CONFIG = 'config',\n STYLE = 'style',\n TEST = 'test',\n BUILD = 'build',\n CHORE = 'chore',\n}\n\n/**\n * Analyzed change information\n */\nexport interface ChangeAnalysis {\n /** Primary change type */\n type: ChangeType;\n /** Affected scope (e.g., component name) */\n scope?: string;\n /** Brief description of changes */\n description: string;\n /** Whether this is a breaking change */\n breaking: boolean;\n /** Files involved in this change */\n files: string[];\n /** Additional context */\n context?: Record<string, unknown>;\n}\n\n/**\n * Commit decision result\n */\nexport interface CommitDecision {\n /** Whether to proceed with commit */\n shouldCommit: boolean;\n /** Reason for the decision */\n reason: string;\n /** Suggested commit message if should commit */\n suggestedMessage?: string;\n /** Analysis of changes */\n analysis?: ChangeAnalysis;\n}\n\n/**\n * Auto-commit result\n */\nexport interface AutoCommitResult {\n /** Whether the commit was successful */\n success: boolean;\n /** Commit hash if successful */\n hash?: string;\n /** Generated commit message */\n message?: string;\n /** Error message if failed */\n error?: string;\n /** Change analysis */\n analysis?: ChangeAnalysis;\n}\n\n/**\n * Auto-commit error\n */\nexport class AutoCommitError extends KnowledgeGraphError {\n constructor(message: string) {\n super(message, {\n category: ErrorCategory.RESOURCE,\n severity: ErrorSeverity.ERROR,\n retryable: false,\n code: 'AUTO_COMMIT_ERROR',\n });\n this.name = 'AutoCommitError';\n }\n}\n\n/**\n * File extension to change type mapping\n */\nconst FILE_TYPE_MAPPINGS: Record<string, ChangeType> = {\n // Documentation\n '.md': ChangeType.DOCS,\n '.mdx': ChangeType.DOCS,\n '.txt': ChangeType.DOCS,\n '.rst': ChangeType.DOCS,\n\n // Configuration\n '.json': ChangeType.CONFIG,\n '.yaml': ChangeType.CONFIG,\n '.yml': ChangeType.CONFIG,\n '.toml': ChangeType.CONFIG,\n '.ini': ChangeType.CONFIG,\n '.env': ChangeType.CONFIG,\n '.config': ChangeType.CONFIG,\n\n // Tests\n '.test.ts': ChangeType.TEST,\n '.test.js': ChangeType.TEST,\n '.spec.ts': ChangeType.TEST,\n '.spec.js': ChangeType.TEST,\n\n // Build\n '.dockerfile': ChangeType.BUILD,\n '.dockerignore': ChangeType.BUILD,\n\n // Style\n '.css': ChangeType.STYLE,\n '.scss': ChangeType.STYLE,\n '.sass': ChangeType.STYLE,\n '.less': ChangeType.STYLE,\n};\n\n/**\n * Directory to scope mapping\n */\nconst DIRECTORY_SCOPE_MAPPINGS: Record<string, string> = {\n 'src/cli': 'cli',\n 'src/core': 'core',\n 'src/utils': 'utils',\n 'src/integrations': 'integrations',\n 'src/templates': 'templates',\n 'tests': 'test',\n 'docs': 'docs',\n 'scripts': 'scripts',\n};\n\n/**\n * AutoCommit Class\n *\n * Provides intelligent auto-commit functionality with smart message generation.\n */\nexport class AutoCommit {\n private git: GitClient;\n private logger: Logger;\n private config: Required<AutoCommitConfig>;\n\n constructor(config: AutoCommitConfig = {}) {\n this.config = {\n gitClient: config.gitClient || createGitClient({ workingDirectory: config.workingDirectory }),\n logger: config.logger || createLogger('auto-commit'),\n workingDirectory: config.workingDirectory || process.cwd(),\n messagePrefix: config.messagePrefix || '',\n includeFileList: config.includeFileList ?? true,\n maxFilesInMessage: config.maxFilesInMessage ?? 5,\n messageTemplate: config.messageTemplate || '{type}{scope}: {description}',\n stageAll: config.stageAll ?? false,\n excludePatterns: config.excludePatterns || ['.env', '.env.local', '*.log', 'node_modules'],\n };\n\n this.git = this.config.gitClient;\n this.logger = this.config.logger;\n }\n\n /**\n * Analyze changes and determine the appropriate change type\n */\n async analyzeChanges(status?: GitStatusSummary): Promise<ChangeAnalysis> {\n const currentStatus = status || await this.git.getStatus();\n const files = currentStatus.files.map(f => f.path);\n\n if (files.length === 0) {\n return {\n type: ChangeType.CHORE,\n description: 'no changes detected',\n breaking: false,\n files: [],\n };\n }\n\n // Analyze file types and determine primary change type\n const typeScores: Record<ChangeType, number> = {} as Record<ChangeType, number>;\n const scopes: string[] = [];\n\n for (const file of files) {\n const fileType = this.getFileChangeType(file);\n typeScores[fileType] = (typeScores[fileType] || 0) + 1;\n\n const scope = this.getFileScope(file);\n if (scope && !scopes.includes(scope)) {\n scopes.push(scope);\n }\n }\n\n // Determine primary type by highest score\n let primaryType = ChangeType.UPDATE;\n let maxScore = 0;\n\n for (const [type, score] of Object.entries(typeScores)) {\n if (score > maxScore) {\n maxScore = score;\n primaryType = type as ChangeType;\n }\n }\n\n // Check for additions/deletions\n const addedFiles = currentStatus.files.filter(f => f.indexStatus === 'A' || f.workingTreeStatus === '?');\n const deletedFiles = currentStatus.files.filter(f => f.indexStatus === 'D' || f.workingTreeStatus === 'D');\n\n if (addedFiles.length > deletedFiles.length && addedFiles.length > currentStatus.modified) {\n primaryType = ChangeType.ADD;\n } else if (deletedFiles.length > addedFiles.length && deletedFiles.length > currentStatus.modified) {\n primaryType = ChangeType.DELETE;\n }\n\n // Generate description based on changes\n const description = this.generateDescription(files, primaryType, currentStatus);\n\n // Determine scope\n const scope = scopes.length === 1 ? scopes[0] : (scopes.length > 1 ? scopes.slice(0, 2).join(',') : undefined);\n\n return {\n type: primaryType,\n scope,\n description,\n breaking: false,\n files,\n context: {\n staged: currentStatus.staged,\n modified: currentStatus.modified,\n untracked: currentStatus.untracked,\n deleted: currentStatus.deleted,\n },\n };\n }\n\n /**\n * Generate a commit message based on analysis\n */\n generateCommitMessage(analysis: ChangeAnalysis): string {\n const { type, scope, description, breaking, files } = analysis;\n\n // Build the main message\n let message = this.config.messageTemplate\n .replace('{type}', type)\n .replace('{scope}', scope ? `(${scope})` : '')\n .replace('{description}', description);\n\n // Add prefix if configured\n if (this.config.messagePrefix) {\n message = `${this.config.messagePrefix} ${message}`;\n }\n\n // Add breaking change indicator\n if (breaking) {\n message = message.replace(':', '!:');\n }\n\n // Add file list if configured\n if (this.config.includeFileList && files.length > 0) {\n const fileList = files.slice(0, this.config.maxFilesInMessage);\n const remaining = files.length - fileList.length;\n\n message += '\\n\\nFiles:\\n';\n message += fileList.map(f => `- ${f}`).join('\\n');\n\n if (remaining > 0) {\n message += `\\n- ... and ${remaining} more files`;\n }\n }\n\n return message;\n }\n\n /**\n * Determine if changes should be committed\n */\n async shouldCommit(options: {\n minFiles?: number;\n minChanges?: number;\n excludeTypes?: ChangeType[];\n } = {}): Promise<CommitDecision> {\n const minFiles = options.minFiles ?? 1;\n const minChanges = options.minChanges ?? 1;\n const excludeTypes = options.excludeTypes ?? [];\n\n try {\n const status = await this.git.getStatus();\n\n // Check if there are any changes\n if (status.isClean) {\n return {\n shouldCommit: false,\n reason: 'No changes to commit',\n };\n }\n\n // Check minimum file threshold\n if (status.files.length < minFiles) {\n return {\n shouldCommit: false,\n reason: `Not enough files changed (${status.files.length} < ${minFiles})`,\n };\n }\n\n // Analyze changes\n const analysis = await this.analyzeChanges(status);\n\n // Check excluded types\n if (excludeTypes.includes(analysis.type)) {\n return {\n shouldCommit: false,\n reason: `Change type \"${analysis.type}\" is excluded`,\n analysis,\n };\n }\n\n // Check for excluded patterns\n const filteredFiles = this.filterExcludedFiles(status.files.map(f => f.path));\n if (filteredFiles.length === 0) {\n return {\n shouldCommit: false,\n reason: 'All changes match exclude patterns',\n analysis,\n };\n }\n\n // Get diff to check change volume\n const diff = await this.git.getDiff();\n const totalChanges = diff.insertions + diff.deletions;\n\n if (totalChanges < minChanges) {\n return {\n shouldCommit: false,\n reason: `Not enough changes (${totalChanges} < ${minChanges})`,\n analysis,\n };\n }\n\n // Generate suggested message\n const suggestedMessage = this.generateCommitMessage(analysis);\n\n return {\n shouldCommit: true,\n reason: `${status.files.length} files changed with ${totalChanges} line changes`,\n suggestedMessage,\n analysis,\n };\n } catch (error) {\n return {\n shouldCommit: false,\n reason: `Error analyzing changes: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n /**\n * Perform an auto-commit\n */\n async commit(options: {\n message?: string;\n stageAll?: boolean;\n files?: string[];\n dryRun?: boolean;\n } = {}): Promise<AutoCommitResult> {\n try {\n const stageAll = options.stageAll ?? this.config.stageAll;\n\n // Stage files if requested\n if (stageAll) {\n await this.git.add('.');\n } else if (options.files && options.files.length > 0) {\n await this.git.add(options.files);\n }\n\n // Get current status and analyze\n const status = await this.git.getStatus();\n const analysis = await this.analyzeChanges(status);\n\n // Generate or use provided message\n const message = options.message || this.generateCommitMessage(analysis);\n\n // Check if it's a dry run\n if (options.dryRun) {\n this.logger.info('Dry run - would commit with message:', { message });\n return {\n success: true,\n message,\n analysis,\n };\n }\n\n // Perform the commit\n const result = await this.git.commit({ message });\n\n if (result.success) {\n this.logger.info('Auto-commit successful', {\n hash: result.hash,\n message,\n });\n\n return {\n success: true,\n hash: result.hash,\n message,\n analysis,\n };\n }\n\n return {\n success: false,\n error: result.error,\n message,\n analysis,\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.logger.error('Auto-commit failed', new Error(errorMessage));\n\n return {\n success: false,\n error: errorMessage,\n };\n }\n }\n\n /**\n * Smart commit with knowledge graph awareness\n */\n async smartCommit(options: {\n knowledgeGraphChanges?: {\n nodesAdded?: number;\n nodesUpdated?: number;\n nodesDeleted?: number;\n linksChanged?: number;\n };\n additionalContext?: Record<string, unknown>;\n dryRun?: boolean;\n } = {}): Promise<AutoCommitResult> {\n const decision = await this.shouldCommit();\n\n if (!decision.shouldCommit) {\n return {\n success: false,\n error: decision.reason,\n };\n }\n\n let message = decision.suggestedMessage || '';\n\n // Enhance message with knowledge graph context if provided\n if (options.knowledgeGraphChanges) {\n const { nodesAdded, nodesUpdated, nodesDeleted, linksChanged } = options.knowledgeGraphChanges;\n const kgChanges: string[] = [];\n\n if (nodesAdded) kgChanges.push(`${nodesAdded} nodes added`);\n if (nodesUpdated) kgChanges.push(`${nodesUpdated} nodes updated`);\n if (nodesDeleted) kgChanges.push(`${nodesDeleted} nodes deleted`);\n if (linksChanged) kgChanges.push(`${linksChanged} links changed`);\n\n if (kgChanges.length > 0) {\n message += `\\n\\nKnowledge Graph:\\n- ${kgChanges.join('\\n- ')}`;\n }\n }\n\n // Add additional context\n if (options.additionalContext) {\n message += `\\n\\nContext:\\n${JSON.stringify(options.additionalContext, null, 2)}`;\n }\n\n return this.commit({\n message,\n stageAll: true,\n dryRun: options.dryRun,\n });\n }\n\n /**\n * Get file change type based on path and extension\n */\n private getFileChangeType(filePath: string): ChangeType {\n const lowerPath = filePath.toLowerCase();\n\n // Check for test files first (more specific patterns)\n if (lowerPath.includes('.test.') || lowerPath.includes('.spec.') || lowerPath.includes('/tests/')) {\n return ChangeType.TEST;\n }\n\n // Check for build files\n if (lowerPath.includes('dockerfile') || lowerPath.includes('makefile') || lowerPath.includes('.github/workflows')) {\n return ChangeType.BUILD;\n }\n\n // Check extension mappings\n for (const [ext, type] of Object.entries(FILE_TYPE_MAPPINGS)) {\n if (lowerPath.endsWith(ext)) {\n return type;\n }\n }\n\n // Check for config files by name\n if (lowerPath.includes('config') || lowerPath.includes('settings')) {\n return ChangeType.CONFIG;\n }\n\n // Default to update for code changes\n return ChangeType.UPDATE;\n }\n\n /**\n * Get scope from file path\n */\n private getFileScope(filePath: string): string | undefined {\n for (const [dir, scope] of Object.entries(DIRECTORY_SCOPE_MAPPINGS)) {\n if (filePath.startsWith(dir) || filePath.includes(`/${dir}/`)) {\n return scope;\n }\n }\n\n // Extract from path structure\n const parts = filePath.split('/');\n if (parts.length > 2 && parts[0] === 'src') {\n return parts[1];\n }\n\n return undefined;\n }\n\n /**\n * Generate description based on files and type\n */\n private generateDescription(files: string[], type: ChangeType, status: GitStatusSummary): string {\n // Single file - use file name\n if (files.length === 1) {\n const fileName = files[0].split('/').pop() || files[0];\n return `${this.getTypeVerb(type)} ${fileName}`;\n }\n\n // Multiple files - summarize\n const extensions = new Set(files.map(f => {\n const ext = f.split('.').pop();\n return ext ? `.${ext}` : '';\n }));\n\n if (extensions.size === 1 && extensions.has('.md')) {\n return `${this.getTypeVerb(type)} documentation`;\n }\n\n if (extensions.size === 1 && (extensions.has('.ts') || extensions.has('.js'))) {\n return `${this.getTypeVerb(type)} source files`;\n }\n\n return `${this.getTypeVerb(type)} ${files.length} files`;\n }\n\n /**\n * Get verb for change type\n */\n private getTypeVerb(type: ChangeType): string {\n switch (type) {\n case ChangeType.ADD:\n return 'add';\n case ChangeType.DELETE:\n return 'remove';\n case ChangeType.UPDATE:\n return 'update';\n case ChangeType.REFACTOR:\n return 'refactor';\n case ChangeType.FIX:\n return 'fix';\n case ChangeType.DOCS:\n return 'document';\n case ChangeType.CONFIG:\n return 'configure';\n case ChangeType.STYLE:\n return 'style';\n case ChangeType.TEST:\n return 'test';\n case ChangeType.BUILD:\n return 'build';\n case ChangeType.CHORE:\n return 'chore';\n default:\n return 'update';\n }\n }\n\n /**\n * Filter out excluded files\n */\n private filterExcludedFiles(files: string[]): string[] {\n return files.filter(file => {\n for (const pattern of this.config.excludePatterns) {\n // Simple pattern matching\n if (pattern.includes('*')) {\n const regex = new RegExp(pattern.replace(/\\*/g, '.*'));\n if (regex.test(file)) return false;\n } else if (file.includes(pattern)) {\n return false;\n }\n }\n return true;\n });\n }\n}\n\n/**\n * Create an AutoCommit instance\n */\nexport function createAutoCommit(config: AutoCommitConfig = {}): AutoCommit {\n return new AutoCommit(config);\n}\n"],"names":["scope"],"mappings":";;AAwHA,MAAM,qBAAiD;AAAA;AAAA,EAErD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA;AAAA,EAGR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA;AAAA,EAGX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAGZ,eAAe;AAAA,EACf,iBAAiB;AAAA;AAAA,EAGjB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA;AACX;AAKA,MAAM,2BAAmD;AAAA,EACvD,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AACb;AAOO,MAAM,WAAW;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAA2B,IAAI;AACzC,SAAK,SAAS;AAAA,MACZ,WAAW,OAAO,aAAa,gBAAgB,EAAE,kBAAkB,OAAO,kBAAkB;AAAA,MAC5F,QAAQ,OAAO,UAAU,aAAa,aAAa;AAAA,MACnD,kBAAkB,OAAO,oBAAoB,QAAQ,IAAA;AAAA,MACrD,eAAe,OAAO,iBAAiB;AAAA,MACvC,iBAAiB,OAAO,mBAAmB;AAAA,MAC3C,mBAAmB,OAAO,qBAAqB;AAAA,MAC/C,iBAAiB,OAAO,mBAAmB;AAAA,MAC3C,UAAU,OAAO,YAAY;AAAA,MAC7B,iBAAiB,OAAO,mBAAmB,CAAC,QAAQ,cAAc,SAAS,cAAc;AAAA,IAAA;AAG3F,SAAK,MAAM,KAAK,OAAO;AACvB,SAAK,SAAS,KAAK,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,QAAoD;AACvE,UAAM,gBAAgB,UAAU,MAAM,KAAK,IAAI,UAAA;AAC/C,UAAM,QAAQ,cAAc,MAAM,IAAI,CAAA,MAAK,EAAE,IAAI;AAEjD,QAAI,MAAM,WAAW,GAAG;AACtB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,aAAa;AAAA,QACb,UAAU;AAAA,QACV,OAAO,CAAA;AAAA,MAAC;AAAA,IAEZ;AAGA,UAAM,aAAyC,CAAA;AAC/C,UAAM,SAAmB,CAAA;AAEzB,eAAW,QAAQ,OAAO;AACxB,YAAM,WAAW,KAAK,kBAAkB,IAAI;AAC5C,iBAAW,QAAQ,KAAK,WAAW,QAAQ,KAAK,KAAK;AAErD,YAAMA,SAAQ,KAAK,aAAa,IAAI;AACpC,UAAIA,UAAS,CAAC,OAAO,SAASA,MAAK,GAAG;AACpC,eAAO,KAAKA,MAAK;AAAA,MACnB;AAAA,IACF;AAGA,QAAI,cAAc;AAClB,QAAI,WAAW;AAEf,eAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACtD,UAAI,QAAQ,UAAU;AACpB,mBAAW;AACX,sBAAc;AAAA,MAChB;AAAA,IACF;AAGA,UAAM,aAAa,cAAc,MAAM,OAAO,CAAA,MAAK,EAAE,gBAAgB,OAAO,EAAE,sBAAsB,GAAG;AACvG,UAAM,eAAe,cAAc,MAAM,OAAO,CAAA,MAAK,EAAE,gBAAgB,OAAO,EAAE,sBAAsB,GAAG;AAEzG,QAAI,WAAW,SAAS,aAAa,UAAU,WAAW,SAAS,cAAc,UAAU;AACzF,oBAAc;AAAA,IAChB,WAAW,aAAa,SAAS,WAAW,UAAU,aAAa,SAAS,cAAc,UAAU;AAClG,oBAAc;AAAA,IAChB;AAGA,UAAM,cAAc,KAAK,oBAAoB,OAAO,aAAa,aAAa;AAG9E,UAAM,QAAQ,OAAO,WAAW,IAAI,OAAO,CAAC,IAAK,OAAO,SAAS,IAAI,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI;AAEpG,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,QACP,QAAQ,cAAc;AAAA,QACtB,UAAU,cAAc;AAAA,QACxB,WAAW,cAAc;AAAA,QACzB,SAAS,cAAc;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAsB,UAAkC;AACtD,UAAM,EAAE,MAAM,OAAO,aAAa,UAAU,UAAU;AAGtD,QAAI,UAAU,KAAK,OAAO,gBACvB,QAAQ,UAAU,IAAI,EACtB,QAAQ,WAAW,QAAQ,IAAI,KAAK,MAAM,EAAE,EAC5C,QAAQ,iBAAiB,WAAW;AAGvC,QAAI,KAAK,OAAO,eAAe;AAC7B,gBAAU,GAAG,KAAK,OAAO,aAAa,IAAI,OAAO;AAAA,IACnD;AAGA,QAAI,UAAU;AACZ,gBAAU,QAAQ,QAAQ,KAAK,IAAI;AAAA,IACrC;AAGA,QAAI,KAAK,OAAO,mBAAmB,MAAM,SAAS,GAAG;AACnD,YAAM,WAAW,MAAM,MAAM,GAAG,KAAK,OAAO,iBAAiB;AAC7D,YAAM,YAAY,MAAM,SAAS,SAAS;AAE1C,iBAAW;AACX,iBAAW,SAAS,IAAI,CAAA,MAAK,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI;AAEhD,UAAI,YAAY,GAAG;AACjB,mBAAW;AAAA,YAAe,SAAS;AAAA,MACrC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,UAIf,IAA6B;AAC/B,UAAM,WAAW,QAAQ,YAAY;AACrC,UAAM,aAAa,QAAQ,cAAc;AACzC,UAAM,eAAe,QAAQ,gBAAgB,CAAA;AAE7C,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,IAAI,UAAA;AAG9B,UAAI,OAAO,SAAS;AAClB,eAAO;AAAA,UACL,cAAc;AAAA,UACd,QAAQ;AAAA,QAAA;AAAA,MAEZ;AAGA,UAAI,OAAO,MAAM,SAAS,UAAU;AAClC,eAAO;AAAA,UACL,cAAc;AAAA,UACd,QAAQ,6BAA6B,OAAO,MAAM,MAAM,MAAM,QAAQ;AAAA,QAAA;AAAA,MAE1E;AAGA,YAAM,WAAW,MAAM,KAAK,eAAe,MAAM;AAGjD,UAAI,aAAa,SAAS,SAAS,IAAI,GAAG;AACxC,eAAO;AAAA,UACL,cAAc;AAAA,UACd,QAAQ,gBAAgB,SAAS,IAAI;AAAA,UACrC;AAAA,QAAA;AAAA,MAEJ;AAGA,YAAM,gBAAgB,KAAK,oBAAoB,OAAO,MAAM,IAAI,CAAA,MAAK,EAAE,IAAI,CAAC;AAC5E,UAAI,cAAc,WAAW,GAAG;AAC9B,eAAO;AAAA,UACL,cAAc;AAAA,UACd,QAAQ;AAAA,UACR;AAAA,QAAA;AAAA,MAEJ;AAGA,YAAM,OAAO,MAAM,KAAK,IAAI,QAAA;AAC5B,YAAM,eAAe,KAAK,aAAa,KAAK;AAE5C,UAAI,eAAe,YAAY;AAC7B,eAAO;AAAA,UACL,cAAc;AAAA,UACd,QAAQ,uBAAuB,YAAY,MAAM,UAAU;AAAA,UAC3D;AAAA,QAAA;AAAA,MAEJ;AAGA,YAAM,mBAAmB,KAAK,sBAAsB,QAAQ;AAE5D,aAAO;AAAA,QACL,cAAc;AAAA,QACd,QAAQ,GAAG,OAAO,MAAM,MAAM,uBAAuB,YAAY;AAAA,QACjE;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,SAAS,OAAO;AACd,aAAO;AAAA,QACL,cAAc;AAAA,QACd,QAAQ,4BAA4B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAAA;AAAA,IAE9F;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,UAKT,IAA+B;AACjC,QAAI;AACF,YAAM,WAAW,QAAQ,YAAY,KAAK,OAAO;AAGjD,UAAI,UAAU;AACZ,cAAM,KAAK,IAAI,IAAI,GAAG;AAAA,MACxB,WAAW,QAAQ,SAAS,QAAQ,MAAM,SAAS,GAAG;AACpD,cAAM,KAAK,IAAI,IAAI,QAAQ,KAAK;AAAA,MAClC;AAGA,YAAM,SAAS,MAAM,KAAK,IAAI,UAAA;AAC9B,YAAM,WAAW,MAAM,KAAK,eAAe,MAAM;AAGjD,YAAM,UAAU,QAAQ,WAAW,KAAK,sBAAsB,QAAQ;AAGtE,UAAI,QAAQ,QAAQ;AAClB,aAAK,OAAO,KAAK,wCAAwC,EAAE,SAAS;AACpE,eAAO;AAAA,UACL,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAGA,YAAM,SAAS,MAAM,KAAK,IAAI,OAAO,EAAE,SAAS;AAEhD,UAAI,OAAO,SAAS;AAClB,aAAK,OAAO,KAAK,0BAA0B;AAAA,UACzC,MAAM,OAAO;AAAA,UACb;AAAA,QAAA,CACD;AAED,eAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM,OAAO;AAAA,UACb;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAEA,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,OAAO;AAAA,QACd;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,SAAS,OAAO;AACd,YAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC1E,WAAK,OAAO,MAAM,sBAAsB,IAAI,MAAM,YAAY,CAAC;AAE/D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IAEX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,UASd,IAA+B;AACjC,UAAM,WAAW,MAAM,KAAK,aAAA;AAE5B,QAAI,CAAC,SAAS,cAAc;AAC1B,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,SAAS;AAAA,MAAA;AAAA,IAEpB;AAEA,QAAI,UAAU,SAAS,oBAAoB;AAG3C,QAAI,QAAQ,uBAAuB;AACjC,YAAM,EAAE,YAAY,cAAc,cAAc,aAAA,IAAiB,QAAQ;AACzE,YAAM,YAAsB,CAAA;AAE5B,UAAI,WAAY,WAAU,KAAK,GAAG,UAAU,cAAc;AAC1D,UAAI,aAAc,WAAU,KAAK,GAAG,YAAY,gBAAgB;AAChE,UAAI,aAAc,WAAU,KAAK,GAAG,YAAY,gBAAgB;AAChE,UAAI,aAAc,WAAU,KAAK,GAAG,YAAY,gBAAgB;AAEhE,UAAI,UAAU,SAAS,GAAG;AACxB,mBAAW;AAAA;AAAA;AAAA,IAA2B,UAAU,KAAK,MAAM,CAAC;AAAA,MAC9D;AAAA,IACF;AAGA,QAAI,QAAQ,mBAAmB;AAC7B,iBAAW;AAAA;AAAA;AAAA,EAAiB,KAAK,UAAU,QAAQ,mBAAmB,MAAM,CAAC,CAAC;AAAA,IAChF;AAEA,WAAO,KAAK,OAAO;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,MACV,QAAQ,QAAQ;AAAA,IAAA,CACjB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAAkB,UAA8B;AACtD,UAAM,YAAY,SAAS,YAAA;AAG3B,QAAI,UAAU,SAAS,QAAQ,KAAK,UAAU,SAAS,QAAQ,KAAK,UAAU,SAAS,SAAS,GAAG;AACjG,aAAO;AAAA,IACT;AAGA,QAAI,UAAU,SAAS,YAAY,KAAK,UAAU,SAAS,UAAU,KAAK,UAAU,SAAS,mBAAmB,GAAG;AACjH,aAAO;AAAA,IACT;AAGA,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,kBAAkB,GAAG;AAC5D,UAAI,UAAU,SAAS,GAAG,GAAG;AAC3B,eAAO;AAAA,MACT;AAAA,IACF;AAGA,QAAI,UAAU,SAAS,QAAQ,KAAK,UAAU,SAAS,UAAU,GAAG;AAClE,aAAO;AAAA,IACT;AAGA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,aAAa,UAAsC;AACzD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,wBAAwB,GAAG;AACnE,UAAI,SAAS,WAAW,GAAG,KAAK,SAAS,SAAS,IAAI,GAAG,GAAG,GAAG;AAC7D,eAAO;AAAA,MACT;AAAA,IACF;AAGA,UAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,QAAI,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,OAAO;AAC1C,aAAO,MAAM,CAAC;AAAA,IAChB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB,OAAiB,MAAkB,QAAkC;AAE/F,QAAI,MAAM,WAAW,GAAG;AACtB,YAAM,WAAW,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAA,KAAS,MAAM,CAAC;AACrD,aAAO,GAAG,KAAK,YAAY,IAAI,CAAC,IAAI,QAAQ;AAAA,IAC9C;AAGA,UAAM,aAAa,IAAI,IAAI,MAAM,IAAI,CAAA,MAAK;AACxC,YAAM,MAAM,EAAE,MAAM,GAAG,EAAE,IAAA;AACzB,aAAO,MAAM,IAAI,GAAG,KAAK;AAAA,IAC3B,CAAC,CAAC;AAEF,QAAI,WAAW,SAAS,KAAK,WAAW,IAAI,KAAK,GAAG;AAClD,aAAO,GAAG,KAAK,YAAY,IAAI,CAAC;AAAA,IAClC;AAEA,QAAI,WAAW,SAAS,MAAM,WAAW,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,IAAI;AAC7E,aAAO,GAAG,KAAK,YAAY,IAAI,CAAC;AAAA,IAClC;AAEA,WAAO,GAAG,KAAK,YAAY,IAAI,CAAC,IAAI,MAAM,MAAM;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,YAAY,MAA0B;AAC5C,YAAQ,MAAA;AAAA,MACN,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB,OAA2B;AACrD,WAAO,MAAM,OAAO,CAAA,SAAQ;AAC1B,iBAAW,WAAW,KAAK,OAAO,iBAAiB;AAEjD,YAAI,QAAQ,SAAS,GAAG,GAAG;AACzB,gBAAM,QAAQ,IAAI,OAAO,QAAQ,QAAQ,OAAO,IAAI,CAAC;AACrD,cAAI,MAAM,KAAK,IAAI,EAAG,QAAO;AAAA,QAC/B,WAAW,KAAK,SAAS,OAAO,GAAG;AACjC,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAKO,SAAS,iBAAiB,SAA2B,IAAgB;AAC1E,SAAO,IAAI,WAAW,MAAM;AAC9B;"}