@weavelogic/knowledge-graph-agent 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. package/README.md +686 -304
  2. package/dist/_virtual/_commonjsHelpers.js +7 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/additionalItems.js +5 -0
  5. package/dist/_virtual/additionalItems.js.map +1 -0
  6. package/dist/_virtual/additionalProperties.js +5 -0
  7. package/dist/_virtual/additionalProperties.js.map +1 -0
  8. package/dist/_virtual/ajv.js +6 -0
  9. package/dist/_virtual/ajv.js.map +1 -0
  10. package/dist/_virtual/ajv2.js +5 -0
  11. package/dist/_virtual/ajv2.js.map +1 -0
  12. package/dist/_virtual/allOf.js +5 -0
  13. package/dist/_virtual/allOf.js.map +1 -0
  14. package/dist/_virtual/anyOf.js +5 -0
  15. package/dist/_virtual/anyOf.js.map +1 -0
  16. package/dist/_virtual/applicability.js +5 -0
  17. package/dist/_virtual/applicability.js.map +1 -0
  18. package/dist/_virtual/boolSchema.js +5 -0
  19. package/dist/_virtual/boolSchema.js.map +1 -0
  20. package/dist/_virtual/code.js +5 -0
  21. package/dist/_virtual/code.js.map +1 -0
  22. package/dist/_virtual/code2.js +5 -0
  23. package/dist/_virtual/code2.js.map +1 -0
  24. package/dist/_virtual/const.js +5 -0
  25. package/dist/_virtual/const.js.map +1 -0
  26. package/dist/_virtual/contains.js +5 -0
  27. package/dist/_virtual/contains.js.map +1 -0
  28. package/dist/_virtual/core.js +5 -0
  29. package/dist/_virtual/core.js.map +1 -0
  30. package/dist/_virtual/dataType.js +5 -0
  31. package/dist/_virtual/dataType.js.map +1 -0
  32. package/dist/_virtual/defaults.js +5 -0
  33. package/dist/_virtual/defaults.js.map +1 -0
  34. package/dist/_virtual/dependencies.js +5 -0
  35. package/dist/_virtual/dependencies.js.map +1 -0
  36. package/dist/_virtual/draft7.js +5 -0
  37. package/dist/_virtual/draft7.js.map +1 -0
  38. package/dist/_virtual/enum.js +5 -0
  39. package/dist/_virtual/enum.js.map +1 -0
  40. package/dist/_virtual/equal.js +5 -0
  41. package/dist/_virtual/equal.js.map +1 -0
  42. package/dist/_virtual/errors.js +5 -0
  43. package/dist/_virtual/errors.js.map +1 -0
  44. package/dist/_virtual/format.js +5 -0
  45. package/dist/_virtual/format.js.map +1 -0
  46. package/dist/_virtual/formats.js +5 -0
  47. package/dist/_virtual/formats.js.map +1 -0
  48. package/dist/_virtual/id.js +5 -0
  49. package/dist/_virtual/id.js.map +1 -0
  50. package/dist/_virtual/if.js +5 -0
  51. package/dist/_virtual/if.js.map +1 -0
  52. package/dist/_virtual/index.js +8 -0
  53. package/dist/_virtual/index.js.map +1 -0
  54. package/dist/_virtual/index10.js +5 -0
  55. package/dist/_virtual/index10.js.map +1 -0
  56. package/dist/_virtual/index11.js +5 -0
  57. package/dist/_virtual/index11.js.map +1 -0
  58. package/dist/_virtual/index12.js +5 -0
  59. package/dist/_virtual/index12.js.map +1 -0
  60. package/dist/_virtual/index2.js +5 -0
  61. package/dist/_virtual/index2.js.map +1 -0
  62. package/dist/_virtual/index3.js +5 -0
  63. package/dist/_virtual/index3.js.map +1 -0
  64. package/dist/_virtual/index4.js +5 -0
  65. package/dist/_virtual/index4.js.map +1 -0
  66. package/dist/_virtual/index5.js +5 -0
  67. package/dist/_virtual/index5.js.map +1 -0
  68. package/dist/_virtual/index6.js +5 -0
  69. package/dist/_virtual/index6.js.map +1 -0
  70. package/dist/_virtual/index7.js +5 -0
  71. package/dist/_virtual/index7.js.map +1 -0
  72. package/dist/_virtual/index8.js +5 -0
  73. package/dist/_virtual/index8.js.map +1 -0
  74. package/dist/_virtual/index9.js +5 -0
  75. package/dist/_virtual/index9.js.map +1 -0
  76. package/dist/_virtual/items.js +5 -0
  77. package/dist/_virtual/items.js.map +1 -0
  78. package/dist/_virtual/items2020.js +5 -0
  79. package/dist/_virtual/items2020.js.map +1 -0
  80. package/dist/_virtual/keyword.js +5 -0
  81. package/dist/_virtual/keyword.js.map +1 -0
  82. package/dist/_virtual/limit.js +5 -0
  83. package/dist/_virtual/limit.js.map +1 -0
  84. package/dist/_virtual/limitItems.js +5 -0
  85. package/dist/_virtual/limitItems.js.map +1 -0
  86. package/dist/_virtual/limitLength.js +5 -0
  87. package/dist/_virtual/limitLength.js.map +1 -0
  88. package/dist/_virtual/limitNumber.js +5 -0
  89. package/dist/_virtual/limitNumber.js.map +1 -0
  90. package/dist/_virtual/limitProperties.js +5 -0
  91. package/dist/_virtual/limitProperties.js.map +1 -0
  92. package/dist/_virtual/metadata.js +5 -0
  93. package/dist/_virtual/metadata.js.map +1 -0
  94. package/dist/_virtual/multipleOf.js +5 -0
  95. package/dist/_virtual/multipleOf.js.map +1 -0
  96. package/dist/_virtual/names.js +5 -0
  97. package/dist/_virtual/names.js.map +1 -0
  98. package/dist/_virtual/not.js +5 -0
  99. package/dist/_virtual/not.js.map +1 -0
  100. package/dist/_virtual/oneOf.js +5 -0
  101. package/dist/_virtual/oneOf.js.map +1 -0
  102. package/dist/_virtual/pattern.js +5 -0
  103. package/dist/_virtual/pattern.js.map +1 -0
  104. package/dist/_virtual/patternProperties.js +5 -0
  105. package/dist/_virtual/patternProperties.js.map +1 -0
  106. package/dist/_virtual/prefixItems.js +5 -0
  107. package/dist/_virtual/prefixItems.js.map +1 -0
  108. package/dist/_virtual/properties.js +5 -0
  109. package/dist/_virtual/properties.js.map +1 -0
  110. package/dist/_virtual/propertyNames.js +5 -0
  111. package/dist/_virtual/propertyNames.js.map +1 -0
  112. package/dist/_virtual/ref.js +5 -0
  113. package/dist/_virtual/ref.js.map +1 -0
  114. package/dist/_virtual/ref_error.js +5 -0
  115. package/dist/_virtual/ref_error.js.map +1 -0
  116. package/dist/_virtual/required.js +5 -0
  117. package/dist/_virtual/required.js.map +1 -0
  118. package/dist/_virtual/resolve.js +5 -0
  119. package/dist/_virtual/resolve.js.map +1 -0
  120. package/dist/_virtual/rules.js +5 -0
  121. package/dist/_virtual/rules.js.map +1 -0
  122. package/dist/_virtual/scope.js +5 -0
  123. package/dist/_virtual/scope.js.map +1 -0
  124. package/dist/_virtual/subschema.js +5 -0
  125. package/dist/_virtual/subschema.js.map +1 -0
  126. package/dist/_virtual/thenElse.js +5 -0
  127. package/dist/_virtual/thenElse.js.map +1 -0
  128. package/dist/_virtual/types.js +5 -0
  129. package/dist/_virtual/types.js.map +1 -0
  130. package/dist/_virtual/ucs2length.js +5 -0
  131. package/dist/_virtual/ucs2length.js.map +1 -0
  132. package/dist/_virtual/uniqueItems.js +5 -0
  133. package/dist/_virtual/uniqueItems.js.map +1 -0
  134. package/dist/_virtual/uri.js +5 -0
  135. package/dist/_virtual/uri.js.map +1 -0
  136. package/dist/_virtual/util.js +5 -0
  137. package/dist/_virtual/util.js.map +1 -0
  138. package/dist/_virtual/validation_error.js +5 -0
  139. package/dist/_virtual/validation_error.js.map +1 -0
  140. package/dist/agents/analyst-agent.d.ts +230 -0
  141. package/dist/agents/analyst-agent.d.ts.map +1 -0
  142. package/dist/agents/analyst-agent.js +793 -0
  143. package/dist/agents/analyst-agent.js.map +1 -0
  144. package/dist/agents/architect-agent.d.ts +248 -0
  145. package/dist/agents/architect-agent.d.ts.map +1 -0
  146. package/dist/agents/architect-agent.js +685 -0
  147. package/dist/agents/architect-agent.js.map +1 -0
  148. package/dist/agents/base-agent.d.ts +169 -0
  149. package/dist/agents/base-agent.d.ts.map +1 -0
  150. package/dist/agents/base-agent.js +441 -0
  151. package/dist/agents/base-agent.js.map +1 -0
  152. package/dist/agents/coder-agent.d.ts +191 -0
  153. package/dist/agents/coder-agent.d.ts.map +1 -0
  154. package/dist/agents/coder-agent.js +1008 -0
  155. package/dist/agents/coder-agent.js.map +1 -0
  156. package/dist/agents/index.d.ts +18 -0
  157. package/dist/agents/index.d.ts.map +1 -0
  158. package/dist/agents/index.js +40 -0
  159. package/dist/agents/index.js.map +1 -0
  160. package/dist/agents/registry.d.ts +213 -0
  161. package/dist/agents/registry.d.ts.map +1 -0
  162. package/dist/agents/registry.js +419 -0
  163. package/dist/agents/registry.js.map +1 -0
  164. package/dist/agents/researcher-agent.d.ts +226 -0
  165. package/dist/agents/researcher-agent.d.ts.map +1 -0
  166. package/dist/agents/researcher-agent.js +572 -0
  167. package/dist/agents/researcher-agent.js.map +1 -0
  168. package/dist/agents/rules-engine.d.ts +320 -0
  169. package/dist/agents/rules-engine.d.ts.map +1 -0
  170. package/dist/agents/rules-engine.js +552 -0
  171. package/dist/agents/rules-engine.js.map +1 -0
  172. package/dist/agents/tester-agent.d.ts +219 -0
  173. package/dist/agents/tester-agent.d.ts.map +1 -0
  174. package/dist/agents/tester-agent.js +683 -0
  175. package/dist/agents/tester-agent.js.map +1 -0
  176. package/dist/agents/types.d.ts +425 -0
  177. package/dist/agents/types.d.ts.map +1 -0
  178. package/dist/agents/types.js +57 -0
  179. package/dist/agents/types.js.map +1 -0
  180. package/dist/caching/index.d.ts +55 -0
  181. package/dist/caching/index.d.ts.map +1 -0
  182. package/dist/caching/index.js +206 -0
  183. package/dist/caching/index.js.map +1 -0
  184. package/dist/caching/lru-cache.d.ts +254 -0
  185. package/dist/caching/lru-cache.d.ts.map +1 -0
  186. package/dist/caching/types.d.ts +95 -0
  187. package/dist/caching/types.d.ts.map +1 -0
  188. package/dist/chunking/chunker.d.ts +94 -0
  189. package/dist/chunking/chunker.d.ts.map +1 -0
  190. package/dist/chunking/index.d.ts +125 -0
  191. package/dist/chunking/index.d.ts.map +1 -0
  192. package/dist/chunking/index.js +283 -0
  193. package/dist/chunking/index.js.map +1 -0
  194. package/dist/chunking/types.d.ts +92 -0
  195. package/dist/chunking/types.d.ts.map +1 -0
  196. package/dist/cli/commands/commit.d.ts +11 -0
  197. package/dist/cli/commands/commit.d.ts.map +1 -0
  198. package/dist/cli/commands/commit.js +379 -0
  199. package/dist/cli/commands/commit.js.map +1 -0
  200. package/dist/cli/commands/config.d.ts +8 -0
  201. package/dist/cli/commands/config.d.ts.map +1 -0
  202. package/dist/cli/commands/config.js +107 -0
  203. package/dist/cli/commands/config.js.map +1 -0
  204. package/dist/cli/commands/cultivate.d.ts +16 -0
  205. package/dist/cli/commands/cultivate.d.ts.map +1 -0
  206. package/dist/cli/commands/cultivate.js +254 -0
  207. package/dist/cli/commands/cultivate.js.map +1 -0
  208. package/dist/cli/commands/diagnostics.d.ts +8 -0
  209. package/dist/cli/commands/diagnostics.d.ts.map +1 -0
  210. package/dist/cli/commands/diagnostics.js +140 -0
  211. package/dist/cli/commands/diagnostics.js.map +1 -0
  212. package/dist/cli/commands/generate.d.ts +13 -0
  213. package/dist/cli/commands/generate.d.ts.map +1 -0
  214. package/dist/cli/commands/init-primitives.d.ts +19 -0
  215. package/dist/cli/commands/init-primitives.d.ts.map +1 -0
  216. package/dist/cli/commands/init-primitives.js +208 -0
  217. package/dist/cli/commands/init-primitives.js.map +1 -0
  218. package/dist/cli/commands/sop.d.ts +14 -0
  219. package/dist/cli/commands/sop.d.ts.map +1 -0
  220. package/dist/cli/commands/sop.js +598 -0
  221. package/dist/cli/commands/sop.js.map +1 -0
  222. package/dist/cli/index.d.ts.map +1 -1
  223. package/dist/cli/index.js +40 -1
  224. package/dist/cli/index.js.map +1 -1
  225. package/dist/config/index.d.ts +153 -0
  226. package/dist/config/index.d.ts.map +1 -0
  227. package/dist/config/index.js +141 -0
  228. package/dist/config/index.js.map +1 -0
  229. package/dist/config/manager.d.ts +136 -0
  230. package/dist/config/manager.d.ts.map +1 -0
  231. package/dist/config/types.d.ts +127 -0
  232. package/dist/config/types.d.ts.map +1 -0
  233. package/dist/core/cache.d.ts +185 -0
  234. package/dist/core/cache.d.ts.map +1 -0
  235. package/dist/core/cache.js +435 -0
  236. package/dist/core/cache.js.map +1 -0
  237. package/dist/cultivation/deep-analyzer.d.ts +129 -0
  238. package/dist/cultivation/deep-analyzer.d.ts.map +1 -0
  239. package/dist/cultivation/deep-analyzer.js +322 -0
  240. package/dist/cultivation/deep-analyzer.js.map +1 -0
  241. package/dist/cultivation/index.d.ts +13 -0
  242. package/dist/cultivation/index.d.ts.map +1 -0
  243. package/dist/cultivation/seed-generator.d.ts +92 -0
  244. package/dist/cultivation/seed-generator.d.ts.map +1 -0
  245. package/dist/cultivation/seed-generator.js +1033 -0
  246. package/dist/cultivation/seed-generator.js.map +1 -0
  247. package/dist/cultivation/types.d.ts +230 -0
  248. package/dist/cultivation/types.d.ts.map +1 -0
  249. package/dist/generators/claude-md.d.ts +7 -0
  250. package/dist/generators/claude-md.d.ts.map +1 -1
  251. package/dist/generators/claude-md.js.map +1 -1
  252. package/dist/generators/docs-init.d.ts +6 -0
  253. package/dist/generators/docs-init.d.ts.map +1 -1
  254. package/dist/generators/docs-init.js.map +1 -1
  255. package/dist/health/checks.d.ts +135 -0
  256. package/dist/health/checks.d.ts.map +1 -0
  257. package/dist/health/index.d.ts +119 -0
  258. package/dist/health/index.d.ts.map +1 -0
  259. package/dist/health/index.js +191 -0
  260. package/dist/health/index.js.map +1 -0
  261. package/dist/health/monitor.d.ts +146 -0
  262. package/dist/health/monitor.d.ts.map +1 -0
  263. package/dist/health/types.d.ts +135 -0
  264. package/dist/health/types.d.ts.map +1 -0
  265. package/dist/index.d.ts +30 -0
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +173 -1
  268. package/dist/index.js.map +1 -1
  269. package/dist/integrations/auto-commit.d.ts +175 -0
  270. package/dist/integrations/auto-commit.d.ts.map +1 -0
  271. package/dist/integrations/auto-commit.js +399 -0
  272. package/dist/integrations/auto-commit.js.map +1 -0
  273. package/dist/integrations/git.d.ts +299 -0
  274. package/dist/integrations/git.d.ts.map +1 -0
  275. package/dist/integrations/git.js +465 -0
  276. package/dist/integrations/git.js.map +1 -0
  277. package/dist/mcp-server/bin.d.ts +11 -0
  278. package/dist/mcp-server/bin.d.ts.map +1 -0
  279. package/dist/mcp-server/handlers/index.d.ts +57 -0
  280. package/dist/mcp-server/handlers/index.d.ts.map +1 -0
  281. package/dist/mcp-server/handlers/index.js +235 -0
  282. package/dist/mcp-server/handlers/index.js.map +1 -0
  283. package/dist/mcp-server/index.d.ts +28 -0
  284. package/dist/mcp-server/index.d.ts.map +1 -0
  285. package/dist/mcp-server/server.d.ts +133 -0
  286. package/dist/mcp-server/server.d.ts.map +1 -0
  287. package/dist/mcp-server/server.js +280 -0
  288. package/dist/mcp-server/server.js.map +1 -0
  289. package/dist/mcp-server/tools/agents/index.d.ts +10 -0
  290. package/dist/mcp-server/tools/agents/index.d.ts.map +1 -0
  291. package/dist/mcp-server/tools/agents/list.d.ts +19 -0
  292. package/dist/mcp-server/tools/agents/list.d.ts.map +1 -0
  293. package/dist/mcp-server/tools/agents/spawn.d.ts +19 -0
  294. package/dist/mcp-server/tools/agents/spawn.d.ts.map +1 -0
  295. package/dist/mcp-server/tools/graph/generate.d.ts +21 -0
  296. package/dist/mcp-server/tools/graph/generate.d.ts.map +1 -0
  297. package/dist/mcp-server/tools/graph/index.d.ts +11 -0
  298. package/dist/mcp-server/tools/graph/index.d.ts.map +1 -0
  299. package/dist/mcp-server/tools/graph/query.d.ts +22 -0
  300. package/dist/mcp-server/tools/graph/query.d.ts.map +1 -0
  301. package/dist/mcp-server/tools/graph/stats.d.ts +22 -0
  302. package/dist/mcp-server/tools/graph/stats.d.ts.map +1 -0
  303. package/dist/mcp-server/tools/health.d.ts +21 -0
  304. package/dist/mcp-server/tools/health.d.ts.map +1 -0
  305. package/dist/mcp-server/tools/index.d.ts +13 -0
  306. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  307. package/dist/mcp-server/tools/registry.d.ts +90 -0
  308. package/dist/mcp-server/tools/registry.d.ts.map +1 -0
  309. package/dist/mcp-server/tools/registry.js +663 -0
  310. package/dist/mcp-server/tools/registry.js.map +1 -0
  311. package/dist/mcp-server/tools/search/index.d.ts +10 -0
  312. package/dist/mcp-server/tools/search/index.d.ts.map +1 -0
  313. package/dist/mcp-server/tools/search/nodes.d.ts +22 -0
  314. package/dist/mcp-server/tools/search/nodes.d.ts.map +1 -0
  315. package/dist/mcp-server/tools/search/tags.d.ts +22 -0
  316. package/dist/mcp-server/tools/search/tags.d.ts.map +1 -0
  317. package/dist/mcp-server/types/index.d.ts +286 -0
  318. package/dist/mcp-server/types/index.d.ts.map +1 -0
  319. package/dist/memory/index.d.ts +10 -0
  320. package/dist/memory/index.d.ts.map +1 -0
  321. package/dist/memory/vault-sync.d.ts +212 -0
  322. package/dist/memory/vault-sync.d.ts.map +1 -0
  323. package/dist/memory/vault-sync.js +463 -0
  324. package/dist/memory/vault-sync.js.map +1 -0
  325. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +296 -0
  326. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  327. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +71 -0
  328. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  329. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +26 -0
  330. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  331. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +407 -0
  332. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  333. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1332 -0
  334. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  335. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +71 -0
  336. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  337. package/dist/node_modules/ajv/dist/ajv.js +84 -0
  338. package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
  339. package/dist/node_modules/ajv/dist/compile/codegen/code.js +160 -0
  340. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  341. package/dist/node_modules/ajv/dist/compile/codegen/index.js +728 -0
  342. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  343. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +152 -0
  344. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  345. package/dist/node_modules/ajv/dist/compile/errors.js +131 -0
  346. package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
  347. package/dist/node_modules/ajv/dist/compile/index.js +234 -0
  348. package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
  349. package/dist/node_modules/ajv/dist/compile/names.js +44 -0
  350. package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
  351. package/dist/node_modules/ajv/dist/compile/ref_error.js +22 -0
  352. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  353. package/dist/node_modules/ajv/dist/compile/resolve.js +163 -0
  354. package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  355. package/dist/node_modules/ajv/dist/compile/rules.js +35 -0
  356. package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
  357. package/dist/node_modules/ajv/dist/compile/util.js +173 -0
  358. package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
  359. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
  360. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  361. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +58 -0
  362. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  363. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +193 -0
  364. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  365. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +43 -0
  366. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  367. package/dist/node_modules/ajv/dist/compile/validate/index.js +522 -0
  368. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  369. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +126 -0
  370. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  371. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +89 -0
  372. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  373. package/dist/node_modules/ajv/dist/core.js +628 -0
  374. package/dist/node_modules/ajv/dist/core.js.map +1 -0
  375. package/dist/node_modules/ajv/dist/refs/data.json.js +24 -0
  376. package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
  377. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +25 -0
  378. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
  379. package/dist/node_modules/ajv/dist/runtime/equal.js +16 -0
  380. package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  381. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +30 -0
  382. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  383. package/dist/node_modules/ajv/dist/runtime/uri.js +16 -0
  384. package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  385. package/dist/node_modules/ajv/dist/runtime/validation_error.js +20 -0
  386. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  387. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  388. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  389. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +114 -0
  390. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  391. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +32 -0
  392. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  393. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +22 -0
  394. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  395. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +100 -0
  396. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  397. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +103 -0
  398. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  399. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +75 -0
  400. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  401. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +68 -0
  402. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  403. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +64 -0
  404. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  405. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +43 -0
  406. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  407. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
  408. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  409. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
  410. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  411. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +81 -0
  412. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  413. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
  414. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  415. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +66 -0
  416. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  417. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +49 -0
  418. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  419. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +23 -0
  420. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  421. package/dist/node_modules/ajv/dist/vocabularies/code.js +140 -0
  422. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  423. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
  424. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  425. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
  426. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  427. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +132 -0
  428. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  429. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +114 -0
  430. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  431. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
  432. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  433. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
  434. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  435. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +95 -0
  436. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  437. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +16 -0
  438. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  439. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
  440. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  441. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +36 -0
  442. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  443. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +56 -0
  444. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  445. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +52 -0
  446. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  447. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +34 -0
  448. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  449. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +39 -0
  450. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  451. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +37 -0
  452. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  453. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +34 -0
  454. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  455. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +33 -0
  456. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  457. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +34 -0
  458. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  459. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +89 -0
  460. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  461. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
  462. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  463. package/dist/node_modules/ajv-formats/dist/formats.js +209 -0
  464. package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
  465. package/dist/node_modules/ajv-formats/dist/index.js +51 -0
  466. package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
  467. package/dist/node_modules/ajv-formats/dist/limit.js +80 -0
  468. package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
  469. package/dist/node_modules/fast-deep-equal/index.js +39 -0
  470. package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
  471. package/dist/node_modules/fast-uri/index.js +261 -0
  472. package/dist/node_modules/fast-uri/index.js.map +1 -0
  473. package/dist/node_modules/fast-uri/lib/schemes.js +215 -0
  474. package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
  475. package/dist/node_modules/fast-uri/lib/utils.js +261 -0
  476. package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
  477. package/dist/node_modules/json-schema-traverse/index.js +92 -0
  478. package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
  479. package/dist/node_modules/zod/v4/classic/errors.js +37 -0
  480. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  481. package/dist/node_modules/zod/v4/classic/iso.js +43 -0
  482. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  483. package/dist/node_modules/zod/v4/classic/parse.js +13 -0
  484. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  485. package/dist/node_modules/zod/v4/classic/schemas.js +688 -0
  486. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  487. package/dist/node_modules/zod/v4/core/api.js +492 -0
  488. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  489. package/dist/node_modules/zod/v4/core/checks.js +405 -0
  490. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  491. package/dist/node_modules/zod/v4/core/core.js +58 -0
  492. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  493. package/dist/node_modules/zod/v4/core/doc.js +38 -0
  494. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  495. package/dist/node_modules/zod/v4/core/errors.js +82 -0
  496. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  497. package/dist/node_modules/zod/v4/core/parse.js +60 -0
  498. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  499. package/dist/node_modules/zod/v4/core/regexes.js +87 -0
  500. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  501. package/dist/node_modules/zod/v4/core/registries.js +52 -0
  502. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  503. package/dist/node_modules/zod/v4/core/schemas.js +1283 -0
  504. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  505. package/dist/node_modules/zod/v4/core/util.js +341 -0
  506. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  507. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  508. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  509. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
  510. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  511. package/dist/reasoning/index.d.ts +74 -0
  512. package/dist/reasoning/index.d.ts.map +1 -0
  513. package/dist/reasoning/index.js +124 -0
  514. package/dist/reasoning/index.js.map +1 -0
  515. package/dist/reasoning/tracker.d.ts +210 -0
  516. package/dist/reasoning/tracker.d.ts.map +1 -0
  517. package/dist/reasoning/types.d.ts +146 -0
  518. package/dist/reasoning/types.d.ts.map +1 -0
  519. package/dist/recovery/backup.d.ts +110 -0
  520. package/dist/recovery/backup.d.ts.map +1 -0
  521. package/dist/recovery/index.d.ts +70 -0
  522. package/dist/recovery/index.d.ts.map +1 -0
  523. package/dist/recovery/index.js +186 -0
  524. package/dist/recovery/index.js.map +1 -0
  525. package/dist/recovery/integrity.d.ts +74 -0
  526. package/dist/recovery/integrity.d.ts.map +1 -0
  527. package/dist/recovery/types.d.ts +94 -0
  528. package/dist/recovery/types.d.ts.map +1 -0
  529. package/dist/services/index.d.ts +130 -0
  530. package/dist/services/index.d.ts.map +1 -0
  531. package/dist/services/index.js +134 -0
  532. package/dist/services/index.js.map +1 -0
  533. package/dist/services/manager.d.ts +140 -0
  534. package/dist/services/manager.d.ts.map +1 -0
  535. package/dist/services/types.d.ts +106 -0
  536. package/dist/services/types.d.ts.map +1 -0
  537. package/dist/services/watchers.d.ts +95 -0
  538. package/dist/services/watchers.d.ts.map +1 -0
  539. package/dist/sops/compliance-checker.d.ts +83 -0
  540. package/dist/sops/compliance-checker.d.ts.map +1 -0
  541. package/dist/sops/compliance-checker.js +399 -0
  542. package/dist/sops/compliance-checker.js.map +1 -0
  543. package/dist/sops/gap-analyzer.d.ts +124 -0
  544. package/dist/sops/gap-analyzer.d.ts.map +1 -0
  545. package/dist/sops/gap-analyzer.js +313 -0
  546. package/dist/sops/gap-analyzer.js.map +1 -0
  547. package/dist/sops/index.d.ts +14 -0
  548. package/dist/sops/index.d.ts.map +1 -0
  549. package/dist/sops/overlay-manager.d.ts +115 -0
  550. package/dist/sops/overlay-manager.d.ts.map +1 -0
  551. package/dist/sops/overlay-manager.js +394 -0
  552. package/dist/sops/overlay-manager.js.map +1 -0
  553. package/dist/sops/registry.d.ts +73 -0
  554. package/dist/sops/registry.d.ts.map +1 -0
  555. package/dist/sops/registry.js +919 -0
  556. package/dist/sops/registry.js.map +1 -0
  557. package/dist/sops/types.d.ts +377 -0
  558. package/dist/sops/types.d.ts.map +1 -0
  559. package/dist/sops/types.js +46 -0
  560. package/dist/sops/types.js.map +1 -0
  561. package/dist/utils/error-recovery.d.ts +230 -0
  562. package/dist/utils/error-recovery.d.ts.map +1 -0
  563. package/dist/utils/error-recovery.js +228 -0
  564. package/dist/utils/error-recovery.js.map +1 -0
  565. package/dist/utils/error-taxonomy.d.ts +149 -0
  566. package/dist/utils/error-taxonomy.d.ts.map +1 -0
  567. package/dist/utils/error-taxonomy.js +260 -0
  568. package/dist/utils/error-taxonomy.js.map +1 -0
  569. package/dist/utils/index.d.ts +11 -0
  570. package/dist/utils/index.d.ts.map +1 -0
  571. package/dist/utils/logger.d.ts +139 -0
  572. package/dist/utils/logger.d.ts.map +1 -0
  573. package/dist/utils/logger.js +311 -0
  574. package/dist/utils/logger.js.map +1 -0
  575. package/dist/workflows/index.d.ts +11 -0
  576. package/dist/workflows/index.d.ts.map +1 -0
  577. package/dist/workflows/registry.d.ts +118 -0
  578. package/dist/workflows/registry.d.ts.map +1 -0
  579. package/dist/workflows/registry.js +575 -0
  580. package/dist/workflows/registry.js.map +1 -0
  581. package/dist/workflows/types.d.ts +322 -0
  582. package/dist/workflows/types.d.ts.map +1 -0
  583. package/dist/workflows/types.js +16 -0
  584. package/dist/workflows/types.js.map +1 -0
  585. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sop.js","sources":["../../../src/cli/commands/sop.ts"],"sourcesContent":["/**\n * SOP Commands\n *\n * AI-SDLC Standard Operating Procedures commands for compliance checking,\n * gap analysis, and reporting.\n *\n * @module cli/commands/sop\n */\n\nimport { Command } from 'commander';\nimport { existsSync, writeFileSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport {\n SOPCategory,\n ComplianceStatus,\n SOPPriority,\n getAllSOPs,\n getSOPsByCategory,\n getSOPById,\n getSopCount,\n getCategories,\n checkCompliance,\n analyzeGaps,\n createMultiLayerGraph,\n addComplianceOverlay,\n exportToVisualizationFormat,\n getComplianceSummary,\n} from '../../sops/index.js';\n\n/**\n * Create the SOP command group\n */\nexport function createSOPCommands(): Command {\n const sop = new Command('sop')\n .description('AI-SDLC SOP compliance commands');\n\n // sop init\n sop\n .command('init')\n .description('Initialize AI-SDLC SOP standards layer')\n .option('-p, --path <path>', 'Project root path', process.cwd())\n .option('-d, --docs <path>', 'Documentation path', 'docs')\n .option('-c, --categories <categories>', 'SOP categories to include (comma-separated)')\n .option('-v, --verbose', 'Verbose output')\n .action(async (options) => {\n const projectRoot = resolve(options.path);\n const docsPath = options.docs;\n const verbose = options.verbose;\n\n console.log('\\n🏛️ Initializing AI-SDLC SOP Standards Layer\\n');\n\n try {\n // Parse categories\n let categories: SOPCategory[] | undefined;\n if (options.categories) {\n categories = options.categories.split(',').map((c: string) => c.trim() as SOPCategory);\n }\n\n // Create multi-layer graph with standards\n const graph = createMultiLayerGraph({\n graphId: `sop-${Date.now()}`,\n graphName: 'AI-SDLC Compliance Graph',\n includeAllSOPs: !categories,\n categories,\n });\n\n // Save graph to docs\n const sopDir = join(projectRoot, docsPath, 'sop');\n if (!existsSync(sopDir)) {\n mkdirSync(sopDir, { recursive: true });\n }\n\n // Save standards graph\n const graphPath = join(sopDir, 'standards-graph.json');\n writeFileSync(graphPath, JSON.stringify(graph, null, 2));\n\n console.log(` ✓ Created standards layer with ${getSopCount()} SOPs`);\n console.log(` ✓ Saved graph to ${graphPath}`);\n\n if (verbose) {\n console.log('\\n Categories included:');\n for (const category of getCategories()) {\n const count = getSOPsByCategory(category).length;\n console.log(` - ${category}: ${count} SOPs`);\n }\n }\n\n // Create SOP index document\n const indexPath = join(sopDir, 'SOP-INDEX.md');\n const indexContent = generateSOPIndex(categories);\n writeFileSync(indexPath, indexContent);\n console.log(` ✓ Created SOP index at ${indexPath}`);\n\n console.log('\\n✨ SOP standards layer initialized!\\n');\n console.log('Next steps:');\n console.log(' - Run \"kg sop check\" to assess compliance');\n console.log(' - Run \"kg sop gaps\" to identify gaps');\n console.log(' - Run \"kg sop report\" to generate compliance report');\n console.log('');\n\n } catch (error) {\n console.error('\\n❌ SOP initialization failed:', error);\n process.exit(1);\n }\n });\n\n // sop check\n sop\n .command('check')\n .description('Check project compliance against AI-SDLC SOPs')\n .option('-p, --path <path>', 'Project root path', process.cwd())\n .option('-d, --docs <path>', 'Documentation path', 'docs')\n .option('-s, --sop <id>', 'Check specific SOP by ID')\n .option('-c, --category <category>', 'Check SOPs in specific category')\n .option('--deep', 'Perform deep analysis of file contents')\n .option('--threshold <number>', 'Minimum compliance threshold (0-100)', '50')\n .option('-v, --verbose', 'Verbose output')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const projectRoot = resolve(options.path);\n const docsPath = options.docs;\n const verbose = options.verbose;\n const threshold = parseInt(options.threshold, 10);\n\n if (!options.json) {\n console.log('\\n🔍 Checking AI-SDLC SOP Compliance\\n');\n }\n\n try {\n // Build check options\n const checkOptions: Parameters<typeof checkCompliance>[0] = {\n projectRoot,\n docsPath,\n deepAnalysis: options.deep,\n assessor: 'cli-automated',\n };\n\n if (options.sop) {\n checkOptions.sopIds = [options.sop];\n }\n if (options.category) {\n checkOptions.categories = [options.category as SOPCategory];\n }\n\n // Run compliance check\n const result = await checkCompliance(checkOptions);\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n // Display results\n console.log(` Project: ${result.projectName}`);\n console.log(` Overall Score: ${getScoreEmoji(result.overallScore)} ${result.overallScore}%\\n`);\n\n // Category breakdown\n console.log(' Category Scores:');\n for (const [category, score] of Object.entries(result.categoryScores)) {\n if (score > 0) {\n console.log(` ${getScoreEmoji(score)} ${formatCategory(category as SOPCategory)}: ${score}%`);\n }\n }\n console.log('');\n\n // Assessment summary\n const compliant = result.assessments.filter(a => a.status === ComplianceStatus.COMPLIANT).length;\n const partial = result.assessments.filter(a => a.status === ComplianceStatus.PARTIAL).length;\n const nonCompliant = result.assessments.filter(a => a.status === ComplianceStatus.NON_COMPLIANT).length;\n\n console.log(' Assessment Summary:');\n console.log(` ✅ Compliant: ${compliant}`);\n console.log(` 🟡 Partial: ${partial}`);\n console.log(` ❌ Non-compliant: ${nonCompliant}`);\n console.log('');\n\n // Verbose: show each assessment\n if (verbose) {\n console.log(' Detailed Assessments:');\n for (const assessment of result.assessments) {\n const sop = getSOPById(assessment.sopId);\n if (sop) {\n console.log(`\\n ${getStatusIcon(assessment.status)} ${sop.title}`);\n console.log(` Score: ${assessment.score}%`);\n console.log(` Met: ${assessment.requirementsMet.length}/${assessment.requirementsMet.length + assessment.requirementsGaps.length}`);\n }\n }\n console.log('');\n }\n\n // Check threshold\n if (result.overallScore < threshold) {\n console.log(` ⚠️ Below compliance threshold of ${threshold}%`);\n console.log(' Run \"kg sop gaps\" to see remediation recommendations\\n');\n } else {\n console.log(` ✨ Meets compliance threshold of ${threshold}%\\n`);\n }\n\n // Evidence summary\n if (result.evidence.length > 0 && verbose) {\n console.log(` Evidence Found: ${result.evidence.length} items`);\n }\n\n } catch (error) {\n console.error('\\n❌ Compliance check failed:', error);\n process.exit(1);\n }\n });\n\n // sop gaps\n sop\n .command('gaps')\n .description('Analyze compliance gaps and generate remediation recommendations')\n .option('-p, --path <path>', 'Project root path', process.cwd())\n .option('-d, --docs <path>', 'Documentation path', 'docs')\n .option('--priority <priority>', 'Minimum gap priority (critical, high, medium, low)')\n .option('--category <category>', 'Filter by category')\n .option('--roadmap', 'Include remediation roadmap')\n .option('-v, --verbose', 'Verbose output')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const projectRoot = resolve(options.path);\n const docsPath = options.docs;\n const verbose = options.verbose;\n\n if (!options.json) {\n console.log('\\n📋 Analyzing Compliance Gaps\\n');\n }\n\n try {\n // First run compliance check\n const checkResult = await checkCompliance({\n projectRoot,\n docsPath,\n deepAnalysis: true,\n });\n\n // Parse filters\n let minPriority: SOPPriority | undefined;\n if (options.priority) {\n minPriority = options.priority as SOPPriority;\n }\n\n let categories: SOPCategory[] | undefined;\n if (options.category) {\n categories = [options.category as SOPCategory];\n }\n\n // Analyze gaps\n const gapResult = analyzeGaps(checkResult, {\n minPriority,\n categories,\n generateRemediation: true,\n });\n\n if (options.json) {\n console.log(JSON.stringify(gapResult, null, 2));\n return;\n }\n\n // Display summary\n console.log(` Total Gaps: ${gapResult.totalGaps}`);\n console.log(` Compliance: ${gapResult.summary.compliancePercentage}%`);\n console.log(` Complexity: ${gapResult.summary.overallComplexity}\\n`);\n\n // Priority breakdown\n console.log(' Gaps by Priority:');\n console.log(` 🔴 Critical: ${gapResult.byPriority[SOPPriority.CRITICAL].length}`);\n console.log(` 🟠 High: ${gapResult.byPriority[SOPPriority.HIGH].length}`);\n console.log(` 🟡 Medium: ${gapResult.byPriority[SOPPriority.MEDIUM].length}`);\n console.log(` 🟢 Low: ${gapResult.byPriority[SOPPriority.LOW].length}`);\n console.log('');\n\n // Category breakdown\n console.log(' Gaps by Category:');\n for (const [category, gaps] of Object.entries(gapResult.byCategory)) {\n if (gaps.length > 0) {\n console.log(` ${formatCategory(category as SOPCategory)}: ${gaps.length}`);\n }\n }\n console.log('');\n\n // Critical gaps detail\n if (gapResult.criticalGaps.length > 0) {\n console.log(' 🚨 Critical Gaps (Immediate Action Required):');\n for (const gap of gapResult.criticalGaps) {\n const sop = getSOPById(gap.sopId);\n console.log(`\\n • ${sop?.title || gap.sopId}`);\n console.log(` ${gap.description.substring(0, 80)}...`);\n console.log(` Effort: ${gap.effort}`);\n }\n console.log('');\n }\n\n // Quick wins\n if (gapResult.roadmap?.quickWins && gapResult.roadmap.quickWins.length > 0) {\n console.log(' 💡 Quick Wins (High Impact, Low Effort):');\n for (const gap of gapResult.roadmap.quickWins.slice(0, 5)) {\n const sop = getSOPById(gap.sopId);\n console.log(` • ${sop?.title || gap.sopId}`);\n }\n console.log('');\n }\n\n // Roadmap\n if (options.roadmap && gapResult.roadmap) {\n console.log(' 📍 Remediation Roadmap:');\n for (const phase of gapResult.roadmap.phases) {\n console.log(`\\n Phase ${phase.phase}: ${phase.name}`);\n console.log(` Focus: ${phase.focus}`);\n console.log(` Gaps: ${phase.gaps.length}`);\n console.log(` Effort: ${phase.effort}`);\n }\n console.log('');\n }\n\n // Verbose: show all gaps\n if (verbose) {\n console.log(' All Gaps:');\n for (const gap of gapResult.gaps) {\n console.log(`\\n [${gap.priority.toUpperCase()}] ${gap.id}`);\n console.log(` SOP: ${gap.sopId}`);\n console.log(` Description: ${gap.description.substring(0, 100)}...`);\n console.log(` Remediation: ${gap.remediation.substring(0, 100)}...`);\n }\n console.log('');\n }\n\n } catch (error) {\n console.error('\\n❌ Gap analysis failed:', error);\n process.exit(1);\n }\n });\n\n // sop report\n sop\n .command('report')\n .description('Generate comprehensive compliance report')\n .option('-p, --path <path>', 'Project root path', process.cwd())\n .option('-d, --docs <path>', 'Documentation path', 'docs')\n .option('-o, --output <file>', 'Output file path')\n .option('-f, --format <format>', 'Output format (md, json, html)', 'md')\n .option('--include-evidence', 'Include evidence details')\n .option('--include-roadmap', 'Include remediation roadmap')\n .action(async (options) => {\n const projectRoot = resolve(options.path);\n const docsPath = options.docs;\n const format = options.format;\n\n console.log('\\n📝 Generating Compliance Report\\n');\n\n try {\n // Run compliance check\n const checkResult = await checkCompliance({\n projectRoot,\n docsPath,\n deepAnalysis: true,\n });\n\n // Analyze gaps\n const gapResult = analyzeGaps(checkResult, {\n generateRemediation: true,\n });\n\n // Create multi-layer graph\n const graph = createMultiLayerGraph();\n addComplianceOverlay(graph, checkResult, gapResult);\n const summary = getComplianceSummary(graph);\n\n // Generate report content\n let report: string;\n\n if (format === 'json') {\n report = JSON.stringify({\n checkResult,\n gapResult,\n summary,\n generatedAt: new Date().toISOString(),\n }, null, 2);\n } else if (format === 'html') {\n report = generateHTMLReport(checkResult, gapResult, summary, options);\n } else {\n report = generateMarkdownReport(checkResult, gapResult, summary, options);\n }\n\n // Output\n if (options.output) {\n const outputPath = resolve(options.output);\n writeFileSync(outputPath, report);\n console.log(` ✓ Report saved to ${outputPath}`);\n } else {\n // Default output path\n const sopDir = join(projectRoot, docsPath, 'sop');\n if (!existsSync(sopDir)) {\n mkdirSync(sopDir, { recursive: true });\n }\n const outputPath = join(sopDir, `COMPLIANCE-REPORT.${format}`);\n writeFileSync(outputPath, report);\n console.log(` ✓ Report saved to ${outputPath}`);\n }\n\n console.log('\\n✨ Report generated successfully!\\n');\n\n } catch (error) {\n console.error('\\n❌ Report generation failed:', error);\n process.exit(1);\n }\n });\n\n // sop list\n sop\n .command('list')\n .description('List available AI-SDLC SOPs')\n .option('-c, --category <category>', 'Filter by category')\n .option('--irb', 'Show only SOPs requiring AI-IRB review')\n .option('--json', 'Output as JSON')\n .action((options) => {\n let sops = getAllSOPs();\n\n if (options.category) {\n sops = getSOPsByCategory(options.category as SOPCategory);\n }\n\n if (options.irb) {\n sops = sops.filter(s => s.irbTypicallyRequired);\n }\n\n if (options.json) {\n console.log(JSON.stringify(sops, null, 2));\n return;\n }\n\n console.log('\\n📚 AI-SDLC Standard Operating Procedures\\n');\n console.log(` Total: ${sops.length} SOPs\\n`);\n\n // Group by category\n const byCategory = new Map<SOPCategory, typeof sops>();\n for (const sop of sops) {\n if (!byCategory.has(sop.category)) {\n byCategory.set(sop.category, []);\n }\n byCategory.get(sop.category)!.push(sop);\n }\n\n for (const [category, categorySops] of byCategory) {\n console.log(` ${formatCategory(category)} (${categorySops.length}):`);\n for (const sop of categorySops) {\n const irb = sop.irbTypicallyRequired ? ' 🔬' : '';\n console.log(` • ${sop.id}: ${sop.title}${irb}`);\n }\n console.log('');\n }\n });\n\n return sop;\n}\n\n/**\n * Helper functions\n */\n\nfunction getScoreEmoji(score: number): string {\n if (score >= 90) return '✅';\n if (score >= 70) return '🟡';\n if (score >= 50) return '🟠';\n return '🔴';\n}\n\nfunction getStatusIcon(status: ComplianceStatus): string {\n switch (status) {\n case ComplianceStatus.COMPLIANT:\n return '✅';\n case ComplianceStatus.PARTIAL:\n return '🟡';\n case ComplianceStatus.NON_COMPLIANT:\n return '❌';\n case ComplianceStatus.NOT_APPLICABLE:\n return '⚪';\n case ComplianceStatus.PENDING:\n return '⏳';\n default:\n return '❓';\n }\n}\n\nfunction formatCategory(category: SOPCategory): string {\n return category\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction generateSOPIndex(categories?: SOPCategory[]): string {\n const sops = categories\n ? categories.flatMap(c => getSOPsByCategory(c))\n : getAllSOPs();\n\n let content = `---\ntitle: AI-SDLC SOP Index\ntype: standards\ncreated: ${new Date().toISOString().split('T')[0]}\ntags: [sop, ai-sdlc, compliance, standards]\n---\n\n# AI-SDLC Standard Operating Procedures\n\nThis document provides an index of AI-SDLC SOPs applicable to this project.\n\n## Overview\n\n- **Total SOPs**: ${sops.length}\n- **Source**: [AI-SDLC-SOPs](https://github.com/AISDLC/AI-SDLC-SOPs)\n- **Generated**: ${new Date().toISOString()}\n\n## SOPs by Category\n\n`;\n\n // Group by category\n const byCategory = new Map<SOPCategory, typeof sops>();\n for (const sop of sops) {\n if (!byCategory.has(sop.category)) {\n byCategory.set(sop.category, []);\n }\n byCategory.get(sop.category)!.push(sop);\n }\n\n for (const [category, categorySops] of byCategory) {\n content += `### ${formatCategory(category)}\\n\\n`;\n for (const sop of categorySops) {\n const irb = sop.irbTypicallyRequired ? ' 🔬' : '';\n content += `- **${sop.id}**: ${sop.title}${irb}\\n`;\n content += ` - Priority: ${sop.priority}\\n`;\n content += ` - Requirements: ${sop.requirements.length}\\n`;\n }\n content += '\\n';\n }\n\n content += `## Legend\n\n- 🔬 Requires AI-IRB review\n- Requirements count indicates number of checkable items\n\n## Next Steps\n\n1. Run \\`kg sop check\\` to assess current compliance\n2. Run \\`kg sop gaps\\` to identify remediation needs\n3. Run \\`kg sop report\\` to generate detailed report\n`;\n\n return content;\n}\n\nfunction generateMarkdownReport(\n checkResult: ReturnType<typeof checkCompliance> extends Promise<infer T> ? T : never,\n gapResult: ReturnType<typeof analyzeGaps>,\n summary: ReturnType<typeof getComplianceSummary>,\n options: { includeEvidence?: boolean; includeRoadmap?: boolean }\n): string {\n let report = `---\ntitle: AI-SDLC Compliance Report\ntype: report\ngenerated: ${new Date().toISOString()}\ntags: [compliance, sop, report]\n---\n\n# AI-SDLC Compliance Report\n\n**Project**: ${checkResult.projectName}\n**Generated**: ${checkResult.checkedAt.toISOString()}\n\n## Executive Summary\n\n| Metric | Value |\n|--------|-------|\n| Overall Score | ${checkResult.overallScore}% |\n| Compliant SOPs | ${summary.compliant} |\n| Partial Compliance | ${summary.partial} |\n| Non-Compliant | ${summary.nonCompliant} |\n| Pending Assessment | ${summary.pending} |\n| Total Gaps | ${gapResult.totalGaps} |\n\n## Category Scores\n\n`;\n\n for (const [category, score] of Object.entries(checkResult.categoryScores)) {\n if (score > 0) {\n report += `- **${formatCategory(category as SOPCategory)}**: ${score}%\\n`;\n }\n }\n\n report += `\n## Gap Analysis\n\n### By Priority\n\n| Priority | Count |\n|----------|-------|\n| Critical | ${gapResult.byPriority[SOPPriority.CRITICAL].length} |\n| High | ${gapResult.byPriority[SOPPriority.HIGH].length} |\n| Medium | ${gapResult.byPriority[SOPPriority.MEDIUM].length} |\n| Low | ${gapResult.byPriority[SOPPriority.LOW].length} |\n\n### Effort Breakdown\n\n- Low effort: ${gapResult.summary.totalEffort.low}\n- Medium effort: ${gapResult.summary.totalEffort.medium}\n- High effort: ${gapResult.summary.totalEffort.high}\n\n## Critical Gaps\n\n`;\n\n if (gapResult.criticalGaps.length > 0) {\n for (const gap of gapResult.criticalGaps) {\n const sop = getSOPById(gap.sopId);\n report += `### ${sop?.title || gap.sopId}\n\n- **Gap ID**: ${gap.id}\n- **Requirement**: ${gap.requirementId}\n- **Priority**: ${gap.priority}\n- **Effort**: ${gap.effort}\n- **Impact**: ${gap.impact}\n\n**Remediation**: ${gap.remediation}\n\n---\n\n`;\n }\n } else {\n report += 'No critical gaps identified.\\n\\n';\n }\n\n if (options.includeRoadmap && gapResult.roadmap) {\n report += `## Remediation Roadmap\n\n`;\n for (const phase of gapResult.roadmap.phases) {\n report += `### Phase ${phase.phase}: ${phase.name}\n\n- **Focus**: ${phase.focus}\n- **Effort**: ${phase.effort}\n- **Gaps**: ${phase.gaps.length}\n\n`;\n }\n }\n\n if (options.includeEvidence && checkResult.evidence.length > 0) {\n report += `## Evidence Found\n\n`;\n for (const evidence of checkResult.evidence) {\n report += `- **${evidence.requirementId}**: ${evidence.description}\n - File: \\`${evidence.filePath}\\`\n - Confidence: ${Math.round(evidence.confidence * 100)}%\n`;\n }\n }\n\n report += `\n## Recommendations\n\n`;\n\n // Generate recommendations based on gaps\n if (gapResult.criticalGaps.length > 0) {\n report += `1. **Address Critical Gaps Immediately**: ${gapResult.criticalGaps.length} critical gaps require immediate attention.\\n`;\n }\n\n if (gapResult.roadmap?.quickWins && gapResult.roadmap.quickWins.length > 0) {\n report += `2. **Quick Wins**: ${gapResult.roadmap.quickWins.length} high-impact, low-effort improvements available.\\n`;\n }\n\n if (checkResult.overallScore < 50) {\n report += `3. **Compliance Baseline**: Current score of ${checkResult.overallScore}% is below recommended baseline. Focus on foundational SOPs.\\n`;\n }\n\n report += `\n---\n\n*Report generated by Knowledge Graph Agent - AI-SDLC SOP Compliance Module*\n`;\n\n return report;\n}\n\nfunction generateHTMLReport(\n checkResult: ReturnType<typeof checkCompliance> extends Promise<infer T> ? T : never,\n gapResult: ReturnType<typeof analyzeGaps>,\n summary: ReturnType<typeof getComplianceSummary>,\n options: { includeEvidence?: boolean; includeRoadmap?: boolean }\n): string {\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>AI-SDLC Compliance Report</title>\n <style>\n body { font-family: system-ui, sans-serif; max-width: 1200px; margin: 0 auto; padding: 2rem; }\n .score { font-size: 3rem; font-weight: bold; }\n .score.high { color: #22c55e; }\n .score.medium { color: #f59e0b; }\n .score.low { color: #ef4444; }\n .card { border: 1px solid #e5e7eb; border-radius: 8px; padding: 1rem; margin: 1rem 0; }\n .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; }\n table { width: 100%; border-collapse: collapse; }\n th, td { border: 1px solid #e5e7eb; padding: 0.5rem; text-align: left; }\n th { background: #f9fafb; }\n .badge { display: inline-block; padding: 0.25rem 0.5rem; border-radius: 4px; font-size: 0.875rem; }\n .badge.critical { background: #fef2f2; color: #b91c1c; }\n .badge.high { background: #fff7ed; color: #c2410c; }\n .badge.medium { background: #fefce8; color: #a16207; }\n .badge.low { background: #f0fdf4; color: #15803d; }\n </style>\n</head>\n<body>\n <h1>AI-SDLC Compliance Report</h1>\n <p><strong>Project:</strong> ${checkResult.projectName}</p>\n <p><strong>Generated:</strong> ${checkResult.checkedAt.toISOString()}</p>\n\n <div class=\"grid\">\n <div class=\"card\">\n <h3>Overall Score</h3>\n <div class=\"score ${checkResult.overallScore >= 70 ? 'high' : checkResult.overallScore >= 50 ? 'medium' : 'low'}\">\n ${checkResult.overallScore}%\n </div>\n </div>\n <div class=\"card\">\n <h3>Compliance Status</h3>\n <p>✅ Compliant: ${summary.compliant}</p>\n <p>🟡 Partial: ${summary.partial}</p>\n <p>❌ Non-compliant: ${summary.nonCompliant}</p>\n </div>\n <div class=\"card\">\n <h3>Gap Summary</h3>\n <p>Total Gaps: ${gapResult.totalGaps}</p>\n <p>Critical: ${gapResult.criticalGaps.length}</p>\n <p>Complexity: ${gapResult.summary.overallComplexity}</p>\n </div>\n </div>\n\n <h2>Category Scores</h2>\n <table>\n <tr><th>Category</th><th>Score</th></tr>\n ${Object.entries(checkResult.categoryScores)\n .filter(([, score]) => score > 0)\n .map(([cat, score]) => `<tr><td>${formatCategory(cat as SOPCategory)}</td><td>${score}%</td></tr>`)\n .join('')}\n </table>\n\n <h2>Gaps by Priority</h2>\n <table>\n <tr><th>Priority</th><th>Count</th></tr>\n <tr><td><span class=\"badge critical\">Critical</span></td><td>${gapResult.byPriority[SOPPriority.CRITICAL].length}</td></tr>\n <tr><td><span class=\"badge high\">High</span></td><td>${gapResult.byPriority[SOPPriority.HIGH].length}</td></tr>\n <tr><td><span class=\"badge medium\">Medium</span></td><td>${gapResult.byPriority[SOPPriority.MEDIUM].length}</td></tr>\n <tr><td><span class=\"badge low\">Low</span></td><td>${gapResult.byPriority[SOPPriority.LOW].length}</td></tr>\n </table>\n\n ${gapResult.criticalGaps.length > 0 ? `\n <h2>Critical Gaps</h2>\n ${gapResult.criticalGaps.map(gap => {\n const sop = getSOPById(gap.sopId);\n return `\n <div class=\"card\">\n <h3>${sop?.title || gap.sopId}</h3>\n <p><strong>Gap ID:</strong> ${gap.id}</p>\n <p><strong>Impact:</strong> ${gap.impact}</p>\n <p><strong>Remediation:</strong> ${gap.remediation}</p>\n </div>\n `;\n }).join('')}\n ` : ''}\n\n <footer style=\"margin-top: 2rem; padding-top: 1rem; border-top: 1px solid #e5e7eb; color: #6b7280;\">\n <p>Generated by Knowledge Graph Agent - AI-SDLC SOP Compliance Module</p>\n </footer>\n</body>\n</html>`;\n}\n"],"names":["sop"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAuDnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CA4FnC"}
package/dist/cli/index.js CHANGED
@@ -9,7 +9,13 @@ import { createStatsCommand } from "./commands/stats.js";
9
9
  import { createSearchCommand } from "./commands/search.js";
10
10
  import { createConvertCommand, createFrontmatterCommand } from "./commands/convert.js";
11
11
  import { createAnalyzeCommand } from "./commands/analyze.js";
12
- const VERSION = "0.2.0";
12
+ import { createSOPCommands } from "./commands/sop.js";
13
+ import { createInitPrimitivesCommand, createAnalyzeCodebaseCommand } from "./commands/init-primitives.js";
14
+ import { createCultivateCommand } from "./commands/cultivate.js";
15
+ import { createCommitCommand } from "./commands/commit.js";
16
+ import { createConfigCommand } from "./commands/config.js";
17
+ import { createDiagnosticsCommand } from "./commands/diagnostics.js";
18
+ const VERSION = "0.3.0";
13
19
  function createCLI() {
14
20
  const program = new Command();
15
21
  program.name("kg").description("Knowledge Graph Agent - Generate and manage knowledge graphs for Claude Code").version(VERSION, "-v, --version", "Display version number");
@@ -27,6 +33,13 @@ function createCLI() {
27
33
  program.addCommand(createConvertCommand());
28
34
  program.addCommand(createFrontmatterCommand());
29
35
  program.addCommand(createAnalyzeCommand());
36
+ program.addCommand(createSOPCommands());
37
+ program.addCommand(createInitPrimitivesCommand());
38
+ program.addCommand(createAnalyzeCodebaseCommand());
39
+ program.addCommand(createCultivateCommand());
40
+ program.addCommand(createCommitCommand());
41
+ program.addCommand(createConfigCommand());
42
+ program.addCommand(createDiagnosticsCommand());
30
43
  program.action(() => {
31
44
  console.log(chalk.cyan.bold("\n Knowledge Graph Agent\n"));
32
45
  console.log(chalk.gray(" Generate and manage knowledge graphs for Claude Code\n"));
@@ -43,6 +56,32 @@ function createCLI() {
43
56
  console.log(chalk.gray(" $ kg convert docs # Convert docs/ → docs-nn/"));
44
57
  console.log(chalk.gray(" $ kg frontmatter add # Add frontmatter to files"));
45
58
  console.log(chalk.gray(" $ kg frontmatter validate # Validate frontmatter\n"));
59
+ console.log(chalk.white(" AI-SDLC SOP Compliance:"));
60
+ console.log(chalk.gray(" $ kg sop init # Initialize SOP standards layer"));
61
+ console.log(chalk.gray(" $ kg sop check # Check compliance against SOPs"));
62
+ console.log(chalk.gray(" $ kg sop gaps # Analyze compliance gaps"));
63
+ console.log(chalk.gray(" $ kg sop report # Generate compliance report"));
64
+ console.log(chalk.gray(" $ kg sop list # List available SOPs\n"));
65
+ console.log(chalk.white(" Cultivation & Primitives:"));
66
+ console.log(chalk.gray(" $ kg init-primitives # Bootstrap primitives from codebase"));
67
+ console.log(chalk.gray(" $ kg analyze-codebase # Analyze dependencies & services"));
68
+ console.log(chalk.gray(" $ kg init-primitives --dry-run # Preview without writing\n"));
69
+ console.log(chalk.white(" Git Integration:"));
70
+ console.log(chalk.gray(" $ kg commit # Show status and suggested message"));
71
+ console.log(chalk.gray(" $ kg commit -a # Auto-commit with generated message"));
72
+ console.log(chalk.gray(" $ kg commit -i # Interactive commit mode"));
73
+ console.log(chalk.gray(' $ kg commit -m "message" # Commit with custom message'));
74
+ console.log(chalk.gray(" $ kg commit status # Show git status with analysis"));
75
+ console.log(chalk.gray(" $ kg commit log # Show recent commits"));
76
+ console.log(chalk.gray(" $ kg commit diff # Show diff of changes\n"));
77
+ console.log(chalk.white(" Diagnostics & Health:"));
78
+ console.log(chalk.gray(" $ kg diag run # Run full diagnostics"));
79
+ console.log(chalk.gray(" $ kg diag run --fix # Attempt to fix issues"));
80
+ console.log(chalk.gray(" $ kg diag health # Check system health"));
81
+ console.log(chalk.gray(" $ kg diag repair # Repair database issues"));
82
+ console.log(chalk.gray(" $ kg diag backup # Create database backup"));
83
+ console.log(chalk.gray(" $ kg diag backup --list # List existing backups"));
84
+ console.log(chalk.gray(" $ kg diag info # Show system information\n"));
46
85
  console.log(chalk.white(" Commands:"));
47
86
  program.commands.forEach((cmd) => {
48
87
  console.log(chalk.cyan(` ${cmd.name().padEnd(20)}`), chalk.gray(cmd.description() || ""));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["/**\n * Knowledge Graph Agent CLI\n *\n * Main CLI setup and command registration.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createInitCommand } from './commands/init.js';\nimport { createGraphCommand } from './commands/graph.js';\nimport { createDocsCommand } from './commands/docs.js';\nimport { createClaudeCommand } from './commands/claude.js';\nimport { createSyncCommand } from './commands/sync.js';\nimport { createStatsCommand } from './commands/stats.js';\nimport { createSearchCommand } from './commands/search.js';\nimport { createConvertCommand, createFrontmatterCommand } from './commands/convert.js';\nimport { createAnalyzeCommand } from './commands/analyze.js';\n\n/**\n * CLI version\n */\nconst VERSION = '0.2.0';\n\n/**\n * Create and configure the CLI program\n */\nexport function createCLI(): Command {\n const program = new Command();\n\n program\n .name('kg')\n .description('Knowledge Graph Agent - Generate and manage knowledge graphs for Claude Code')\n .version(VERSION, '-v, --version', 'Display version number');\n\n // Configure help\n program.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // Add commands\n program.addCommand(createInitCommand());\n program.addCommand(createGraphCommand());\n program.addCommand(createDocsCommand());\n program.addCommand(createClaudeCommand());\n program.addCommand(createSyncCommand());\n program.addCommand(createStatsCommand());\n program.addCommand(createSearchCommand());\n program.addCommand(createConvertCommand());\n program.addCommand(createFrontmatterCommand());\n program.addCommand(createAnalyzeCommand());\n\n // Default action (show help)\n program.action(() => {\n console.log(chalk.cyan.bold('\\n Knowledge Graph Agent\\n'));\n console.log(chalk.gray(' Generate and manage knowledge graphs for Claude Code\\n'));\n\n console.log(chalk.white(' Quick Start:'));\n console.log(chalk.gray(' $ kg init # Initialize knowledge graph'));\n console.log(chalk.gray(' $ kg docs init # Initialize docs directory'));\n console.log(chalk.gray(' $ kg graph # Generate knowledge graph'));\n console.log(chalk.gray(' $ kg claude update # Update CLAUDE.md'));\n console.log(chalk.gray(' $ kg sync # Sync with claude-flow\\n'));\n\n console.log(chalk.white(' Migration & Analysis:'));\n console.log(chalk.gray(' $ kg analyze # Analyze & migrate to knowledge graph'));\n console.log(chalk.gray(' $ kg analyze deep # Deep analysis with claude-flow'));\n console.log(chalk.gray(' $ kg analyze report # Generate analysis report'));\n console.log(chalk.gray(' $ kg convert docs # Convert docs/ → docs-nn/'));\n console.log(chalk.gray(' $ kg frontmatter add # Add frontmatter to files'));\n console.log(chalk.gray(' $ kg frontmatter validate # Validate frontmatter\\n'));\n\n console.log(chalk.white(' Commands:'));\n program.commands.forEach(cmd => {\n console.log(chalk.cyan(` ${cmd.name().padEnd(20)}`), chalk.gray(cmd.description() || ''));\n });\n\n console.log('\\n Run', chalk.cyan('kg <command> --help'), 'for more information\\n');\n });\n\n return program;\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAqBA,MAAM,UAAU;AAKT,SAAS,YAAqB;AACnC,QAAM,UAAU,IAAI,QAAA;AAEpB,UACG,KAAK,IAAI,EACT,YAAY,8EAA8E,EAC1F,QAAQ,SAAS,iBAAiB,wBAAwB;AAG7D,UAAQ,cAAc;AAAA,IACpB,iBAAiB;AAAA,IACjB,aAAa;AAAA,EAAA,CACd;AAGD,UAAQ,WAAW,mBAAmB;AACtC,UAAQ,WAAW,oBAAoB;AACvC,UAAQ,WAAW,mBAAmB;AACtC,UAAQ,WAAW,qBAAqB;AACxC,UAAQ,WAAW,mBAAmB;AACtC,UAAQ,WAAW,oBAAoB;AACvC,UAAQ,WAAW,qBAAqB;AACxC,UAAQ,WAAW,sBAAsB;AACzC,UAAQ,WAAW,0BAA0B;AAC7C,UAAQ,WAAW,sBAAsB;AAGzC,UAAQ,OAAO,MAAM;AACnB,YAAQ,IAAI,MAAM,KAAK,KAAK,6BAA6B,CAAC;AAC1D,YAAQ,IAAI,MAAM,KAAK,0DAA0D,CAAC;AAElF,YAAQ,IAAI,MAAM,MAAM,gBAAgB,CAAC;AACzC,YAAQ,IAAI,MAAM,KAAK,6DAA6D,CAAC;AACrF,YAAQ,IAAI,MAAM,KAAK,4DAA4D,CAAC;AACpF,YAAQ,IAAI,MAAM,KAAK,2DAA2D,CAAC;AACnF,YAAQ,IAAI,MAAM,KAAK,mDAAmD,CAAC;AAC3E,YAAQ,IAAI,MAAM,KAAK,0DAA0D,CAAC;AAElF,YAAQ,IAAI,MAAM,MAAM,yBAAyB,CAAC;AAClD,YAAQ,IAAI,MAAM,KAAK,uEAAuE,CAAC;AAC/F,YAAQ,IAAI,MAAM,KAAK,iEAAiE,CAAC;AACzF,YAAQ,IAAI,MAAM,KAAK,2DAA2D,CAAC;AACnF,YAAQ,IAAI,MAAM,KAAK,2DAA2D,CAAC;AACnF,YAAQ,IAAI,MAAM,KAAK,2DAA2D,CAAC;AACnF,YAAQ,IAAI,MAAM,KAAK,yDAAyD,CAAC;AAEjF,YAAQ,IAAI,MAAM,MAAM,aAAa,CAAC;AACtC,YAAQ,SAAS,QAAQ,CAAA,QAAO;AAC9B,cAAQ,IAAI,MAAM,KAAK,OAAO,IAAI,OAAO,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,YAAA,KAAiB,EAAE,CAAC;AAAA,IAC7F,CAAC;AAED,YAAQ,IAAI,WAAW,MAAM,KAAK,qBAAqB,GAAG,wBAAwB;AAAA,EACpF,CAAC;AAED,SAAO;AACT;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["/**\n * Knowledge Graph Agent CLI\n *\n * Main CLI setup and command registration.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createInitCommand } from './commands/init.js';\nimport { createGraphCommand } from './commands/graph.js';\nimport { createDocsCommand } from './commands/docs.js';\nimport { createClaudeCommand } from './commands/claude.js';\nimport { createSyncCommand } from './commands/sync.js';\nimport { createStatsCommand } from './commands/stats.js';\nimport { createSearchCommand } from './commands/search.js';\nimport { createConvertCommand, createFrontmatterCommand } from './commands/convert.js';\nimport { createAnalyzeCommand } from './commands/analyze.js';\nimport { createSOPCommands } from './commands/sop.js';\nimport { createInitPrimitivesCommand, createAnalyzeCodebaseCommand } from './commands/init-primitives.js';\nimport { createCultivateCommand } from './commands/cultivate.js';\nimport { createCommitCommand } from './commands/commit.js';\nimport { createConfigCommand } from './commands/config.js';\nimport { createDiagnosticsCommand } from './commands/diagnostics.js';\n\n/**\n * CLI version\n */\nconst VERSION = '0.3.0';\n\n/**\n * Create and configure the CLI program\n */\nexport function createCLI(): Command {\n const program = new Command();\n\n program\n .name('kg')\n .description('Knowledge Graph Agent - Generate and manage knowledge graphs for Claude Code')\n .version(VERSION, '-v, --version', 'Display version number');\n\n // Configure help\n program.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // Add commands\n program.addCommand(createInitCommand());\n program.addCommand(createGraphCommand());\n program.addCommand(createDocsCommand());\n program.addCommand(createClaudeCommand());\n program.addCommand(createSyncCommand());\n program.addCommand(createStatsCommand());\n program.addCommand(createSearchCommand());\n program.addCommand(createConvertCommand());\n program.addCommand(createFrontmatterCommand());\n program.addCommand(createAnalyzeCommand());\n program.addCommand(createSOPCommands());\n program.addCommand(createInitPrimitivesCommand());\n program.addCommand(createAnalyzeCodebaseCommand());\n program.addCommand(createCultivateCommand());\n program.addCommand(createCommitCommand());\n program.addCommand(createConfigCommand());\n program.addCommand(createDiagnosticsCommand());\n\n // Default action (show help)\n program.action(() => {\n console.log(chalk.cyan.bold('\\n Knowledge Graph Agent\\n'));\n console.log(chalk.gray(' Generate and manage knowledge graphs for Claude Code\\n'));\n\n console.log(chalk.white(' Quick Start:'));\n console.log(chalk.gray(' $ kg init # Initialize knowledge graph'));\n console.log(chalk.gray(' $ kg docs init # Initialize docs directory'));\n console.log(chalk.gray(' $ kg graph # Generate knowledge graph'));\n console.log(chalk.gray(' $ kg claude update # Update CLAUDE.md'));\n console.log(chalk.gray(' $ kg sync # Sync with claude-flow\\n'));\n\n console.log(chalk.white(' Migration & Analysis:'));\n console.log(chalk.gray(' $ kg analyze # Analyze & migrate to knowledge graph'));\n console.log(chalk.gray(' $ kg analyze deep # Deep analysis with claude-flow'));\n console.log(chalk.gray(' $ kg analyze report # Generate analysis report'));\n console.log(chalk.gray(' $ kg convert docs # Convert docs/ → docs-nn/'));\n console.log(chalk.gray(' $ kg frontmatter add # Add frontmatter to files'));\n console.log(chalk.gray(' $ kg frontmatter validate # Validate frontmatter\\n'));\n\n console.log(chalk.white(' AI-SDLC SOP Compliance:'));\n console.log(chalk.gray(' $ kg sop init # Initialize SOP standards layer'));\n console.log(chalk.gray(' $ kg sop check # Check compliance against SOPs'));\n console.log(chalk.gray(' $ kg sop gaps # Analyze compliance gaps'));\n console.log(chalk.gray(' $ kg sop report # Generate compliance report'));\n console.log(chalk.gray(' $ kg sop list # List available SOPs\\n'));\n\n console.log(chalk.white(' Cultivation & Primitives:'));\n console.log(chalk.gray(' $ kg init-primitives # Bootstrap primitives from codebase'));\n console.log(chalk.gray(' $ kg analyze-codebase # Analyze dependencies & services'));\n console.log(chalk.gray(' $ kg init-primitives --dry-run # Preview without writing\\n'));\n\n console.log(chalk.white(' Git Integration:'));\n console.log(chalk.gray(' $ kg commit # Show status and suggested message'));\n console.log(chalk.gray(' $ kg commit -a # Auto-commit with generated message'));\n console.log(chalk.gray(' $ kg commit -i # Interactive commit mode'));\n console.log(chalk.gray(' $ kg commit -m \"message\" # Commit with custom message'));\n console.log(chalk.gray(' $ kg commit status # Show git status with analysis'));\n console.log(chalk.gray(' $ kg commit log # Show recent commits'));\n console.log(chalk.gray(' $ kg commit diff # Show diff of changes\\n'));\n\n console.log(chalk.white(' Diagnostics & Health:'));\n console.log(chalk.gray(' $ kg diag run # Run full diagnostics'));\n console.log(chalk.gray(' $ kg diag run --fix # Attempt to fix issues'));\n console.log(chalk.gray(' $ kg diag health # Check system health'));\n console.log(chalk.gray(' $ kg diag repair # Repair database issues'));\n console.log(chalk.gray(' $ kg diag backup # Create database backup'));\n console.log(chalk.gray(' $ kg diag backup --list # List existing backups'));\n console.log(chalk.gray(' $ kg diag info # Show system information\\n'));\n\n console.log(chalk.white(' Commands:'));\n program.commands.forEach(cmd => {\n console.log(chalk.cyan(` ${cmd.name().padEnd(20)}`), chalk.gray(cmd.description() || ''));\n });\n\n console.log('\\n Run', chalk.cyan('kg <command> --help'), 'for more information\\n');\n });\n\n return program;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Configuration Module
3
+ *
4
+ * Provides configuration management with validation, migrations, and defaults.
5
+ */
6
+ /**
7
+ * Database configuration
8
+ */
9
+ export interface DatabaseConfig {
10
+ /** Path to database file */
11
+ path: string;
12
+ /** Enable WAL mode */
13
+ walMode?: boolean;
14
+ /** Busy timeout in milliseconds */
15
+ busyTimeout?: number;
16
+ /** Cache size in pages */
17
+ cacheSize?: number;
18
+ }
19
+ /**
20
+ * Cache configuration
21
+ */
22
+ export interface CacheConfig {
23
+ /** Enable caching */
24
+ enabled: boolean;
25
+ /** Maximum cache size in bytes */
26
+ maxSize?: number;
27
+ /** Default TTL in milliseconds */
28
+ defaultTtl?: number;
29
+ /** Eviction policy */
30
+ evictionPolicy?: 'lru' | 'lfu' | 'fifo';
31
+ }
32
+ /**
33
+ * Agent configuration
34
+ */
35
+ export interface AgentConfig {
36
+ /** Maximum concurrent agents */
37
+ maxConcurrent?: number;
38
+ /** Default timeout in milliseconds */
39
+ defaultTimeout?: number;
40
+ /** Enable agent logging */
41
+ enableLogging?: boolean;
42
+ }
43
+ /**
44
+ * Services configuration
45
+ */
46
+ export interface ServicesConfig {
47
+ /** Enable file watcher */
48
+ fileWatcher?: boolean;
49
+ /** File watcher paths */
50
+ watchPaths?: string[];
51
+ /** Health check interval in milliseconds */
52
+ healthCheckInterval?: number;
53
+ }
54
+ /**
55
+ * Logging configuration
56
+ */
57
+ export interface LoggingConfig {
58
+ /** Log level */
59
+ level: 'debug' | 'info' | 'warn' | 'error';
60
+ /** Log format */
61
+ format?: 'json' | 'text';
62
+ /** Log file path */
63
+ filePath?: string;
64
+ /** Enable console logging */
65
+ console?: boolean;
66
+ }
67
+ /**
68
+ * Full knowledge graph configuration
69
+ */
70
+ export interface KGConfiguration {
71
+ /** Database settings */
72
+ database: DatabaseConfig;
73
+ /** Cache settings */
74
+ cache?: CacheConfig;
75
+ /** Agent settings */
76
+ agents?: AgentConfig;
77
+ /** Services settings */
78
+ services?: ServicesConfig;
79
+ /** Logging settings */
80
+ logging?: LoggingConfig;
81
+ /** Project root path */
82
+ projectRoot?: string;
83
+ /** Docs path relative to project root */
84
+ docsPath?: string;
85
+ }
86
+ /**
87
+ * Configuration migration
88
+ */
89
+ export interface ConfigMigration {
90
+ /** Migration version */
91
+ version: number;
92
+ /** Migration description */
93
+ description: string;
94
+ /** Migration function */
95
+ migrate: (config: Partial<KGConfiguration>) => KGConfiguration;
96
+ }
97
+ /**
98
+ * Get default configuration
99
+ */
100
+ export declare function getDefaultConfig(): KGConfiguration;
101
+ /**
102
+ * Configuration Manager for loading, saving, and managing configuration
103
+ */
104
+ export declare class ConfigManager {
105
+ private config;
106
+ private configPath;
107
+ private migrations;
108
+ constructor(configPath?: string);
109
+ /**
110
+ * Load configuration from file
111
+ */
112
+ load(): Promise<KGConfiguration>;
113
+ /**
114
+ * Save configuration to file
115
+ */
116
+ save(): Promise<void>;
117
+ /**
118
+ * Get current configuration
119
+ */
120
+ get(): KGConfiguration;
121
+ /**
122
+ * Update configuration
123
+ */
124
+ update(updates: Partial<KGConfiguration>): KGConfiguration;
125
+ /**
126
+ * Reset to defaults
127
+ */
128
+ reset(): KGConfiguration;
129
+ /**
130
+ * Validate configuration
131
+ */
132
+ validate(): {
133
+ valid: boolean;
134
+ errors: string[];
135
+ };
136
+ /**
137
+ * Register a migration
138
+ */
139
+ registerMigration(migration: ConfigMigration): void;
140
+ /**
141
+ * Apply migrations
142
+ */
143
+ applyMigrations(fromVersion: number): KGConfiguration;
144
+ /**
145
+ * Merge configurations
146
+ */
147
+ private merge;
148
+ }
149
+ /**
150
+ * Create a new ConfigManager instance
151
+ */
152
+ export declare function createConfigManager(configPath?: string): ConfigManager;
153
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ function getDefaultConfig() {
2
+ return {
3
+ database: {
4
+ path: ".kg/knowledge.db",
5
+ walMode: true,
6
+ busyTimeout: 5e3,
7
+ cacheSize: 2e3
8
+ },
9
+ cache: {
10
+ enabled: true,
11
+ maxSize: 100 * 1024 * 1024,
12
+ // 100MB
13
+ defaultTtl: 36e5,
14
+ // 1 hour
15
+ evictionPolicy: "lru"
16
+ },
17
+ agents: {
18
+ maxConcurrent: 5,
19
+ defaultTimeout: 3e4,
20
+ enableLogging: true
21
+ },
22
+ services: {
23
+ fileWatcher: true,
24
+ watchPaths: ["docs", "src"],
25
+ healthCheckInterval: 6e4
26
+ },
27
+ logging: {
28
+ level: "info",
29
+ format: "text",
30
+ console: true
31
+ },
32
+ docsPath: "docs"
33
+ };
34
+ }
35
+ class ConfigManager {
36
+ config;
37
+ configPath;
38
+ migrations = [];
39
+ constructor(configPath) {
40
+ this.configPath = configPath || ".kg/config.json";
41
+ this.config = getDefaultConfig();
42
+ }
43
+ /**
44
+ * Load configuration from file
45
+ */
46
+ async load() {
47
+ try {
48
+ const { readFileSync, existsSync } = await import("fs");
49
+ if (existsSync(this.configPath)) {
50
+ const content = readFileSync(this.configPath, "utf-8");
51
+ const loaded = JSON.parse(content);
52
+ this.config = this.merge(getDefaultConfig(), loaded);
53
+ }
54
+ } catch {
55
+ }
56
+ return this.config;
57
+ }
58
+ /**
59
+ * Save configuration to file
60
+ */
61
+ async save() {
62
+ const { writeFileSync, mkdirSync } = await import("fs");
63
+ const { dirname } = await import("path");
64
+ mkdirSync(dirname(this.configPath), { recursive: true });
65
+ writeFileSync(this.configPath, JSON.stringify(this.config, null, 2));
66
+ }
67
+ /**
68
+ * Get current configuration
69
+ */
70
+ get() {
71
+ return { ...this.config };
72
+ }
73
+ /**
74
+ * Update configuration
75
+ */
76
+ update(updates) {
77
+ this.config = this.merge(this.config, updates);
78
+ return this.config;
79
+ }
80
+ /**
81
+ * Reset to defaults
82
+ */
83
+ reset() {
84
+ this.config = getDefaultConfig();
85
+ return this.config;
86
+ }
87
+ /**
88
+ * Validate configuration
89
+ */
90
+ validate() {
91
+ const errors = [];
92
+ if (!this.config.database?.path) {
93
+ errors.push("Database path is required");
94
+ }
95
+ return {
96
+ valid: errors.length === 0,
97
+ errors
98
+ };
99
+ }
100
+ /**
101
+ * Register a migration
102
+ */
103
+ registerMigration(migration) {
104
+ this.migrations.push(migration);
105
+ this.migrations.sort((a, b) => a.version - b.version);
106
+ }
107
+ /**
108
+ * Apply migrations
109
+ */
110
+ applyMigrations(fromVersion) {
111
+ for (const migration of this.migrations) {
112
+ if (migration.version > fromVersion) {
113
+ this.config = migration.migrate(this.config);
114
+ }
115
+ }
116
+ return this.config;
117
+ }
118
+ /**
119
+ * Merge configurations
120
+ */
121
+ merge(base, updates) {
122
+ return {
123
+ ...base,
124
+ ...updates,
125
+ database: { ...base.database, ...updates.database },
126
+ cache: updates.cache ? { ...base.cache, ...updates.cache } : base.cache,
127
+ agents: updates.agents ? { ...base.agents, ...updates.agents } : base.agents,
128
+ services: updates.services ? { ...base.services, ...updates.services } : base.services,
129
+ logging: updates.logging ? { ...base.logging, ...updates.logging } : base.logging
130
+ };
131
+ }
132
+ }
133
+ function createConfigManager(configPath) {
134
+ return new ConfigManager(configPath);
135
+ }
136
+ export {
137
+ ConfigManager,
138
+ createConfigManager,
139
+ getDefaultConfig
140
+ };
141
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/config/index.ts"],"sourcesContent":["/**\n * Configuration Module\n *\n * Provides configuration management with validation, migrations, and defaults.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Database configuration\n */\nexport interface DatabaseConfig {\n /** Path to database file */\n path: string;\n /** Enable WAL mode */\n walMode?: boolean;\n /** Busy timeout in milliseconds */\n busyTimeout?: number;\n /** Cache size in pages */\n cacheSize?: number;\n}\n\n/**\n * Cache configuration\n */\nexport interface CacheConfig {\n /** Enable caching */\n enabled: boolean;\n /** Maximum cache size in bytes */\n maxSize?: number;\n /** Default TTL in milliseconds */\n defaultTtl?: number;\n /** Eviction policy */\n evictionPolicy?: 'lru' | 'lfu' | 'fifo';\n}\n\n/**\n * Agent configuration\n */\nexport interface AgentConfig {\n /** Maximum concurrent agents */\n maxConcurrent?: number;\n /** Default timeout in milliseconds */\n defaultTimeout?: number;\n /** Enable agent logging */\n enableLogging?: boolean;\n}\n\n/**\n * Services configuration\n */\nexport interface ServicesConfig {\n /** Enable file watcher */\n fileWatcher?: boolean;\n /** File watcher paths */\n watchPaths?: string[];\n /** Health check interval in milliseconds */\n healthCheckInterval?: number;\n}\n\n/**\n * Logging configuration\n */\nexport interface LoggingConfig {\n /** Log level */\n level: 'debug' | 'info' | 'warn' | 'error';\n /** Log format */\n format?: 'json' | 'text';\n /** Log file path */\n filePath?: string;\n /** Enable console logging */\n console?: boolean;\n}\n\n/**\n * Full knowledge graph configuration\n */\nexport interface KGConfiguration {\n /** Database settings */\n database: DatabaseConfig;\n /** Cache settings */\n cache?: CacheConfig;\n /** Agent settings */\n agents?: AgentConfig;\n /** Services settings */\n services?: ServicesConfig;\n /** Logging settings */\n logging?: LoggingConfig;\n /** Project root path */\n projectRoot?: string;\n /** Docs path relative to project root */\n docsPath?: string;\n}\n\n/**\n * Configuration migration\n */\nexport interface ConfigMigration {\n /** Migration version */\n version: number;\n /** Migration description */\n description: string;\n /** Migration function */\n migrate: (config: Partial<KGConfiguration>) => KGConfiguration;\n}\n\n// ============================================================================\n// Default Configuration\n// ============================================================================\n\n/**\n * Get default configuration\n */\nexport function getDefaultConfig(): KGConfiguration {\n return {\n database: {\n path: '.kg/knowledge.db',\n walMode: true,\n busyTimeout: 5000,\n cacheSize: 2000,\n },\n cache: {\n enabled: true,\n maxSize: 100 * 1024 * 1024, // 100MB\n defaultTtl: 3600000, // 1 hour\n evictionPolicy: 'lru',\n },\n agents: {\n maxConcurrent: 5,\n defaultTimeout: 30000,\n enableLogging: true,\n },\n services: {\n fileWatcher: true,\n watchPaths: ['docs', 'src'],\n healthCheckInterval: 60000,\n },\n logging: {\n level: 'info',\n format: 'text',\n console: true,\n },\n docsPath: 'docs',\n };\n}\n\n// ============================================================================\n// Configuration Manager\n// ============================================================================\n\n/**\n * Configuration Manager for loading, saving, and managing configuration\n */\nexport class ConfigManager {\n private config: KGConfiguration;\n private configPath: string;\n private migrations: ConfigMigration[] = [];\n\n constructor(configPath?: string) {\n this.configPath = configPath || '.kg/config.json';\n this.config = getDefaultConfig();\n }\n\n /**\n * Load configuration from file\n */\n async load(): Promise<KGConfiguration> {\n try {\n const { readFileSync, existsSync } = await import('fs');\n if (existsSync(this.configPath)) {\n const content = readFileSync(this.configPath, 'utf-8');\n const loaded = JSON.parse(content) as Partial<KGConfiguration>;\n this.config = this.merge(getDefaultConfig(), loaded);\n }\n } catch {\n // Use defaults on error\n }\n return this.config;\n }\n\n /**\n * Save configuration to file\n */\n async save(): Promise<void> {\n const { writeFileSync, mkdirSync } = await import('fs');\n const { dirname } = await import('path');\n\n mkdirSync(dirname(this.configPath), { recursive: true });\n writeFileSync(this.configPath, JSON.stringify(this.config, null, 2));\n }\n\n /**\n * Get current configuration\n */\n get(): KGConfiguration {\n return { ...this.config };\n }\n\n /**\n * Update configuration\n */\n update(updates: Partial<KGConfiguration>): KGConfiguration {\n this.config = this.merge(this.config, updates);\n return this.config;\n }\n\n /**\n * Reset to defaults\n */\n reset(): KGConfiguration {\n this.config = getDefaultConfig();\n return this.config;\n }\n\n /**\n * Validate configuration\n */\n validate(): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n\n if (!this.config.database?.path) {\n errors.push('Database path is required');\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * Register a migration\n */\n registerMigration(migration: ConfigMigration): void {\n this.migrations.push(migration);\n this.migrations.sort((a, b) => a.version - b.version);\n }\n\n /**\n * Apply migrations\n */\n applyMigrations(fromVersion: number): KGConfiguration {\n for (const migration of this.migrations) {\n if (migration.version > fromVersion) {\n this.config = migration.migrate(this.config);\n }\n }\n return this.config;\n }\n\n /**\n * Merge configurations\n */\n private merge(\n base: KGConfiguration,\n updates: Partial<KGConfiguration>\n ): KGConfiguration {\n return {\n ...base,\n ...updates,\n database: { ...base.database, ...updates.database },\n cache: updates.cache ? { ...base.cache, ...updates.cache } : base.cache,\n agents: updates.agents ? { ...base.agents, ...updates.agents } : base.agents,\n services: updates.services ? { ...base.services, ...updates.services } : base.services,\n logging: updates.logging ? { ...base.logging, ...updates.logging } : base.logging,\n };\n }\n}\n\n/**\n * Create a new ConfigManager instance\n */\nexport function createConfigManager(configPath?: string): ConfigManager {\n return new ConfigManager(configPath);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Configuration Manager
3
+ *
4
+ * Manages Knowledge Graph configuration with migration support,
5
+ * persistence, and validation.
6
+ *
7
+ * @module config/manager
8
+ */
9
+ import type { KGConfiguration, ConfigMigration } from './types.js';
10
+ /**
11
+ * Configuration Manager class
12
+ *
13
+ * Handles loading, saving, and migrating configuration files.
14
+ */
15
+ export declare class ConfigManager {
16
+ private config;
17
+ private configPath;
18
+ private migrations;
19
+ /**
20
+ * Create a new ConfigManager instance
21
+ *
22
+ * @param projectRoot - Root directory of the project
23
+ * @param configPath - Optional custom config file path
24
+ */
25
+ constructor(projectRoot: string, configPath?: string);
26
+ /**
27
+ * Load configuration from file
28
+ *
29
+ * @returns Loaded configuration merged with defaults
30
+ */
31
+ private load;
32
+ /**
33
+ * Merge loaded configuration with defaults
34
+ *
35
+ * @param loaded - Partially loaded configuration
36
+ * @returns Complete configuration with defaults filled in
37
+ */
38
+ private mergeWithDefaults;
39
+ /**
40
+ * Save configuration to file
41
+ */
42
+ save(): void;
43
+ /**
44
+ * Get a configuration value by key
45
+ *
46
+ * @param key - Configuration key
47
+ * @returns Configuration value for the key
48
+ */
49
+ get<K extends keyof KGConfiguration>(key: K): KGConfiguration[K];
50
+ /**
51
+ * Set a configuration value
52
+ *
53
+ * @param key - Configuration key
54
+ * @param value - Value to set
55
+ */
56
+ set<K extends keyof KGConfiguration>(key: K, value: KGConfiguration[K]): void;
57
+ /**
58
+ * Update multiple configuration values
59
+ *
60
+ * @param updates - Partial configuration to merge
61
+ */
62
+ update(updates: Partial<KGConfiguration>): void;
63
+ /**
64
+ * Get the complete configuration
65
+ *
66
+ * @returns Complete configuration object (copy)
67
+ */
68
+ getAll(): KGConfiguration;
69
+ /**
70
+ * Register a configuration migration
71
+ *
72
+ * @param migration - Migration definition
73
+ */
74
+ registerMigration(migration: ConfigMigration): void;
75
+ /**
76
+ * Run migrations to target version
77
+ *
78
+ * @param targetVersion - Target version to migrate to (defaults to latest)
79
+ */
80
+ migrate(targetVersion?: string): void;
81
+ /**
82
+ * Compare two version strings
83
+ *
84
+ * @param a - First version
85
+ * @param b - Second version
86
+ * @returns Negative if a < b, 0 if equal, positive if a > b
87
+ */
88
+ private compareVersions;
89
+ /**
90
+ * Get the version before a given version
91
+ *
92
+ * @param version - Current version
93
+ * @returns Previous version string
94
+ */
95
+ private getPreviousVersion;
96
+ /**
97
+ * Reset configuration to defaults
98
+ */
99
+ reset(): void;
100
+ /**
101
+ * Get the configuration file path
102
+ *
103
+ * @returns Path to the configuration file
104
+ */
105
+ getConfigPath(): string;
106
+ /**
107
+ * Check if configuration file exists
108
+ *
109
+ * @returns True if config file exists
110
+ */
111
+ exists(): boolean;
112
+ /**
113
+ * Validate the current configuration
114
+ *
115
+ * @returns Validation result with any errors
116
+ */
117
+ validate(): {
118
+ valid: boolean;
119
+ errors: string[];
120
+ };
121
+ }
122
+ /**
123
+ * Create a new ConfigManager instance
124
+ *
125
+ * @param projectRoot - Root directory of the project
126
+ * @param configPath - Optional custom config file path
127
+ * @returns ConfigManager instance
128
+ */
129
+ export declare function createConfigManager(projectRoot: string, configPath?: string): ConfigManager;
130
+ /**
131
+ * Get a copy of the default configuration
132
+ *
133
+ * @returns Default configuration object
134
+ */
135
+ export declare function getDefaultConfig(): KGConfiguration;
136
+ //# sourceMappingURL=manager.d.ts.map