@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":"seed-generator.js","sources":["../../src/cultivation/seed-generator.ts"],"sourcesContent":["/**\n * Seed Generator - Bootstrap knowledge graph with primitive nodes from codebase analysis\n *\n * Analyzes:\n * - package.json (Node.js dependencies)\n * - composer.json (PHP dependencies)\n * - requirements.txt / pyproject.toml (Python)\n * - Cargo.toml (Rust)\n * - go.mod (Go)\n * - pom.xml / build.gradle (Java)\n * - Existing vault documents\n * - Service configurations\n * - Deployment manifests\n *\n * @module cultivation/seed-generator\n */\n\nimport { readFile, readdir, stat, mkdir, writeFile } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join, extname, basename, dirname } from 'path';\nimport matter from 'gray-matter';\nimport { createLogger } from '../utils/logger.js';\nimport type {\n VaultContext,\n DependencyInfo,\n ServiceInfo,\n SeedAnalysis,\n GeneratedDocument,\n DocumentMetadata,\n Ecosystem,\n DependencyType,\n ServiceType,\n CultivationOptions,\n InitPrimitivesResult\n} from './types.js';\n\nconst logger = createLogger('seed-generator');\n\n/**\n * SeedGenerator class for analyzing codebases and generating primitive nodes\n */\nexport class SeedGenerator {\n private vaultContext: VaultContext;\n private projectRoot: string;\n private startTime: number = 0;\n private filesScanned: number = 0;\n\n constructor(vaultContext: VaultContext, projectRoot: string) {\n this.vaultContext = vaultContext;\n this.projectRoot = projectRoot;\n }\n\n /**\n * Create a SeedGenerator from project paths\n */\n static async create(projectRoot: string, docsPath: string): Promise<SeedGenerator> {\n const vaultRoot = join(projectRoot, docsPath);\n const allFiles = await SeedGenerator.collectVaultFiles(vaultRoot);\n\n // Load context files if they exist\n let primitives: string | undefined;\n let features: string | undefined;\n let techSpecs: string | undefined;\n\n try {\n primitives = await readFile(join(vaultRoot, 'PRIMITIVES.md'), 'utf-8');\n } catch { /* File doesn't exist */ }\n\n try {\n features = await readFile(join(vaultRoot, 'features.md'), 'utf-8');\n } catch { /* File doesn't exist */ }\n\n try {\n techSpecs = await readFile(join(vaultRoot, 'tech-specs.md'), 'utf-8');\n } catch { /* File doesn't exist */ }\n\n const vaultContext: VaultContext = {\n vaultRoot,\n allFiles,\n primitives,\n features,\n techSpecs\n };\n\n return new SeedGenerator(vaultContext, projectRoot);\n }\n\n /**\n * Collect all markdown files in vault\n */\n private static async collectVaultFiles(vaultRoot: string): Promise<string[]> {\n const files: string[] = [];\n\n async function walk(dir: string): Promise<void> {\n try {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory() && !entry.name.startsWith('.')) {\n await walk(fullPath);\n } else if (entry.isFile() && entry.name.endsWith('.md')) {\n files.push(fullPath);\n }\n }\n } catch {\n // Directory doesn't exist\n }\n }\n\n await walk(vaultRoot);\n return files;\n }\n\n /**\n * Analyze entire codebase and generate seed data\n */\n async analyze(): Promise<SeedAnalysis> {\n this.startTime = Date.now();\n this.filesScanned = 0;\n\n logger.info('Starting codebase analysis', { projectRoot: this.projectRoot });\n\n const analysis: SeedAnalysis = {\n dependencies: [],\n services: [],\n frameworks: [],\n languages: [],\n deployments: [],\n existingConcepts: [],\n existingFeatures: [],\n metadata: {\n analyzedAt: new Date().toISOString(),\n projectRoot: this.projectRoot,\n filesScanned: 0,\n duration: 0\n }\n };\n\n // Analyze dependency files\n await this.analyzeDependencies(analysis);\n\n // Analyze existing vault documents\n await this.analyzeVaultDocuments(analysis);\n\n // Analyze service configurations\n await this.analyzeServices(analysis);\n\n // Analyze deployment manifests\n await this.analyzeDeployments(analysis);\n\n // Classify dependencies into frameworks\n this.classifyDependencies(analysis);\n\n // Dedupe languages\n analysis.languages = [...new Set(analysis.languages)];\n\n // Update metadata\n analysis.metadata.filesScanned = this.filesScanned;\n analysis.metadata.duration = Date.now() - this.startTime;\n\n logger.info('Analysis complete', {\n dependencies: analysis.dependencies.length,\n frameworks: analysis.frameworks.length,\n services: analysis.services.length,\n languages: analysis.languages.length,\n duration: analysis.metadata.duration\n });\n\n return analysis;\n }\n\n /**\n * Generate primitive nodes from seed analysis\n */\n async generatePrimitives(analysis: SeedAnalysis): Promise<GeneratedDocument[]> {\n const documents: GeneratedDocument[] = [];\n const frameworkNames = new Set(analysis.frameworks.map(f => f.name.toLowerCase()));\n\n logger.info('Generating primitives', {\n frameworks: analysis.frameworks.length,\n dependencies: analysis.dependencies.length,\n services: analysis.services.length\n });\n\n // Generate nodes for frameworks\n for (const framework of analysis.frameworks) {\n const doc = this.generateFrameworkNode(framework, analysis);\n documents.push(doc);\n }\n\n // Generate nodes for major dependencies (skip frameworks to avoid duplicates)\n for (const dep of analysis.dependencies) {\n if (frameworkNames.has(dep.name.toLowerCase())) {\n continue;\n }\n if (this.shouldGenerateNode(dep)) {\n const doc = this.generateDependencyNode(dep, analysis);\n documents.push(doc);\n }\n }\n\n // Generate nodes for services\n for (const service of analysis.services) {\n const doc = this.generateServiceNode(service, analysis);\n documents.push(doc);\n }\n\n // Generate language nodes\n for (const language of analysis.languages) {\n const doc = this.generateLanguageNode(language, analysis);\n documents.push(doc);\n }\n\n logger.info('Generated primitives', { count: documents.length });\n return documents;\n }\n\n /**\n * Write generated documents to disk\n */\n async writePrimitives(documents: GeneratedDocument[]): Promise<InitPrimitivesResult> {\n const result: InitPrimitivesResult = {\n success: true,\n analysis: {\n dependencies: [],\n services: [],\n frameworks: [],\n languages: [],\n deployments: [],\n existingConcepts: [],\n existingFeatures: [],\n metadata: {\n analyzedAt: new Date().toISOString(),\n projectRoot: this.projectRoot,\n filesScanned: 0,\n duration: 0\n }\n },\n documentsGenerated: [],\n directoriesCreated: [],\n errors: [],\n warnings: []\n };\n\n const createdDirs = new Set<string>();\n\n for (const doc of documents) {\n try {\n // Ensure directory exists\n const dir = dirname(doc.path);\n if (!createdDirs.has(dir) && !existsSync(dir)) {\n await mkdir(dir, { recursive: true });\n createdDirs.add(dir);\n result.directoriesCreated.push(dir);\n }\n\n // Check if file already exists\n if (existsSync(doc.path)) {\n result.warnings.push(`File already exists, skipping: ${doc.path}`);\n continue;\n }\n\n // Write file with frontmatter\n const frontmatterStr = matter.stringify(doc.content, doc.frontmatter);\n await writeFile(doc.path, frontmatterStr, 'utf-8');\n result.documentsGenerated.push(doc);\n\n logger.debug('Created primitive', { path: doc.path, title: doc.title });\n } catch (error) {\n const errorMsg = `Failed to write ${doc.path}: ${String(error)}`;\n result.errors.push(errorMsg);\n logger.error(errorMsg);\n }\n }\n\n result.success = result.errors.length === 0;\n return result;\n }\n\n /**\n * Full init-primitives workflow\n */\n async initPrimitives(options?: CultivationOptions): Promise<InitPrimitivesResult> {\n const analysis = await this.analyze();\n const documents = await this.generatePrimitives(analysis);\n\n if (options?.dryRun) {\n return {\n success: true,\n analysis,\n documentsGenerated: documents,\n directoriesCreated: [],\n errors: [],\n warnings: ['Dry run - no files written']\n };\n }\n\n const result = await this.writePrimitives(documents);\n result.analysis = analysis;\n return result;\n }\n\n // ============================================================================\n // Dependency Analysis Methods\n // ============================================================================\n\n private async analyzeDependencies(analysis: SeedAnalysis): Promise<void> {\n await this.analyzePackageJson(analysis);\n await this.analyzePython(analysis);\n await this.analyzeComposer(analysis);\n await this.analyzeCargo(analysis);\n await this.analyzeGoMod(analysis);\n await this.analyzeJava(analysis);\n }\n\n private async analyzePackageJson(analysis: SeedAnalysis): Promise<void> {\n const packageJsonPaths = [\n join(this.projectRoot, 'package.json'),\n join(this.projectRoot, 'packages/*/package.json')\n ];\n\n for (const path of [packageJsonPaths[0]]) {\n try {\n const content = await readFile(path, 'utf-8');\n const pkg = JSON.parse(content);\n this.filesScanned++;\n\n if (!analysis.languages.includes('javascript')) {\n analysis.languages.push('javascript');\n }\n if (pkg.devDependencies?.typescript || pkg.dependencies?.typescript) {\n if (!analysis.languages.includes('typescript')) {\n analysis.languages.push('typescript');\n }\n }\n\n // Process dependencies\n for (const [name, version] of Object.entries(pkg.dependencies || {})) {\n const dep = this.createDependencyInfo(name, version as string, 'nodejs', false);\n analysis.dependencies.push(dep);\n }\n\n // Process devDependencies\n for (const [name, version] of Object.entries(pkg.devDependencies || {})) {\n const dep = this.createDependencyInfo(name, version as string, 'nodejs', true);\n analysis.dependencies.push(dep);\n }\n } catch {\n // File doesn't exist\n }\n }\n\n // Check for monorepo packages\n try {\n const packagesDir = join(this.projectRoot, 'packages');\n const entries = await readdir(packagesDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const pkgPath = join(packagesDir, entry.name, 'package.json');\n try {\n const content = await readFile(pkgPath, 'utf-8');\n const pkg = JSON.parse(content);\n this.filesScanned++;\n\n for (const [name, version] of Object.entries(pkg.dependencies || {})) {\n // Avoid duplicates\n if (!analysis.dependencies.some(d => d.name === name && d.ecosystem === 'nodejs')) {\n const dep = this.createDependencyInfo(name, version as string, 'nodejs', false);\n analysis.dependencies.push(dep);\n }\n }\n } catch {\n // Package doesn't have package.json\n }\n }\n }\n } catch {\n // No packages directory\n }\n }\n\n private async analyzePython(analysis: SeedAnalysis): Promise<void> {\n const requirementsPaths = [\n join(this.projectRoot, 'requirements.txt'),\n join(this.projectRoot, 'requirements-dev.txt')\n ];\n\n for (const path of requirementsPaths) {\n try {\n const content = await readFile(path, 'utf-8');\n const isDev = path.includes('dev');\n this.filesScanned++;\n\n if (!analysis.languages.includes('python')) {\n analysis.languages.push('python');\n }\n\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n const match = trimmed.match(/^([a-zA-Z0-9-_]+)(?:==|>=|<=|~=|>|<)?(.+)?$/);\n if (match) {\n const [, name, version] = match;\n const dep = this.createDependencyInfo(name, version?.trim() || 'latest', 'python', isDev);\n analysis.dependencies.push(dep);\n }\n }\n } catch {\n // File doesn't exist\n }\n }\n\n // pyproject.toml\n try {\n const content = await readFile(join(this.projectRoot, 'pyproject.toml'), 'utf-8');\n this.filesScanned++;\n\n const depMatch = content.match(/\\[tool\\.poetry\\.dependencies\\]([\\s\\S]*?)(?=\\[|$)/);\n if (depMatch) {\n for (const line of depMatch[1].split('\\n')) {\n const match = line.match(/^([a-zA-Z0-9-_]+)\\s*=\\s*\"([^\"]+)\"/);\n if (match) {\n const [, name, version] = match;\n if (name !== 'python') {\n const dep = this.createDependencyInfo(name, version, 'python', false);\n analysis.dependencies.push(dep);\n }\n }\n }\n }\n } catch {\n // File doesn't exist\n }\n }\n\n private async analyzeComposer(analysis: SeedAnalysis): Promise<void> {\n try {\n const content = await readFile(join(this.projectRoot, 'composer.json'), 'utf-8');\n const composer = JSON.parse(content);\n this.filesScanned++;\n\n if (!analysis.languages.includes('php')) {\n analysis.languages.push('php');\n }\n\n for (const [name, version] of Object.entries(composer.require || {})) {\n if (name === 'php') continue;\n const dep = this.createDependencyInfo(name, version as string, 'php', false);\n analysis.dependencies.push(dep);\n }\n\n for (const [name, version] of Object.entries(composer['require-dev'] || {})) {\n const dep = this.createDependencyInfo(name, version as string, 'php', true);\n analysis.dependencies.push(dep);\n }\n } catch {\n // File doesn't exist\n }\n }\n\n private async analyzeCargo(analysis: SeedAnalysis): Promise<void> {\n try {\n const content = await readFile(join(this.projectRoot, 'Cargo.toml'), 'utf-8');\n this.filesScanned++;\n\n if (!analysis.languages.includes('rust')) {\n analysis.languages.push('rust');\n }\n\n const depMatch = content.match(/\\[dependencies\\]([\\s\\S]*?)(?=\\[|$)/);\n if (depMatch) {\n for (const line of depMatch[1].split('\\n')) {\n const match = line.match(/^([a-zA-Z0-9-_]+)\\s*=\\s*\"([^\"]+)\"/);\n if (match) {\n const [, name, version] = match;\n const dep = this.createDependencyInfo(name, version, 'rust', false);\n dep.repository = `https://crates.io/crates/${name}`;\n analysis.dependencies.push(dep);\n }\n }\n }\n } catch {\n // File doesn't exist\n }\n }\n\n private async analyzeGoMod(analysis: SeedAnalysis): Promise<void> {\n try {\n const content = await readFile(join(this.projectRoot, 'go.mod'), 'utf-8');\n this.filesScanned++;\n\n if (!analysis.languages.includes('go')) {\n analysis.languages.push('go');\n }\n\n let inRequire = false;\n for (const line of content.split('\\n')) {\n if (line.trim() === 'require (') {\n inRequire = true;\n continue;\n }\n if (line.trim() === ')') {\n inRequire = false;\n continue;\n }\n\n if (inRequire || line.trim().startsWith('require ')) {\n const match = line.match(/([a-zA-Z0-9.-]+\\/[a-zA-Z0-9.-/]+)\\s+v([0-9.]+)/);\n if (match) {\n const [, name, version] = match;\n const dep = this.createDependencyInfo(name, version, 'go', false);\n dep.documentation = [`https://pkg.go.dev/${name}`];\n dep.repository = `https://${name}`;\n analysis.dependencies.push(dep);\n }\n }\n }\n } catch {\n // File doesn't exist\n }\n }\n\n private async analyzeJava(analysis: SeedAnalysis): Promise<void> {\n try {\n const content = await readFile(join(this.projectRoot, 'pom.xml'), 'utf-8');\n this.filesScanned++;\n\n if (!analysis.languages.includes('java')) {\n analysis.languages.push('java');\n }\n\n const depMatches = content.matchAll(\n /<dependency>[\\s\\S]*?<groupId>([^<]+)<\\/groupId>[\\s\\S]*?<artifactId>([^<]+)<\\/artifactId>[\\s\\S]*?(?:<version>([^<]+)<\\/version>)?[\\s\\S]*?<\\/dependency>/g\n );\n\n for (const match of depMatches) {\n const [, groupId, artifactId, version] = match;\n const name = `${groupId}:${artifactId}`;\n const dep = this.createDependencyInfo(name, version || 'latest', 'java', false);\n dep.documentation = [`https://mvnrepository.com/artifact/${groupId}/${artifactId}`];\n analysis.dependencies.push(dep);\n }\n } catch {\n // File doesn't exist\n }\n\n // build.gradle (basic support)\n try {\n const content = await readFile(join(this.projectRoot, 'build.gradle'), 'utf-8');\n this.filesScanned++;\n\n if (!analysis.languages.includes('java')) {\n analysis.languages.push('java');\n }\n } catch {\n // File doesn't exist\n }\n }\n\n private createDependencyInfo(name: string, version: string, ecosystem: Ecosystem, isDev: boolean): DependencyInfo {\n return {\n name,\n version,\n type: this.inferDependencyType(name),\n category: this.inferCategory(name),\n ecosystem,\n documentation: this.getDocumentationLinks(name, ecosystem),\n repository: this.getRepositoryUrl(name, ecosystem),\n usedBy: [],\n relatedTo: [],\n isDev\n };\n }\n\n // ============================================================================\n // Vault Document Analysis\n // ============================================================================\n\n private async analyzeVaultDocuments(analysis: SeedAnalysis): Promise<void> {\n for (const filePath of this.vaultContext.allFiles) {\n try {\n const content = await readFile(filePath, 'utf-8');\n const { data } = matter(content);\n this.filesScanned++;\n\n if (data.type === 'concept') {\n analysis.existingConcepts.push(data.title || basename(filePath, '.md'));\n } else if (data.type === 'feature') {\n analysis.existingFeatures.push(data.title || basename(filePath, '.md'));\n }\n\n // Extract mentions of dependencies\n const contentLower = content.toLowerCase();\n for (const dep of analysis.dependencies) {\n if (contentLower.includes(dep.name.toLowerCase())) {\n dep.usedBy.push(data.title || basename(filePath, '.md'));\n }\n }\n } catch {\n // Skip files that can't be read\n }\n }\n }\n\n // ============================================================================\n // Service Analysis\n // ============================================================================\n\n private async analyzeServices(analysis: SeedAnalysis): Promise<void> {\n const serviceFiles = [\n 'docker-compose.yml',\n 'docker-compose.yaml',\n 'compose.yml',\n 'compose.yaml'\n ];\n\n for (const file of serviceFiles) {\n try {\n const content = await readFile(join(this.projectRoot, file), 'utf-8');\n this.filesScanned++;\n\n // Simple line-by-line parsing for docker-compose\n const lines = content.split('\\n');\n let inServices = false;\n let currentService: string | null = null;\n let currentIndent = 0;\n const serviceData = new Map<string, { image?: string; ports: string[] }>();\n\n for (const line of lines) {\n // Check for services section\n if (line.match(/^services:\\s*$/)) {\n inServices = true;\n continue;\n }\n\n // Check for end of services section (new top-level key)\n if (inServices && line.match(/^[a-zA-Z]+:\\s*$/)) {\n inServices = false;\n currentService = null;\n continue;\n }\n\n if (!inServices) continue;\n\n // Detect service name (2-space indent, ends with colon)\n const serviceMatch = line.match(/^ ([a-zA-Z0-9-_]+):\\s*$/);\n if (serviceMatch) {\n currentService = serviceMatch[1];\n if (!['volumes', 'networks', 'secrets', 'configs'].includes(currentService)) {\n serviceData.set(currentService, { ports: [] });\n } else {\n currentService = null;\n }\n continue;\n }\n\n // Extract properties for current service (4+ space indent)\n if (currentService && serviceData.has(currentService)) {\n const data = serviceData.get(currentService)!;\n\n const imageMatch = line.match(/^\\s+image:\\s*(.+)$/);\n if (imageMatch) {\n data.image = imageMatch[1].trim();\n }\n\n const portMatch = line.match(/^\\s+-\\s*[\"']?(\\d+)(?::\\d+)?[\"']?/);\n if (portMatch) {\n data.ports.push(portMatch[1]);\n }\n }\n }\n\n // Convert to ServiceInfo objects\n for (const [name, data] of serviceData.entries()) {\n const service: ServiceInfo = {\n name,\n type: this.inferServiceType(name, data.image),\n technology: data.image?.split(':')[0] || 'unknown',\n dependencies: [],\n ports: data.ports.map(p => parseInt(p, 10))\n };\n analysis.services.push(service);\n }\n } catch {\n // File doesn't exist\n }\n }\n }\n\n private extractPorts(portsSection?: string): number[] {\n if (!portsSection) return [];\n const ports: number[] = [];\n const matches = portsSection.matchAll(/(\\d+)(?::\\d+)?/g);\n for (const match of matches) {\n ports.push(parseInt(match[1], 10));\n }\n return ports;\n }\n\n // ============================================================================\n // Deployment Analysis\n // ============================================================================\n\n private async analyzeDeployments(analysis: SeedAnalysis): Promise<void> {\n const deploymentIndicators = [\n 'Dockerfile',\n 'docker-compose.yml',\n '.github/workflows',\n 'vercel.json',\n 'netlify.toml',\n 'railway.json',\n 'fly.toml',\n 'render.yaml',\n 'kubernetes',\n 'k8s'\n ];\n\n for (const indicator of deploymentIndicators) {\n try {\n await stat(join(this.projectRoot, indicator));\n analysis.deployments.push(indicator);\n } catch {\n // Doesn't exist\n }\n }\n }\n\n // ============================================================================\n // Classification Methods\n // ============================================================================\n\n private classifyDependencies(analysis: SeedAnalysis): void {\n const frameworkKeywords = [\n 'express', 'fastify', 'koa', 'hapi', 'nest',\n 'react', 'vue', 'angular', 'svelte', 'solid',\n 'next', 'nuxt', 'gatsby', 'remix', 'astro',\n 'django', 'flask', 'fastapi', 'rails', 'laravel',\n 'spring', 'quarkus', 'micronaut',\n 'actix', 'rocket', 'axum',\n 'gin', 'echo', 'fiber'\n ];\n\n for (const dep of analysis.dependencies) {\n const nameLower = dep.name.toLowerCase();\n if (frameworkKeywords.some(fw => nameLower.includes(fw))) {\n dep.type = 'framework';\n if (!analysis.frameworks.some(f => f.name === dep.name)) {\n analysis.frameworks.push(dep);\n }\n }\n }\n }\n\n private inferDependencyType(name: string): DependencyType {\n const nameLower = name.toLowerCase();\n\n if (nameLower.includes('eslint') || nameLower.includes('prettier') ||\n nameLower.includes('webpack') || nameLower.includes('vite') ||\n nameLower.includes('rollup') || nameLower.includes('esbuild')) {\n return 'tool';\n }\n\n return 'library';\n }\n\n private inferCategory(name: string): string {\n const nameLower = name.toLowerCase();\n\n // Frontend frameworks & UI → components/ui\n if (['react', 'vue', 'angular', 'svelte', 'solid'].some(fw => nameLower.includes(fw))) {\n return 'components/ui';\n }\n if (['radix', 'shadcn', 'chakra', 'mui', 'antd'].some(ui => nameLower.includes(ui))) {\n return 'components/ui';\n }\n\n // Backend frameworks → services/api\n if (['express', 'fastapi', 'django', 'flask', 'next', 'fastify', 'koa', 'hapi'].some(fw => nameLower.includes(fw))) {\n return 'services/api';\n }\n\n // Database/ORM → integrations/databases\n if (['prisma', 'typeorm', 'sequelize', 'mongoose', 'pg', 'mysql', 'sqlite', 'drizzle'].some(db => nameLower.includes(db))) {\n return 'integrations/databases';\n }\n\n // Auth → integrations/auth-providers\n if (['auth', 'passport', 'jwt', 'oauth', 'clerk', 'auth0', 'nextauth'].some(auth => nameLower.includes(auth))) {\n return 'integrations/auth-providers';\n }\n\n // Testing → guides/testing\n if (['test', 'jest', 'mocha', 'vitest', 'cypress', 'playwright'].some(test => nameLower.includes(test))) {\n return 'guides/testing';\n }\n\n // Build tools → standards/build-tools\n if (['webpack', 'vite', 'rollup', 'esbuild', 'turbo', 'nx'].some(tool => nameLower.includes(tool))) {\n return 'standards/build-tools';\n }\n\n // Linters → standards/coding-standards\n if (['eslint', 'prettier', 'stylelint', 'biome'].some(lint => nameLower.includes(lint))) {\n return 'standards/coding-standards';\n }\n\n // Type definitions → components/utilities\n if (nameLower.includes('@types') || nameLower.includes('typescript')) {\n return 'components/utilities';\n }\n\n // Default\n return 'components/utilities';\n }\n\n private getDocumentationLinks(name: string, ecosystem: Ecosystem): string[] {\n const links: string[] = [];\n\n switch (ecosystem) {\n case 'nodejs':\n links.push(`https://www.npmjs.com/package/${name}`);\n break;\n case 'python':\n links.push(`https://pypi.org/project/${name}/`);\n break;\n case 'php':\n links.push(`https://packagist.org/packages/${name}`);\n break;\n case 'rust':\n links.push(`https://crates.io/crates/${name}`);\n break;\n case 'go':\n links.push(`https://pkg.go.dev/${name}`);\n break;\n case 'java':\n if (name.includes(':')) {\n const [group, artifact] = name.split(':');\n links.push(`https://mvnrepository.com/artifact/${group}/${artifact}`);\n }\n break;\n }\n\n return links;\n }\n\n private getRepositoryUrl(name: string, ecosystem: Ecosystem): string | undefined {\n // Could be enhanced to query package registries\n return undefined;\n }\n\n private inferServiceType(name: string, image?: string): ServiceType {\n const nameLower = name.toLowerCase();\n const imageLower = image?.toLowerCase() || '';\n\n if (nameLower.includes('db') || nameLower.includes('database') ||\n ['postgres', 'mysql', 'mongo', 'mariadb'].some(db => imageLower.includes(db))) {\n return 'database';\n }\n if (nameLower.includes('cache') || imageLower.includes('redis') || imageLower.includes('memcached')) {\n return 'cache';\n }\n if (nameLower.includes('queue') || ['rabbitmq', 'kafka', 'nats'].some(q => imageLower.includes(q))) {\n return 'queue';\n }\n if (nameLower.includes('search') || ['elastic', 'meilisearch', 'typesense'].some(s => imageLower.includes(s))) {\n return 'search';\n }\n if (nameLower.includes('api') || nameLower.includes('backend') || nameLower.includes('server')) {\n return 'api';\n }\n if (nameLower.includes('storage') || imageLower.includes('minio') || imageLower.includes('s3')) {\n return 'storage';\n }\n if (['prometheus', 'grafana', 'jaeger', 'datadog'].some(m => imageLower.includes(m))) {\n return 'monitoring';\n }\n\n return 'compute';\n }\n\n private shouldGenerateNode(dep: DependencyInfo): boolean {\n // Generate nodes for frameworks\n if (dep.type === 'framework') return true;\n\n // Major packages that should have nodes\n const majorPackages = [\n 'react', 'vue', 'angular', 'svelte',\n 'typescript', 'webpack', 'vite', 'esbuild',\n 'jest', 'vitest', 'mocha', 'playwright', 'cypress',\n 'express', 'fastify', 'koa', 'next', 'nuxt',\n 'prisma', 'typeorm', 'sequelize', 'drizzle',\n 'axios', 'graphql', 'trpc', 'zod'\n ];\n\n return majorPackages.some(pkg => dep.name.toLowerCase().includes(pkg));\n }\n\n // ============================================================================\n // Node Generation Methods\n // ============================================================================\n\n private generateFrameworkNode(framework: DependencyInfo, analysis: SeedAnalysis): GeneratedDocument {\n const title = this.formatTitle(framework.name);\n const content = this.buildFrameworkContent(framework, analysis);\n\n const frontmatter: DocumentMetadata = {\n title,\n type: 'primitive',\n category: framework.category,\n ecosystem: framework.ecosystem,\n version: framework.version,\n status: 'active',\n tags: ['framework', framework.ecosystem, framework.category.split('/').pop() || ''],\n documentation: framework.documentation,\n repository: framework.repository,\n used_by: framework.usedBy.slice(0, 10),\n created: new Date().toISOString().split('T')[0],\n updated: new Date().toISOString()\n };\n\n return {\n type: 'primitive',\n path: join(this.vaultContext.vaultRoot, framework.category, `${this.slugify(framework.name)}.md`),\n title,\n content,\n frontmatter,\n backlinks: []\n };\n }\n\n private generateDependencyNode(dep: DependencyInfo, analysis: SeedAnalysis): GeneratedDocument {\n const title = this.formatTitle(dep.name);\n const content = this.buildDependencyContent(dep, analysis);\n\n const frontmatter: DocumentMetadata = {\n title,\n type: 'primitive',\n category: dep.category,\n ecosystem: dep.ecosystem,\n version: dep.version,\n status: 'active',\n tags: [dep.type, dep.ecosystem, dep.category.split('/').pop() || ''],\n documentation: dep.documentation,\n repository: dep.repository,\n used_by: dep.usedBy.slice(0, 10),\n created: new Date().toISOString().split('T')[0],\n updated: new Date().toISOString()\n };\n\n return {\n type: 'primitive',\n path: join(this.vaultContext.vaultRoot, dep.category, `${this.slugify(dep.name)}.md`),\n title,\n content,\n frontmatter,\n backlinks: []\n };\n }\n\n private generateServiceNode(service: ServiceInfo, analysis: SeedAnalysis): GeneratedDocument {\n const title = this.formatTitle(service.name);\n const content = this.buildServiceContent(service, analysis);\n\n const frontmatter: DocumentMetadata = {\n title,\n type: 'service',\n category: 'service',\n service_type: service.type,\n technology: service.technology,\n status: 'active',\n tags: ['service', service.type, service.technology],\n created: new Date().toISOString().split('T')[0],\n updated: new Date().toISOString()\n };\n\n return {\n type: 'service',\n path: join(this.vaultContext.vaultRoot, 'services', service.type, `${this.slugify(service.name)}.md`),\n title,\n content,\n frontmatter,\n backlinks: []\n };\n }\n\n private generateLanguageNode(language: string, analysis: SeedAnalysis): GeneratedDocument {\n const title = this.formatTitle(language);\n const content = this.buildLanguageContent(language, analysis);\n\n const frontmatter: DocumentMetadata = {\n title,\n type: 'standard',\n category: 'language',\n status: 'active',\n tags: ['language', 'programming'],\n created: new Date().toISOString().split('T')[0],\n updated: new Date().toISOString()\n };\n\n return {\n type: 'standard',\n path: join(this.vaultContext.vaultRoot, 'standards', 'programming-languages', `${language.toLowerCase()}.md`),\n title,\n content,\n frontmatter,\n backlinks: []\n };\n }\n\n // ============================================================================\n // Content Building Methods\n // ============================================================================\n\n private buildFrameworkContent(framework: DependencyInfo, analysis: SeedAnalysis): string {\n const sections: string[] = [];\n\n sections.push(`# ${this.formatTitle(framework.name)}\\n`);\n sections.push(`${framework.category} framework for ${framework.ecosystem}.\\n`);\n\n sections.push(`## Overview\\n`);\n sections.push(`**Version:** ${framework.version}`);\n sections.push(`**Type:** ${framework.type}`);\n sections.push(`**Ecosystem:** ${framework.ecosystem}\\n`);\n\n if (framework.usedBy.length > 0) {\n sections.push(`## Usage in This Project\\n`);\n framework.usedBy.slice(0, 10).forEach(feature => {\n sections.push(`- [[${this.slugify(feature)}|${feature}]]`);\n });\n sections.push('');\n }\n\n if (framework.documentation && framework.documentation.length > 0) {\n sections.push(`## Documentation\\n`);\n framework.documentation.forEach(url => {\n sections.push(`- [${this.getLinkText(url)}](${url})`);\n });\n sections.push('');\n }\n\n if (framework.repository) {\n sections.push(`## Repository\\n`);\n sections.push(`- [Source Code](${framework.repository})\\n`);\n }\n\n const related = this.findRelatedTechnologies(framework, analysis);\n if (related.length > 0) {\n sections.push(`## Related Primitives\\n`);\n related.forEach(rel => {\n sections.push(`- [[${this.slugify(rel)}]]`);\n });\n sections.push('');\n }\n\n return sections.join('\\n');\n }\n\n private buildDependencyContent(dep: DependencyInfo, analysis: SeedAnalysis): string {\n const sections: string[] = [];\n\n sections.push(`# ${this.formatTitle(dep.name)}\\n`);\n sections.push(`${dep.category} ${dep.type} for ${dep.ecosystem}.\\n`);\n\n sections.push(`## Overview\\n`);\n sections.push(`**Version:** ${dep.version}`);\n sections.push(`**Type:** ${dep.type}\\n`);\n\n if (dep.usedBy.length > 0) {\n sections.push(`## Usage\\n`);\n dep.usedBy.slice(0, 10).forEach(ref => {\n sections.push(`- [[${this.slugify(ref)}|${ref}]]`);\n });\n if (dep.usedBy.length > 10) {\n sections.push(`- ...and ${dep.usedBy.length - 10} more`);\n }\n sections.push('');\n }\n\n if (dep.documentation && dep.documentation.length > 0) {\n sections.push(`## Documentation\\n`);\n dep.documentation.forEach(url => {\n sections.push(`- [${this.getLinkText(url)}](${url})`);\n });\n sections.push('');\n }\n\n return sections.join('\\n');\n }\n\n private buildServiceContent(service: ServiceInfo, analysis: SeedAnalysis): string {\n const sections: string[] = [];\n\n sections.push(`# ${this.formatTitle(service.name)}\\n`);\n sections.push(`${service.type} service using ${service.technology}.\\n`);\n\n sections.push(`## Service Details\\n`);\n sections.push(`**Type:** ${service.type}`);\n sections.push(`**Technology:** ${service.technology}`);\n if (service.framework) {\n sections.push(`**Framework:** [[${this.slugify(service.framework)}|${service.framework}]]`);\n }\n if (service.language) {\n sections.push(`**Language:** [[${service.language}]]`);\n }\n sections.push('');\n\n if (service.ports && service.ports.length > 0) {\n sections.push(`## Ports\\n`);\n service.ports.forEach(port => {\n sections.push(`- ${port}`);\n });\n sections.push('');\n }\n\n if (service.dependencies.length > 0) {\n sections.push(`## Dependencies\\n`);\n service.dependencies.forEach(dep => {\n sections.push(`- [[${this.slugify(dep)}]]`);\n });\n sections.push('');\n }\n\n return sections.join('\\n');\n }\n\n private buildLanguageContent(language: string, analysis: SeedAnalysis): string {\n const sections: string[] = [];\n const langLower = language.toLowerCase();\n\n sections.push(`# ${this.formatTitle(language)}\\n`);\n sections.push(`Programming language used in this project.\\n`);\n\n const frameworks = analysis.frameworks.filter(f =>\n f.ecosystem === langLower ||\n (langLower === 'javascript' && f.ecosystem === 'nodejs') ||\n (langLower === 'typescript' && f.ecosystem === 'nodejs')\n );\n const dependencies = analysis.dependencies.filter(d =>\n d.ecosystem === langLower ||\n (langLower === 'javascript' && d.ecosystem === 'nodejs') ||\n (langLower === 'typescript' && d.ecosystem === 'nodejs')\n );\n\n if (frameworks.length > 0) {\n sections.push(`## Frameworks\\n`);\n frameworks.slice(0, 10).forEach(fw => {\n sections.push(`- [[${this.slugify(fw.name)}|${this.formatTitle(fw.name)}]]`);\n });\n sections.push('');\n }\n\n if (dependencies.length > 0) {\n sections.push(`## Libraries (${dependencies.length})\\n`);\n sections.push(`This project uses ${dependencies.length} ${language} dependencies.\\n`);\n }\n\n sections.push(`## Resources\\n`);\n sections.push(`- [Official Documentation](${this.getLanguageDocUrl(language)})`);\n sections.push('');\n\n return sections.join('\\n');\n }\n\n // ============================================================================\n // Helper Methods\n // ============================================================================\n\n private findRelatedTechnologies(dep: DependencyInfo, analysis: SeedAnalysis): string[] {\n const related: string[] = [];\n\n // Add related frameworks in same category\n for (const other of analysis.frameworks) {\n if (other.name !== dep.name && other.category === dep.category) {\n related.push(other.name);\n }\n }\n\n return related.slice(0, 5);\n }\n\n private formatTitle(name: string): string {\n return name\n .split(/[-_/]/)\n .filter(Boolean)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n\n private slugify(text: string): string {\n return text\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-|-$/g, '');\n }\n\n private getLinkText(url: string): string {\n if (url.includes('github.com')) return 'GitHub';\n if (url.includes('npmjs.com')) return 'NPM';\n if (url.includes('pypi.org')) return 'PyPI';\n if (url.includes('crates.io')) return 'Crates.io';\n if (url.includes('pkg.go.dev')) return 'Go Docs';\n if (url.includes('packagist.org')) return 'Packagist';\n if (url.includes('mvnrepository.com')) return 'Maven';\n return 'Documentation';\n }\n\n private getLanguageDocUrl(language: string): string {\n const urls: Record<string, string> = {\n 'javascript': 'https://developer.mozilla.org/en-US/docs/Web/JavaScript',\n 'typescript': 'https://www.typescriptlang.org/docs/',\n 'python': 'https://docs.python.org/',\n 'php': 'https://www.php.net/docs.php',\n 'rust': 'https://doc.rust-lang.org/',\n 'go': 'https://go.dev/doc/',\n 'java': 'https://docs.oracle.com/en/java/',\n 'ruby': 'https://www.ruby-lang.org/en/documentation/'\n };\n\n return urls[language.toLowerCase()] || `https://www.google.com/search?q=${language}+documentation`;\n }\n}\n\n// ============================================================================\n// Convenience Functions\n// ============================================================================\n\n/**\n * Create and run a seed analysis\n */\nexport async function analyzeSeed(projectRoot: string, docsPath: string): Promise<SeedAnalysis> {\n const generator = await SeedGenerator.create(projectRoot, docsPath);\n return generator.analyze();\n}\n\n/**\n * Initialize primitives from codebase analysis\n */\nexport async function initPrimitives(\n projectRoot: string,\n docsPath: string,\n options?: CultivationOptions\n): Promise<InitPrimitivesResult> {\n const generator = await SeedGenerator.create(projectRoot, docsPath);\n return generator.initPrimitives(options);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Cultivation System - Type Definitions
3
+ *
4
+ * Types for the seed generator and cultivation system that analyzes
5
+ * codebases and generates knowledge graph primitives.
6
+ *
7
+ * @module cultivation/types
8
+ */
9
+ import type { NodeType, NodeFrontmatter } from '../core/types.js';
10
+ /**
11
+ * Context about the vault/docs structure
12
+ */
13
+ export interface VaultContext {
14
+ /** Content of primitives.md - foundational concepts */
15
+ primitives?: string;
16
+ /** Content of features.md - current feature set */
17
+ features?: string;
18
+ /** Content of tech-specs.md - technical specifications */
19
+ techSpecs?: string;
20
+ /** Vault/docs root directory */
21
+ vaultRoot: string;
22
+ /** All markdown files in vault */
23
+ allFiles: string[];
24
+ }
25
+ /**
26
+ * Supported programming language ecosystems
27
+ */
28
+ export type Ecosystem = 'nodejs' | 'python' | 'php' | 'rust' | 'go' | 'java' | 'ruby' | 'dotnet' | 'other';
29
+ /**
30
+ * Dependency classification type
31
+ */
32
+ export type DependencyType = 'framework' | 'library' | 'tool' | 'service' | 'language' | 'runtime';
33
+ /**
34
+ * Information about a detected dependency
35
+ */
36
+ export interface DependencyInfo {
37
+ /** Package/library name */
38
+ name: string;
39
+ /** Version string */
40
+ version: string;
41
+ /** Classification type */
42
+ type: DependencyType;
43
+ /** Category in knowledge graph (maps to PRIMITIVES.md structure) */
44
+ category: string;
45
+ /** Package ecosystem (nodejs, python, etc.) */
46
+ ecosystem: Ecosystem;
47
+ /** Optional description */
48
+ description?: string;
49
+ /** Documentation URLs */
50
+ documentation?: string[];
51
+ /** Repository URL */
52
+ repository?: string;
53
+ /** Files/docs that use this dependency */
54
+ usedBy: string[];
55
+ /** Related dependencies */
56
+ relatedTo: string[];
57
+ /** Is this a dev dependency? */
58
+ isDev?: boolean;
59
+ }
60
+ /**
61
+ * Service type classification
62
+ */
63
+ export type ServiceType = 'api' | 'database' | 'queue' | 'cache' | 'storage' | 'compute' | 'monitoring' | 'auth' | 'search' | 'ml';
64
+ /**
65
+ * Information about a detected service
66
+ */
67
+ export interface ServiceInfo {
68
+ /** Service name */
69
+ name: string;
70
+ /** Service type */
71
+ type: ServiceType;
72
+ /** Technology used (postgres, redis, etc.) */
73
+ technology: string;
74
+ /** Framework if applicable */
75
+ framework?: string;
76
+ /** Programming language */
77
+ language?: string;
78
+ /** Service dependencies */
79
+ dependencies: string[];
80
+ /** API endpoints if detected */
81
+ endpoints?: string[];
82
+ /** Port mappings */
83
+ ports?: number[];
84
+ /** Environment variables */
85
+ envVars?: string[];
86
+ }
87
+ /**
88
+ * Complete seed analysis result from codebase
89
+ */
90
+ export interface SeedAnalysis {
91
+ /** All detected dependencies */
92
+ dependencies: DependencyInfo[];
93
+ /** Detected services */
94
+ services: ServiceInfo[];
95
+ /** Framework dependencies (subset of dependencies) */
96
+ frameworks: DependencyInfo[];
97
+ /** Programming languages used */
98
+ languages: string[];
99
+ /** Deployment configurations found */
100
+ deployments: string[];
101
+ /** Existing concepts from vault */
102
+ existingConcepts: string[];
103
+ /** Existing features from vault */
104
+ existingFeatures: string[];
105
+ /** Analysis metadata */
106
+ metadata: {
107
+ analyzedAt: string;
108
+ projectRoot: string;
109
+ filesScanned: number;
110
+ duration: number;
111
+ };
112
+ }
113
+ /**
114
+ * Document metadata for generated files
115
+ */
116
+ export interface DocumentMetadata extends NodeFrontmatter {
117
+ /** Ecosystem/language */
118
+ ecosystem?: Ecosystem;
119
+ /** Version of the dependency */
120
+ version?: string;
121
+ /** Service type if applicable */
122
+ service_type?: ServiceType;
123
+ /** Technology used */
124
+ technology?: string;
125
+ /** Documentation links */
126
+ documentation?: string[];
127
+ /** Repository URL */
128
+ repository?: string;
129
+ /** Files using this primitive */
130
+ used_by?: string[];
131
+ }
132
+ /**
133
+ * Generated document from seed analysis
134
+ */
135
+ export interface GeneratedDocument {
136
+ /** Document type */
137
+ type: NodeType | string;
138
+ /** Output file path */
139
+ path: string;
140
+ /** Document title */
141
+ title: string;
142
+ /** Markdown content */
143
+ content: string;
144
+ /** Frontmatter metadata */
145
+ frontmatter: DocumentMetadata;
146
+ /** Backlinks to include */
147
+ backlinks: string[];
148
+ }
149
+ /**
150
+ * Report from cultivation process
151
+ */
152
+ export interface CultivationReport {
153
+ /** Files processed */
154
+ filesProcessed: number;
155
+ /** Frontmatter entries added */
156
+ frontmatterAdded: number;
157
+ /** Documents generated */
158
+ documentsGenerated: number;
159
+ /** Footers updated */
160
+ footersUpdated: number;
161
+ /** Warnings encountered */
162
+ warnings: string[];
163
+ /** Errors encountered */
164
+ errors: string[];
165
+ /** Generated document details */
166
+ generatedDocuments: GeneratedDocument[];
167
+ /** Processing time in ms */
168
+ processingTime: number;
169
+ }
170
+ /**
171
+ * Options for cultivation process
172
+ */
173
+ export interface CultivationOptions {
174
+ /** Project root path */
175
+ projectRoot: string;
176
+ /** Docs/vault path */
177
+ docsPath: string;
178
+ /** Output path for generated files */
179
+ outputPath?: string;
180
+ /** Only analyze, don't generate */
181
+ dryRun?: boolean;
182
+ /** Verbose output */
183
+ verbose?: boolean;
184
+ /** Filter to specific ecosystems */
185
+ ecosystems?: Ecosystem[];
186
+ /** Minimum dependency importance to include */
187
+ minImportance?: 'all' | 'major' | 'framework';
188
+ /** Include dev dependencies */
189
+ includeDev?: boolean;
190
+ }
191
+ /**
192
+ * Analysis of missing documentation/nodes
193
+ */
194
+ export interface GapAnalysis {
195
+ /** Missing concept documentation */
196
+ missingConcepts: string[];
197
+ /** Missing feature documentation */
198
+ missingFeatures: string[];
199
+ /** Missing architecture documentation */
200
+ missingArchitecture: string[];
201
+ /** Missing integration documentation */
202
+ missingIntegrations: string[];
203
+ /** Areas needing improvement */
204
+ improvementAreas: string[];
205
+ /** Items needing replacement */
206
+ replacementNeeded: Array<{
207
+ area: string;
208
+ current: string;
209
+ reason: string;
210
+ priority: 'low' | 'medium' | 'high' | 'critical';
211
+ }>;
212
+ }
213
+ /**
214
+ * Result of init-primitives command
215
+ */
216
+ export interface InitPrimitivesResult {
217
+ /** Operation success */
218
+ success: boolean;
219
+ /** Seed analysis performed */
220
+ analysis: SeedAnalysis;
221
+ /** Documents generated */
222
+ documentsGenerated: GeneratedDocument[];
223
+ /** Directories created */
224
+ directoriesCreated: string[];
225
+ /** Errors encountered */
226
+ errors: string[];
227
+ /** Warnings */
228
+ warnings: string[];
229
+ }
230
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cultivation/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Database Schemas
3
+ *
4
+ * Exports SQL schema definitions for PostgreSQL integration.
5
+ * Provides utilities for loading and managing RuVector and Exochain schemas.
6
+ *
7
+ * @module database/schemas
8
+ */
9
+ /**
10
+ * Schema names supported by the system
11
+ */
12
+ export type SchemaName = 'ruvector' | 'exochain';
13
+ /**
14
+ * Load a SQL schema file from disk
15
+ *
16
+ * @param name - The schema name to load ('ruvector' or 'exochain')
17
+ * @returns The SQL schema content as a string
18
+ * @throws Error if the schema file cannot be read
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const ruvectorSchema = loadSchema('ruvector');
23
+ * await pgClient.query(ruvectorSchema);
24
+ * ```
25
+ */
26
+ export declare function loadSchema(name: SchemaName): string;
27
+ /**
28
+ * Get all available schemas
29
+ *
30
+ * @returns A record mapping schema names to their SQL content
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const schemas = getAllSchemas();
35
+ * for (const [name, sql] of Object.entries(schemas)) {
36
+ * console.log(`Loading schema: ${name}`);
37
+ * await pgClient.query(sql);
38
+ * }
39
+ * ```
40
+ */
41
+ export declare function getAllSchemas(): Record<SchemaName, string>;
42
+ /**
43
+ * Check if a schema name is valid
44
+ *
45
+ * @param name - The schema name to validate
46
+ * @returns True if the schema name is valid
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * if (isValidSchemaName('ruvector')) {
51
+ * const schema = loadSchema('ruvector');
52
+ * }
53
+ * ```
54
+ */
55
+ export declare function isValidSchemaName(name: string): name is SchemaName;
56
+ /**
57
+ * Get the list of available schema names
58
+ *
59
+ * @returns Array of available schema names
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const names = getSchemaNames(); // ['ruvector', 'exochain']
64
+ * ```
65
+ */
66
+ export declare function getSchemaNames(): SchemaName[];
67
+ /**
68
+ * RuVector schema SQL (inline for bundled distribution)
69
+ *
70
+ * This constant provides a minimal inline version of the RuVector schema
71
+ * for use cases where file system access is not available (e.g., bundled builds).
72
+ *
73
+ * For the full schema with all functions and triggers, use loadSchema('ruvector').
74
+ */
75
+ export declare const RUVECTOR_SCHEMA = "\n-- Inline RuVector schema for bundled distribution\nCREATE SCHEMA IF NOT EXISTS ruvector;\n\nCREATE TABLE IF NOT EXISTS ruvector.embeddings (\n id TEXT PRIMARY KEY,\n node_type TEXT NOT NULL,\n embedding REAL[] NOT NULL,\n dimensions INTEGER NOT NULL,\n metadata JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS idx_embeddings_node_type\nON ruvector.embeddings(node_type);\n\nCREATE INDEX IF NOT EXISTS idx_embeddings_metadata\nON ruvector.embeddings USING GIN (metadata);\n\nCREATE TABLE IF NOT EXISTS ruvector.trajectories (\n id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL,\n workflow_id TEXT,\n steps JSONB DEFAULT '[]',\n started_at TIMESTAMPTZ NOT NULL,\n completed_at TIMESTAMPTZ,\n success BOOLEAN DEFAULT FALSE,\n total_duration INTEGER DEFAULT 0,\n metadata JSONB DEFAULT '{}'\n);\n\nCREATE INDEX IF NOT EXISTS idx_trajectories_agent_id\nON ruvector.trajectories(agent_id);\n\nCREATE INDEX IF NOT EXISTS idx_trajectories_workflow_id\nON ruvector.trajectories(workflow_id);\n\nCREATE INDEX IF NOT EXISTS idx_trajectories_success\nON ruvector.trajectories(success);\n\nCREATE TABLE IF NOT EXISTS ruvector.patterns (\n id TEXT PRIMARY KEY,\n pattern_type TEXT NOT NULL,\n actions TEXT[] NOT NULL,\n frequency INTEGER DEFAULT 1,\n avg_duration REAL DEFAULT 0,\n success_rate REAL DEFAULT 0,\n confidence REAL DEFAULT 0,\n metadata JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS idx_patterns_type\nON ruvector.patterns(pattern_type);\n\nCREATE INDEX IF NOT EXISTS idx_patterns_confidence\nON ruvector.patterns(confidence);\n\nCREATE TABLE IF NOT EXISTS ruvector.learning_records (\n id SERIAL PRIMARY KEY,\n trajectory_id TEXT NOT NULL REFERENCES ruvector.trajectories(id),\n pattern_id TEXT NOT NULL REFERENCES ruvector.patterns(id),\n pattern_type TEXT NOT NULL,\n confidence REAL NOT NULL,\n learned_at TIMESTAMPTZ DEFAULT NOW(),\n applied_count INTEGER DEFAULT 0\n);\n\nCREATE INDEX IF NOT EXISTS idx_learning_records_pattern\nON ruvector.learning_records(pattern_id);\n\nCREATE TABLE IF NOT EXISTS ruvector.graph_nodes (\n id TEXT PRIMARY KEY,\n node_type TEXT NOT NULL,\n properties JSONB DEFAULT '{}',\n embedding_id TEXT REFERENCES ruvector.embeddings(id),\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS idx_graph_nodes_type\nON ruvector.graph_nodes(node_type);\n\nCREATE INDEX IF NOT EXISTS idx_graph_nodes_properties\nON ruvector.graph_nodes USING GIN (properties);\n\nCREATE TABLE IF NOT EXISTS ruvector.graph_edges (\n id TEXT PRIMARY KEY,\n source_id TEXT NOT NULL REFERENCES ruvector.graph_nodes(id),\n target_id TEXT NOT NULL REFERENCES ruvector.graph_nodes(id),\n edge_type TEXT NOT NULL,\n properties JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS idx_graph_edges_source\nON ruvector.graph_edges(source_id);\n\nCREATE INDEX IF NOT EXISTS idx_graph_edges_target\nON ruvector.graph_edges(target_id);\n\nCREATE INDEX IF NOT EXISTS idx_graph_edges_type\nON ruvector.graph_edges(edge_type);\n";
76
+ /**
77
+ * Exochain schema SQL (inline for bundled distribution)
78
+ *
79
+ * This constant provides a minimal inline version of the Exochain schema
80
+ * for use cases where file system access is not available (e.g., bundled builds).
81
+ *
82
+ * For the full schema with all functions and triggers, use loadSchema('exochain').
83
+ */
84
+ export declare const EXOCHAIN_SCHEMA = "\n-- Inline Exochain schema for bundled distribution\nCREATE SCHEMA IF NOT EXISTS exochain;\n\nCREATE TABLE IF NOT EXISTS exochain.events (\n id TEXT PRIMARY KEY,\n parents TEXT[] DEFAULT '{}',\n hlc_physical_ms BIGINT NOT NULL,\n hlc_logical INTEGER NOT NULL,\n author TEXT NOT NULL,\n payload_type TEXT NOT NULL,\n payload JSONB NOT NULL,\n signature TEXT NOT NULL,\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS idx_events_author\nON exochain.events(author);\n\nCREATE INDEX IF NOT EXISTS idx_events_payload_type\nON exochain.events(payload_type);\n\nCREATE INDEX IF NOT EXISTS idx_events_hlc\nON exochain.events(hlc_physical_ms, hlc_logical);\n\nCREATE INDEX IF NOT EXISTS idx_events_parents\nON exochain.events USING GIN (parents);\n\nCREATE TABLE IF NOT EXISTS exochain.checkpoints (\n height INTEGER PRIMARY KEY,\n event_root TEXT NOT NULL,\n state_root TEXT NOT NULL,\n timestamp TIMESTAMPTZ NOT NULL,\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE TABLE IF NOT EXISTS exochain.checkpoint_signatures (\n id SERIAL PRIMARY KEY,\n checkpoint_height INTEGER NOT NULL REFERENCES exochain.checkpoints(height),\n validator_did TEXT NOT NULL,\n signature TEXT NOT NULL,\n signed_at TIMESTAMPTZ DEFAULT NOW(),\n UNIQUE(checkpoint_height, validator_did)\n);\n\nCREATE INDEX IF NOT EXISTS idx_checkpoint_signatures_height\nON exochain.checkpoint_signatures(checkpoint_height);\n\nCREATE TABLE IF NOT EXISTS exochain.tips (\n event_id TEXT PRIMARY KEY REFERENCES exochain.events(id),\n added_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE TABLE IF NOT EXISTS exochain.peers (\n id TEXT PRIMARY KEY,\n endpoint TEXT NOT NULL UNIQUE,\n did TEXT,\n status TEXT DEFAULT 'disconnected',\n last_sync_time TIMESTAMPTZ,\n last_checkpoint_height INTEGER,\n events_received INTEGER DEFAULT 0,\n events_sent INTEGER DEFAULT 0,\n errors INTEGER DEFAULT 0,\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS idx_peers_status\nON exochain.peers(status);\n\nCREATE TABLE IF NOT EXISTS exochain.sync_log (\n id SERIAL PRIMARY KEY,\n peer_id TEXT NOT NULL,\n direction TEXT NOT NULL,\n events_transferred INTEGER DEFAULT 0,\n duration_ms INTEGER,\n success BOOLEAN DEFAULT FALSE,\n error_message TEXT,\n started_at TIMESTAMPTZ NOT NULL,\n completed_at TIMESTAMPTZ\n);\n\nCREATE INDEX IF NOT EXISTS idx_sync_log_peer\nON exochain.sync_log(peer_id);\n\nCREATE INDEX IF NOT EXISTS idx_sync_log_started_at\nON exochain.sync_log(started_at);\n";
85
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAUjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAenD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAK1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,UAAU,CAElE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAE7C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,0qGAyG3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,2/EAuF3B,CAAC"}
@@ -3,6 +3,13 @@
3
3
  *
4
4
  * Generates and manages CLAUDE.md configuration files for Claude Code
5
5
  * with knowledge graph integration.
6
+ *
7
+ * SECURITY NOTES (Handlebars Templates):
8
+ * - All templates use double-braces {{}} which HTML-escapes output
9
+ * - Triple-braces {{{raw}}} are NOT used, preventing XSS in HTML contexts
10
+ * - User input is sanitized via sanitizeTemplateInput() before template use
11
+ * - Template content is validated and Handlebars delimiters are stripped from user input
12
+ * - See: https://handlebarsjs.com/guide/#html-escaping
6
13
  */
7
14
  import type { ClaudeMdGeneratorOptions, ClaudeMdSection } from '../core/types.js';
8
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/generators/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AA+O1B;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAiC1E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC;IAC/E,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAeD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAiCT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C"}
1
+ {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/generators/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AA+O1B;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAiC1E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC;IAC/E,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAeD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAiCT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md.js","sources":["../../src/generators/claude-md.ts"],"sourcesContent":["/**\n * CLAUDE.md Generator\n *\n * Generates and manages CLAUDE.md configuration files for Claude Code\n * with knowledge graph integration.\n */\n\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { join, basename, resolve, normalize } from 'path';\nimport Handlebars from 'handlebars';\nimport type {\n ClaudeMdGeneratorOptions,\n ClaudeMdSection,\n ClaudeMdTemplate,\n} from '../core/types.js';\n\n/**\n * Validate that a template path is within the project directory\n * and is a markdown file\n */\nfunction validateTemplatePath(projectRoot: string, templatePath: string): string | null {\n // Resolve both paths to absolute\n const resolvedRoot = resolve(projectRoot);\n const resolvedTemplate = resolve(projectRoot, templatePath);\n const normalizedTemplate = normalize(resolvedTemplate);\n\n // Ensure template is within project directory\n if (!normalizedTemplate.startsWith(resolvedRoot + '/') && normalizedTemplate !== resolvedRoot) {\n return null; // Path traversal attempt\n }\n\n // Must be a markdown file\n if (!normalizedTemplate.endsWith('.md')) {\n return null;\n }\n\n return normalizedTemplate;\n}\n\n/**\n * Default CLAUDE.md template with knowledge graph integration\n */\nconst DEFAULT_TEMPLATE = `# Claude Code Configuration - {{projectName}}\n\n## Project Overview\n\n{{description}}\n\n## Knowledge Graph Integration\n\nThis project uses @weavelogic/knowledge-graph-agent for documentation and planning.\n\n### Quick Commands\n\n\\`\\`\\`bash\n# Initialize knowledge graph\nnpx kg init\n\n# Generate/update graph from docs\nnpx kg graph\n\n# Sync with claude-flow memory\nnpx kg sync\n\n# Initialize docs directory\nnpx kg docs init\n\n# Update CLAUDE.md\nnpx kg claude update\n\\`\\`\\`\n\n### Vault Location\n\nDocumentation is stored in: \\`{{docsPath}}\\`\n\n## File Organization\n\n{{#if customDirectories}}\n{{#each customDirectories}}\n- \\`{{this.path}}\\` - {{this.description}}\n{{/each}}\n{{else}}\n- \\`/src\\` - Source code files\n- \\`/docs\\` - Documentation and knowledge base\n- \\`/tests\\` - Test files\n- \\`/config\\` - Configuration files\n{{/if}}\n\n## Build Commands\n\n{{#each buildCommands}}\n- \\`{{this.command}}\\` - {{this.description}}\n{{/each}}\n\n## Code Style & Best Practices\n\n{{#each codeStyleRules}}\n- **{{this.name}}**: {{this.description}}\n{{/each}}\n\n{{#if includeClaudeFlow}}\n## Claude-Flow Integration\n\nThis project uses claude-flow for AI coordination:\n\n### MCP Configuration\n\n\\`\\`\\`bash\nclaude mcp add claude-flow npx claude-flow@alpha mcp start\n\\`\\`\\`\n\n### Memory Namespace\n\n- **Namespace**: \\`{{namespace}}\\`\n- **Sync on change**: {{syncOnChange}}\n\n### Available Tools\n\n- \\`mcp__claude-flow__memory_usage\\` - Store/retrieve knowledge\n- \\`mcp__claude-flow__swarm_init\\` - Initialize agent swarms\n- \\`mcp__claude-flow__task_orchestrate\\` - Coordinate tasks\n\n{{/if}}\n{{#if includeKnowledgeGraph}}\n## Knowledge Graph Commands\n\nThe knowledge graph provides semantic navigation of the codebase:\n\n### CLI Commands\n\n| Command | Description |\n|---------|-------------|\n| \\`kg init\\` | Initialize knowledge graph in project |\n| \\`kg graph\\` | Generate/update knowledge graph |\n| \\`kg docs init\\` | Initialize docs directory |\n| \\`kg docs generate\\` | Generate docs from codebase |\n| \\`kg claude update\\` | Update CLAUDE.md |\n| \\`kg sync\\` | Sync with claude-flow memory |\n| \\`kg stats\\` | Show graph statistics |\n| \\`kg search <query>\\` | Search the knowledge graph |\n\n### Graph Structure\n\n\\`\\`\\`\n{{docsPath}}/\n├── concepts/ # Abstract concepts\n├── components/ # Reusable components\n├── services/ # Backend services\n├── features/ # Product features\n├── integrations/ # External integrations\n├── standards/ # Coding standards\n├── guides/ # How-to guides\n└── references/ # API references\n\\`\\`\\`\n\n{{/if}}\n{{#if customSections}}\n{{#each customSections}}\n## {{this.title}}\n\n{{this.content}}\n\n{{/each}}\n{{/if}}\n## Important Instructions\n\n- NEVER create files unless absolutely necessary\n- ALWAYS prefer editing existing files\n- Use the knowledge graph for documentation\n- Follow the file organization above\n- Run tests before committing\n\n---\n*Generated by @weavelogic/knowledge-graph-agent*\n`;\n\n/**\n * Section templates for common configurations\n */\nconst SECTION_TEMPLATES: Record<string, ClaudeMdSection> = {\n sparc: {\n title: 'SPARC Methodology',\n order: 10,\n content: `This project follows the SPARC development methodology:\n\n1. **Specification** - Requirements analysis\n2. **Pseudocode** - Algorithm design\n3. **Architecture** - System design\n4. **Refinement** - TDD implementation\n5. **Completion** - Integration\n\n### SPARC Commands\n\n\\`\\`\\`bash\nnpx claude-flow sparc modes # List available modes\nnpx claude-flow sparc tdd \"<task>\" # Run TDD workflow\nnpx claude-flow sparc run <mode> # Execute specific mode\n\\`\\`\\``,\n },\n\n testing: {\n title: 'Testing Requirements',\n order: 20,\n content: `All code changes must include appropriate tests:\n\n- **Unit tests**: For individual functions and components\n- **Integration tests**: For API endpoints and services\n- **E2E tests**: For critical user flows\n\n### Running Tests\n\n\\`\\`\\`bash\nnpm run test # Run all tests\nnpm run test:watch # Watch mode\nnpm run test:cov # With coverage\n\\`\\`\\``,\n },\n\n security: {\n title: 'Security Guidelines',\n order: 30,\n content: `Security is a priority. Follow these guidelines:\n\n- Never hardcode secrets or API keys\n- Use environment variables for sensitive data\n- Validate all user inputs\n- Sanitize outputs to prevent XSS\n- Follow OWASP guidelines`,\n },\n\n agents: {\n title: 'Available Agents',\n order: 40,\n content: `Use Claude Code's Task tool to spawn specialized agents:\n\n### Core Agents\n\\`coder\\`, \\`reviewer\\`, \\`tester\\`, \\`planner\\`, \\`researcher\\`\n\n### SPARC Agents\n\\`sparc-coord\\`, \\`sparc-coder\\`, \\`specification\\`, \\`architecture\\`\n\n### Specialized Agents\n\\`backend-dev\\`, \\`system-architect\\`, \\`code-analyzer\\`, \\`api-docs\\`\n\n### Usage\n\n\\`\\`\\`javascript\nTask(\"Implement feature\", \"Description...\", \"coder\")\nTask(\"Review code\", \"Description...\", \"reviewer\")\n\\`\\`\\``,\n },\n};\n\n/**\n * Generate CLAUDE.md content\n */\nexport function generateClaudeMd(options: ClaudeMdGeneratorOptions): string {\n const {\n projectRoot,\n template,\n includeKnowledgeGraph = true,\n includeClaudeFlow = true,\n customSections = [],\n } = options;\n\n // Detect project info\n const projectInfo = detectProjectInfo(projectRoot);\n\n // Prepare context\n const context = {\n projectName: projectInfo.name,\n description: projectInfo.description || `${projectInfo.name} project`,\n docsPath: getDocsPath(projectRoot),\n includeKnowledgeGraph,\n includeClaudeFlow,\n namespace: 'knowledge-graph',\n syncOnChange: true,\n buildCommands: projectInfo.scripts,\n codeStyleRules: getDefaultCodeStyleRules(),\n customSections: [...customSections],\n customDirectories: null,\n };\n\n // Get template content (pass projectRoot for path validation)\n const templateContent = template ? getTemplateContent(template, projectRoot) : DEFAULT_TEMPLATE;\n\n // Compile and render\n const compiled = Handlebars.compile(templateContent);\n return compiled(context);\n}\n\n/**\n * Create or update CLAUDE.md file\n */\nexport async function updateClaudeMd(options: ClaudeMdGeneratorOptions): Promise<{\n created: boolean;\n updated: boolean;\n path: string;\n content: string;\n}> {\n const { projectRoot, outputPath } = options;\n const filePath = outputPath || join(projectRoot, 'CLAUDE.md');\n\n const exists = existsSync(filePath);\n const content = generateClaudeMd(options);\n\n writeFileSync(filePath, content, 'utf-8');\n\n return {\n created: !exists,\n updated: exists,\n path: filePath,\n content,\n };\n}\n\n/**\n * Add section to existing CLAUDE.md\n */\nexport function addSection(\n projectRoot: string,\n section: ClaudeMdSection\n): boolean {\n const filePath = join(projectRoot, 'CLAUDE.md');\n\n if (!existsSync(filePath)) {\n return false;\n }\n\n const content = readFileSync(filePath, 'utf-8');\n\n // Check if section already exists\n const sectionRegex = new RegExp(`^## ${section.title}`, 'm');\n if (sectionRegex.test(content)) {\n return false; // Section already exists\n }\n\n // Find the best position to insert (before Important Instructions or at end)\n const importantMatch = content.match(/^## Important Instructions/m);\n let newContent: string;\n\n const sectionContent = `\\n## ${section.title}\\n\\n${section.content}\\n`;\n\n if (importantMatch && importantMatch.index !== undefined) {\n newContent =\n content.slice(0, importantMatch.index) +\n sectionContent +\n '\\n' +\n content.slice(importantMatch.index);\n } else {\n newContent = content + sectionContent;\n }\n\n writeFileSync(filePath, newContent, 'utf-8');\n return true;\n}\n\n/**\n * Get predefined section template\n */\nexport function getSectionTemplate(name: string): ClaudeMdSection | null {\n return SECTION_TEMPLATES[name] || null;\n}\n\n/**\n * List available section templates\n */\nexport function listSectionTemplates(): string[] {\n return Object.keys(SECTION_TEMPLATES);\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\ninterface ProjectInfo {\n name: string;\n description?: string;\n scripts: Array<{ command: string; description: string }>;\n}\n\n/**\n * Sanitize string for safe template use\n * Prevents template injection and removes dangerous characters\n */\nfunction sanitizeForTemplate(str: string | undefined, maxLength = 200): string {\n if (!str || typeof str !== 'string') return '';\n return str\n .replace(/[<>&\"'`{}\\\\]/g, '') // Remove template-sensitive chars\n .replace(/\\{\\{/g, '') // Remove Handlebars delimiters\n .replace(/\\}\\}/g, '')\n .slice(0, maxLength)\n .trim();\n}\n\nfunction detectProjectInfo(projectRoot: string): ProjectInfo {\n const info: ProjectInfo = {\n name: sanitizeForTemplate(basename(projectRoot), 100) || 'project',\n scripts: [],\n };\n\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n let pkg;\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n } catch {\n return info; // Return default info on JSON parse error\n }\n\n // Sanitize project name\n const rawName = (pkg.name || basename(projectRoot)).replace(/^@[^/]+\\//, '');\n info.name = sanitizeForTemplate(rawName, 100) || 'project';\n\n // Sanitize description\n info.description = sanitizeForTemplate(pkg.description, 500);\n\n // Extract common scripts (sanitize script names)\n if (pkg.scripts && typeof pkg.scripts === 'object') {\n const commonScripts = ['build', 'test', 'dev', 'start', 'lint', 'typecheck'];\n for (const script of commonScripts) {\n if (pkg.scripts[script] && typeof pkg.scripts[script] === 'string') {\n info.scripts.push({\n command: `npm run ${script}`,\n description: sanitizeForTemplate(\n getScriptDescription(script, pkg.scripts[script]),\n 200\n ),\n });\n }\n }\n }\n }\n } catch {\n // Ignore errors - return default info\n }\n\n // Add default scripts if none found\n if (info.scripts.length === 0) {\n info.scripts = [\n { command: 'npm run build', description: 'Build the project' },\n { command: 'npm run test', description: 'Run tests' },\n { command: 'npm run dev', description: 'Development mode' },\n ];\n }\n\n return info;\n}\n\nfunction getScriptDescription(name: string, script: string): string {\n const descriptions: Record<string, string> = {\n build: 'Build the project',\n test: 'Run tests',\n dev: 'Start development server',\n start: 'Start production server',\n lint: 'Run linter',\n typecheck: 'Type checking',\n };\n\n return descriptions[name] || `Run ${name}`;\n}\n\nfunction getDocsPath(projectRoot: string): string {\n const possiblePaths = ['docs', 'documentation', 'doc'];\n\n for (const path of possiblePaths) {\n if (existsSync(join(projectRoot, path))) {\n return path;\n }\n }\n\n return 'docs';\n}\n\nfunction getDefaultCodeStyleRules(): Array<{ name: string; description: string }> {\n return [\n { name: 'Modular Design', description: 'Files under 500 lines' },\n { name: 'Environment Safety', description: 'Never hardcode secrets' },\n { name: 'Test-First', description: 'Write tests before implementation' },\n { name: 'Clean Architecture', description: 'Separate concerns' },\n { name: 'Documentation', description: 'Keep docs updated' },\n ];\n}\n\nfunction getTemplateContent(templateName: string, projectRoot?: string): string {\n // Check for built-in templates\n if (templateName === 'minimal') {\n return `# {{projectName}}\n\n{{description}}\n\n## Commands\n\n{{#each buildCommands}}\n- \\`{{this.command}}\\` - {{this.description}}\n{{/each}}\n\n---\n*Generated by @weavelogic/knowledge-graph-agent*\n`;\n }\n\n if (templateName === 'full') {\n // Add all sections\n let content = DEFAULT_TEMPLATE;\n for (const section of Object.values(SECTION_TEMPLATES)) {\n content = content.replace(\n /^## Important Instructions/m,\n `## ${section.title}\\n\\n${section.content}\\n\\n## Important Instructions`\n );\n }\n return content;\n }\n\n // Try to read as file path - only if within project directory\n if (projectRoot && (templateName.includes('/') || templateName.includes('.'))) {\n const validatedPath = validateTemplatePath(projectRoot, templateName);\n if (validatedPath && existsSync(validatedPath)) {\n return readFileSync(validatedPath, 'utf-8');\n }\n }\n\n return DEFAULT_TEMPLATE;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-md.js","sources":["../../src/generators/claude-md.ts"],"sourcesContent":["/**\n * CLAUDE.md Generator\n *\n * Generates and manages CLAUDE.md configuration files for Claude Code\n * with knowledge graph integration.\n *\n * SECURITY NOTES (Handlebars Templates):\n * - All templates use double-braces {{}} which HTML-escapes output\n * - Triple-braces {{{raw}}} are NOT used, preventing XSS in HTML contexts\n * - User input is sanitized via sanitizeTemplateInput() before template use\n * - Template content is validated and Handlebars delimiters are stripped from user input\n * - See: https://handlebarsjs.com/guide/#html-escaping\n */\n\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { join, basename, resolve, normalize } from 'path';\nimport Handlebars from 'handlebars';\nimport type {\n ClaudeMdGeneratorOptions,\n ClaudeMdSection,\n ClaudeMdTemplate,\n} from '../core/types.js';\n\n/**\n * Validate that a template path is within the project directory\n * and is a markdown file\n */\nfunction validateTemplatePath(projectRoot: string, templatePath: string): string | null {\n // Resolve both paths to absolute\n const resolvedRoot = resolve(projectRoot);\n const resolvedTemplate = resolve(projectRoot, templatePath);\n const normalizedTemplate = normalize(resolvedTemplate);\n\n // Ensure template is within project directory\n if (!normalizedTemplate.startsWith(resolvedRoot + '/') && normalizedTemplate !== resolvedRoot) {\n return null; // Path traversal attempt\n }\n\n // Must be a markdown file\n if (!normalizedTemplate.endsWith('.md')) {\n return null;\n }\n\n return normalizedTemplate;\n}\n\n/**\n * Default CLAUDE.md template with knowledge graph integration\n */\nconst DEFAULT_TEMPLATE = `# Claude Code Configuration - {{projectName}}\n\n## Project Overview\n\n{{description}}\n\n## Knowledge Graph Integration\n\nThis project uses @weavelogic/knowledge-graph-agent for documentation and planning.\n\n### Quick Commands\n\n\\`\\`\\`bash\n# Initialize knowledge graph\nnpx kg init\n\n# Generate/update graph from docs\nnpx kg graph\n\n# Sync with claude-flow memory\nnpx kg sync\n\n# Initialize docs directory\nnpx kg docs init\n\n# Update CLAUDE.md\nnpx kg claude update\n\\`\\`\\`\n\n### Vault Location\n\nDocumentation is stored in: \\`{{docsPath}}\\`\n\n## File Organization\n\n{{#if customDirectories}}\n{{#each customDirectories}}\n- \\`{{this.path}}\\` - {{this.description}}\n{{/each}}\n{{else}}\n- \\`/src\\` - Source code files\n- \\`/docs\\` - Documentation and knowledge base\n- \\`/tests\\` - Test files\n- \\`/config\\` - Configuration files\n{{/if}}\n\n## Build Commands\n\n{{#each buildCommands}}\n- \\`{{this.command}}\\` - {{this.description}}\n{{/each}}\n\n## Code Style & Best Practices\n\n{{#each codeStyleRules}}\n- **{{this.name}}**: {{this.description}}\n{{/each}}\n\n{{#if includeClaudeFlow}}\n## Claude-Flow Integration\n\nThis project uses claude-flow for AI coordination:\n\n### MCP Configuration\n\n\\`\\`\\`bash\nclaude mcp add claude-flow npx claude-flow@alpha mcp start\n\\`\\`\\`\n\n### Memory Namespace\n\n- **Namespace**: \\`{{namespace}}\\`\n- **Sync on change**: {{syncOnChange}}\n\n### Available Tools\n\n- \\`mcp__claude-flow__memory_usage\\` - Store/retrieve knowledge\n- \\`mcp__claude-flow__swarm_init\\` - Initialize agent swarms\n- \\`mcp__claude-flow__task_orchestrate\\` - Coordinate tasks\n\n{{/if}}\n{{#if includeKnowledgeGraph}}\n## Knowledge Graph Commands\n\nThe knowledge graph provides semantic navigation of the codebase:\n\n### CLI Commands\n\n| Command | Description |\n|---------|-------------|\n| \\`kg init\\` | Initialize knowledge graph in project |\n| \\`kg graph\\` | Generate/update knowledge graph |\n| \\`kg docs init\\` | Initialize docs directory |\n| \\`kg docs generate\\` | Generate docs from codebase |\n| \\`kg claude update\\` | Update CLAUDE.md |\n| \\`kg sync\\` | Sync with claude-flow memory |\n| \\`kg stats\\` | Show graph statistics |\n| \\`kg search <query>\\` | Search the knowledge graph |\n\n### Graph Structure\n\n\\`\\`\\`\n{{docsPath}}/\n├── concepts/ # Abstract concepts\n├── components/ # Reusable components\n├── services/ # Backend services\n├── features/ # Product features\n├── integrations/ # External integrations\n├── standards/ # Coding standards\n├── guides/ # How-to guides\n└── references/ # API references\n\\`\\`\\`\n\n{{/if}}\n{{#if customSections}}\n{{#each customSections}}\n## {{this.title}}\n\n{{this.content}}\n\n{{/each}}\n{{/if}}\n## Important Instructions\n\n- NEVER create files unless absolutely necessary\n- ALWAYS prefer editing existing files\n- Use the knowledge graph for documentation\n- Follow the file organization above\n- Run tests before committing\n\n---\n*Generated by @weavelogic/knowledge-graph-agent*\n`;\n\n/**\n * Section templates for common configurations\n */\nconst SECTION_TEMPLATES: Record<string, ClaudeMdSection> = {\n sparc: {\n title: 'SPARC Methodology',\n order: 10,\n content: `This project follows the SPARC development methodology:\n\n1. **Specification** - Requirements analysis\n2. **Pseudocode** - Algorithm design\n3. **Architecture** - System design\n4. **Refinement** - TDD implementation\n5. **Completion** - Integration\n\n### SPARC Commands\n\n\\`\\`\\`bash\nnpx claude-flow sparc modes # List available modes\nnpx claude-flow sparc tdd \"<task>\" # Run TDD workflow\nnpx claude-flow sparc run <mode> # Execute specific mode\n\\`\\`\\``,\n },\n\n testing: {\n title: 'Testing Requirements',\n order: 20,\n content: `All code changes must include appropriate tests:\n\n- **Unit tests**: For individual functions and components\n- **Integration tests**: For API endpoints and services\n- **E2E tests**: For critical user flows\n\n### Running Tests\n\n\\`\\`\\`bash\nnpm run test # Run all tests\nnpm run test:watch # Watch mode\nnpm run test:cov # With coverage\n\\`\\`\\``,\n },\n\n security: {\n title: 'Security Guidelines',\n order: 30,\n content: `Security is a priority. Follow these guidelines:\n\n- Never hardcode secrets or API keys\n- Use environment variables for sensitive data\n- Validate all user inputs\n- Sanitize outputs to prevent XSS\n- Follow OWASP guidelines`,\n },\n\n agents: {\n title: 'Available Agents',\n order: 40,\n content: `Use Claude Code's Task tool to spawn specialized agents:\n\n### Core Agents\n\\`coder\\`, \\`reviewer\\`, \\`tester\\`, \\`planner\\`, \\`researcher\\`\n\n### SPARC Agents\n\\`sparc-coord\\`, \\`sparc-coder\\`, \\`specification\\`, \\`architecture\\`\n\n### Specialized Agents\n\\`backend-dev\\`, \\`system-architect\\`, \\`code-analyzer\\`, \\`api-docs\\`\n\n### Usage\n\n\\`\\`\\`javascript\nTask(\"Implement feature\", \"Description...\", \"coder\")\nTask(\"Review code\", \"Description...\", \"reviewer\")\n\\`\\`\\``,\n },\n};\n\n/**\n * Generate CLAUDE.md content\n */\nexport function generateClaudeMd(options: ClaudeMdGeneratorOptions): string {\n const {\n projectRoot,\n template,\n includeKnowledgeGraph = true,\n includeClaudeFlow = true,\n customSections = [],\n } = options;\n\n // Detect project info\n const projectInfo = detectProjectInfo(projectRoot);\n\n // Prepare context\n const context = {\n projectName: projectInfo.name,\n description: projectInfo.description || `${projectInfo.name} project`,\n docsPath: getDocsPath(projectRoot),\n includeKnowledgeGraph,\n includeClaudeFlow,\n namespace: 'knowledge-graph',\n syncOnChange: true,\n buildCommands: projectInfo.scripts,\n codeStyleRules: getDefaultCodeStyleRules(),\n customSections: [...customSections],\n customDirectories: null,\n };\n\n // Get template content (pass projectRoot for path validation)\n const templateContent = template ? getTemplateContent(template, projectRoot) : DEFAULT_TEMPLATE;\n\n // Compile and render\n const compiled = Handlebars.compile(templateContent);\n return compiled(context);\n}\n\n/**\n * Create or update CLAUDE.md file\n */\nexport async function updateClaudeMd(options: ClaudeMdGeneratorOptions): Promise<{\n created: boolean;\n updated: boolean;\n path: string;\n content: string;\n}> {\n const { projectRoot, outputPath } = options;\n const filePath = outputPath || join(projectRoot, 'CLAUDE.md');\n\n const exists = existsSync(filePath);\n const content = generateClaudeMd(options);\n\n writeFileSync(filePath, content, 'utf-8');\n\n return {\n created: !exists,\n updated: exists,\n path: filePath,\n content,\n };\n}\n\n/**\n * Add section to existing CLAUDE.md\n */\nexport function addSection(\n projectRoot: string,\n section: ClaudeMdSection\n): boolean {\n const filePath = join(projectRoot, 'CLAUDE.md');\n\n if (!existsSync(filePath)) {\n return false;\n }\n\n const content = readFileSync(filePath, 'utf-8');\n\n // Check if section already exists\n const sectionRegex = new RegExp(`^## ${section.title}`, 'm');\n if (sectionRegex.test(content)) {\n return false; // Section already exists\n }\n\n // Find the best position to insert (before Important Instructions or at end)\n const importantMatch = content.match(/^## Important Instructions/m);\n let newContent: string;\n\n const sectionContent = `\\n## ${section.title}\\n\\n${section.content}\\n`;\n\n if (importantMatch && importantMatch.index !== undefined) {\n newContent =\n content.slice(0, importantMatch.index) +\n sectionContent +\n '\\n' +\n content.slice(importantMatch.index);\n } else {\n newContent = content + sectionContent;\n }\n\n writeFileSync(filePath, newContent, 'utf-8');\n return true;\n}\n\n/**\n * Get predefined section template\n */\nexport function getSectionTemplate(name: string): ClaudeMdSection | null {\n return SECTION_TEMPLATES[name] || null;\n}\n\n/**\n * List available section templates\n */\nexport function listSectionTemplates(): string[] {\n return Object.keys(SECTION_TEMPLATES);\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\ninterface ProjectInfo {\n name: string;\n description?: string;\n scripts: Array<{ command: string; description: string }>;\n}\n\n/**\n * Sanitize string for safe template use\n * Prevents template injection and removes dangerous characters\n */\nfunction sanitizeForTemplate(str: string | undefined, maxLength = 200): string {\n if (!str || typeof str !== 'string') return '';\n return str\n .replace(/[<>&\"'`{}\\\\]/g, '') // Remove template-sensitive chars\n .replace(/\\{\\{/g, '') // Remove Handlebars delimiters\n .replace(/\\}\\}/g, '')\n .slice(0, maxLength)\n .trim();\n}\n\nfunction detectProjectInfo(projectRoot: string): ProjectInfo {\n const info: ProjectInfo = {\n name: sanitizeForTemplate(basename(projectRoot), 100) || 'project',\n scripts: [],\n };\n\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n let pkg;\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n } catch {\n return info; // Return default info on JSON parse error\n }\n\n // Sanitize project name\n const rawName = (pkg.name || basename(projectRoot)).replace(/^@[^/]+\\//, '');\n info.name = sanitizeForTemplate(rawName, 100) || 'project';\n\n // Sanitize description\n info.description = sanitizeForTemplate(pkg.description, 500);\n\n // Extract common scripts (sanitize script names)\n if (pkg.scripts && typeof pkg.scripts === 'object') {\n const commonScripts = ['build', 'test', 'dev', 'start', 'lint', 'typecheck'];\n for (const script of commonScripts) {\n if (pkg.scripts[script] && typeof pkg.scripts[script] === 'string') {\n info.scripts.push({\n command: `npm run ${script}`,\n description: sanitizeForTemplate(\n getScriptDescription(script, pkg.scripts[script]),\n 200\n ),\n });\n }\n }\n }\n }\n } catch {\n // Ignore errors - return default info\n }\n\n // Add default scripts if none found\n if (info.scripts.length === 0) {\n info.scripts = [\n { command: 'npm run build', description: 'Build the project' },\n { command: 'npm run test', description: 'Run tests' },\n { command: 'npm run dev', description: 'Development mode' },\n ];\n }\n\n return info;\n}\n\nfunction getScriptDescription(name: string, script: string): string {\n const descriptions: Record<string, string> = {\n build: 'Build the project',\n test: 'Run tests',\n dev: 'Start development server',\n start: 'Start production server',\n lint: 'Run linter',\n typecheck: 'Type checking',\n };\n\n return descriptions[name] || `Run ${name}`;\n}\n\nfunction getDocsPath(projectRoot: string): string {\n const possiblePaths = ['docs', 'documentation', 'doc'];\n\n for (const path of possiblePaths) {\n if (existsSync(join(projectRoot, path))) {\n return path;\n }\n }\n\n return 'docs';\n}\n\nfunction getDefaultCodeStyleRules(): Array<{ name: string; description: string }> {\n return [\n { name: 'Modular Design', description: 'Files under 500 lines' },\n { name: 'Environment Safety', description: 'Never hardcode secrets' },\n { name: 'Test-First', description: 'Write tests before implementation' },\n { name: 'Clean Architecture', description: 'Separate concerns' },\n { name: 'Documentation', description: 'Keep docs updated' },\n ];\n}\n\nfunction getTemplateContent(templateName: string, projectRoot?: string): string {\n // Check for built-in templates\n if (templateName === 'minimal') {\n return `# {{projectName}}\n\n{{description}}\n\n## Commands\n\n{{#each buildCommands}}\n- \\`{{this.command}}\\` - {{this.description}}\n{{/each}}\n\n---\n*Generated by @weavelogic/knowledge-graph-agent*\n`;\n }\n\n if (templateName === 'full') {\n // Add all sections\n let content = DEFAULT_TEMPLATE;\n for (const section of Object.values(SECTION_TEMPLATES)) {\n content = content.replace(\n /^## Important Instructions/m,\n `## ${section.title}\\n\\n${section.content}\\n\\n## Important Instructions`\n );\n }\n return content;\n }\n\n // Try to read as file path - only if within project directory\n if (projectRoot && (templateName.includes('/') || templateName.includes('.'))) {\n const validatedPath = validateTemplatePath(projectRoot, templateName);\n if (validatedPath && existsSync(validatedPath)) {\n return readFileSync(validatedPath, 'utf-8');\n }\n }\n\n return DEFAULT_TEMPLATE;\n}\n"],"names":[],"mappings":"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"}