@weavelogic/knowledge-graph-agent 0.2.0 → 0.4.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 (711) hide show
  1. package/README.md +972 -303
  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/audit/config.d.ts +150 -0
  181. package/dist/audit/config.d.ts.map +1 -0
  182. package/dist/audit/config.js +111 -0
  183. package/dist/audit/config.js.map +1 -0
  184. package/dist/audit/index.d.ts +38 -0
  185. package/dist/audit/index.d.ts.map +1 -0
  186. package/dist/audit/services/audit-chain.d.ts +276 -0
  187. package/dist/audit/services/audit-chain.d.ts.map +1 -0
  188. package/dist/audit/services/audit-chain.js +502 -0
  189. package/dist/audit/services/audit-chain.js.map +1 -0
  190. package/dist/audit/services/index.d.ts +11 -0
  191. package/dist/audit/services/index.d.ts.map +1 -0
  192. package/dist/audit/services/syndication.d.ts +334 -0
  193. package/dist/audit/services/syndication.d.ts.map +1 -0
  194. package/dist/audit/services/syndication.js +589 -0
  195. package/dist/audit/services/syndication.js.map +1 -0
  196. package/dist/audit/types.d.ts +453 -0
  197. package/dist/audit/types.d.ts.map +1 -0
  198. package/dist/caching/index.d.ts +55 -0
  199. package/dist/caching/index.d.ts.map +1 -0
  200. package/dist/caching/index.js +206 -0
  201. package/dist/caching/index.js.map +1 -0
  202. package/dist/caching/lru-cache.d.ts +254 -0
  203. package/dist/caching/lru-cache.d.ts.map +1 -0
  204. package/dist/caching/types.d.ts +95 -0
  205. package/dist/caching/types.d.ts.map +1 -0
  206. package/dist/chunking/chunker.d.ts +94 -0
  207. package/dist/chunking/chunker.d.ts.map +1 -0
  208. package/dist/chunking/index.d.ts +125 -0
  209. package/dist/chunking/index.d.ts.map +1 -0
  210. package/dist/chunking/index.js +283 -0
  211. package/dist/chunking/index.js.map +1 -0
  212. package/dist/chunking/types.d.ts +92 -0
  213. package/dist/chunking/types.d.ts.map +1 -0
  214. package/dist/cli/commands/audit.d.ts +21 -0
  215. package/dist/cli/commands/audit.d.ts.map +1 -0
  216. package/dist/cli/commands/audit.js +621 -0
  217. package/dist/cli/commands/audit.js.map +1 -0
  218. package/dist/cli/commands/commit.d.ts +11 -0
  219. package/dist/cli/commands/commit.d.ts.map +1 -0
  220. package/dist/cli/commands/commit.js +379 -0
  221. package/dist/cli/commands/commit.js.map +1 -0
  222. package/dist/cli/commands/config.d.ts +8 -0
  223. package/dist/cli/commands/config.d.ts.map +1 -0
  224. package/dist/cli/commands/config.js +107 -0
  225. package/dist/cli/commands/config.js.map +1 -0
  226. package/dist/cli/commands/cultivate.d.ts +16 -0
  227. package/dist/cli/commands/cultivate.d.ts.map +1 -0
  228. package/dist/cli/commands/cultivate.js +254 -0
  229. package/dist/cli/commands/cultivate.js.map +1 -0
  230. package/dist/cli/commands/diagnostics.d.ts +8 -0
  231. package/dist/cli/commands/diagnostics.d.ts.map +1 -0
  232. package/dist/cli/commands/diagnostics.js +140 -0
  233. package/dist/cli/commands/diagnostics.js.map +1 -0
  234. package/dist/cli/commands/generate.d.ts +13 -0
  235. package/dist/cli/commands/generate.d.ts.map +1 -0
  236. package/dist/cli/commands/init-primitives.d.ts +19 -0
  237. package/dist/cli/commands/init-primitives.d.ts.map +1 -0
  238. package/dist/cli/commands/init-primitives.js +208 -0
  239. package/dist/cli/commands/init-primitives.js.map +1 -0
  240. package/dist/cli/commands/sop.d.ts +14 -0
  241. package/dist/cli/commands/sop.d.ts.map +1 -0
  242. package/dist/cli/commands/sop.js +598 -0
  243. package/dist/cli/commands/sop.js.map +1 -0
  244. package/dist/cli/commands/vector.d.ts +14 -0
  245. package/dist/cli/commands/vector.d.ts.map +1 -0
  246. package/dist/cli/commands/vector.js +429 -0
  247. package/dist/cli/commands/vector.js.map +1 -0
  248. package/dist/cli/commands/workflow.d.ts +12 -0
  249. package/dist/cli/commands/workflow.d.ts.map +1 -0
  250. package/dist/cli/commands/workflow.js +471 -0
  251. package/dist/cli/commands/workflow.js.map +1 -0
  252. package/dist/cli/index.d.ts.map +1 -1
  253. package/dist/cli/index.js +66 -1
  254. package/dist/cli/index.js.map +1 -1
  255. package/dist/config/index.d.ts +153 -0
  256. package/dist/config/index.d.ts.map +1 -0
  257. package/dist/config/index.js +141 -0
  258. package/dist/config/index.js.map +1 -0
  259. package/dist/config/manager.d.ts +136 -0
  260. package/dist/config/manager.d.ts.map +1 -0
  261. package/dist/config/types.d.ts +127 -0
  262. package/dist/config/types.d.ts.map +1 -0
  263. package/dist/core/cache.d.ts +185 -0
  264. package/dist/core/cache.d.ts.map +1 -0
  265. package/dist/core/cache.js +435 -0
  266. package/dist/core/cache.js.map +1 -0
  267. package/dist/cultivation/deep-analyzer.d.ts +129 -0
  268. package/dist/cultivation/deep-analyzer.d.ts.map +1 -0
  269. package/dist/cultivation/deep-analyzer.js +322 -0
  270. package/dist/cultivation/deep-analyzer.js.map +1 -0
  271. package/dist/cultivation/index.d.ts +13 -0
  272. package/dist/cultivation/index.d.ts.map +1 -0
  273. package/dist/cultivation/seed-generator.d.ts +92 -0
  274. package/dist/cultivation/seed-generator.d.ts.map +1 -0
  275. package/dist/cultivation/seed-generator.js +1033 -0
  276. package/dist/cultivation/seed-generator.js.map +1 -0
  277. package/dist/cultivation/types.d.ts +230 -0
  278. package/dist/cultivation/types.d.ts.map +1 -0
  279. package/dist/database/schemas/index.d.ts +85 -0
  280. package/dist/database/schemas/index.d.ts.map +1 -0
  281. package/dist/generators/claude-md.d.ts +7 -0
  282. package/dist/generators/claude-md.d.ts.map +1 -1
  283. package/dist/generators/claude-md.js.map +1 -1
  284. package/dist/generators/docs-init.d.ts +6 -0
  285. package/dist/generators/docs-init.d.ts.map +1 -1
  286. package/dist/generators/docs-init.js.map +1 -1
  287. package/dist/health/checks.d.ts +135 -0
  288. package/dist/health/checks.d.ts.map +1 -0
  289. package/dist/health/index.d.ts +119 -0
  290. package/dist/health/index.d.ts.map +1 -0
  291. package/dist/health/index.js +191 -0
  292. package/dist/health/index.js.map +1 -0
  293. package/dist/health/monitor.d.ts +146 -0
  294. package/dist/health/monitor.d.ts.map +1 -0
  295. package/dist/health/types.d.ts +135 -0
  296. package/dist/health/types.d.ts.map +1 -0
  297. package/dist/index.d.ts +32 -0
  298. package/dist/index.d.ts.map +1 -1
  299. package/dist/index.js +182 -1
  300. package/dist/index.js.map +1 -1
  301. package/dist/integrations/auto-commit.d.ts +175 -0
  302. package/dist/integrations/auto-commit.d.ts.map +1 -0
  303. package/dist/integrations/auto-commit.js +399 -0
  304. package/dist/integrations/auto-commit.js.map +1 -0
  305. package/dist/integrations/git.d.ts +299 -0
  306. package/dist/integrations/git.d.ts.map +1 -0
  307. package/dist/integrations/git.js +465 -0
  308. package/dist/integrations/git.js.map +1 -0
  309. package/dist/mcp-server/bin.d.ts +11 -0
  310. package/dist/mcp-server/bin.d.ts.map +1 -0
  311. package/dist/mcp-server/handlers/index.d.ts +57 -0
  312. package/dist/mcp-server/handlers/index.d.ts.map +1 -0
  313. package/dist/mcp-server/handlers/index.js +235 -0
  314. package/dist/mcp-server/handlers/index.js.map +1 -0
  315. package/dist/mcp-server/index.d.ts +28 -0
  316. package/dist/mcp-server/index.d.ts.map +1 -0
  317. package/dist/mcp-server/server.d.ts +133 -0
  318. package/dist/mcp-server/server.d.ts.map +1 -0
  319. package/dist/mcp-server/server.js +280 -0
  320. package/dist/mcp-server/server.js.map +1 -0
  321. package/dist/mcp-server/tools/agents/index.d.ts +10 -0
  322. package/dist/mcp-server/tools/agents/index.d.ts.map +1 -0
  323. package/dist/mcp-server/tools/agents/list.d.ts +19 -0
  324. package/dist/mcp-server/tools/agents/list.d.ts.map +1 -0
  325. package/dist/mcp-server/tools/agents/spawn.d.ts +19 -0
  326. package/dist/mcp-server/tools/agents/spawn.d.ts.map +1 -0
  327. package/dist/mcp-server/tools/audit/checkpoint.d.ts +58 -0
  328. package/dist/mcp-server/tools/audit/checkpoint.d.ts.map +1 -0
  329. package/dist/mcp-server/tools/audit/checkpoint.js +73 -0
  330. package/dist/mcp-server/tools/audit/checkpoint.js.map +1 -0
  331. package/dist/mcp-server/tools/audit/index.d.ts +53 -0
  332. package/dist/mcp-server/tools/audit/index.d.ts.map +1 -0
  333. package/dist/mcp-server/tools/audit/index.js +12 -0
  334. package/dist/mcp-server/tools/audit/index.js.map +1 -0
  335. package/dist/mcp-server/tools/audit/query.d.ts +58 -0
  336. package/dist/mcp-server/tools/audit/query.d.ts.map +1 -0
  337. package/dist/mcp-server/tools/audit/query.js +125 -0
  338. package/dist/mcp-server/tools/audit/query.js.map +1 -0
  339. package/dist/mcp-server/tools/audit/sync.d.ts +58 -0
  340. package/dist/mcp-server/tools/audit/sync.d.ts.map +1 -0
  341. package/dist/mcp-server/tools/audit/sync.js +126 -0
  342. package/dist/mcp-server/tools/audit/sync.js.map +1 -0
  343. package/dist/mcp-server/tools/graph/generate.d.ts +21 -0
  344. package/dist/mcp-server/tools/graph/generate.d.ts.map +1 -0
  345. package/dist/mcp-server/tools/graph/index.d.ts +11 -0
  346. package/dist/mcp-server/tools/graph/index.d.ts.map +1 -0
  347. package/dist/mcp-server/tools/graph/query.d.ts +22 -0
  348. package/dist/mcp-server/tools/graph/query.d.ts.map +1 -0
  349. package/dist/mcp-server/tools/graph/stats.d.ts +22 -0
  350. package/dist/mcp-server/tools/graph/stats.d.ts.map +1 -0
  351. package/dist/mcp-server/tools/health.d.ts +21 -0
  352. package/dist/mcp-server/tools/health.d.ts.map +1 -0
  353. package/dist/mcp-server/tools/index.d.ts +16 -0
  354. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  355. package/dist/mcp-server/tools/registry.d.ts +90 -0
  356. package/dist/mcp-server/tools/registry.d.ts.map +1 -0
  357. package/dist/mcp-server/tools/registry.js +753 -0
  358. package/dist/mcp-server/tools/registry.js.map +1 -0
  359. package/dist/mcp-server/tools/search/index.d.ts +10 -0
  360. package/dist/mcp-server/tools/search/index.d.ts.map +1 -0
  361. package/dist/mcp-server/tools/search/nodes.d.ts +22 -0
  362. package/dist/mcp-server/tools/search/nodes.d.ts.map +1 -0
  363. package/dist/mcp-server/tools/search/tags.d.ts +22 -0
  364. package/dist/mcp-server/tools/search/tags.d.ts.map +1 -0
  365. package/dist/mcp-server/tools/vector/index.d.ts +12 -0
  366. package/dist/mcp-server/tools/vector/index.d.ts.map +1 -0
  367. package/dist/mcp-server/tools/vector/index.js +12 -0
  368. package/dist/mcp-server/tools/vector/index.js.map +1 -0
  369. package/dist/mcp-server/tools/vector/search.d.ts +41 -0
  370. package/dist/mcp-server/tools/vector/search.d.ts.map +1 -0
  371. package/dist/mcp-server/tools/vector/search.js +224 -0
  372. package/dist/mcp-server/tools/vector/search.js.map +1 -0
  373. package/dist/mcp-server/tools/vector/trajectory.d.ts +39 -0
  374. package/dist/mcp-server/tools/vector/trajectory.d.ts.map +1 -0
  375. package/dist/mcp-server/tools/vector/trajectory.js +170 -0
  376. package/dist/mcp-server/tools/vector/trajectory.js.map +1 -0
  377. package/dist/mcp-server/tools/vector/upsert.d.ts +44 -0
  378. package/dist/mcp-server/tools/vector/upsert.d.ts.map +1 -0
  379. package/dist/mcp-server/tools/vector/upsert.js +175 -0
  380. package/dist/mcp-server/tools/vector/upsert.js.map +1 -0
  381. package/dist/mcp-server/tools/workflow/index.d.ts +29 -0
  382. package/dist/mcp-server/tools/workflow/index.d.ts.map +1 -0
  383. package/dist/mcp-server/tools/workflow/index.js +12 -0
  384. package/dist/mcp-server/tools/workflow/index.js.map +1 -0
  385. package/dist/mcp-server/tools/workflow/list.d.ts +41 -0
  386. package/dist/mcp-server/tools/workflow/list.d.ts.map +1 -0
  387. package/dist/mcp-server/tools/workflow/list.js +195 -0
  388. package/dist/mcp-server/tools/workflow/list.js.map +1 -0
  389. package/dist/mcp-server/tools/workflow/start.d.ts +40 -0
  390. package/dist/mcp-server/tools/workflow/start.d.ts.map +1 -0
  391. package/dist/mcp-server/tools/workflow/start.js +165 -0
  392. package/dist/mcp-server/tools/workflow/start.js.map +1 -0
  393. package/dist/mcp-server/tools/workflow/status.d.ts +38 -0
  394. package/dist/mcp-server/tools/workflow/status.d.ts.map +1 -0
  395. package/dist/mcp-server/tools/workflow/status.js +97 -0
  396. package/dist/mcp-server/tools/workflow/status.js.map +1 -0
  397. package/dist/mcp-server/types/index.d.ts +286 -0
  398. package/dist/mcp-server/types/index.d.ts.map +1 -0
  399. package/dist/memory/index.d.ts +10 -0
  400. package/dist/memory/index.d.ts.map +1 -0
  401. package/dist/memory/vault-sync.d.ts +212 -0
  402. package/dist/memory/vault-sync.d.ts.map +1 -0
  403. package/dist/memory/vault-sync.js +463 -0
  404. package/dist/memory/vault-sync.js.map +1 -0
  405. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +296 -0
  406. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  407. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +71 -0
  408. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  409. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +26 -0
  410. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  411. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +407 -0
  412. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  413. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1332 -0
  414. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  415. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +71 -0
  416. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  417. package/dist/node_modules/ajv/dist/ajv.js +84 -0
  418. package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
  419. package/dist/node_modules/ajv/dist/compile/codegen/code.js +160 -0
  420. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  421. package/dist/node_modules/ajv/dist/compile/codegen/index.js +728 -0
  422. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  423. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +152 -0
  424. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  425. package/dist/node_modules/ajv/dist/compile/errors.js +131 -0
  426. package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
  427. package/dist/node_modules/ajv/dist/compile/index.js +234 -0
  428. package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
  429. package/dist/node_modules/ajv/dist/compile/names.js +44 -0
  430. package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
  431. package/dist/node_modules/ajv/dist/compile/ref_error.js +22 -0
  432. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  433. package/dist/node_modules/ajv/dist/compile/resolve.js +163 -0
  434. package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  435. package/dist/node_modules/ajv/dist/compile/rules.js +35 -0
  436. package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
  437. package/dist/node_modules/ajv/dist/compile/util.js +173 -0
  438. package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
  439. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
  440. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  441. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +58 -0
  442. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  443. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +193 -0
  444. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  445. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +43 -0
  446. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  447. package/dist/node_modules/ajv/dist/compile/validate/index.js +522 -0
  448. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  449. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +126 -0
  450. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  451. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +89 -0
  452. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  453. package/dist/node_modules/ajv/dist/core.js +628 -0
  454. package/dist/node_modules/ajv/dist/core.js.map +1 -0
  455. package/dist/node_modules/ajv/dist/refs/data.json.js +24 -0
  456. package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
  457. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +25 -0
  458. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
  459. package/dist/node_modules/ajv/dist/runtime/equal.js +16 -0
  460. package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  461. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +30 -0
  462. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  463. package/dist/node_modules/ajv/dist/runtime/uri.js +16 -0
  464. package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  465. package/dist/node_modules/ajv/dist/runtime/validation_error.js +20 -0
  466. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  467. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  468. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  469. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +114 -0
  470. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  471. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +32 -0
  472. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  473. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +22 -0
  474. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  475. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +100 -0
  476. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  477. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +103 -0
  478. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  479. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +75 -0
  480. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  481. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +68 -0
  482. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  483. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +64 -0
  484. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  485. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +43 -0
  486. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  487. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
  488. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  489. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
  490. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  491. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +81 -0
  492. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  493. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
  494. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  495. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +66 -0
  496. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  497. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +49 -0
  498. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  499. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +23 -0
  500. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  501. package/dist/node_modules/ajv/dist/vocabularies/code.js +140 -0
  502. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  503. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
  504. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  505. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
  506. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  507. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +132 -0
  508. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  509. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +114 -0
  510. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  511. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
  512. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  513. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
  514. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  515. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +95 -0
  516. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  517. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +16 -0
  518. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  519. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
  520. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  521. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +36 -0
  522. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  523. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +56 -0
  524. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  525. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +52 -0
  526. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  527. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +34 -0
  528. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  529. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +39 -0
  530. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  531. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +37 -0
  532. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  533. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +34 -0
  534. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  535. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +33 -0
  536. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  537. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +34 -0
  538. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  539. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +89 -0
  540. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  541. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
  542. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  543. package/dist/node_modules/ajv-formats/dist/formats.js +209 -0
  544. package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
  545. package/dist/node_modules/ajv-formats/dist/index.js +51 -0
  546. package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
  547. package/dist/node_modules/ajv-formats/dist/limit.js +80 -0
  548. package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
  549. package/dist/node_modules/fast-deep-equal/index.js +39 -0
  550. package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
  551. package/dist/node_modules/fast-uri/index.js +261 -0
  552. package/dist/node_modules/fast-uri/index.js.map +1 -0
  553. package/dist/node_modules/fast-uri/lib/schemes.js +215 -0
  554. package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
  555. package/dist/node_modules/fast-uri/lib/utils.js +261 -0
  556. package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
  557. package/dist/node_modules/json-schema-traverse/index.js +92 -0
  558. package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
  559. package/dist/node_modules/zod/v4/classic/errors.js +37 -0
  560. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  561. package/dist/node_modules/zod/v4/classic/iso.js +43 -0
  562. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  563. package/dist/node_modules/zod/v4/classic/parse.js +13 -0
  564. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  565. package/dist/node_modules/zod/v4/classic/schemas.js +688 -0
  566. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  567. package/dist/node_modules/zod/v4/core/api.js +492 -0
  568. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  569. package/dist/node_modules/zod/v4/core/checks.js +405 -0
  570. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  571. package/dist/node_modules/zod/v4/core/core.js +58 -0
  572. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  573. package/dist/node_modules/zod/v4/core/doc.js +38 -0
  574. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  575. package/dist/node_modules/zod/v4/core/errors.js +82 -0
  576. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  577. package/dist/node_modules/zod/v4/core/parse.js +60 -0
  578. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  579. package/dist/node_modules/zod/v4/core/regexes.js +87 -0
  580. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  581. package/dist/node_modules/zod/v4/core/registries.js +52 -0
  582. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  583. package/dist/node_modules/zod/v4/core/schemas.js +1283 -0
  584. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  585. package/dist/node_modules/zod/v4/core/util.js +341 -0
  586. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  587. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  588. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  589. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
  590. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  591. package/dist/reasoning/index.d.ts +74 -0
  592. package/dist/reasoning/index.d.ts.map +1 -0
  593. package/dist/reasoning/index.js +124 -0
  594. package/dist/reasoning/index.js.map +1 -0
  595. package/dist/reasoning/tracker.d.ts +210 -0
  596. package/dist/reasoning/tracker.d.ts.map +1 -0
  597. package/dist/reasoning/types.d.ts +146 -0
  598. package/dist/reasoning/types.d.ts.map +1 -0
  599. package/dist/recovery/backup.d.ts +110 -0
  600. package/dist/recovery/backup.d.ts.map +1 -0
  601. package/dist/recovery/index.d.ts +70 -0
  602. package/dist/recovery/index.d.ts.map +1 -0
  603. package/dist/recovery/index.js +186 -0
  604. package/dist/recovery/index.js.map +1 -0
  605. package/dist/recovery/integrity.d.ts +74 -0
  606. package/dist/recovery/integrity.d.ts.map +1 -0
  607. package/dist/recovery/types.d.ts +94 -0
  608. package/dist/recovery/types.d.ts.map +1 -0
  609. package/dist/services/index.d.ts +130 -0
  610. package/dist/services/index.d.ts.map +1 -0
  611. package/dist/services/index.js +134 -0
  612. package/dist/services/index.js.map +1 -0
  613. package/dist/services/manager.d.ts +140 -0
  614. package/dist/services/manager.d.ts.map +1 -0
  615. package/dist/services/types.d.ts +106 -0
  616. package/dist/services/types.d.ts.map +1 -0
  617. package/dist/services/watchers.d.ts +95 -0
  618. package/dist/services/watchers.d.ts.map +1 -0
  619. package/dist/sops/compliance-checker.d.ts +83 -0
  620. package/dist/sops/compliance-checker.d.ts.map +1 -0
  621. package/dist/sops/compliance-checker.js +399 -0
  622. package/dist/sops/compliance-checker.js.map +1 -0
  623. package/dist/sops/gap-analyzer.d.ts +124 -0
  624. package/dist/sops/gap-analyzer.d.ts.map +1 -0
  625. package/dist/sops/gap-analyzer.js +313 -0
  626. package/dist/sops/gap-analyzer.js.map +1 -0
  627. package/dist/sops/index.d.ts +14 -0
  628. package/dist/sops/index.d.ts.map +1 -0
  629. package/dist/sops/overlay-manager.d.ts +115 -0
  630. package/dist/sops/overlay-manager.d.ts.map +1 -0
  631. package/dist/sops/overlay-manager.js +394 -0
  632. package/dist/sops/overlay-manager.js.map +1 -0
  633. package/dist/sops/registry.d.ts +73 -0
  634. package/dist/sops/registry.d.ts.map +1 -0
  635. package/dist/sops/registry.js +919 -0
  636. package/dist/sops/registry.js.map +1 -0
  637. package/dist/sops/types.d.ts +377 -0
  638. package/dist/sops/types.d.ts.map +1 -0
  639. package/dist/sops/types.js +46 -0
  640. package/dist/sops/types.js.map +1 -0
  641. package/dist/utils/error-recovery.d.ts +230 -0
  642. package/dist/utils/error-recovery.d.ts.map +1 -0
  643. package/dist/utils/error-recovery.js +228 -0
  644. package/dist/utils/error-recovery.js.map +1 -0
  645. package/dist/utils/error-taxonomy.d.ts +149 -0
  646. package/dist/utils/error-taxonomy.d.ts.map +1 -0
  647. package/dist/utils/error-taxonomy.js +260 -0
  648. package/dist/utils/error-taxonomy.js.map +1 -0
  649. package/dist/utils/index.d.ts +11 -0
  650. package/dist/utils/index.d.ts.map +1 -0
  651. package/dist/utils/logger.d.ts +139 -0
  652. package/dist/utils/logger.d.ts.map +1 -0
  653. package/dist/utils/logger.js +311 -0
  654. package/dist/utils/logger.js.map +1 -0
  655. package/dist/vector/config.d.ts +300 -0
  656. package/dist/vector/config.d.ts.map +1 -0
  657. package/dist/vector/config.js +124 -0
  658. package/dist/vector/config.js.map +1 -0
  659. package/dist/vector/index.d.ts +50 -0
  660. package/dist/vector/index.d.ts.map +1 -0
  661. package/dist/vector/services/index.d.ts +13 -0
  662. package/dist/vector/services/index.d.ts.map +1 -0
  663. package/dist/vector/services/trajectory-tracker.d.ts +405 -0
  664. package/dist/vector/services/trajectory-tracker.d.ts.map +1 -0
  665. package/dist/vector/services/trajectory-tracker.js +445 -0
  666. package/dist/vector/services/trajectory-tracker.js.map +1 -0
  667. package/dist/vector/services/vector-store.d.ts +339 -0
  668. package/dist/vector/services/vector-store.d.ts.map +1 -0
  669. package/dist/vector/services/vector-store.js +748 -0
  670. package/dist/vector/services/vector-store.js.map +1 -0
  671. package/dist/vector/types.d.ts +677 -0
  672. package/dist/vector/types.d.ts.map +1 -0
  673. package/dist/workflow/adapters/goap-adapter.d.ts +196 -0
  674. package/dist/workflow/adapters/goap-adapter.d.ts.map +1 -0
  675. package/dist/workflow/adapters/goap-adapter.js +706 -0
  676. package/dist/workflow/adapters/goap-adapter.js.map +1 -0
  677. package/dist/workflow/adapters/index.d.ts +10 -0
  678. package/dist/workflow/adapters/index.d.ts.map +1 -0
  679. package/dist/workflow/config.d.ts +135 -0
  680. package/dist/workflow/config.d.ts.map +1 -0
  681. package/dist/workflow/config.js +92 -0
  682. package/dist/workflow/config.js.map +1 -0
  683. package/dist/workflow/handlers/index.d.ts +9 -0
  684. package/dist/workflow/handlers/index.d.ts.map +1 -0
  685. package/dist/workflow/handlers/webhook-handlers.d.ts +397 -0
  686. package/dist/workflow/handlers/webhook-handlers.d.ts.map +1 -0
  687. package/dist/workflow/handlers/webhook-handlers.js +454 -0
  688. package/dist/workflow/handlers/webhook-handlers.js.map +1 -0
  689. package/dist/workflow/index.d.ts +42 -0
  690. package/dist/workflow/index.d.ts.map +1 -0
  691. package/dist/workflow/services/index.d.ts +9 -0
  692. package/dist/workflow/services/index.d.ts.map +1 -0
  693. package/dist/workflow/services/workflow-service.d.ts +318 -0
  694. package/dist/workflow/services/workflow-service.d.ts.map +1 -0
  695. package/dist/workflow/services/workflow-service.js +577 -0
  696. package/dist/workflow/services/workflow-service.js.map +1 -0
  697. package/dist/workflow/types.d.ts +470 -0
  698. package/dist/workflow/types.d.ts.map +1 -0
  699. package/dist/workflow/workflows/realtime-collab.d.ts +245 -0
  700. package/dist/workflow/workflows/realtime-collab.d.ts.map +1 -0
  701. package/dist/workflows/index.d.ts +11 -0
  702. package/dist/workflows/index.d.ts.map +1 -0
  703. package/dist/workflows/registry.d.ts +118 -0
  704. package/dist/workflows/registry.d.ts.map +1 -0
  705. package/dist/workflows/registry.js +575 -0
  706. package/dist/workflows/registry.js.map +1 -0
  707. package/dist/workflows/types.d.ts +322 -0
  708. package/dist/workflows/types.d.ts.map +1 -0
  709. package/dist/workflows/types.js +16 -0
  710. package/dist/workflows/types.js.map +1 -0
  711. 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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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Vector Command
