@weavelogic/knowledge-graph-agent 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/README.md +733 -152
  2. package/dist/_virtual/_commonjsHelpers.js +7 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/additionalItems.js +5 -0
  5. package/dist/_virtual/additionalItems.js.map +1 -0
  6. package/dist/_virtual/additionalProperties.js +5 -0
  7. package/dist/_virtual/additionalProperties.js.map +1 -0
  8. package/dist/_virtual/ajv.js +6 -0
  9. package/dist/_virtual/ajv.js.map +1 -0
  10. package/dist/_virtual/ajv2.js +5 -0
  11. package/dist/_virtual/ajv2.js.map +1 -0
  12. package/dist/_virtual/allOf.js +5 -0
  13. package/dist/_virtual/allOf.js.map +1 -0
  14. package/dist/_virtual/anyOf.js +5 -0
  15. package/dist/_virtual/anyOf.js.map +1 -0
  16. package/dist/_virtual/applicability.js +5 -0
  17. package/dist/_virtual/applicability.js.map +1 -0
  18. package/dist/_virtual/boolSchema.js +5 -0
  19. package/dist/_virtual/boolSchema.js.map +1 -0
  20. package/dist/_virtual/code.js +5 -0
  21. package/dist/_virtual/code.js.map +1 -0
  22. package/dist/_virtual/code2.js +5 -0
  23. package/dist/_virtual/code2.js.map +1 -0
  24. package/dist/_virtual/const.js +5 -0
  25. package/dist/_virtual/const.js.map +1 -0
  26. package/dist/_virtual/contains.js +5 -0
  27. package/dist/_virtual/contains.js.map +1 -0
  28. package/dist/_virtual/core.js +5 -0
  29. package/dist/_virtual/core.js.map +1 -0
  30. package/dist/_virtual/dataType.js +5 -0
  31. package/dist/_virtual/dataType.js.map +1 -0
  32. package/dist/_virtual/defaults.js +5 -0
  33. package/dist/_virtual/defaults.js.map +1 -0
  34. package/dist/_virtual/dependencies.js +5 -0
  35. package/dist/_virtual/dependencies.js.map +1 -0
  36. package/dist/_virtual/draft7.js +5 -0
  37. package/dist/_virtual/draft7.js.map +1 -0
  38. package/dist/_virtual/enum.js +5 -0
  39. package/dist/_virtual/enum.js.map +1 -0
  40. package/dist/_virtual/equal.js +5 -0
  41. package/dist/_virtual/equal.js.map +1 -0
  42. package/dist/_virtual/errors.js +5 -0
  43. package/dist/_virtual/errors.js.map +1 -0
  44. package/dist/_virtual/format.js +5 -0
  45. package/dist/_virtual/format.js.map +1 -0
  46. package/dist/_virtual/formats.js +5 -0
  47. package/dist/_virtual/formats.js.map +1 -0
  48. package/dist/_virtual/id.js +5 -0
  49. package/dist/_virtual/id.js.map +1 -0
  50. package/dist/_virtual/if.js +5 -0
  51. package/dist/_virtual/if.js.map +1 -0
  52. package/dist/_virtual/index.js +8 -0
  53. package/dist/_virtual/index.js.map +1 -0
  54. package/dist/_virtual/index10.js +5 -0
  55. package/dist/_virtual/index10.js.map +1 -0
  56. package/dist/_virtual/index11.js +5 -0
  57. package/dist/_virtual/index11.js.map +1 -0
  58. package/dist/_virtual/index12.js +5 -0
  59. package/dist/_virtual/index12.js.map +1 -0
  60. package/dist/_virtual/index2.js +5 -0
  61. package/dist/_virtual/index2.js.map +1 -0
  62. package/dist/_virtual/index3.js +5 -0
  63. package/dist/_virtual/index3.js.map +1 -0
  64. package/dist/_virtual/index4.js +5 -0
  65. package/dist/_virtual/index4.js.map +1 -0
  66. package/dist/_virtual/index5.js +5 -0
  67. package/dist/_virtual/index5.js.map +1 -0
  68. package/dist/_virtual/index6.js +5 -0
  69. package/dist/_virtual/index6.js.map +1 -0
  70. package/dist/_virtual/index7.js +5 -0
  71. package/dist/_virtual/index7.js.map +1 -0
  72. package/dist/_virtual/index8.js +5 -0
  73. package/dist/_virtual/index8.js.map +1 -0
  74. package/dist/_virtual/index9.js +5 -0
  75. package/dist/_virtual/index9.js.map +1 -0
  76. package/dist/_virtual/items.js +5 -0
  77. package/dist/_virtual/items.js.map +1 -0
  78. package/dist/_virtual/items2020.js +5 -0
  79. package/dist/_virtual/items2020.js.map +1 -0
  80. package/dist/_virtual/keyword.js +5 -0
  81. package/dist/_virtual/keyword.js.map +1 -0
  82. package/dist/_virtual/limit.js +5 -0
  83. package/dist/_virtual/limit.js.map +1 -0
  84. package/dist/_virtual/limitItems.js +5 -0
  85. package/dist/_virtual/limitItems.js.map +1 -0
  86. package/dist/_virtual/limitLength.js +5 -0
  87. package/dist/_virtual/limitLength.js.map +1 -0
  88. package/dist/_virtual/limitNumber.js +5 -0
  89. package/dist/_virtual/limitNumber.js.map +1 -0
  90. package/dist/_virtual/limitProperties.js +5 -0
  91. package/dist/_virtual/limitProperties.js.map +1 -0
  92. package/dist/_virtual/metadata.js +5 -0
  93. package/dist/_virtual/metadata.js.map +1 -0
  94. package/dist/_virtual/multipleOf.js +5 -0
  95. package/dist/_virtual/multipleOf.js.map +1 -0
  96. package/dist/_virtual/names.js +5 -0
  97. package/dist/_virtual/names.js.map +1 -0
  98. package/dist/_virtual/not.js +5 -0
  99. package/dist/_virtual/not.js.map +1 -0
  100. package/dist/_virtual/oneOf.js +5 -0
  101. package/dist/_virtual/oneOf.js.map +1 -0
  102. package/dist/_virtual/pattern.js +5 -0
  103. package/dist/_virtual/pattern.js.map +1 -0
  104. package/dist/_virtual/patternProperties.js +5 -0
  105. package/dist/_virtual/patternProperties.js.map +1 -0
  106. package/dist/_virtual/prefixItems.js +5 -0
  107. package/dist/_virtual/prefixItems.js.map +1 -0
  108. package/dist/_virtual/properties.js +5 -0
  109. package/dist/_virtual/properties.js.map +1 -0
  110. package/dist/_virtual/propertyNames.js +5 -0
  111. package/dist/_virtual/propertyNames.js.map +1 -0
  112. package/dist/_virtual/ref.js +5 -0
  113. package/dist/_virtual/ref.js.map +1 -0
  114. package/dist/_virtual/ref_error.js +5 -0
  115. package/dist/_virtual/ref_error.js.map +1 -0
  116. package/dist/_virtual/required.js +5 -0
  117. package/dist/_virtual/required.js.map +1 -0
  118. package/dist/_virtual/resolve.js +5 -0
  119. package/dist/_virtual/resolve.js.map +1 -0
  120. package/dist/_virtual/rules.js +5 -0
  121. package/dist/_virtual/rules.js.map +1 -0
  122. package/dist/_virtual/scope.js +5 -0
  123. package/dist/_virtual/scope.js.map +1 -0
  124. package/dist/_virtual/subschema.js +5 -0
  125. package/dist/_virtual/subschema.js.map +1 -0
  126. package/dist/_virtual/thenElse.js +5 -0
  127. package/dist/_virtual/thenElse.js.map +1 -0
  128. package/dist/_virtual/types.js +5 -0
  129. package/dist/_virtual/types.js.map +1 -0
  130. package/dist/_virtual/ucs2length.js +5 -0
  131. package/dist/_virtual/ucs2length.js.map +1 -0
  132. package/dist/_virtual/uniqueItems.js +5 -0
  133. package/dist/_virtual/uniqueItems.js.map +1 -0
  134. package/dist/_virtual/uri.js +5 -0
  135. package/dist/_virtual/uri.js.map +1 -0
  136. package/dist/_virtual/util.js +5 -0
  137. package/dist/_virtual/util.js.map +1 -0
  138. package/dist/_virtual/validation_error.js +5 -0
  139. package/dist/_virtual/validation_error.js.map +1 -0
  140. package/dist/agents/analyst-agent.d.ts +230 -0
  141. package/dist/agents/analyst-agent.d.ts.map +1 -0
  142. package/dist/agents/analyst-agent.js +793 -0
  143. package/dist/agents/analyst-agent.js.map +1 -0
  144. package/dist/agents/architect-agent.d.ts +248 -0
  145. package/dist/agents/architect-agent.d.ts.map +1 -0
  146. package/dist/agents/architect-agent.js +685 -0
  147. package/dist/agents/architect-agent.js.map +1 -0
  148. package/dist/agents/base-agent.d.ts +169 -0
  149. package/dist/agents/base-agent.d.ts.map +1 -0
  150. package/dist/agents/base-agent.js +441 -0
  151. package/dist/agents/base-agent.js.map +1 -0
  152. package/dist/agents/coder-agent.d.ts +191 -0
  153. package/dist/agents/coder-agent.d.ts.map +1 -0
  154. package/dist/agents/coder-agent.js +1008 -0
  155. package/dist/agents/coder-agent.js.map +1 -0
  156. package/dist/agents/index.d.ts +18 -0
  157. package/dist/agents/index.d.ts.map +1 -0
  158. package/dist/agents/index.js +40 -0
  159. package/dist/agents/index.js.map +1 -0
  160. package/dist/agents/registry.d.ts +213 -0
  161. package/dist/agents/registry.d.ts.map +1 -0
  162. package/dist/agents/registry.js +419 -0
  163. package/dist/agents/registry.js.map +1 -0
  164. package/dist/agents/researcher-agent.d.ts +226 -0
  165. package/dist/agents/researcher-agent.d.ts.map +1 -0
  166. package/dist/agents/researcher-agent.js +572 -0
  167. package/dist/agents/researcher-agent.js.map +1 -0
  168. package/dist/agents/rules-engine.d.ts +320 -0
  169. package/dist/agents/rules-engine.d.ts.map +1 -0
  170. package/dist/agents/rules-engine.js +552 -0
  171. package/dist/agents/rules-engine.js.map +1 -0
  172. package/dist/agents/tester-agent.d.ts +219 -0
  173. package/dist/agents/tester-agent.d.ts.map +1 -0
  174. package/dist/agents/tester-agent.js +683 -0
  175. package/dist/agents/tester-agent.js.map +1 -0
  176. package/dist/agents/types.d.ts +425 -0
  177. package/dist/agents/types.d.ts.map +1 -0
  178. package/dist/agents/types.js +57 -0
  179. package/dist/agents/types.js.map +1 -0
  180. package/dist/caching/index.d.ts +55 -0
  181. package/dist/caching/index.d.ts.map +1 -0
  182. package/dist/caching/index.js +206 -0
  183. package/dist/caching/index.js.map +1 -0
  184. package/dist/caching/lru-cache.d.ts +254 -0
  185. package/dist/caching/lru-cache.d.ts.map +1 -0
  186. package/dist/caching/types.d.ts +95 -0
  187. package/dist/caching/types.d.ts.map +1 -0
  188. package/dist/chunking/chunker.d.ts +94 -0
  189. package/dist/chunking/chunker.d.ts.map +1 -0
  190. package/dist/chunking/index.d.ts +125 -0
  191. package/dist/chunking/index.d.ts.map +1 -0
  192. package/dist/chunking/index.js +283 -0
  193. package/dist/chunking/index.js.map +1 -0
  194. package/dist/chunking/types.d.ts +92 -0
  195. package/dist/chunking/types.d.ts.map +1 -0
  196. package/dist/cli/commands/analyze.d.ts +12 -0
  197. package/dist/cli/commands/analyze.d.ts.map +1 -0
  198. package/dist/cli/commands/analyze.js +269 -0
  199. package/dist/cli/commands/analyze.js.map +1 -0
  200. package/dist/cli/commands/commit.d.ts +11 -0
  201. package/dist/cli/commands/commit.d.ts.map +1 -0
  202. package/dist/cli/commands/commit.js +379 -0
  203. package/dist/cli/commands/commit.js.map +1 -0
  204. package/dist/cli/commands/config.d.ts +8 -0
  205. package/dist/cli/commands/config.d.ts.map +1 -0
  206. package/dist/cli/commands/config.js +107 -0
  207. package/dist/cli/commands/config.js.map +1 -0
  208. package/dist/cli/commands/convert.d.ts +15 -0
  209. package/dist/cli/commands/convert.d.ts.map +1 -0
  210. package/dist/cli/commands/convert.js +203 -0
  211. package/dist/cli/commands/convert.js.map +1 -0
  212. package/dist/cli/commands/cultivate.d.ts +16 -0
  213. package/dist/cli/commands/cultivate.d.ts.map +1 -0
  214. package/dist/cli/commands/cultivate.js +254 -0
  215. package/dist/cli/commands/cultivate.js.map +1 -0
  216. package/dist/cli/commands/diagnostics.d.ts +8 -0
  217. package/dist/cli/commands/diagnostics.d.ts.map +1 -0
  218. package/dist/cli/commands/diagnostics.js +140 -0
  219. package/dist/cli/commands/diagnostics.js.map +1 -0
  220. package/dist/cli/commands/generate.d.ts +13 -0
  221. package/dist/cli/commands/generate.d.ts.map +1 -0
  222. package/dist/cli/commands/init-primitives.d.ts +19 -0
  223. package/dist/cli/commands/init-primitives.d.ts.map +1 -0
  224. package/dist/cli/commands/init-primitives.js +208 -0
  225. package/dist/cli/commands/init-primitives.js.map +1 -0
  226. package/dist/cli/commands/sop.d.ts +14 -0
  227. package/dist/cli/commands/sop.d.ts.map +1 -0
  228. package/dist/cli/commands/sop.js +598 -0
  229. package/dist/cli/commands/sop.js.map +1 -0
  230. package/dist/cli/index.d.ts.map +1 -1
  231. package/dist/cli/index.js +52 -1
  232. package/dist/cli/index.js.map +1 -1
  233. package/dist/config/index.d.ts +153 -0
  234. package/dist/config/index.d.ts.map +1 -0
  235. package/dist/config/index.js +141 -0
  236. package/dist/config/index.js.map +1 -0
  237. package/dist/config/manager.d.ts +136 -0
  238. package/dist/config/manager.d.ts.map +1 -0
  239. package/dist/config/types.d.ts +127 -0
  240. package/dist/config/types.d.ts.map +1 -0
  241. package/dist/core/cache.d.ts +185 -0
  242. package/dist/core/cache.d.ts.map +1 -0
  243. package/dist/core/cache.js +435 -0
  244. package/dist/core/cache.js.map +1 -0
  245. package/dist/cultivation/deep-analyzer.d.ts +129 -0
  246. package/dist/cultivation/deep-analyzer.d.ts.map +1 -0
  247. package/dist/cultivation/deep-analyzer.js +322 -0
  248. package/dist/cultivation/deep-analyzer.js.map +1 -0
  249. package/dist/cultivation/index.d.ts +13 -0
  250. package/dist/cultivation/index.d.ts.map +1 -0
  251. package/dist/cultivation/seed-generator.d.ts +92 -0
  252. package/dist/cultivation/seed-generator.d.ts.map +1 -0
  253. package/dist/cultivation/seed-generator.js +1033 -0
  254. package/dist/cultivation/seed-generator.js.map +1 -0
  255. package/dist/cultivation/types.d.ts +230 -0
  256. package/dist/cultivation/types.d.ts.map +1 -0
  257. package/dist/generators/claude-md.d.ts +7 -0
  258. package/dist/generators/claude-md.d.ts.map +1 -1
  259. package/dist/generators/claude-md.js.map +1 -1
  260. package/dist/generators/docs-analyzer.d.ts +75 -0
  261. package/dist/generators/docs-analyzer.d.ts.map +1 -0
  262. package/dist/generators/docs-analyzer.js +567 -0
  263. package/dist/generators/docs-analyzer.js.map +1 -0
  264. package/dist/generators/docs-convert.d.ts +91 -0
  265. package/dist/generators/docs-convert.d.ts.map +1 -0
  266. package/dist/generators/docs-convert.js +474 -0
  267. package/dist/generators/docs-convert.js.map +1 -0
  268. package/dist/generators/docs-init.d.ts +6 -0
  269. package/dist/generators/docs-init.d.ts.map +1 -1
  270. package/dist/generators/docs-init.js.map +1 -1
  271. package/dist/health/checks.d.ts +135 -0
  272. package/dist/health/checks.d.ts.map +1 -0
  273. package/dist/health/index.d.ts +119 -0
  274. package/dist/health/index.d.ts.map +1 -0
  275. package/dist/health/index.js +191 -0
  276. package/dist/health/index.js.map +1 -0
  277. package/dist/health/monitor.d.ts +146 -0
  278. package/dist/health/monitor.d.ts.map +1 -0
  279. package/dist/health/types.d.ts +135 -0
  280. package/dist/health/types.d.ts.map +1 -0
  281. package/dist/index.d.ts +34 -0
  282. package/dist/index.d.ts.map +1 -1
  283. package/dist/index.js +179 -1
  284. package/dist/index.js.map +1 -1
  285. package/dist/integrations/auto-commit.d.ts +175 -0
  286. package/dist/integrations/auto-commit.d.ts.map +1 -0
  287. package/dist/integrations/auto-commit.js +399 -0
  288. package/dist/integrations/auto-commit.js.map +1 -0
  289. package/dist/integrations/git.d.ts +299 -0
  290. package/dist/integrations/git.d.ts.map +1 -0
  291. package/dist/integrations/git.js +465 -0
  292. package/dist/integrations/git.js.map +1 -0
  293. package/dist/mcp-server/bin.d.ts +11 -0
  294. package/dist/mcp-server/bin.d.ts.map +1 -0
  295. package/dist/mcp-server/handlers/index.d.ts +57 -0
  296. package/dist/mcp-server/handlers/index.d.ts.map +1 -0
  297. package/dist/mcp-server/handlers/index.js +235 -0
  298. package/dist/mcp-server/handlers/index.js.map +1 -0
  299. package/dist/mcp-server/index.d.ts +28 -0
  300. package/dist/mcp-server/index.d.ts.map +1 -0
  301. package/dist/mcp-server/server.d.ts +133 -0
  302. package/dist/mcp-server/server.d.ts.map +1 -0
  303. package/dist/mcp-server/server.js +280 -0
  304. package/dist/mcp-server/server.js.map +1 -0
  305. package/dist/mcp-server/tools/agents/index.d.ts +10 -0
  306. package/dist/mcp-server/tools/agents/index.d.ts.map +1 -0
  307. package/dist/mcp-server/tools/agents/list.d.ts +19 -0
  308. package/dist/mcp-server/tools/agents/list.d.ts.map +1 -0
  309. package/dist/mcp-server/tools/agents/spawn.d.ts +19 -0
  310. package/dist/mcp-server/tools/agents/spawn.d.ts.map +1 -0
  311. package/dist/mcp-server/tools/graph/generate.d.ts +21 -0
  312. package/dist/mcp-server/tools/graph/generate.d.ts.map +1 -0
  313. package/dist/mcp-server/tools/graph/index.d.ts +11 -0
  314. package/dist/mcp-server/tools/graph/index.d.ts.map +1 -0
  315. package/dist/mcp-server/tools/graph/query.d.ts +22 -0
  316. package/dist/mcp-server/tools/graph/query.d.ts.map +1 -0
  317. package/dist/mcp-server/tools/graph/stats.d.ts +22 -0
  318. package/dist/mcp-server/tools/graph/stats.d.ts.map +1 -0
  319. package/dist/mcp-server/tools/health.d.ts +21 -0
  320. package/dist/mcp-server/tools/health.d.ts.map +1 -0
  321. package/dist/mcp-server/tools/index.d.ts +13 -0
  322. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  323. package/dist/mcp-server/tools/registry.d.ts +90 -0
  324. package/dist/mcp-server/tools/registry.d.ts.map +1 -0
  325. package/dist/mcp-server/tools/registry.js +663 -0
  326. package/dist/mcp-server/tools/registry.js.map +1 -0
  327. package/dist/mcp-server/tools/search/index.d.ts +10 -0
  328. package/dist/mcp-server/tools/search/index.d.ts.map +1 -0
  329. package/dist/mcp-server/tools/search/nodes.d.ts +22 -0
  330. package/dist/mcp-server/tools/search/nodes.d.ts.map +1 -0
  331. package/dist/mcp-server/tools/search/tags.d.ts +22 -0
  332. package/dist/mcp-server/tools/search/tags.d.ts.map +1 -0
  333. package/dist/mcp-server/types/index.d.ts +286 -0
  334. package/dist/mcp-server/types/index.d.ts.map +1 -0
  335. package/dist/memory/index.d.ts +10 -0
  336. package/dist/memory/index.d.ts.map +1 -0
  337. package/dist/memory/vault-sync.d.ts +212 -0
  338. package/dist/memory/vault-sync.d.ts.map +1 -0
  339. package/dist/memory/vault-sync.js +463 -0
  340. package/dist/memory/vault-sync.js.map +1 -0
  341. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +296 -0
  342. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  343. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +71 -0
  344. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  345. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +26 -0
  346. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  347. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +407 -0
  348. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  349. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1332 -0
  350. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  351. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +71 -0
  352. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  353. package/dist/node_modules/ajv/dist/ajv.js +84 -0
  354. package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
  355. package/dist/node_modules/ajv/dist/compile/codegen/code.js +160 -0
  356. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  357. package/dist/node_modules/ajv/dist/compile/codegen/index.js +728 -0
  358. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  359. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +152 -0
  360. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  361. package/dist/node_modules/ajv/dist/compile/errors.js +131 -0
  362. package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
  363. package/dist/node_modules/ajv/dist/compile/index.js +234 -0
  364. package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
  365. package/dist/node_modules/ajv/dist/compile/names.js +44 -0
  366. package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
  367. package/dist/node_modules/ajv/dist/compile/ref_error.js +22 -0
  368. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  369. package/dist/node_modules/ajv/dist/compile/resolve.js +163 -0
  370. package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  371. package/dist/node_modules/ajv/dist/compile/rules.js +35 -0
  372. package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
  373. package/dist/node_modules/ajv/dist/compile/util.js +173 -0
  374. package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
  375. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
  376. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  377. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +58 -0
  378. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  379. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +193 -0
  380. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  381. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +43 -0
  382. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  383. package/dist/node_modules/ajv/dist/compile/validate/index.js +522 -0
  384. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  385. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +126 -0
  386. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  387. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +89 -0
  388. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  389. package/dist/node_modules/ajv/dist/core.js +628 -0
  390. package/dist/node_modules/ajv/dist/core.js.map +1 -0
  391. package/dist/node_modules/ajv/dist/refs/data.json.js +24 -0
  392. package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
  393. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +25 -0
  394. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
  395. package/dist/node_modules/ajv/dist/runtime/equal.js +16 -0
  396. package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  397. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +30 -0
  398. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  399. package/dist/node_modules/ajv/dist/runtime/uri.js +16 -0
  400. package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  401. package/dist/node_modules/ajv/dist/runtime/validation_error.js +20 -0
  402. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  403. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  404. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  405. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +114 -0
  406. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  407. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +32 -0
  408. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  409. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +22 -0
  410. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  411. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +100 -0
  412. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  413. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +103 -0
  414. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  415. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +75 -0
  416. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  417. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +68 -0
  418. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  419. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +64 -0
  420. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  421. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +43 -0
  422. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  423. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
  424. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  425. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
  426. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  427. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +81 -0
  428. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  429. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
  430. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  431. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +66 -0
  432. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  433. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +49 -0
  434. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  435. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +23 -0
  436. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  437. package/dist/node_modules/ajv/dist/vocabularies/code.js +140 -0
  438. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  439. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
  440. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  441. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
  442. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  443. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +132 -0
  444. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  445. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +114 -0
  446. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  447. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
  448. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  449. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
  450. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  451. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +95 -0
  452. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  453. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +16 -0
  454. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  455. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
  456. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  457. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +36 -0
  458. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  459. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +56 -0
  460. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  461. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +52 -0
  462. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  463. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +34 -0
  464. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  465. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +39 -0
  466. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  467. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +37 -0
  468. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  469. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +34 -0
  470. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  471. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +33 -0
  472. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  473. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +34 -0
  474. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  475. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +89 -0
  476. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  477. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
  478. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  479. package/dist/node_modules/ajv-formats/dist/formats.js +209 -0
  480. package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
  481. package/dist/node_modules/ajv-formats/dist/index.js +51 -0
  482. package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
  483. package/dist/node_modules/ajv-formats/dist/limit.js +80 -0
  484. package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
  485. package/dist/node_modules/fast-deep-equal/index.js +39 -0
  486. package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
  487. package/dist/node_modules/fast-uri/index.js +261 -0
  488. package/dist/node_modules/fast-uri/index.js.map +1 -0
  489. package/dist/node_modules/fast-uri/lib/schemes.js +215 -0
  490. package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
  491. package/dist/node_modules/fast-uri/lib/utils.js +261 -0
  492. package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
  493. package/dist/node_modules/json-schema-traverse/index.js +92 -0
  494. package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
  495. package/dist/node_modules/zod/v4/classic/errors.js +37 -0
  496. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  497. package/dist/node_modules/zod/v4/classic/iso.js +43 -0
  498. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  499. package/dist/node_modules/zod/v4/classic/parse.js +13 -0
  500. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  501. package/dist/node_modules/zod/v4/classic/schemas.js +688 -0
  502. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  503. package/dist/node_modules/zod/v4/core/api.js +492 -0
  504. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  505. package/dist/node_modules/zod/v4/core/checks.js +405 -0
  506. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  507. package/dist/node_modules/zod/v4/core/core.js +58 -0
  508. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  509. package/dist/node_modules/zod/v4/core/doc.js +38 -0
  510. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  511. package/dist/node_modules/zod/v4/core/errors.js +82 -0
  512. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  513. package/dist/node_modules/zod/v4/core/parse.js +60 -0
  514. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  515. package/dist/node_modules/zod/v4/core/regexes.js +87 -0
  516. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  517. package/dist/node_modules/zod/v4/core/registries.js +52 -0
  518. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  519. package/dist/node_modules/zod/v4/core/schemas.js +1283 -0
  520. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  521. package/dist/node_modules/zod/v4/core/util.js +341 -0
  522. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  523. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  524. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  525. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
  526. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  527. package/dist/reasoning/index.d.ts +74 -0
  528. package/dist/reasoning/index.d.ts.map +1 -0
  529. package/dist/reasoning/index.js +124 -0
  530. package/dist/reasoning/index.js.map +1 -0
  531. package/dist/reasoning/tracker.d.ts +210 -0
  532. package/dist/reasoning/tracker.d.ts.map +1 -0
  533. package/dist/reasoning/types.d.ts +146 -0
  534. package/dist/reasoning/types.d.ts.map +1 -0
  535. package/dist/recovery/backup.d.ts +110 -0
  536. package/dist/recovery/backup.d.ts.map +1 -0
  537. package/dist/recovery/index.d.ts +70 -0
  538. package/dist/recovery/index.d.ts.map +1 -0
  539. package/dist/recovery/index.js +186 -0
  540. package/dist/recovery/index.js.map +1 -0
  541. package/dist/recovery/integrity.d.ts +74 -0
  542. package/dist/recovery/integrity.d.ts.map +1 -0
  543. package/dist/recovery/types.d.ts +94 -0
  544. package/dist/recovery/types.d.ts.map +1 -0
  545. package/dist/services/index.d.ts +130 -0
  546. package/dist/services/index.d.ts.map +1 -0
  547. package/dist/services/index.js +134 -0
  548. package/dist/services/index.js.map +1 -0
  549. package/dist/services/manager.d.ts +140 -0
  550. package/dist/services/manager.d.ts.map +1 -0
  551. package/dist/services/types.d.ts +106 -0
  552. package/dist/services/types.d.ts.map +1 -0
  553. package/dist/services/watchers.d.ts +95 -0
  554. package/dist/services/watchers.d.ts.map +1 -0
  555. package/dist/sops/compliance-checker.d.ts +83 -0
  556. package/dist/sops/compliance-checker.d.ts.map +1 -0
  557. package/dist/sops/compliance-checker.js +399 -0
  558. package/dist/sops/compliance-checker.js.map +1 -0
  559. package/dist/sops/gap-analyzer.d.ts +124 -0
  560. package/dist/sops/gap-analyzer.d.ts.map +1 -0
  561. package/dist/sops/gap-analyzer.js +313 -0
  562. package/dist/sops/gap-analyzer.js.map +1 -0
  563. package/dist/sops/index.d.ts +14 -0
  564. package/dist/sops/index.d.ts.map +1 -0
  565. package/dist/sops/overlay-manager.d.ts +115 -0
  566. package/dist/sops/overlay-manager.d.ts.map +1 -0
  567. package/dist/sops/overlay-manager.js +394 -0
  568. package/dist/sops/overlay-manager.js.map +1 -0
  569. package/dist/sops/registry.d.ts +73 -0
  570. package/dist/sops/registry.d.ts.map +1 -0
  571. package/dist/sops/registry.js +919 -0
  572. package/dist/sops/registry.js.map +1 -0
  573. package/dist/sops/types.d.ts +377 -0
  574. package/dist/sops/types.d.ts.map +1 -0
  575. package/dist/sops/types.js +46 -0
  576. package/dist/sops/types.js.map +1 -0
  577. package/dist/utils/error-recovery.d.ts +230 -0
  578. package/dist/utils/error-recovery.d.ts.map +1 -0
  579. package/dist/utils/error-recovery.js +228 -0
  580. package/dist/utils/error-recovery.js.map +1 -0
  581. package/dist/utils/error-taxonomy.d.ts +149 -0
  582. package/dist/utils/error-taxonomy.d.ts.map +1 -0
  583. package/dist/utils/error-taxonomy.js +260 -0
  584. package/dist/utils/error-taxonomy.js.map +1 -0
  585. package/dist/utils/index.d.ts +11 -0
  586. package/dist/utils/index.d.ts.map +1 -0
  587. package/dist/utils/logger.d.ts +139 -0
  588. package/dist/utils/logger.d.ts.map +1 -0
  589. package/dist/utils/logger.js +311 -0
  590. package/dist/utils/logger.js.map +1 -0
  591. package/dist/workflows/index.d.ts +11 -0
  592. package/dist/workflows/index.d.ts.map +1 -0
  593. package/dist/workflows/registry.d.ts +118 -0
  594. package/dist/workflows/registry.d.ts.map +1 -0
  595. package/dist/workflows/registry.js +575 -0
  596. package/dist/workflows/registry.js.map +1 -0
  597. package/dist/workflows/types.d.ts +322 -0
  598. package/dist/workflows/types.d.ts.map +1 -0
  599. package/dist/workflows/types.js +16 -0
  600. package/dist/workflows/types.js.map +1 -0
  601. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Docs Converter
3
+ *
4
+ * Converts existing documentation to weave-nn structure with proper
5
+ * frontmatter and directory organization.
6
+ */
7
+ import type { NodeType, NodeStatus } from '../core/types.js';
8
+ /**
9
+ * Conversion options
10
+ */
11
+ export interface ConvertOptions {
12
+ /** Source directory with existing docs */
13
+ sourceDir: string;
14
+ /** Target directory (default: docs-nn) */
15
+ targetDir?: string;
16
+ /** Project root for path resolution */
17
+ projectRoot: string;
18
+ /** Preserve original files (copy instead of move) */
19
+ preserveOriginal?: boolean;
20
+ /** Overwrite existing files in target */
21
+ force?: boolean;
22
+ /** Auto-categorize based on content analysis */
23
+ autoCategory?: boolean;
24
+ /** Dry run - show what would be done */
25
+ dryRun?: boolean;
26
+ }
27
+ /**
28
+ * Frontmatter options
29
+ */
30
+ export interface FrontmatterOptions {
31
+ /** Target file or directory */
32
+ target: string;
33
+ /** Project root */
34
+ projectRoot: string;
35
+ /** Override type detection */
36
+ type?: NodeType;
37
+ /** Override status */
38
+ status?: NodeStatus;
39
+ /** Additional tags to add */
40
+ tags?: string[];
41
+ /** Force overwrite existing frontmatter */
42
+ force?: boolean;
43
+ /** Dry run */
44
+ dryRun?: boolean;
45
+ }
46
+ /**
47
+ * Conversion result
48
+ */
49
+ export interface ConvertResult {
50
+ success: boolean;
51
+ filesProcessed: number;
52
+ filesConverted: number;
53
+ filesSkipped: number;
54
+ errors: string[];
55
+ converted: Array<{
56
+ source: string;
57
+ target: string;
58
+ type: NodeType;
59
+ }>;
60
+ }
61
+ /**
62
+ * Frontmatter result
63
+ */
64
+ export interface FrontmatterResult {
65
+ success: boolean;
66
+ filesProcessed: number;
67
+ filesUpdated: number;
68
+ filesSkipped: number;
69
+ errors: string[];
70
+ }
71
+ /**
72
+ * Convert existing docs to weave-nn structure
73
+ */
74
+ export declare function convertDocs(options: ConvertOptions): Promise<ConvertResult>;
75
+ /**
76
+ * Add or update frontmatter in existing files
77
+ */
78
+ export declare function addFrontmatter(options: FrontmatterOptions): Promise<FrontmatterResult>;
79
+ /**
80
+ * Validate frontmatter in files
81
+ */
82
+ export declare function validateFrontmatter(target: string, projectRoot: string): Promise<{
83
+ valid: number;
84
+ invalid: number;
85
+ missing: number;
86
+ issues: Array<{
87
+ file: string;
88
+ issues: string[];
89
+ }>;
90
+ }>;
91
+ //# sourceMappingURL=docs-convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-convert.d.ts","sourceRoot":"","sources":["../../src/generators/docs-convert.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,sBAAsB;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,QAAQ,CAAC;KAChB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6FjF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiF5F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC,CA6DD"}
@@ -0,0 +1,474 @@
1
+ import { existsSync, readFileSync, mkdirSync, writeFileSync } from "fs";
2
+ import { join, basename, dirname, relative } from "path";
3
+ import fg from "fast-glob";
4
+ import matter from "gray-matter";
5
+ const CATEGORY_DIRS = {
6
+ concept: "concepts",
7
+ technical: "components",
8
+ feature: "features",
9
+ primitive: "integrations",
10
+ service: "services",
11
+ guide: "guides",
12
+ standard: "standards",
13
+ integration: "integrations"
14
+ };
15
+ const CATEGORY_KEYWORDS = {
16
+ concept: [
17
+ "overview",
18
+ "introduction",
19
+ "theory",
20
+ "principle",
21
+ "concept",
22
+ "philosophy",
23
+ "approach",
24
+ "methodology",
25
+ "paradigm",
26
+ "model"
27
+ ],
28
+ technical: [
29
+ "component",
30
+ "implementation",
31
+ "class",
32
+ "function",
33
+ "module",
34
+ "algorithm",
35
+ "data structure",
36
+ "interface",
37
+ "abstract",
38
+ "utility"
39
+ ],
40
+ feature: [
41
+ "feature",
42
+ "capability",
43
+ "functionality",
44
+ "use case",
45
+ "user story",
46
+ "requirement",
47
+ "specification",
48
+ "product",
49
+ "roadmap"
50
+ ],
51
+ primitive: [
52
+ "library",
53
+ "framework",
54
+ "dependency",
55
+ "package",
56
+ "tool",
57
+ "sdk",
58
+ "runtime",
59
+ "platform",
60
+ "language"
61
+ ],
62
+ service: [
63
+ "api",
64
+ "endpoint",
65
+ "service",
66
+ "server",
67
+ "backend",
68
+ "microservice",
69
+ "rest",
70
+ "graphql",
71
+ "webhook",
72
+ "worker",
73
+ "queue"
74
+ ],
75
+ guide: [
76
+ "how to",
77
+ "tutorial",
78
+ "guide",
79
+ "walkthrough",
80
+ "step by step",
81
+ "getting started",
82
+ "setup",
83
+ "installation",
84
+ "configuration"
85
+ ],
86
+ standard: [
87
+ "standard",
88
+ "convention",
89
+ "best practice",
90
+ "rule",
91
+ "policy",
92
+ "guideline",
93
+ "coding style",
94
+ "lint",
95
+ "format"
96
+ ],
97
+ integration: [
98
+ "integration",
99
+ "connect",
100
+ "plugin",
101
+ "adapter",
102
+ "bridge",
103
+ "sync",
104
+ "import",
105
+ "export",
106
+ "webhook"
107
+ ]
108
+ };
109
+ const PATH_PATTERNS = [
110
+ { pattern: /\/(api|endpoints?|routes?)\//i, type: "service" },
111
+ { pattern: /\/(guide|tutorial|howto|getting-started)\//i, type: "guide" },
112
+ { pattern: /\/(component|ui|widget)\//i, type: "technical" },
113
+ { pattern: /\/(feature|capability)\//i, type: "feature" },
114
+ { pattern: /\/(standard|convention|style)\//i, type: "standard" },
115
+ { pattern: /\/(integration|plugin|adapter)\//i, type: "integration" },
116
+ { pattern: /\/(service|worker|job)\//i, type: "service" },
117
+ { pattern: /\/(concept|architecture|design)\//i, type: "concept" }
118
+ ];
119
+ async function convertDocs(options) {
120
+ const {
121
+ sourceDir,
122
+ targetDir = "docs-nn",
123
+ projectRoot,
124
+ preserveOriginal = true,
125
+ force = false,
126
+ autoCategory = true,
127
+ dryRun = false
128
+ } = options;
129
+ const result = {
130
+ success: true,
131
+ filesProcessed: 0,
132
+ filesConverted: 0,
133
+ filesSkipped: 0,
134
+ errors: [],
135
+ converted: []
136
+ };
137
+ const sourcePath = join(projectRoot, sourceDir);
138
+ const targetPath = join(projectRoot, targetDir);
139
+ if (!existsSync(sourcePath)) {
140
+ result.success = false;
141
+ result.errors.push(`Source directory not found: ${sourcePath}`);
142
+ return result;
143
+ }
144
+ if (!dryRun) {
145
+ createTargetStructure(targetPath);
146
+ }
147
+ const files = await fg("**/*.md", {
148
+ cwd: sourcePath,
149
+ ignore: ["node_modules/**", ".git/**", "_templates/**"]
150
+ });
151
+ for (const file of files) {
152
+ result.filesProcessed++;
153
+ const sourceFile = join(sourcePath, file);
154
+ try {
155
+ const content = readFileSync(sourceFile, "utf-8");
156
+ const { data: existingFrontmatter, content: body } = matter(content);
157
+ const nodeType = autoCategory ? detectNodeType(file, body, existingFrontmatter) : existingFrontmatter.type || "concept";
158
+ const targetSubdir = CATEGORY_DIRS[nodeType];
159
+ const targetFile = join(targetPath, targetSubdir, basename(file));
160
+ if (existsSync(targetFile) && !force) {
161
+ result.filesSkipped++;
162
+ continue;
163
+ }
164
+ const frontmatter = generateFrontmatter(file, body, nodeType, existingFrontmatter);
165
+ const newContent = buildMarkdownWithFrontmatter(frontmatter, body);
166
+ if (!dryRun) {
167
+ mkdirSync(dirname(targetFile), { recursive: true });
168
+ writeFileSync(targetFile, newContent, "utf-8");
169
+ }
170
+ result.filesConverted++;
171
+ result.converted.push({
172
+ source: file,
173
+ target: relative(projectRoot, targetFile),
174
+ type: nodeType
175
+ });
176
+ } catch (error) {
177
+ result.errors.push(`Failed to convert ${file}: ${error}`);
178
+ }
179
+ }
180
+ result.success = result.errors.length === 0;
181
+ return result;
182
+ }
183
+ async function addFrontmatter(options) {
184
+ const {
185
+ target,
186
+ projectRoot,
187
+ type,
188
+ status = "active",
189
+ tags = [],
190
+ force = false,
191
+ dryRun = false
192
+ } = options;
193
+ const result = {
194
+ success: true,
195
+ filesProcessed: 0,
196
+ filesUpdated: 0,
197
+ filesSkipped: 0,
198
+ errors: []
199
+ };
200
+ const targetPath = join(projectRoot, target);
201
+ let files;
202
+ if (existsSync(targetPath) && !targetPath.endsWith(".md")) {
203
+ files = await fg("**/*.md", {
204
+ cwd: targetPath,
205
+ ignore: ["node_modules/**", ".git/**", "_templates/**"],
206
+ absolute: true
207
+ });
208
+ } else if (existsSync(targetPath)) {
209
+ files = [targetPath];
210
+ } else {
211
+ result.success = false;
212
+ result.errors.push(`Target not found: ${targetPath}`);
213
+ return result;
214
+ }
215
+ for (const file of files) {
216
+ result.filesProcessed++;
217
+ try {
218
+ const content = readFileSync(file, "utf-8");
219
+ const { data: existingFrontmatter, content: body } = matter(content);
220
+ if (Object.keys(existingFrontmatter).length > 0 && !force) {
221
+ result.filesSkipped++;
222
+ continue;
223
+ }
224
+ const relPath = relative(projectRoot, file);
225
+ const nodeType = type || detectNodeType(relPath, body, existingFrontmatter);
226
+ const frontmatter = generateFrontmatter(
227
+ relPath,
228
+ body,
229
+ nodeType,
230
+ force ? {} : existingFrontmatter,
231
+ status,
232
+ tags
233
+ );
234
+ const newContent = buildMarkdownWithFrontmatter(frontmatter, body);
235
+ if (!dryRun) {
236
+ writeFileSync(file, newContent, "utf-8");
237
+ }
238
+ result.filesUpdated++;
239
+ } catch (error) {
240
+ result.errors.push(`Failed to update ${file}: ${error}`);
241
+ }
242
+ }
243
+ result.success = result.errors.length === 0;
244
+ return result;
245
+ }
246
+ async function validateFrontmatter(target, projectRoot) {
247
+ const result = {
248
+ valid: 0,
249
+ invalid: 0,
250
+ missing: 0,
251
+ issues: []
252
+ };
253
+ const targetPath = join(projectRoot, target);
254
+ const files = await fg("**/*.md", {
255
+ cwd: targetPath,
256
+ ignore: ["node_modules/**", ".git/**", "_templates/**"],
257
+ absolute: true
258
+ });
259
+ const validTypes = [
260
+ "concept",
261
+ "technical",
262
+ "feature",
263
+ "primitive",
264
+ "service",
265
+ "guide",
266
+ "standard",
267
+ "integration"
268
+ ];
269
+ const validStatuses = ["draft", "active", "deprecated", "archived"];
270
+ for (const file of files) {
271
+ const content = readFileSync(file, "utf-8");
272
+ const { data: frontmatter } = matter(content);
273
+ const fileIssues = [];
274
+ if (Object.keys(frontmatter).length === 0) {
275
+ result.missing++;
276
+ fileIssues.push("Missing frontmatter");
277
+ } else {
278
+ if (!frontmatter.title) {
279
+ fileIssues.push("Missing title");
280
+ }
281
+ if (!frontmatter.type) {
282
+ fileIssues.push("Missing type");
283
+ } else if (!validTypes.includes(frontmatter.type)) {
284
+ fileIssues.push(`Invalid type: ${frontmatter.type}`);
285
+ }
286
+ if (frontmatter.status && !validStatuses.includes(frontmatter.status)) {
287
+ fileIssues.push(`Invalid status: ${frontmatter.status}`);
288
+ }
289
+ if (!frontmatter.created) {
290
+ fileIssues.push("Missing created date");
291
+ }
292
+ }
293
+ if (fileIssues.length > 0) {
294
+ result.invalid++;
295
+ result.issues.push({
296
+ file: relative(projectRoot, file),
297
+ issues: fileIssues
298
+ });
299
+ } else if (Object.keys(frontmatter).length > 0) {
300
+ result.valid++;
301
+ }
302
+ }
303
+ return result;
304
+ }
305
+ function createTargetStructure(targetPath) {
306
+ const dirs = [
307
+ "",
308
+ "concepts",
309
+ "concepts/architecture",
310
+ "concepts/patterns",
311
+ "components",
312
+ "components/ui",
313
+ "components/utilities",
314
+ "services",
315
+ "services/api",
316
+ "services/workers",
317
+ "features",
318
+ "features/core",
319
+ "features/advanced",
320
+ "integrations",
321
+ "integrations/databases",
322
+ "integrations/auth",
323
+ "standards",
324
+ "standards/coding",
325
+ "standards/documentation",
326
+ "guides",
327
+ "guides/getting-started",
328
+ "guides/tutorials",
329
+ "references",
330
+ "references/api",
331
+ "_templates",
332
+ "_attachments"
333
+ ];
334
+ for (const dir of dirs) {
335
+ const fullPath = join(targetPath, dir);
336
+ if (!existsSync(fullPath)) {
337
+ mkdirSync(fullPath, { recursive: true });
338
+ }
339
+ }
340
+ }
341
+ function detectNodeType(filePath, content, existingFrontmatter) {
342
+ const validTypes = [
343
+ "concept",
344
+ "technical",
345
+ "feature",
346
+ "primitive",
347
+ "service",
348
+ "guide",
349
+ "standard",
350
+ "integration"
351
+ ];
352
+ if (existingFrontmatter.type && validTypes.includes(existingFrontmatter.type)) {
353
+ return existingFrontmatter.type;
354
+ }
355
+ for (const { pattern, type } of PATH_PATTERNS) {
356
+ if (pattern.test(filePath)) {
357
+ return type;
358
+ }
359
+ }
360
+ const lowerContent = content.toLowerCase();
361
+ const scores = {
362
+ concept: 0,
363
+ technical: 0,
364
+ feature: 0,
365
+ primitive: 0,
366
+ service: 0,
367
+ guide: 0,
368
+ standard: 0,
369
+ integration: 0
370
+ };
371
+ for (const [nodeType, keywords] of Object.entries(CATEGORY_KEYWORDS)) {
372
+ for (const keyword of keywords) {
373
+ const regex = new RegExp(`\\b${keyword}\\b`, "gi");
374
+ const matches = lowerContent.match(regex);
375
+ if (matches) {
376
+ scores[nodeType] += matches.length;
377
+ }
378
+ }
379
+ }
380
+ let maxScore = 0;
381
+ let detectedType = "concept";
382
+ for (const [nodeType, score] of Object.entries(scores)) {
383
+ if (score > maxScore) {
384
+ maxScore = score;
385
+ detectedType = nodeType;
386
+ }
387
+ }
388
+ return detectedType;
389
+ }
390
+ function generateFrontmatter(filePath, content, nodeType, existing = {}, status = "active", additionalTags = []) {
391
+ const filename = basename(filePath, ".md");
392
+ const title = existing.title || formatTitle(filename);
393
+ const extractedTags = extractTags(content);
394
+ const allTags = [.../* @__PURE__ */ new Set([
395
+ ...existing.tags || [],
396
+ ...extractedTags,
397
+ ...additionalTags
398
+ ])];
399
+ const now = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
400
+ const created = existing.created || now;
401
+ return {
402
+ title,
403
+ type: nodeType,
404
+ status: existing.status || status,
405
+ tags: allTags.length > 0 ? allTags : void 0,
406
+ category: existing.category || void 0,
407
+ description: existing.description || extractDescription(content),
408
+ created,
409
+ updated: now,
410
+ aliases: existing.aliases || void 0,
411
+ related: existing.related || void 0
412
+ };
413
+ }
414
+ function formatTitle(filename) {
415
+ return filename.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()).trim();
416
+ }
417
+ function extractTags(content) {
418
+ const tags = [];
419
+ const tagMatches = content.match(/#[\w-]+/g);
420
+ if (tagMatches) {
421
+ tags.push(...tagMatches.map((t) => t.slice(1)));
422
+ }
423
+ return tags.slice(0, 10);
424
+ }
425
+ function extractDescription(content) {
426
+ const lines = content.split("\n");
427
+ let description = "";
428
+ for (const line of lines) {
429
+ const trimmed = line.trim();
430
+ if (trimmed && !trimmed.startsWith("#") && !trimmed.startsWith("```")) {
431
+ description = trimmed;
432
+ break;
433
+ }
434
+ }
435
+ if (description.length > 200) {
436
+ description = description.slice(0, 197) + "...";
437
+ }
438
+ return description || void 0;
439
+ }
440
+ function buildMarkdownWithFrontmatter(frontmatter, content) {
441
+ const cleanFrontmatter = {};
442
+ for (const [key, value] of Object.entries(frontmatter)) {
443
+ if (value !== void 0) {
444
+ cleanFrontmatter[key] = value;
445
+ }
446
+ }
447
+ const yamlLines = ["---"];
448
+ const orderedKeys = ["title", "type", "status", "tags", "category", "description", "created", "updated", "aliases", "related"];
449
+ for (const key of orderedKeys) {
450
+ if (cleanFrontmatter[key] !== void 0) {
451
+ yamlLines.push(formatYamlLine(key, cleanFrontmatter[key]));
452
+ }
453
+ }
454
+ yamlLines.push("---");
455
+ yamlLines.push("");
456
+ return yamlLines.join("\n") + content.trim() + "\n";
457
+ }
458
+ function formatYamlLine(key, value) {
459
+ if (Array.isArray(value)) {
460
+ if (value.length === 0) return "";
461
+ return `${key}:
462
+ ${value.map((v) => ` - ${v}`).join("\n")}`;
463
+ }
464
+ if (typeof value === "string" && (value.includes(":") || value.includes("#"))) {
465
+ return `${key}: "${value}"`;
466
+ }
467
+ return `${key}: ${value}`;
468
+ }
469
+ export {
470
+ addFrontmatter,
471
+ convertDocs,
472
+ validateFrontmatter
473
+ };
474
+ //# sourceMappingURL=docs-convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-convert.js","sources":["../../src/generators/docs-convert.ts"],"sourcesContent":["/**\n * Docs Converter\n *\n * Converts existing documentation to weave-nn structure with proper\n * frontmatter and directory organization.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync } from 'fs';\nimport { join, basename, dirname, relative, extname } from 'path';\nimport fg from 'fast-glob';\nimport matter from 'gray-matter';\nimport type { NodeType, NodeStatus, NodeFrontmatter } from '../core/types.js';\n\n/**\n * Conversion options\n */\nexport interface ConvertOptions {\n /** Source directory with existing docs */\n sourceDir: string;\n /** Target directory (default: docs-nn) */\n targetDir?: string;\n /** Project root for path resolution */\n projectRoot: string;\n /** Preserve original files (copy instead of move) */\n preserveOriginal?: boolean;\n /** Overwrite existing files in target */\n force?: boolean;\n /** Auto-categorize based on content analysis */\n autoCategory?: boolean;\n /** Dry run - show what would be done */\n dryRun?: boolean;\n}\n\n/**\n * Frontmatter options\n */\nexport interface FrontmatterOptions {\n /** Target file or directory */\n target: string;\n /** Project root */\n projectRoot: string;\n /** Override type detection */\n type?: NodeType;\n /** Override status */\n status?: NodeStatus;\n /** Additional tags to add */\n tags?: string[];\n /** Force overwrite existing frontmatter */\n force?: boolean;\n /** Dry run */\n dryRun?: boolean;\n}\n\n/**\n * Conversion result\n */\nexport interface ConvertResult {\n success: boolean;\n filesProcessed: number;\n filesConverted: number;\n filesSkipped: number;\n errors: string[];\n converted: Array<{\n source: string;\n target: string;\n type: NodeType;\n }>;\n}\n\n/**\n * Frontmatter result\n */\nexport interface FrontmatterResult {\n success: boolean;\n filesProcessed: number;\n filesUpdated: number;\n filesSkipped: number;\n errors: string[];\n}\n\n/**\n * Weave-NN directory structure mapping\n */\nconst CATEGORY_DIRS: Record<NodeType, string> = {\n concept: 'concepts',\n technical: 'components',\n feature: 'features',\n primitive: 'integrations',\n service: 'services',\n guide: 'guides',\n standard: 'standards',\n integration: 'integrations',\n};\n\n/**\n * Keywords for content-based categorization\n */\nconst CATEGORY_KEYWORDS: Record<NodeType, string[]> = {\n concept: [\n 'overview', 'introduction', 'theory', 'principle', 'concept',\n 'philosophy', 'approach', 'methodology', 'paradigm', 'model',\n ],\n technical: [\n 'component', 'implementation', 'class', 'function', 'module',\n 'algorithm', 'data structure', 'interface', 'abstract', 'utility',\n ],\n feature: [\n 'feature', 'capability', 'functionality', 'use case', 'user story',\n 'requirement', 'specification', 'product', 'roadmap',\n ],\n primitive: [\n 'library', 'framework', 'dependency', 'package', 'tool',\n 'sdk', 'runtime', 'platform', 'language',\n ],\n service: [\n 'api', 'endpoint', 'service', 'server', 'backend', 'microservice',\n 'rest', 'graphql', 'webhook', 'worker', 'queue',\n ],\n guide: [\n 'how to', 'tutorial', 'guide', 'walkthrough', 'step by step',\n 'getting started', 'setup', 'installation', 'configuration',\n ],\n standard: [\n 'standard', 'convention', 'best practice', 'rule', 'policy',\n 'guideline', 'coding style', 'lint', 'format',\n ],\n integration: [\n 'integration', 'connect', 'plugin', 'adapter', 'bridge',\n 'sync', 'import', 'export', 'webhook',\n ],\n};\n\n/**\n * Path-based categorization patterns\n */\nconst PATH_PATTERNS: Array<{ pattern: RegExp; type: NodeType }> = [\n { pattern: /\\/(api|endpoints?|routes?)\\//i, type: 'service' },\n { pattern: /\\/(guide|tutorial|howto|getting-started)\\//i, type: 'guide' },\n { pattern: /\\/(component|ui|widget)\\//i, type: 'technical' },\n { pattern: /\\/(feature|capability)\\//i, type: 'feature' },\n { pattern: /\\/(standard|convention|style)\\//i, type: 'standard' },\n { pattern: /\\/(integration|plugin|adapter)\\//i, type: 'integration' },\n { pattern: /\\/(service|worker|job)\\//i, type: 'service' },\n { pattern: /\\/(concept|architecture|design)\\//i, type: 'concept' },\n];\n\n/**\n * Convert existing docs to weave-nn structure\n */\nexport async function convertDocs(options: ConvertOptions): Promise<ConvertResult> {\n const {\n sourceDir,\n targetDir = 'docs-nn',\n projectRoot,\n preserveOriginal = true,\n force = false,\n autoCategory = true,\n dryRun = false,\n } = options;\n\n const result: ConvertResult = {\n success: true,\n filesProcessed: 0,\n filesConverted: 0,\n filesSkipped: 0,\n errors: [],\n converted: [],\n };\n\n const sourcePath = join(projectRoot, sourceDir);\n const targetPath = join(projectRoot, targetDir);\n\n // Validate source exists\n if (!existsSync(sourcePath)) {\n result.success = false;\n result.errors.push(`Source directory not found: ${sourcePath}`);\n return result;\n }\n\n // Create target structure\n if (!dryRun) {\n createTargetStructure(targetPath);\n }\n\n // Find all markdown files\n const files = await fg('**/*.md', {\n cwd: sourcePath,\n ignore: ['node_modules/**', '.git/**', '_templates/**'],\n });\n\n for (const file of files) {\n result.filesProcessed++;\n const sourceFile = join(sourcePath, file);\n\n try {\n // Read and parse file\n const content = readFileSync(sourceFile, 'utf-8');\n const { data: existingFrontmatter, content: body } = matter(content);\n\n // Determine node type\n const nodeType = autoCategory\n ? detectNodeType(file, body, existingFrontmatter)\n : (existingFrontmatter.type as NodeType) || 'concept';\n\n // Determine target path\n const targetSubdir = CATEGORY_DIRS[nodeType];\n const targetFile = join(targetPath, targetSubdir, basename(file));\n\n // Check if target exists\n if (existsSync(targetFile) && !force) {\n result.filesSkipped++;\n continue;\n }\n\n // Generate frontmatter\n const frontmatter = generateFrontmatter(file, body, nodeType, existingFrontmatter);\n\n // Build new content\n const newContent = buildMarkdownWithFrontmatter(frontmatter, body);\n\n if (!dryRun) {\n // Ensure directory exists\n mkdirSync(dirname(targetFile), { recursive: true });\n\n // Write converted file\n writeFileSync(targetFile, newContent, 'utf-8');\n }\n\n result.filesConverted++;\n result.converted.push({\n source: file,\n target: relative(projectRoot, targetFile),\n type: nodeType,\n });\n\n } catch (error) {\n result.errors.push(`Failed to convert ${file}: ${error}`);\n }\n }\n\n result.success = result.errors.length === 0;\n return result;\n}\n\n/**\n * Add or update frontmatter in existing files\n */\nexport async function addFrontmatter(options: FrontmatterOptions): Promise<FrontmatterResult> {\n const {\n target,\n projectRoot,\n type,\n status = 'active',\n tags = [],\n force = false,\n dryRun = false,\n } = options;\n\n const result: FrontmatterResult = {\n success: true,\n filesProcessed: 0,\n filesUpdated: 0,\n filesSkipped: 0,\n errors: [],\n };\n\n const targetPath = join(projectRoot, target);\n\n // Handle single file or directory\n let files: string[];\n if (existsSync(targetPath) && !targetPath.endsWith('.md')) {\n // Directory - find all markdown files\n files = await fg('**/*.md', {\n cwd: targetPath,\n ignore: ['node_modules/**', '.git/**', '_templates/**'],\n absolute: true,\n });\n } else if (existsSync(targetPath)) {\n files = [targetPath];\n } else {\n result.success = false;\n result.errors.push(`Target not found: ${targetPath}`);\n return result;\n }\n\n for (const file of files) {\n result.filesProcessed++;\n\n try {\n const content = readFileSync(file, 'utf-8');\n const { data: existingFrontmatter, content: body } = matter(content);\n\n // Skip if has frontmatter and not forcing\n if (Object.keys(existingFrontmatter).length > 0 && !force) {\n result.filesSkipped++;\n continue;\n }\n\n // Detect type if not specified\n const relPath = relative(projectRoot, file);\n const nodeType = type || detectNodeType(relPath, body, existingFrontmatter);\n\n // Generate frontmatter\n const frontmatter = generateFrontmatter(\n relPath,\n body,\n nodeType,\n force ? {} : existingFrontmatter,\n status,\n tags\n );\n\n // Build new content\n const newContent = buildMarkdownWithFrontmatter(frontmatter, body);\n\n if (!dryRun) {\n writeFileSync(file, newContent, 'utf-8');\n }\n\n result.filesUpdated++;\n\n } catch (error) {\n result.errors.push(`Failed to update ${file}: ${error}`);\n }\n }\n\n result.success = result.errors.length === 0;\n return result;\n}\n\n/**\n * Validate frontmatter in files\n */\nexport async function validateFrontmatter(\n target: string,\n projectRoot: string\n): Promise<{\n valid: number;\n invalid: number;\n missing: number;\n issues: Array<{ file: string; issues: string[] }>;\n}> {\n const result = {\n valid: 0,\n invalid: 0,\n missing: 0,\n issues: [] as Array<{ file: string; issues: string[] }>,\n };\n\n const targetPath = join(projectRoot, target);\n\n const files = await fg('**/*.md', {\n cwd: targetPath,\n ignore: ['node_modules/**', '.git/**', '_templates/**'],\n absolute: true,\n });\n\n const validTypes: NodeType[] = [\n 'concept', 'technical', 'feature', 'primitive',\n 'service', 'guide', 'standard', 'integration',\n ];\n\n const validStatuses: NodeStatus[] = ['draft', 'active', 'deprecated', 'archived'];\n\n for (const file of files) {\n const content = readFileSync(file, 'utf-8');\n const { data: frontmatter } = matter(content);\n const fileIssues: string[] = [];\n\n if (Object.keys(frontmatter).length === 0) {\n result.missing++;\n fileIssues.push('Missing frontmatter');\n } else {\n // Check required fields\n if (!frontmatter.title) {\n fileIssues.push('Missing title');\n }\n if (!frontmatter.type) {\n fileIssues.push('Missing type');\n } else if (!validTypes.includes(frontmatter.type)) {\n fileIssues.push(`Invalid type: ${frontmatter.type}`);\n }\n if (frontmatter.status && !validStatuses.includes(frontmatter.status)) {\n fileIssues.push(`Invalid status: ${frontmatter.status}`);\n }\n if (!frontmatter.created) {\n fileIssues.push('Missing created date');\n }\n }\n\n if (fileIssues.length > 0) {\n result.invalid++;\n result.issues.push({\n file: relative(projectRoot, file),\n issues: fileIssues,\n });\n } else if (Object.keys(frontmatter).length > 0) {\n result.valid++;\n }\n }\n\n return result;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Create target directory structure\n */\nfunction createTargetStructure(targetPath: string): void {\n const dirs = [\n '',\n 'concepts',\n 'concepts/architecture',\n 'concepts/patterns',\n 'components',\n 'components/ui',\n 'components/utilities',\n 'services',\n 'services/api',\n 'services/workers',\n 'features',\n 'features/core',\n 'features/advanced',\n 'integrations',\n 'integrations/databases',\n 'integrations/auth',\n 'standards',\n 'standards/coding',\n 'standards/documentation',\n 'guides',\n 'guides/getting-started',\n 'guides/tutorials',\n 'references',\n 'references/api',\n '_templates',\n '_attachments',\n ];\n\n for (const dir of dirs) {\n const fullPath = join(targetPath, dir);\n if (!existsSync(fullPath)) {\n mkdirSync(fullPath, { recursive: true });\n }\n }\n}\n\n/**\n * Detect node type from file path and content\n */\nfunction detectNodeType(\n filePath: string,\n content: string,\n existingFrontmatter: Record<string, unknown>\n): NodeType {\n // Use existing type if valid\n const validTypes: NodeType[] = [\n 'concept', 'technical', 'feature', 'primitive',\n 'service', 'guide', 'standard', 'integration',\n ];\n\n if (existingFrontmatter.type && validTypes.includes(existingFrontmatter.type as NodeType)) {\n return existingFrontmatter.type as NodeType;\n }\n\n // Check path patterns\n for (const { pattern, type } of PATH_PATTERNS) {\n if (pattern.test(filePath)) {\n return type;\n }\n }\n\n // Analyze content\n const lowerContent = content.toLowerCase();\n const scores: Record<NodeType, number> = {\n concept: 0,\n technical: 0,\n feature: 0,\n primitive: 0,\n service: 0,\n guide: 0,\n standard: 0,\n integration: 0,\n };\n\n for (const [nodeType, keywords] of Object.entries(CATEGORY_KEYWORDS)) {\n for (const keyword of keywords) {\n const regex = new RegExp(`\\\\b${keyword}\\\\b`, 'gi');\n const matches = lowerContent.match(regex);\n if (matches) {\n scores[nodeType as NodeType] += matches.length;\n }\n }\n }\n\n // Find highest scoring type\n let maxScore = 0;\n let detectedType: NodeType = 'concept';\n\n for (const [nodeType, score] of Object.entries(scores)) {\n if (score > maxScore) {\n maxScore = score;\n detectedType = nodeType as NodeType;\n }\n }\n\n return detectedType;\n}\n\n/**\n * Generate frontmatter for a file\n */\nfunction generateFrontmatter(\n filePath: string,\n content: string,\n nodeType: NodeType,\n existing: Record<string, unknown> = {},\n status: NodeStatus = 'active',\n additionalTags: string[] = []\n): NodeFrontmatter {\n const filename = basename(filePath, '.md');\n const title = existing.title as string || formatTitle(filename);\n\n // Extract tags from content\n const extractedTags = extractTags(content);\n const allTags = [...new Set([\n ...(existing.tags as string[] || []),\n ...extractedTags,\n ...additionalTags,\n ])];\n\n // Get dates\n const now = new Date().toISOString().split('T')[0];\n const created = existing.created as string || now;\n\n return {\n title,\n type: nodeType,\n status: existing.status as NodeStatus || status,\n tags: allTags.length > 0 ? allTags : undefined,\n category: existing.category as string || undefined,\n description: existing.description as string || extractDescription(content),\n created,\n updated: now,\n aliases: existing.aliases as string[] || undefined,\n related: existing.related as string[] || undefined,\n };\n}\n\n/**\n * Format filename as title\n */\nfunction formatTitle(filename: string): string {\n return filename\n .replace(/[-_]/g, ' ')\n .replace(/\\b\\w/g, c => c.toUpperCase())\n .trim();\n}\n\n/**\n * Extract tags from content\n */\nfunction extractTags(content: string): string[] {\n const tags: string[] = [];\n\n // Look for #tags in content\n const tagMatches = content.match(/#[\\w-]+/g);\n if (tagMatches) {\n tags.push(...tagMatches.map(t => t.slice(1)));\n }\n\n return tags.slice(0, 10); // Limit to 10 tags\n}\n\n/**\n * Extract description from first paragraph\n */\nfunction extractDescription(content: string): string | undefined {\n // Skip headers and find first paragraph\n const lines = content.split('\\n');\n let description = '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith('#') && !trimmed.startsWith('```')) {\n description = trimmed;\n break;\n }\n }\n\n if (description.length > 200) {\n description = description.slice(0, 197) + '...';\n }\n\n return description || undefined;\n}\n\n/**\n * Build markdown content with frontmatter\n */\nfunction buildMarkdownWithFrontmatter(\n frontmatter: NodeFrontmatter,\n content: string\n): string {\n // Clean undefined values\n const cleanFrontmatter: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(frontmatter)) {\n if (value !== undefined) {\n cleanFrontmatter[key] = value;\n }\n }\n\n // Build YAML frontmatter\n const yamlLines = ['---'];\n\n // Order: title, type, status, tags, description, dates, others\n const orderedKeys = ['title', 'type', 'status', 'tags', 'category', 'description', 'created', 'updated', 'aliases', 'related'];\n\n for (const key of orderedKeys) {\n if (cleanFrontmatter[key] !== undefined) {\n yamlLines.push(formatYamlLine(key, cleanFrontmatter[key]));\n }\n }\n\n yamlLines.push('---');\n yamlLines.push('');\n\n return yamlLines.join('\\n') + content.trim() + '\\n';\n}\n\n/**\n * Format a YAML line\n */\nfunction formatYamlLine(key: string, value: unknown): string {\n if (Array.isArray(value)) {\n if (value.length === 0) return '';\n return `${key}:\\n${value.map(v => ` - ${v}`).join('\\n')}`;\n }\n if (typeof value === 'string' && (value.includes(':') || value.includes('#'))) {\n return `${key}: \"${value}\"`;\n }\n return `${key}: ${value}`;\n}\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@
3
3
  *
4
4
  * Creates the initial docs directory structure following the weave-nn
5
5
  * methodology with proper PRIMITIVES.md taxonomy.
6
+ *
7
+ * SECURITY NOTES (Handlebars Templates):
8
+ * - All templates use double-braces {{}} which HTML-escapes output
9
+ * - Triple-braces {{{raw}}} are NOT used, preventing injection attacks
10
+ * - Template variables come from internal sources (project analysis), not direct user input
11
+ * - See: https://handlebarsjs.com/guide/#html-escaping
6
12
  */
7
13
  import type { DocsInitOptions, DocsInitResult } from '../core/types.js';
8
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"docs-init.d.ts","sourceRoot":"","sources":["../../src/generators/docs-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEf,MAAM,kBAAkB,CAAC;AA2X1B;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA6FhF;AAmPD;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,SAAS,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW9D"}
1
+ {"version":3,"file":"docs-init.d.ts","sourceRoot":"","sources":["../../src/generators/docs-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEf,MAAM,kBAAkB,CAAC;AA2X1B;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA6FhF;AAmPD;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,SAAS,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW9D"}