3
+ *
4
+ * CLI commands for vector operations including semantic search,
5
+ * vector store statistics, index management, and trajectory tracking.
6
+ *
7
+ * @module cli/commands/vector
8
+ */
9
+ import { Command } from 'commander';
10
+ /**
11
+ * Create vector command group
12
+ */
13
+ export declare function createVectorCommand(): Command;
14
+ //# sourceMappingURL=vector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/vector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqEpC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAmiB7C"}
@@ -0,0 +1,429 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { join } from "path";
5
+ import { existsSync } from "fs";
6
+ import "../../vector/config.js";
7
+ import { createVectorStore } from "../../vector/services/vector-store.js";
8
+ import { createTrajectoryTracker } from "../../vector/services/trajectory-tracker.js";
9
+ import { validateProjectRoot } from "../../core/security.js";
10
+ function formatBytes(bytes) {
11
+ if (bytes < 1024) return `${bytes} B`;
12
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(2)} KB`;
13
+ if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
14
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
15
+ }
16
+ function formatDuration(ms) {
17
+ if (ms < 1e3) return `${ms}ms`;
18
+ if (ms < 6e4) return `${(ms / 1e3).toFixed(2)}s`;
19
+ if (ms < 36e5) return `${(ms / 6e4).toFixed(2)}m`;
20
+ return `${(ms / 36e5).toFixed(2)}h`;
21
+ }
22
+ function formatRow(cells, widths) {
23
+ return cells.map((cell, i) => cell.padEnd(widths[i])).join(" ");
24
+ }
25
+ function printTable(headers, rows, options = {}) {
26
+ const indent = " ".repeat(options.indent ?? 1);
27
+ const headerColor = options.headerColor ?? chalk.white;
28
+ const widths = headers.map((h, i) => {
29
+ const maxRowWidth = Math.max(...rows.map((r) => (r[i] || "").length));
30
+ return Math.max(h.length, maxRowWidth);
31
+ });
32
+ console.log(indent + headerColor(formatRow(headers, widths)));
33
+ console.log(indent + chalk.gray("-".repeat(widths.reduce((a, b) => a + b + 2, 0))));
34
+ for (const row of rows) {
35
+ console.log(indent + chalk.gray(formatRow(row, widths)));
36
+ }
37
+ }
38
+ function createVectorCommand() {
39
+ const vector = new Command("vector").alias("vec").description("Vector operations for semantic search and trajectory tracking");
40
+ vector.command("search <query>").description("Perform semantic search on vector store").option("-p, --path <path>", "Project root path", ".").option("-k, --top-k <n>", "Number of results to return", "10").option("-t, --type <type>", "Filter by node type").option("--hybrid", "Enable hybrid search (combines vector + graph)").option("--min-score <score>", "Minimum similarity score (0-1)", "0").option("--json", "Output as JSON").action(async (query, options) => {
41
+ const spinner = ora("Searching vectors...").start();
42
+ try {
43
+ const projectRoot = validateProjectRoot(options.path);
44
+ const topK = parseInt(options.topK, 10) || 10;
45
+ const minScore = parseFloat(options.minScore) || 0;
46
+ const store = createVectorStore();
47
+ await store.initialize();
48
+ const stats = store.getStats();
49
+ if (stats.totalVectors === 0) {
50
+ spinner.warn("Vector store is empty");
51
+ console.log(chalk.gray(" No vectors have been indexed yet."));
52
+ console.log(chalk.gray(" Run ") + chalk.cyan("kg vector rebuild") + chalk.gray(" to index vectors."));
53
+ return;
54
+ }
55
+ spinner.text = "Generating query embedding...";
56
+ const queryEmbedding = createMockEmbedding(query, stats.dimensions);
57
+ spinner.text = `Searching ${stats.totalVectors} vectors...`;
58
+ let results;
59
+ if (options.hybrid) {
60
+ const hybridResults = await store.hybridSearch({
61
+ embedding: queryEmbedding,
62
+ limit: topK,
63
+ minScore,
64
+ filters: options.type ? { type: options.type } : void 0
65
+ });
66
+ results = hybridResults;
67
+ } else {
68
+ results = await store.search({
69
+ vector: queryEmbedding,
70
+ k: topK,
71
+ minScore,
72
+ filter: options.type ? { type: options.type } : void 0
73
+ });
74
+ }
75
+ spinner.stop();
76
+ if (options.json) {
77
+ console.log(JSON.stringify(results, null, 2));
78
+ return;
79
+ }
80
+ console.log(chalk.cyan(`
81
+ Search Results for "${query}"
82
+ `));
83
+ if (results.length === 0) {
84
+ console.log(chalk.gray(" No results found"));
85
+ return;
86
+ }
87
+ console.log(chalk.gray(` Found ${results.length} result${results.length === 1 ? "" : "s"}
88
+ `));
89
+ const headers = ["#", "ID", "Score", "Type", "Metadata"];
90
+ const rows = results.map((r, i) => [
91
+ String(i + 1),
92
+ r.id.substring(0, 24) + (r.id.length > 24 ? "..." : ""),
93
+ r.score.toFixed(4),
94
+ r.metadata?.type || "-",
95
+ Object.keys(r.metadata || {}).length > 0 ? Object.keys(r.metadata).slice(0, 3).join(", ") : "-"
96
+ ]);
97
+ printTable(headers, rows);
98
+ console.log(chalk.white("\n Top Result Details:\n"));
99
+ const top = results[0];
100
+ console.log(chalk.gray(` ID: ${top.id}`));
101
+ console.log(chalk.gray(` Score: ${top.score.toFixed(6)}`));
102
+ if (top.distance !== void 0) {
103
+ console.log(chalk.gray(` Distance: ${top.distance.toFixed(6)}`));
104
+ }
105
+ if (Object.keys(top.metadata || {}).length > 0) {
106
+ console.log(chalk.gray(" Metadata:"));
107
+ for (const [key, value] of Object.entries(top.metadata)) {
108
+ const displayValue = typeof value === "object" ? JSON.stringify(value) : String(value);
109
+ console.log(chalk.gray(` ${key}: ${displayValue.substring(0, 50)}`));
110
+ }
111
+ }
112
+ console.log();
113
+ } catch (error) {
114
+ spinner.fail("Search failed");
115
+ console.error(chalk.red(String(error)));
116
+ process.exit(1);
117
+ }
118
+ });
119
+ vector.command("stats").description("Display vector store statistics").option("-p, --path <path>", "Project root path", ".").option("--json", "Output as JSON").action(async (options) => {
120
+ try {
121
+ const projectRoot = validateProjectRoot(options.path);
122
+ const store = createVectorStore();
123
+ await store.initialize();
124
+ const stats = store.getStats();
125
+ if (options.json) {
126
+ console.log(JSON.stringify(stats, null, 2));
127
+ return;
128
+ }
129
+ console.log(chalk.cyan.bold("\n Vector Store Statistics\n"));
130
+ console.log(chalk.white(" Overview"));
131
+ console.log(chalk.gray(` Total Vectors: ${stats.totalVectors.toLocaleString()}`));
132
+ console.log(chalk.gray(` Dimensions: ${stats.dimensions}`));
133
+ console.log(chalk.gray(` Index Type: ${stats.indexType.toUpperCase()}`));
134
+ console.log(chalk.gray(` Memory Usage: ${formatBytes(stats.memoryUsage)}`));
135
+ console.log(chalk.gray(` Last Updated: ${stats.lastUpdated.toISOString()}`));
136
+ if (stats.indexStats) {
137
+ console.log();
138
+ console.log(chalk.white(" Index Configuration"));
139
+ if (stats.indexStats.levels !== void 0) {
140
+ console.log(chalk.gray(` HNSW Levels: ${stats.indexStats.levels}`));
141
+ }
142
+ if (stats.indexStats.entryPoint) {
143
+ console.log(chalk.gray(` Entry Point: ${stats.indexStats.entryPoint.substring(0, 24)}...`));
144
+ }
145
+ if (stats.indexStats.avgConnections !== void 0) {
146
+ console.log(chalk.gray(` Avg Connections: ${stats.indexStats.avgConnections.toFixed(2)}`));
147
+ }
148
+ }
149
+ if (stats.namespaces && Object.keys(stats.namespaces).length > 0) {
150
+ console.log();
151
+ console.log(chalk.white(" Namespaces"));
152
+ for (const [ns, count] of Object.entries(stats.namespaces)) {
153
+ const bar = "|".repeat(Math.min(count, 30));
154
+ console.log(chalk.gray(` ${ns.padEnd(15)} ${String(count).padStart(6)} ${chalk.blue(bar)}`));
155
+ }
156
+ }
157
+ console.log();
158
+ console.log(chalk.white(" Performance"));
159
+ if (stats.totalVectors === 0) {
160
+ console.log(chalk.yellow(" [!] Vector store is empty"));
161
+ console.log(chalk.gray(' Run "kg vector rebuild" to populate the index'));
162
+ } else if (stats.totalVectors < 100) {
163
+ console.log(chalk.green(" [OK] Small index - linear search may be faster"));
164
+ } else if (stats.totalVectors < 1e4) {
165
+ console.log(chalk.green(" [OK] Medium index - HNSW optimal"));
166
+ } else {
167
+ console.log(chalk.yellow(" [!] Large index - consider quantization"));
168
+ }
169
+ console.log();
170
+ } catch (error) {
171
+ console.error(chalk.red("Failed to get stats:"), String(error));
172
+ process.exit(1);
173
+ }
174
+ });
175
+ vector.command("rebuild").description("Rebuild vector index from knowledge graph").option("-p, --path <path>", "Project root path", ".").option("--force", "Force rebuild even if index exists").option("--batch-size <size>", "Batch size for indexing", "100").option("-v, --verbose", "Verbose output").action(async (options) => {
176
+ const spinner = ora("Rebuilding vector index...").start();
177
+ try {
178
+ const projectRoot = validateProjectRoot(options.path);
179
+ const batchSize = parseInt(options.batchSize, 10) || 100;
180
+ const store = createVectorStore();
181
+ await store.initialize();
182
+ const existingStats = store.getStats();
183
+ if (existingStats.totalVectors > 0 && !options.force) {
184
+ spinner.warn(`Index already contains ${existingStats.totalVectors} vectors`);
185
+ console.log(chalk.gray(" Use --force to rebuild anyway"));
186
+ return;
187
+ }
188
+ if (options.force && existingStats.totalVectors > 0) {
189
+ spinner.text = "Clearing existing index...";
190
+ await store.clear();
191
+ }
192
+ spinner.text = "Scanning knowledge graph...";
193
+ const kgPath = join(projectRoot, ".kg", "knowledge.db");
194
+ if (!existsSync(kgPath)) {
195
+ spinner.fail("Knowledge graph not found");
196
+ console.log(chalk.gray(" Run ") + chalk.cyan("kg graph") + chalk.gray(" first"));
197
+ return;
198
+ }
199
+ spinner.text = "Generating embeddings...";
200
+ spinner.succeed("Vector index rebuild complete");
201
+ console.log();
202
+ console.log(chalk.white(" Rebuild Summary"));
203
+ console.log(chalk.gray(` Vectors indexed: 0 (mock - no embedding model configured)`));
204
+ console.log(chalk.gray(` Batch size: ${batchSize}`));
205
+ console.log(chalk.gray(` Project root: ${projectRoot}`));
206
+ console.log();
207
+ console.log(chalk.yellow(" Note: Full vector indexing requires an embedding model."));
208
+ console.log(chalk.gray(" Configure OPENAI_API_KEY or use local embeddings."));
209
+ console.log();
210
+ } catch (error) {
211
+ spinner.fail("Rebuild failed");
212
+ console.error(chalk.red(String(error)));
213
+ process.exit(1);
214
+ }
215
+ });
216
+ const trajectory = vector.command("trajectory").alias("traj").description("Agent trajectory tracking operations");
217
+ trajectory.command("list").description("List recorded agent trajectories").option("-p, --path <path>", "Project root path", ".").option("-a, --agent <id>", "Filter by agent ID").option("-w, --workflow <id>", "Filter by workflow ID").option("-l, --limit <n>", "Maximum number of trajectories", "20").option("--success", "Show only successful trajectories").option("--failed", "Show only failed trajectories").option("--json", "Output as JSON").action(async (options) => {
218
+ try {
219
+ const limit = parseInt(options.limit, 10) || 20;
220
+ const tracker = createTrajectoryTracker({
221
+ maxTrajectories: 1e3,
222
+ enableAutoLearning: true
223
+ });
224
+ const stats = tracker.getStats();
225
+ if (options.json) {
226
+ const exported2 = tracker.export();
227
+ let trajectories2 = exported2.trajectories;
228
+ if (options.agent) {
229
+ trajectories2 = trajectories2.filter((t) => t.agentId === options.agent);
230
+ }
231
+ if (options.workflow) {
232
+ trajectories2 = trajectories2.filter((t) => t.workflowId === options.workflow);
233
+ }
234
+ if (options.success) {
235
+ trajectories2 = trajectories2.filter((t) => t.success);
236
+ }
237
+ if (options.failed) {
238
+ trajectories2 = trajectories2.filter((t) => !t.success);
239
+ }
240
+ console.log(JSON.stringify(trajectories2.slice(0, limit), null, 2));
241
+ return;
242
+ }
243
+ console.log(chalk.cyan.bold("\n Agent Trajectories\n"));
244
+ console.log(chalk.white(" Overview"));
245
+ console.log(chalk.gray(` Active: ${stats.activeTrajectories}`));
246
+ console.log(chalk.gray(` Completed: ${stats.completedTrajectories}`));
247
+ console.log(chalk.gray(` Success: ${(stats.successRate * 100).toFixed(1)}%`));
248
+ console.log(chalk.gray(` Avg Duration: ${formatDuration(stats.avgDuration)}`));
249
+ console.log(chalk.gray(` Patterns: ${stats.detectedPatterns}`));
250
+ const exported = tracker.export();
251
+ let trajectories = exported.trajectories;
252
+ if (options.agent) {
253
+ trajectories = trajectories.filter((t) => t.agentId === options.agent);
254
+ }
255
+ if (options.workflow) {
256
+ trajectories = trajectories.filter((t) => t.workflowId === options.workflow);
257
+ }
258
+ if (options.success) {
259
+ trajectories = trajectories.filter((t) => t.success);
260
+ }
261
+ if (options.failed) {
262
+ trajectories = trajectories.filter((t) => !t.success);
263
+ }
264
+ trajectories = trajectories.slice(-limit).reverse();
265
+ if (trajectories.length === 0) {
266
+ console.log();
267
+ console.log(chalk.gray(" No trajectories found"));
268
+ console.log(chalk.gray(" Trajectories are recorded during agent operations."));
269
+ console.log();
270
+ return;
271
+ }
272
+ console.log();
273
+ console.log(chalk.white(` Recent Trajectories (${trajectories.length})`));
274
+ const headers = ["ID", "Agent", "Steps", "Duration", "Status"];
275
+ const rows = trajectories.map((t) => [
276
+ t.id.substring(0, 16) + "...",
277
+ t.agentId.substring(0, 12) + (t.agentId.length > 12 ? "..." : ""),
278
+ String(t.steps.length),
279
+ formatDuration(t.totalDuration),
280
+ t.success ? chalk.green("OK") : chalk.red("FAIL")
281
+ ]);
282
+ printTable(headers, rows);
283
+ console.log();
284
+ } catch (error) {
285
+ console.error(chalk.red("Failed to list trajectories:"), String(error));
286
+ process.exit(1);
287
+ }
288
+ });
289
+ trajectory.command("show <id>").description("Show detailed trajectory information").option("--json", "Output as JSON").action(async (id, options) => {
290
+ try {
291
+ const tracker = createTrajectoryTracker({
292
+ maxTrajectories: 1e3,
293
+ enableAutoLearning: true
294
+ });
295
+ const trajectory2 = tracker.getTrajectory(id);
296
+ if (!trajectory2) {
297
+ console.log(chalk.yellow(`
298
+ Trajectory not found: ${id}
299
+ `));
300
+ console.log(chalk.gray(' Use "kg vector trajectory list" to see available trajectories.'));
301
+ console.log();
302
+ return;
303
+ }
304
+ if (options.json) {
305
+ console.log(JSON.stringify(trajectory2, null, 2));
306
+ return;
307
+ }
308
+ console.log(chalk.cyan.bold("\n Trajectory Details\n"));
309
+ console.log(chalk.white(" Information"));
310
+ console.log(chalk.gray(` ID: ${trajectory2.id}`));
311
+ console.log(chalk.gray(` Agent: ${trajectory2.agentId}`));
312
+ if (trajectory2.workflowId) {
313
+ console.log(chalk.gray(` Workflow: ${trajectory2.workflowId}`));
314
+ }
315
+ console.log(chalk.gray(` Started: ${trajectory2.startedAt.toISOString()}`));
316
+ if (trajectory2.completedAt) {
317
+ console.log(chalk.gray(` Completed: ${trajectory2.completedAt.toISOString()}`));
318
+ }
319
+ console.log(chalk.gray(` Duration: ${formatDuration(trajectory2.totalDuration)}`));
320
+ console.log(
321
+ chalk.gray(" Status: ") + (trajectory2.success ? chalk.green("SUCCESS") : chalk.red("FAILED"))
322
+ );
323
+ if (trajectory2.steps.length > 0) {
324
+ console.log();
325
+ console.log(chalk.white(` Steps (${trajectory2.steps.length})`));
326
+ const stepHeaders = ["#", "Action", "Outcome", "Duration"];
327
+ const stepRows = trajectory2.steps.map((s, i) => [
328
+ String(i + 1),
329
+ s.action.substring(0, 30) + (s.action.length > 30 ? "..." : ""),
330
+ s.outcome === "success" ? chalk.green(s.outcome) : s.outcome === "failure" ? chalk.red(s.outcome) : chalk.yellow(s.outcome),
331
+ formatDuration(s.duration)
332
+ ]);
333
+ printTable(stepHeaders, stepRows);
334
+ }
335
+ if (trajectory2.metadata && Object.keys(trajectory2.metadata).length > 0) {
336
+ console.log();
337
+ console.log(chalk.white(" Metadata"));
338
+ for (const [key, value] of Object.entries(trajectory2.metadata)) {
339
+ const displayValue = typeof value === "object" ? JSON.stringify(value) : String(value);
340
+ console.log(chalk.gray(` ${key}: ${displayValue.substring(0, 60)}`));
341
+ }
342
+ }
343
+ console.log();
344
+ } catch (error) {
345
+ console.error(chalk.red("Failed to show trajectory:"), String(error));
346
+ process.exit(1);
347
+ }
348
+ });
349
+ trajectory.command("patterns").description("Show detected action patterns").option("--min-confidence <n>", "Minimum confidence threshold (0-1)", "0.5").option("--type <type>", "Filter by pattern type (success, failure, optimization)").option("--json", "Output as JSON").action(async (options) => {
350
+ try {
351
+ const minConfidence = parseFloat(options.minConfidence) || 0.5;
352
+ const tracker = createTrajectoryTracker({
353
+ maxTrajectories: 1e3,
354
+ enableAutoLearning: true
355
+ });
356
+ const patterns = tracker.getPatterns({
357
+ minConfidence,
358
+ type: options.type
359
+ });
360
+ if (options.json) {
361
+ console.log(JSON.stringify(patterns, null, 2));
362
+ return;
363
+ }
364
+ console.log(chalk.cyan.bold("\n Detected Patterns\n"));
365
+ if (patterns.length === 0) {
366
+ console.log(chalk.gray(" No patterns detected yet."));
367
+ console.log(chalk.gray(" Patterns are learned from successful agent trajectories."));
368
+ console.log();
369
+ return;
370
+ }
371
+ const headers = ["ID", "Type", "Frequency", "Success", "Confidence"];
372
+ const rows = patterns.map((p) => [
373
+ p.id.substring(0, 30) + (p.id.length > 30 ? "..." : ""),
374
+ p.type,
375
+ String(p.frequency),
376
+ `${(p.successRate * 100).toFixed(0)}%`,
377
+ `${(p.confidence * 100).toFixed(0)}%`
378
+ ]);
379
+ printTable(headers, rows);
380
+ if (patterns.length > 0) {
381
+ const top = patterns[0];
382
+ console.log();
383
+ console.log(chalk.white(" Top Pattern Details"));
384
+ console.log(chalk.gray(` ID: ${top.id}`));
385
+ console.log(chalk.gray(` Actions: ${top.actions.join(" -> ")}`));
386
+ console.log(chalk.gray(` Avg Duration: ${formatDuration(top.avgDuration)}`));
387
+ }
388
+ console.log();
389
+ } catch (error) {
390
+ console.error(chalk.red("Failed to show patterns:"), String(error));
391
+ process.exit(1);
392
+ }
393
+ });
394
+ trajectory.command("clear").description("Clear all trajectory data").option("--confirm", "Confirm clearing without prompt").action(async (options) => {
395
+ try {
396
+ if (!options.confirm) {
397
+ console.log(chalk.yellow("\n Warning: This will delete all trajectory data.\n"));
398
+ console.log(chalk.gray(" Use --confirm to proceed."));
399
+ console.log();
400
+ return;
401
+ }
402
+ const tracker = createTrajectoryTracker();
403
+ tracker.clear();
404
+ console.log(chalk.green("\n Trajectory data cleared.\n"));
405
+ } catch (error) {
406
+ console.error(chalk.red("Failed to clear trajectories:"), String(error));
407
+ process.exit(1);
408
+ }
409
+ });
410
+ return vector;
411
+ }
412
+ function createMockEmbedding(text, dimensions) {
413
+ const embedding = [];
414
+ const normalized = text.toLowerCase().trim();
415
+ for (let i = 0; i < dimensions; i++) {
416
+ let value = 0;
417
+ for (let j = 0; j < normalized.length; j++) {
418
+ const charCode = normalized.charCodeAt(j);
419
+ value += Math.sin(charCode * (i + 1) * 0.1) * Math.cos(j * 0.3);
420
+ }
421
+ embedding.push(Math.tanh(value / Math.max(1, normalized.length)));
422
+ }
423
+ const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));
424
+ return embedding.map((v) => v / (norm || 1));
425
+ }
426
+ export {
427
+ createVectorCommand
428
+ };
429
+ //# sourceMappingURL=vector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.js","sources":["../../../src/cli/commands/vector.ts"],"sourcesContent":["/**\n * Vector Command\n *\n * CLI commands for vector operations including semantic search,\n * vector store statistics, index management, and trajectory tracking.\n *\n * @module cli/commands/vector\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\nimport {\n createVectorStore,\n createTrajectoryTracker,\n type VectorIndexStats,\n type SearchResult,\n type AgentTrajectory,\n type DetectedPattern,\n} from '../../vector/index.js';\nimport { validateProjectRoot } from '../../core/security.js';\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(2)} KB`;\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;\n}\n\n/**\n * Format duration in milliseconds to human-readable string\n */\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(2)}s`;\n if (ms < 3600000) return `${(ms / 60000).toFixed(2)}m`;\n return `${(ms / 3600000).toFixed(2)}h`;\n}\n\n/**\n * Format table row with padding\n */\nfunction formatRow(cells: string[], widths: number[]): string {\n return cells.map((cell, i) => cell.padEnd(widths[i])).join(' ');\n}\n\n/**\n * Print a table with headers and rows\n */\nfunction printTable(\n headers: string[],\n rows: string[][],\n options: { indent?: number; headerColor?: typeof chalk.white } = {}\n): void {\n const indent = ' '.repeat(options.indent ?? 1);\n const headerColor = options.headerColor ?? chalk.white;\n\n // Calculate column widths\n const widths = headers.map((h, i) => {\n const maxRowWidth = Math.max(...rows.map((r) => (r[i] || '').length));\n return Math.max(h.length, maxRowWidth);\n });\n\n // Print header\n console.log(indent + headerColor(formatRow(headers, widths)));\n console.log(indent + chalk.gray('-'.repeat(widths.reduce((a, b) => a + b + 2, 0))));\n\n // Print rows\n for (const row of rows) {\n console.log(indent + chalk.gray(formatRow(row, widths)));\n }\n}\n\n/**\n * Create vector command group\n */\nexport function createVectorCommand(): Command {\n const vector = new Command('vector')\n .alias('vec')\n .description('Vector operations for semantic search and trajectory tracking');\n\n // Search subcommand\n vector\n .command('search <query>')\n .description('Perform semantic search on vector store')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-k, --top-k <n>', 'Number of results to return', '10')\n .option('-t, --type <type>', 'Filter by node type')\n .option('--hybrid', 'Enable hybrid search (combines vector + graph)')\n .option('--min-score <score>', 'Minimum similarity score (0-1)', '0')\n .option('--json', 'Output as JSON')\n .action(async (query, options) => {\n const spinner = ora('Searching vectors...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const topK = parseInt(options.topK, 10) || 10;\n const minScore = parseFloat(options.minScore) || 0;\n\n // Create vector store\n const store = createVectorStore();\n await store.initialize();\n\n // Check if we have vectors\n const stats = store.getStats();\n if (stats.totalVectors === 0) {\n spinner.warn('Vector store is empty');\n console.log(chalk.gray(' No vectors have been indexed yet.'));\n console.log(chalk.gray(' Run ') + chalk.cyan('kg vector rebuild') + chalk.gray(' to index vectors.'));\n return;\n }\n\n spinner.text = 'Generating query embedding...';\n\n // For now, create a mock embedding from the query\n // In production, this would use an actual embedding model\n const queryEmbedding = createMockEmbedding(query, stats.dimensions);\n\n spinner.text = `Searching ${stats.totalVectors} vectors...`;\n\n let results: SearchResult[];\n\n if (options.hybrid) {\n // Hybrid search\n const hybridResults = await store.hybridSearch({\n embedding: queryEmbedding,\n limit: topK,\n minScore,\n filters: options.type ? { type: options.type } : undefined,\n });\n results = hybridResults;\n } else {\n // Standard vector search\n results = await store.search({\n vector: queryEmbedding,\n k: topK,\n minScore,\n filter: options.type ? { type: options.type } : undefined,\n });\n }\n\n spinner.stop();\n\n if (options.json) {\n console.log(JSON.stringify(results, null, 2));\n return;\n }\n\n console.log(chalk.cyan(`\\n Search Results for \"${query}\"\\n`));\n\n if (results.length === 0) {\n console.log(chalk.gray(' No results found'));\n return;\n }\n\n console.log(chalk.gray(` Found ${results.length} result${results.length === 1 ? '' : 's'}\\n`));\n\n // Display results as a table\n const headers = ['#', 'ID', 'Score', 'Type', 'Metadata'];\n const rows = results.map((r, i) => [\n String(i + 1),\n r.id.substring(0, 24) + (r.id.length > 24 ? '...' : ''),\n r.score.toFixed(4),\n (r.metadata?.type as string) || '-',\n Object.keys(r.metadata || {}).length > 0\n ? Object.keys(r.metadata).slice(0, 3).join(', ')\n : '-',\n ]);\n\n printTable(headers, rows);\n\n // Show detailed metadata for top results\n console.log(chalk.white('\\n Top Result Details:\\n'));\n const top = results[0];\n console.log(chalk.gray(` ID: ${top.id}`));\n console.log(chalk.gray(` Score: ${top.score.toFixed(6)}`));\n if (top.distance !== undefined) {\n console.log(chalk.gray(` Distance: ${top.distance.toFixed(6)}`));\n }\n if (Object.keys(top.metadata || {}).length > 0) {\n console.log(chalk.gray(' Metadata:'));\n for (const [key, value] of Object.entries(top.metadata)) {\n const displayValue = typeof value === 'object' ? JSON.stringify(value) : String(value);\n console.log(chalk.gray(` ${key}: ${displayValue.substring(0, 50)}`));\n }\n }\n\n console.log();\n } catch (error) {\n spinner.fail('Search failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Stats subcommand\n vector\n .command('stats')\n .description('Display vector store statistics')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const projectRoot = validateProjectRoot(options.path);\n\n // Create vector store\n const store = createVectorStore();\n await store.initialize();\n\n const stats = store.getStats();\n\n if (options.json) {\n console.log(JSON.stringify(stats, null, 2));\n return;\n }\n\n console.log(chalk.cyan.bold('\\n Vector Store Statistics\\n'));\n\n // Overview\n console.log(chalk.white(' Overview'));\n console.log(chalk.gray(` Total Vectors: ${stats.totalVectors.toLocaleString()}`));\n console.log(chalk.gray(` Dimensions: ${stats.dimensions}`));\n console.log(chalk.gray(` Index Type: ${stats.indexType.toUpperCase()}`));\n console.log(chalk.gray(` Memory Usage: ${formatBytes(stats.memoryUsage)}`));\n console.log(chalk.gray(` Last Updated: ${stats.lastUpdated.toISOString()}`));\n\n // Index stats\n if (stats.indexStats) {\n console.log();\n console.log(chalk.white(' Index Configuration'));\n if (stats.indexStats.levels !== undefined) {\n console.log(chalk.gray(` HNSW Levels: ${stats.indexStats.levels}`));\n }\n if (stats.indexStats.entryPoint) {\n console.log(chalk.gray(` Entry Point: ${stats.indexStats.entryPoint.substring(0, 24)}...`));\n }\n if (stats.indexStats.avgConnections !== undefined) {\n console.log(chalk.gray(` Avg Connections: ${stats.indexStats.avgConnections.toFixed(2)}`));\n }\n }\n\n // Namespace breakdown\n if (stats.namespaces && Object.keys(stats.namespaces).length > 0) {\n console.log();\n console.log(chalk.white(' Namespaces'));\n for (const [ns, count] of Object.entries(stats.namespaces)) {\n const bar = '|'.repeat(Math.min(count, 30));\n console.log(chalk.gray(` ${ns.padEnd(15)} ${String(count).padStart(6)} ${chalk.blue(bar)}`));\n }\n }\n\n // Performance hints\n console.log();\n console.log(chalk.white(' Performance'));\n if (stats.totalVectors === 0) {\n console.log(chalk.yellow(' [!] Vector store is empty'));\n console.log(chalk.gray(' Run \"kg vector rebuild\" to populate the index'));\n } else if (stats.totalVectors < 100) {\n console.log(chalk.green(' [OK] Small index - linear search may be faster'));\n } else if (stats.totalVectors < 10000) {\n console.log(chalk.green(' [OK] Medium index - HNSW optimal'));\n } else {\n console.log(chalk.yellow(' [!] Large index - consider quantization'));\n }\n\n console.log();\n } catch (error) {\n console.error(chalk.red('Failed to get stats:'), String(error));\n process.exit(1);\n }\n });\n\n // Rebuild subcommand\n vector\n .command('rebuild')\n .description('Rebuild vector index from knowledge graph')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('--force', 'Force rebuild even if index exists')\n .option('--batch-size <size>', 'Batch size for indexing', '100')\n .option('-v, --verbose', 'Verbose output')\n .action(async (options) => {\n const spinner = ora('Rebuilding vector index...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const batchSize = parseInt(options.batchSize, 10) || 100;\n\n // Create vector store\n const store = createVectorStore();\n await store.initialize();\n\n const existingStats = store.getStats();\n\n if (existingStats.totalVectors > 0 && !options.force) {\n spinner.warn(`Index already contains ${existingStats.totalVectors} vectors`);\n console.log(chalk.gray(' Use --force to rebuild anyway'));\n return;\n }\n\n if (options.force && existingStats.totalVectors > 0) {\n spinner.text = 'Clearing existing index...';\n await store.clear();\n }\n\n // In a real implementation, this would:\n // 1. Read nodes from the knowledge graph database\n // 2. Generate embeddings for each node\n // 3. Insert vectors in batches\n\n spinner.text = 'Scanning knowledge graph...';\n\n // Simulate rebuild process\n const kgPath = join(projectRoot, '.kg', 'knowledge.db');\n if (!existsSync(kgPath)) {\n spinner.fail('Knowledge graph not found');\n console.log(chalk.gray(' Run ') + chalk.cyan('kg graph') + chalk.gray(' first'));\n return;\n }\n\n // Mock rebuild with progress\n spinner.text = 'Generating embeddings...';\n\n // For demonstration, we show what would happen\n spinner.succeed('Vector index rebuild complete');\n\n console.log();\n console.log(chalk.white(' Rebuild Summary'));\n console.log(chalk.gray(` Vectors indexed: 0 (mock - no embedding model configured)`));\n console.log(chalk.gray(` Batch size: ${batchSize}`));\n console.log(chalk.gray(` Project root: ${projectRoot}`));\n\n console.log();\n console.log(chalk.yellow(' Note: Full vector indexing requires an embedding model.'));\n console.log(chalk.gray(' Configure OPENAI_API_KEY or use local embeddings.'));\n console.log();\n\n } catch (error) {\n spinner.fail('Rebuild failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Trajectory subcommand group\n const trajectory = vector\n .command('trajectory')\n .alias('traj')\n .description('Agent trajectory tracking operations');\n\n // trajectory list\n trajectory\n .command('list')\n .description('List recorded agent trajectories')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-a, --agent <id>', 'Filter by agent ID')\n .option('-w, --workflow <id>', 'Filter by workflow ID')\n .option('-l, --limit <n>', 'Maximum number of trajectories', '20')\n .option('--success', 'Show only successful trajectories')\n .option('--failed', 'Show only failed trajectories')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const limit = parseInt(options.limit, 10) || 20;\n\n // Create trajectory tracker\n const tracker = createTrajectoryTracker({\n maxTrajectories: 1000,\n enableAutoLearning: true,\n });\n\n const stats = tracker.getStats();\n\n if (options.json) {\n const exported = tracker.export();\n let trajectories = exported.trajectories;\n\n if (options.agent) {\n trajectories = trajectories.filter((t) => t.agentId === options.agent);\n }\n if (options.workflow) {\n trajectories = trajectories.filter((t) => t.workflowId === options.workflow);\n }\n if (options.success) {\n trajectories = trajectories.filter((t) => t.success);\n }\n if (options.failed) {\n trajectories = trajectories.filter((t) => !t.success);\n }\n\n console.log(JSON.stringify(trajectories.slice(0, limit), null, 2));\n return;\n }\n\n console.log(chalk.cyan.bold('\\n Agent Trajectories\\n'));\n\n // Overview stats\n console.log(chalk.white(' Overview'));\n console.log(chalk.gray(` Active: ${stats.activeTrajectories}`));\n console.log(chalk.gray(` Completed: ${stats.completedTrajectories}`));\n console.log(chalk.gray(` Success: ${(stats.successRate * 100).toFixed(1)}%`));\n console.log(chalk.gray(` Avg Duration: ${formatDuration(stats.avgDuration)}`));\n console.log(chalk.gray(` Patterns: ${stats.detectedPatterns}`));\n\n // Get trajectories\n const exported = tracker.export();\n let trajectories = exported.trajectories;\n\n if (options.agent) {\n trajectories = trajectories.filter((t) => t.agentId === options.agent);\n }\n if (options.workflow) {\n trajectories = trajectories.filter((t) => t.workflowId === options.workflow);\n }\n if (options.success) {\n trajectories = trajectories.filter((t) => t.success);\n }\n if (options.failed) {\n trajectories = trajectories.filter((t) => !t.success);\n }\n\n trajectories = trajectories.slice(-limit).reverse();\n\n if (trajectories.length === 0) {\n console.log();\n console.log(chalk.gray(' No trajectories found'));\n console.log(chalk.gray(' Trajectories are recorded during agent operations.'));\n console.log();\n return;\n }\n\n console.log();\n console.log(chalk.white(` Recent Trajectories (${trajectories.length})`));\n\n const headers = ['ID', 'Agent', 'Steps', 'Duration', 'Status'];\n const rows = trajectories.map((t) => [\n t.id.substring(0, 16) + '...',\n t.agentId.substring(0, 12) + (t.agentId.length > 12 ? '...' : ''),\n String(t.steps.length),\n formatDuration(t.totalDuration),\n t.success ? chalk.green('OK') : chalk.red('FAIL'),\n ]);\n\n printTable(headers, rows);\n console.log();\n\n } catch (error) {\n console.error(chalk.red('Failed to list trajectories:'), String(error));\n process.exit(1);\n }\n });\n\n // trajectory show\n trajectory\n .command('show <id>')\n .description('Show detailed trajectory information')\n .option('--json', 'Output as JSON')\n .action(async (id, options) => {\n try {\n // Create trajectory tracker\n const tracker = createTrajectoryTracker({\n maxTrajectories: 1000,\n enableAutoLearning: true,\n });\n\n const trajectory = tracker.getTrajectory(id);\n\n if (!trajectory) {\n console.log(chalk.yellow(`\\n Trajectory not found: ${id}\\n`));\n console.log(chalk.gray(' Use \"kg vector trajectory list\" to see available trajectories.'));\n console.log();\n return;\n }\n\n if (options.json) {\n console.log(JSON.stringify(trajectory, null, 2));\n return;\n }\n\n console.log(chalk.cyan.bold('\\n Trajectory Details\\n'));\n\n // Basic info\n console.log(chalk.white(' Information'));\n console.log(chalk.gray(` ID: ${trajectory.id}`));\n console.log(chalk.gray(` Agent: ${trajectory.agentId}`));\n if (trajectory.workflowId) {\n console.log(chalk.gray(` Workflow: ${trajectory.workflowId}`));\n }\n console.log(chalk.gray(` Started: ${trajectory.startedAt.toISOString()}`));\n if (trajectory.completedAt) {\n console.log(chalk.gray(` Completed: ${trajectory.completedAt.toISOString()}`));\n }\n console.log(chalk.gray(` Duration: ${formatDuration(trajectory.totalDuration)}`));\n console.log(\n chalk.gray(' Status: ') +\n (trajectory.success ? chalk.green('SUCCESS') : chalk.red('FAILED'))\n );\n\n // Steps\n if (trajectory.steps.length > 0) {\n console.log();\n console.log(chalk.white(` Steps (${trajectory.steps.length})`));\n\n const stepHeaders = ['#', 'Action', 'Outcome', 'Duration'];\n const stepRows = trajectory.steps.map((s, i) => [\n String(i + 1),\n s.action.substring(0, 30) + (s.action.length > 30 ? '...' : ''),\n s.outcome === 'success'\n ? chalk.green(s.outcome)\n : s.outcome === 'failure'\n ? chalk.red(s.outcome)\n : chalk.yellow(s.outcome),\n formatDuration(s.duration),\n ]);\n\n printTable(stepHeaders, stepRows);\n }\n\n // Metadata\n if (trajectory.metadata && Object.keys(trajectory.metadata).length > 0) {\n console.log();\n console.log(chalk.white(' Metadata'));\n for (const [key, value] of Object.entries(trajectory.metadata)) {\n const displayValue = typeof value === 'object' ? JSON.stringify(value) : String(value);\n console.log(chalk.gray(` ${key}: ${displayValue.substring(0, 60)}`));\n }\n }\n\n console.log();\n } catch (error) {\n console.error(chalk.red('Failed to show trajectory:'), String(error));\n process.exit(1);\n }\n });\n\n // trajectory patterns\n trajectory\n .command('patterns')\n .description('Show detected action patterns')\n .option('--min-confidence <n>', 'Minimum confidence threshold (0-1)', '0.5')\n .option('--type <type>', 'Filter by pattern type (success, failure, optimization)')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const minConfidence = parseFloat(options.minConfidence) || 0.5;\n\n // Create trajectory tracker\n const tracker = createTrajectoryTracker({\n maxTrajectories: 1000,\n enableAutoLearning: true,\n });\n\n const patterns = tracker.getPatterns({\n minConfidence,\n type: options.type as 'success' | 'failure' | 'optimization' | undefined,\n });\n\n if (options.json) {\n console.log(JSON.stringify(patterns, null, 2));\n return;\n }\n\n console.log(chalk.cyan.bold('\\n Detected Patterns\\n'));\n\n if (patterns.length === 0) {\n console.log(chalk.gray(' No patterns detected yet.'));\n console.log(chalk.gray(' Patterns are learned from successful agent trajectories.'));\n console.log();\n return;\n }\n\n const headers = ['ID', 'Type', 'Frequency', 'Success', 'Confidence'];\n const rows = patterns.map((p) => [\n p.id.substring(0, 30) + (p.id.length > 30 ? '...' : ''),\n p.type,\n String(p.frequency),\n `${(p.successRate * 100).toFixed(0)}%`,\n `${(p.confidence * 100).toFixed(0)}%`,\n ]);\n\n printTable(headers, rows);\n\n // Show top pattern details\n if (patterns.length > 0) {\n const top = patterns[0];\n console.log();\n console.log(chalk.white(' Top Pattern Details'));\n console.log(chalk.gray(` ID: ${top.id}`));\n console.log(chalk.gray(` Actions: ${top.actions.join(' -> ')}`));\n console.log(chalk.gray(` Avg Duration: ${formatDuration(top.avgDuration)}`));\n }\n\n console.log();\n } catch (error) {\n console.error(chalk.red('Failed to show patterns:'), String(error));\n process.exit(1);\n }\n });\n\n // trajectory clear\n trajectory\n .command('clear')\n .description('Clear all trajectory data')\n .option('--confirm', 'Confirm clearing without prompt')\n .action(async (options) => {\n try {\n if (!options.confirm) {\n console.log(chalk.yellow('\\n Warning: This will delete all trajectory data.\\n'));\n console.log(chalk.gray(' Use --confirm to proceed.'));\n console.log();\n return;\n }\n\n const tracker = createTrajectoryTracker();\n tracker.clear();\n\n console.log(chalk.green('\\n Trajectory data cleared.\\n'));\n } catch (error) {\n console.error(chalk.red('Failed to clear trajectories:'), String(error));\n process.exit(1);\n }\n });\n\n return vector;\n}\n\n/**\n * Create a mock embedding from text\n *\n * This is a placeholder that creates deterministic pseudo-embeddings\n * based on the text content. In production, this would use an actual\n * embedding model (OpenAI, Cohere, local models, etc.)\n *\n * @param text - Text to embed\n * @param dimensions - Number of dimensions\n * @returns Mock embedding vector\n */\nfunction createMockEmbedding(text: string, dimensions: number): number[] {\n const embedding: number[] = [];\n const normalized = text.toLowerCase().trim();\n\n // Simple hash-based pseudo-embedding\n for (let i = 0; i < dimensions; i++) {\n let value = 0;\n for (let j = 0; j < normalized.length; j++) {\n const charCode = normalized.charCodeAt(j);\n value += Math.sin(charCode * (i + 1) * 0.1) * Math.cos(j * 0.3);\n }\n // Normalize to [-1, 1] range\n embedding.push(Math.tanh(value / Math.max(1, normalized.length)));\n }\n\n // L2 normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n return embedding.map((v) => v / (norm || 1));\n}\n"],"names":["exported","trajectories","trajectory"],"mappings":"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"}