@dotcontext/cli 0.8.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 (797) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +566 -0
  3. package/dist/generators/agents/agentConfig.d.ts +4 -0
  4. package/dist/generators/agents/agentConfig.d.ts.map +1 -0
  5. package/dist/generators/agents/agentConfig.js +180 -0
  6. package/dist/generators/agents/agentConfig.js.map +1 -0
  7. package/dist/generators/agents/agentGenerator.d.ts +36 -0
  8. package/dist/generators/agents/agentGenerator.d.ts.map +1 -0
  9. package/dist/generators/agents/agentGenerator.js +304 -0
  10. package/dist/generators/agents/agentGenerator.js.map +1 -0
  11. package/dist/generators/agents/agentTypes.d.ts +4 -0
  12. package/dist/generators/agents/agentTypes.d.ts.map +1 -0
  13. package/dist/generators/agents/agentTypes.js +25 -0
  14. package/dist/generators/agents/agentTypes.js.map +1 -0
  15. package/dist/generators/agents/index.d.ts +4 -0
  16. package/dist/generators/agents/index.d.ts.map +1 -0
  17. package/dist/generators/agents/index.js +12 -0
  18. package/dist/generators/agents/index.js.map +1 -0
  19. package/dist/generators/agents/templates/index.d.ts +3 -0
  20. package/dist/generators/agents/templates/index.d.ts.map +1 -0
  21. package/dist/generators/agents/templates/index.js +6 -0
  22. package/dist/generators/agents/templates/index.js.map +1 -0
  23. package/dist/generators/agents/templates/indexTemplate.d.ts +3 -0
  24. package/dist/generators/agents/templates/indexTemplate.d.ts.map +1 -0
  25. package/dist/generators/agents/templates/indexTemplate.js +36 -0
  26. package/dist/generators/agents/templates/indexTemplate.js.map +1 -0
  27. package/dist/generators/agents/templates/types.d.ts +22 -0
  28. package/dist/generators/agents/templates/types.d.ts.map +1 -0
  29. package/dist/generators/agents/templates/types.js +3 -0
  30. package/dist/generators/agents/templates/types.js.map +1 -0
  31. package/dist/generators/documentation/codebaseMapGenerator.d.ts +143 -0
  32. package/dist/generators/documentation/codebaseMapGenerator.d.ts.map +1 -0
  33. package/dist/generators/documentation/codebaseMapGenerator.js +666 -0
  34. package/dist/generators/documentation/codebaseMapGenerator.js.map +1 -0
  35. package/dist/generators/documentation/documentationGenerator.d.ts +22 -0
  36. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -0
  37. package/dist/generators/documentation/documentationGenerator.js +263 -0
  38. package/dist/generators/documentation/documentationGenerator.js.map +1 -0
  39. package/dist/generators/documentation/guideRegistry.d.ts +6 -0
  40. package/dist/generators/documentation/guideRegistry.d.ts.map +1 -0
  41. package/dist/generators/documentation/guideRegistry.js +74 -0
  42. package/dist/generators/documentation/guideRegistry.js.map +1 -0
  43. package/dist/generators/documentation/index.d.ts +4 -0
  44. package/dist/generators/documentation/index.d.ts.map +1 -0
  45. package/dist/generators/documentation/index.js +8 -0
  46. package/dist/generators/documentation/index.js.map +1 -0
  47. package/dist/generators/documentation/templates/common.d.ts +42 -0
  48. package/dist/generators/documentation/templates/common.d.ts.map +1 -0
  49. package/dist/generators/documentation/templates/common.js +194 -0
  50. package/dist/generators/documentation/templates/common.js.map +1 -0
  51. package/dist/generators/documentation/templates/index.d.ts +3 -0
  52. package/dist/generators/documentation/templates/index.d.ts.map +1 -0
  53. package/dist/generators/documentation/templates/index.js +6 -0
  54. package/dist/generators/documentation/templates/index.js.map +1 -0
  55. package/dist/generators/documentation/templates/indexTemplate.d.ts +3 -0
  56. package/dist/generators/documentation/templates/indexTemplate.d.ts.map +1 -0
  57. package/dist/generators/documentation/templates/indexTemplate.js +25 -0
  58. package/dist/generators/documentation/templates/indexTemplate.js.map +1 -0
  59. package/dist/generators/documentation/templates/types.d.ts +24 -0
  60. package/dist/generators/documentation/templates/types.d.ts.map +1 -0
  61. package/dist/generators/documentation/templates/types.js +3 -0
  62. package/dist/generators/documentation/templates/types.js.map +1 -0
  63. package/dist/generators/plans/index.d.ts +2 -0
  64. package/dist/generators/plans/index.d.ts.map +1 -0
  65. package/dist/generators/plans/index.js +6 -0
  66. package/dist/generators/plans/index.js.map +1 -0
  67. package/dist/generators/plans/planGenerator.d.ts +26 -0
  68. package/dist/generators/plans/planGenerator.d.ts.map +1 -0
  69. package/dist/generators/plans/planGenerator.js +137 -0
  70. package/dist/generators/plans/planGenerator.js.map +1 -0
  71. package/dist/generators/plans/templates/indexTemplate.d.ts +3 -0
  72. package/dist/generators/plans/templates/indexTemplate.d.ts.map +1 -0
  73. package/dist/generators/plans/templates/indexTemplate.js +28 -0
  74. package/dist/generators/plans/templates/indexTemplate.js.map +1 -0
  75. package/dist/generators/plans/templates/planTemplate.d.ts +14 -0
  76. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -0
  77. package/dist/generators/plans/templates/planTemplate.js +270 -0
  78. package/dist/generators/plans/templates/planTemplate.js.map +1 -0
  79. package/dist/generators/plans/templates/types.d.ts +29 -0
  80. package/dist/generators/plans/templates/types.d.ts.map +1 -0
  81. package/dist/generators/plans/templates/types.js +3 -0
  82. package/dist/generators/plans/templates/types.js.map +1 -0
  83. package/dist/generators/shared/contextGenerator.d.ts +7 -0
  84. package/dist/generators/shared/contextGenerator.d.ts.map +1 -0
  85. package/dist/generators/shared/contextGenerator.js +13 -0
  86. package/dist/generators/shared/contextGenerator.js.map +1 -0
  87. package/dist/generators/shared/directoryTemplateHelpers.d.ts +2 -0
  88. package/dist/generators/shared/directoryTemplateHelpers.d.ts.map +1 -0
  89. package/dist/generators/shared/directoryTemplateHelpers.js +12 -0
  90. package/dist/generators/shared/directoryTemplateHelpers.js.map +1 -0
  91. package/dist/generators/shared/generatorUtils.d.ts +16 -0
  92. package/dist/generators/shared/generatorUtils.d.ts.map +1 -0
  93. package/dist/generators/shared/generatorUtils.js +116 -0
  94. package/dist/generators/shared/generatorUtils.js.map +1 -0
  95. package/dist/generators/shared/index.d.ts +5 -0
  96. package/dist/generators/shared/index.d.ts.map +1 -0
  97. package/dist/generators/shared/index.js +26 -0
  98. package/dist/generators/shared/index.js.map +1 -0
  99. package/dist/generators/shared/scaffoldStructures.d.ts +13 -0
  100. package/dist/generators/shared/scaffoldStructures.d.ts.map +1 -0
  101. package/dist/generators/shared/scaffoldStructures.js +30 -0
  102. package/dist/generators/shared/scaffoldStructures.js.map +1 -0
  103. package/dist/generators/shared/structures/agents/definitions.d.ts +18 -0
  104. package/dist/generators/shared/structures/agents/definitions.d.ts.map +1 -0
  105. package/dist/generators/shared/structures/agents/definitions.js +561 -0
  106. package/dist/generators/shared/structures/agents/definitions.js.map +1 -0
  107. package/dist/generators/shared/structures/agents/factory.d.ts +25 -0
  108. package/dist/generators/shared/structures/agents/factory.d.ts.map +1 -0
  109. package/dist/generators/shared/structures/agents/factory.js +138 -0
  110. package/dist/generators/shared/structures/agents/factory.js.map +1 -0
  111. package/dist/generators/shared/structures/agents/index.d.ts +6 -0
  112. package/dist/generators/shared/structures/agents/index.d.ts.map +1 -0
  113. package/dist/generators/shared/structures/agents/index.js +24 -0
  114. package/dist/generators/shared/structures/agents/index.js.map +1 -0
  115. package/dist/generators/shared/structures/documentation/apiReference.d.ts +3 -0
  116. package/dist/generators/shared/structures/documentation/apiReference.d.ts.map +1 -0
  117. package/dist/generators/shared/structures/documentation/apiReference.js +100 -0
  118. package/dist/generators/shared/structures/documentation/apiReference.js.map +1 -0
  119. package/dist/generators/shared/structures/documentation/architecture.d.ts +3 -0
  120. package/dist/generators/shared/structures/documentation/architecture.d.ts.map +1 -0
  121. package/dist/generators/shared/structures/documentation/architecture.js +176 -0
  122. package/dist/generators/shared/structures/documentation/architecture.js.map +1 -0
  123. package/dist/generators/shared/structures/documentation/dataFlow.d.ts +3 -0
  124. package/dist/generators/shared/structures/documentation/dataFlow.d.ts.map +1 -0
  125. package/dist/generators/shared/structures/documentation/dataFlow.js +107 -0
  126. package/dist/generators/shared/structures/documentation/dataFlow.js.map +1 -0
  127. package/dist/generators/shared/structures/documentation/glossary.d.ts +3 -0
  128. package/dist/generators/shared/structures/documentation/glossary.d.ts.map +1 -0
  129. package/dist/generators/shared/structures/documentation/glossary.js +91 -0
  130. package/dist/generators/shared/structures/documentation/glossary.js.map +1 -0
  131. package/dist/generators/shared/structures/documentation/index.d.ts +16 -0
  132. package/dist/generators/shared/structures/documentation/index.d.ts.map +1 -0
  133. package/dist/generators/shared/structures/documentation/index.js +31 -0
  134. package/dist/generators/shared/structures/documentation/index.js.map +1 -0
  135. package/dist/generators/shared/structures/documentation/migration.d.ts +3 -0
  136. package/dist/generators/shared/structures/documentation/migration.d.ts.map +1 -0
  137. package/dist/generators/shared/structures/documentation/migration.js +113 -0
  138. package/dist/generators/shared/structures/documentation/migration.js.map +1 -0
  139. package/dist/generators/shared/structures/documentation/onboarding.d.ts +3 -0
  140. package/dist/generators/shared/structures/documentation/onboarding.d.ts.map +1 -0
  141. package/dist/generators/shared/structures/documentation/onboarding.js +99 -0
  142. package/dist/generators/shared/structures/documentation/onboarding.js.map +1 -0
  143. package/dist/generators/shared/structures/documentation/projectOverview.d.ts +3 -0
  144. package/dist/generators/shared/structures/documentation/projectOverview.d.ts.map +1 -0
  145. package/dist/generators/shared/structures/documentation/projectOverview.js +163 -0
  146. package/dist/generators/shared/structures/documentation/projectOverview.js.map +1 -0
  147. package/dist/generators/shared/structures/documentation/security.d.ts +3 -0
  148. package/dist/generators/shared/structures/documentation/security.d.ts.map +1 -0
  149. package/dist/generators/shared/structures/documentation/security.js +100 -0
  150. package/dist/generators/shared/structures/documentation/security.js.map +1 -0
  151. package/dist/generators/shared/structures/documentation/testing.d.ts +3 -0
  152. package/dist/generators/shared/structures/documentation/testing.d.ts.map +1 -0
  153. package/dist/generators/shared/structures/documentation/testing.js +130 -0
  154. package/dist/generators/shared/structures/documentation/testing.js.map +1 -0
  155. package/dist/generators/shared/structures/documentation/tooling.d.ts +3 -0
  156. package/dist/generators/shared/structures/documentation/tooling.d.ts.map +1 -0
  157. package/dist/generators/shared/structures/documentation/tooling.js +114 -0
  158. package/dist/generators/shared/structures/documentation/tooling.js.map +1 -0
  159. package/dist/generators/shared/structures/documentation/troubleshooting.d.ts +3 -0
  160. package/dist/generators/shared/structures/documentation/troubleshooting.d.ts.map +1 -0
  161. package/dist/generators/shared/structures/documentation/troubleshooting.js +91 -0
  162. package/dist/generators/shared/structures/documentation/troubleshooting.js.map +1 -0
  163. package/dist/generators/shared/structures/documentation/workflow.d.ts +3 -0
  164. package/dist/generators/shared/structures/documentation/workflow.d.ts.map +1 -0
  165. package/dist/generators/shared/structures/documentation/workflow.js +116 -0
  166. package/dist/generators/shared/structures/documentation/workflow.js.map +1 -0
  167. package/dist/generators/shared/structures/index.d.ts +15 -0
  168. package/dist/generators/shared/structures/index.d.ts.map +1 -0
  169. package/dist/generators/shared/structures/index.js +37 -0
  170. package/dist/generators/shared/structures/index.js.map +1 -0
  171. package/dist/generators/shared/structures/plans/index.d.ts +5 -0
  172. package/dist/generators/shared/structures/plans/index.d.ts.map +1 -0
  173. package/dist/generators/shared/structures/plans/index.js +9 -0
  174. package/dist/generators/shared/structures/plans/index.js.map +1 -0
  175. package/dist/generators/shared/structures/plans/planStructure.d.ts +6 -0
  176. package/dist/generators/shared/structures/plans/planStructure.d.ts.map +1 -0
  177. package/dist/generators/shared/structures/plans/planStructure.js +65 -0
  178. package/dist/generators/shared/structures/plans/planStructure.js.map +1 -0
  179. package/dist/generators/shared/structures/registry.d.ts +18 -0
  180. package/dist/generators/shared/structures/registry.d.ts.map +1 -0
  181. package/dist/generators/shared/structures/registry.js +104 -0
  182. package/dist/generators/shared/structures/registry.js.map +1 -0
  183. package/dist/generators/shared/structures/serialization.d.ts +15 -0
  184. package/dist/generators/shared/structures/serialization.d.ts.map +1 -0
  185. package/dist/generators/shared/structures/serialization.js +124 -0
  186. package/dist/generators/shared/structures/serialization.js.map +1 -0
  187. package/dist/generators/shared/structures/skills/definitions.d.ts +25 -0
  188. package/dist/generators/shared/structures/skills/definitions.d.ts.map +1 -0
  189. package/dist/generators/shared/structures/skills/definitions.js +427 -0
  190. package/dist/generators/shared/structures/skills/definitions.js.map +1 -0
  191. package/dist/generators/shared/structures/skills/factory.d.ts +18 -0
  192. package/dist/generators/shared/structures/skills/factory.d.ts.map +1 -0
  193. package/dist/generators/shared/structures/skills/factory.js +75 -0
  194. package/dist/generators/shared/structures/skills/factory.js.map +1 -0
  195. package/dist/generators/shared/structures/skills/index.d.ts +6 -0
  196. package/dist/generators/shared/structures/skills/index.d.ts.map +1 -0
  197. package/dist/generators/shared/structures/skills/index.js +30 -0
  198. package/dist/generators/shared/structures/skills/index.js.map +1 -0
  199. package/dist/generators/shared/structures/types.d.ts +61 -0
  200. package/dist/generators/shared/structures/types.d.ts.map +1 -0
  201. package/dist/generators/shared/structures/types.js +6 -0
  202. package/dist/generators/shared/structures/types.js.map +1 -0
  203. package/dist/generators/shared/structures/validation.d.ts +13 -0
  204. package/dist/generators/shared/structures/validation.d.ts.map +1 -0
  205. package/dist/generators/shared/structures/validation.js +51 -0
  206. package/dist/generators/shared/structures/validation.js.map +1 -0
  207. package/dist/generators/skills/index.d.ts +7 -0
  208. package/dist/generators/skills/index.d.ts.map +1 -0
  209. package/dist/generators/skills/index.js +15 -0
  210. package/dist/generators/skills/index.js.map +1 -0
  211. package/dist/generators/skills/skillGenerator.d.ts +58 -0
  212. package/dist/generators/skills/skillGenerator.d.ts.map +1 -0
  213. package/dist/generators/skills/skillGenerator.js +158 -0
  214. package/dist/generators/skills/skillGenerator.js.map +1 -0
  215. package/dist/generators/skills/templates/indexTemplate.d.ts +13 -0
  216. package/dist/generators/skills/templates/indexTemplate.d.ts.map +1 -0
  217. package/dist/generators/skills/templates/indexTemplate.js +102 -0
  218. package/dist/generators/skills/templates/indexTemplate.js.map +1 -0
  219. package/dist/generators/skills/templates/skillTemplate.d.ts +30 -0
  220. package/dist/generators/skills/templates/skillTemplate.d.ts.map +1 -0
  221. package/dist/generators/skills/templates/skillTemplate.js +95 -0
  222. package/dist/generators/skills/templates/skillTemplate.js.map +1 -0
  223. package/dist/index.d.ts +3 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +1179 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/prompts/defaults.d.ts +8 -0
  228. package/dist/prompts/defaults.d.ts.map +1 -0
  229. package/dist/prompts/defaults.js +108 -0
  230. package/dist/prompts/defaults.js.map +1 -0
  231. package/dist/services/ai/aiSdkClient.d.ts +67 -0
  232. package/dist/services/ai/aiSdkClient.d.ts.map +1 -0
  233. package/dist/services/ai/aiSdkClient.js +143 -0
  234. package/dist/services/ai/aiSdkClient.js.map +1 -0
  235. package/dist/services/ai/index.d.ts +5 -0
  236. package/dist/services/ai/index.d.ts.map +1 -0
  237. package/dist/services/ai/index.js +40 -0
  238. package/dist/services/ai/index.js.map +1 -0
  239. package/dist/services/ai/providerFactory.d.ts +35 -0
  240. package/dist/services/ai/providerFactory.d.ts.map +1 -0
  241. package/dist/services/ai/providerFactory.js +107 -0
  242. package/dist/services/ai/providerFactory.js.map +1 -0
  243. package/dist/services/ai/schemas.d.ts +557 -0
  244. package/dist/services/ai/schemas.d.ts.map +1 -0
  245. package/dist/services/ai/schemas.js +357 -0
  246. package/dist/services/ai/schemas.js.map +1 -0
  247. package/dist/services/ai/toolRegistry.d.ts +27 -0
  248. package/dist/services/ai/toolRegistry.d.ts.map +1 -0
  249. package/dist/services/ai/toolRegistry.js +151 -0
  250. package/dist/services/ai/toolRegistry.js.map +1 -0
  251. package/dist/services/ai/tools/analyzeSymbolsTool.d.ts +33 -0
  252. package/dist/services/ai/tools/analyzeSymbolsTool.d.ts.map +1 -0
  253. package/dist/services/ai/tools/analyzeSymbolsTool.js +57 -0
  254. package/dist/services/ai/tools/analyzeSymbolsTool.js.map +1 -0
  255. package/dist/services/ai/tools/checkScaffoldingTool.d.ts +18 -0
  256. package/dist/services/ai/tools/checkScaffoldingTool.d.ts.map +1 -0
  257. package/dist/services/ai/tools/checkScaffoldingTool.js +89 -0
  258. package/dist/services/ai/tools/checkScaffoldingTool.js.map +1 -0
  259. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +124 -0
  260. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +1 -0
  261. package/dist/services/ai/tools/fillScaffoldingTool.js +397 -0
  262. package/dist/services/ai/tools/fillScaffoldingTool.js.map +1 -0
  263. package/dist/services/ai/tools/getCodebaseMapTool.d.ts +17 -0
  264. package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +1 -0
  265. package/dist/services/ai/tools/getCodebaseMapTool.js +122 -0
  266. package/dist/services/ai/tools/getCodebaseMapTool.js.map +1 -0
  267. package/dist/services/ai/tools/getFileStructureTool.d.ts +29 -0
  268. package/dist/services/ai/tools/getFileStructureTool.d.ts.map +1 -0
  269. package/dist/services/ai/tools/getFileStructureTool.js +48 -0
  270. package/dist/services/ai/tools/getFileStructureTool.js.map +1 -0
  271. package/dist/services/ai/tools/index.d.ts +21 -0
  272. package/dist/services/ai/tools/index.d.ts.map +1 -0
  273. package/dist/services/ai/tools/index.js +75 -0
  274. package/dist/services/ai/tools/index.js.map +1 -0
  275. package/dist/services/ai/tools/initializeContextTool.d.ts +135 -0
  276. package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -0
  277. package/dist/services/ai/tools/initializeContextTool.js +447 -0
  278. package/dist/services/ai/tools/initializeContextTool.js.map +1 -0
  279. package/dist/services/ai/tools/listFilesTool.d.ts +18 -0
  280. package/dist/services/ai/tools/listFilesTool.d.ts.map +1 -0
  281. package/dist/services/ai/tools/listFilesTool.js +34 -0
  282. package/dist/services/ai/tools/listFilesTool.js.map +1 -0
  283. package/dist/services/ai/tools/readFileTool.d.ts +17 -0
  284. package/dist/services/ai/tools/readFileTool.d.ts.map +1 -0
  285. package/dist/services/ai/tools/readFileTool.js +63 -0
  286. package/dist/services/ai/tools/readFileTool.js.map +1 -0
  287. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +41 -0
  288. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -0
  289. package/dist/services/ai/tools/scaffoldPlanTool.js +183 -0
  290. package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -0
  291. package/dist/services/ai/tools/searchCodeTool.d.ts +25 -0
  292. package/dist/services/ai/tools/searchCodeTool.d.ts.map +1 -0
  293. package/dist/services/ai/tools/searchCodeTool.js +96 -0
  294. package/dist/services/ai/tools/searchCodeTool.js.map +1 -0
  295. package/dist/services/autoFill/autoFillService.d.ts +52 -0
  296. package/dist/services/autoFill/autoFillService.d.ts.map +1 -0
  297. package/dist/services/autoFill/autoFillService.js +473 -0
  298. package/dist/services/autoFill/autoFillService.js.map +1 -0
  299. package/dist/services/autoFill/index.d.ts +2 -0
  300. package/dist/services/autoFill/index.d.ts.map +1 -0
  301. package/dist/services/autoFill/index.js +6 -0
  302. package/dist/services/autoFill/index.js.map +1 -0
  303. package/dist/services/baseLLMClient.d.ts +12 -0
  304. package/dist/services/baseLLMClient.d.ts.map +1 -0
  305. package/dist/services/baseLLMClient.js +80 -0
  306. package/dist/services/baseLLMClient.js.map +1 -0
  307. package/dist/services/export/contextExportService.d.ts +45 -0
  308. package/dist/services/export/contextExportService.d.ts.map +1 -0
  309. package/dist/services/export/contextExportService.js +161 -0
  310. package/dist/services/export/contextExportService.js.map +1 -0
  311. package/dist/services/export/exportRulesService.d.ts +76 -0
  312. package/dist/services/export/exportRulesService.d.ts.map +1 -0
  313. package/dist/services/export/exportRulesService.js +306 -0
  314. package/dist/services/export/exportRulesService.js.map +1 -0
  315. package/dist/services/export/index.d.ts +7 -0
  316. package/dist/services/export/index.d.ts.map +1 -0
  317. package/dist/services/export/index.js +12 -0
  318. package/dist/services/export/index.js.map +1 -0
  319. package/dist/services/export/skillExportService.d.ts +69 -0
  320. package/dist/services/export/skillExportService.d.ts.map +1 -0
  321. package/dist/services/export/skillExportService.js +262 -0
  322. package/dist/services/export/skillExportService.js.map +1 -0
  323. package/dist/services/import/agentsDetector.d.ts +12 -0
  324. package/dist/services/import/agentsDetector.d.ts.map +1 -0
  325. package/dist/services/import/agentsDetector.js +183 -0
  326. package/dist/services/import/agentsDetector.js.map +1 -0
  327. package/dist/services/import/importAgentsService.d.ts +14 -0
  328. package/dist/services/import/importAgentsService.d.ts.map +1 -0
  329. package/dist/services/import/importAgentsService.js +194 -0
  330. package/dist/services/import/importAgentsService.js.map +1 -0
  331. package/dist/services/import/importRulesService.d.ts +17 -0
  332. package/dist/services/import/importRulesService.d.ts.map +1 -0
  333. package/dist/services/import/importRulesService.js +221 -0
  334. package/dist/services/import/importRulesService.js.map +1 -0
  335. package/dist/services/import/index.d.ts +7 -0
  336. package/dist/services/import/index.d.ts.map +1 -0
  337. package/dist/services/import/index.js +28 -0
  338. package/dist/services/import/index.js.map +1 -0
  339. package/dist/services/import/presets.d.ts +20 -0
  340. package/dist/services/import/presets.d.ts.map +1 -0
  341. package/dist/services/import/presets.js +56 -0
  342. package/dist/services/import/presets.js.map +1 -0
  343. package/dist/services/import/rulesDetector.d.ts +16 -0
  344. package/dist/services/import/rulesDetector.d.ts.map +1 -0
  345. package/dist/services/import/rulesDetector.js +278 -0
  346. package/dist/services/import/rulesDetector.js.map +1 -0
  347. package/dist/services/import/types.d.ts +72 -0
  348. package/dist/services/import/types.d.ts.map +1 -0
  349. package/dist/services/import/types.js +3 -0
  350. package/dist/services/import/types.js.map +1 -0
  351. package/dist/services/mcp/actionLogger.d.ts +19 -0
  352. package/dist/services/mcp/actionLogger.d.ts.map +1 -0
  353. package/dist/services/mcp/actionLogger.js +128 -0
  354. package/dist/services/mcp/actionLogger.js.map +1 -0
  355. package/dist/services/mcp/gateway/agent.d.ts +17 -0
  356. package/dist/services/mcp/gateway/agent.d.ts.map +1 -0
  357. package/dist/services/mcp/gateway/agent.js +147 -0
  358. package/dist/services/mcp/gateway/agent.js.map +1 -0
  359. package/dist/services/mcp/gateway/context.d.ts +21 -0
  360. package/dist/services/mcp/gateway/context.d.ts.map +1 -0
  361. package/dist/services/mcp/gateway/context.js +249 -0
  362. package/dist/services/mcp/gateway/context.js.map +1 -0
  363. package/dist/services/mcp/gateway/explore.d.ts +16 -0
  364. package/dist/services/mcp/gateway/explore.d.ts.map +1 -0
  365. package/dist/services/mcp/gateway/explore.js +60 -0
  366. package/dist/services/mcp/gateway/explore.js.map +1 -0
  367. package/dist/services/mcp/gateway/index.d.ts +24 -0
  368. package/dist/services/mcp/gateway/index.d.ts.map +1 -0
  369. package/dist/services/mcp/gateway/index.js +53 -0
  370. package/dist/services/mcp/gateway/index.js.map +1 -0
  371. package/dist/services/mcp/gateway/metrics.d.ts +56 -0
  372. package/dist/services/mcp/gateway/metrics.d.ts.map +1 -0
  373. package/dist/services/mcp/gateway/metrics.js +153 -0
  374. package/dist/services/mcp/gateway/metrics.js.map +1 -0
  375. package/dist/services/mcp/gateway/plan.d.ts +18 -0
  376. package/dist/services/mcp/gateway/plan.d.ts.map +1 -0
  377. package/dist/services/mcp/gateway/plan.js +273 -0
  378. package/dist/services/mcp/gateway/plan.js.map +1 -0
  379. package/dist/services/mcp/gateway/response.d.ts +45 -0
  380. package/dist/services/mcp/gateway/response.d.ts.map +1 -0
  381. package/dist/services/mcp/gateway/response.js +111 -0
  382. package/dist/services/mcp/gateway/response.js.map +1 -0
  383. package/dist/services/mcp/gateway/shared.d.ts +38 -0
  384. package/dist/services/mcp/gateway/shared.d.ts.map +1 -0
  385. package/dist/services/mcp/gateway/shared.js +39 -0
  386. package/dist/services/mcp/gateway/shared.js.map +1 -0
  387. package/dist/services/mcp/gateway/skill.d.ts +17 -0
  388. package/dist/services/mcp/gateway/skill.d.ts.map +1 -0
  389. package/dist/services/mcp/gateway/skill.js +323 -0
  390. package/dist/services/mcp/gateway/skill.js.map +1 -0
  391. package/dist/services/mcp/gateway/sync.d.ts +17 -0
  392. package/dist/services/mcp/gateway/sync.d.ts.map +1 -0
  393. package/dist/services/mcp/gateway/sync.js +219 -0
  394. package/dist/services/mcp/gateway/sync.js.map +1 -0
  395. package/dist/services/mcp/gateway/types.d.ts +116 -0
  396. package/dist/services/mcp/gateway/types.d.ts.map +1 -0
  397. package/dist/services/mcp/gateway/types.js +12 -0
  398. package/dist/services/mcp/gateway/types.js.map +1 -0
  399. package/dist/services/mcp/gateway/workflowAdvance.d.ts +25 -0
  400. package/dist/services/mcp/gateway/workflowAdvance.d.ts.map +1 -0
  401. package/dist/services/mcp/gateway/workflowAdvance.js +133 -0
  402. package/dist/services/mcp/gateway/workflowAdvance.js.map +1 -0
  403. package/dist/services/mcp/gateway/workflowInit.d.ts +28 -0
  404. package/dist/services/mcp/gateway/workflowInit.d.ts.map +1 -0
  405. package/dist/services/mcp/gateway/workflowInit.js +213 -0
  406. package/dist/services/mcp/gateway/workflowInit.js.map +1 -0
  407. package/dist/services/mcp/gateway/workflowManage.d.ts +31 -0
  408. package/dist/services/mcp/gateway/workflowManage.d.ts.map +1 -0
  409. package/dist/services/mcp/gateway/workflowManage.js +222 -0
  410. package/dist/services/mcp/gateway/workflowManage.js.map +1 -0
  411. package/dist/services/mcp/gateway/workflowStatus.d.ts +17 -0
  412. package/dist/services/mcp/gateway/workflowStatus.d.ts.map +1 -0
  413. package/dist/services/mcp/gateway/workflowStatus.js +91 -0
  414. package/dist/services/mcp/gateway/workflowStatus.js.map +1 -0
  415. package/dist/services/mcp/gatewayTools.d.ts +15 -0
  416. package/dist/services/mcp/gatewayTools.d.ts.map +1 -0
  417. package/dist/services/mcp/gatewayTools.js +38 -0
  418. package/dist/services/mcp/gatewayTools.js.map +1 -0
  419. package/dist/services/mcp/index.d.ts +9 -0
  420. package/dist/services/mcp/index.d.ts.map +1 -0
  421. package/dist/services/mcp/index.js +28 -0
  422. package/dist/services/mcp/index.js.map +1 -0
  423. package/dist/services/mcp/mcpInstallService.d.ts +56 -0
  424. package/dist/services/mcp/mcpInstallService.d.ts.map +1 -0
  425. package/dist/services/mcp/mcpInstallService.js +603 -0
  426. package/dist/services/mcp/mcpInstallService.js.map +1 -0
  427. package/dist/services/mcp/mcpServer.d.ts +101 -0
  428. package/dist/services/mcp/mcpServer.d.ts.map +1 -0
  429. package/dist/services/mcp/mcpServer.js +844 -0
  430. package/dist/services/mcp/mcpServer.js.map +1 -0
  431. package/dist/services/qa/index.d.ts +9 -0
  432. package/dist/services/qa/index.d.ts.map +1 -0
  433. package/dist/services/qa/index.js +15 -0
  434. package/dist/services/qa/index.js.map +1 -0
  435. package/dist/services/qa/patternInferer.d.ts +41 -0
  436. package/dist/services/qa/patternInferer.d.ts.map +1 -0
  437. package/dist/services/qa/patternInferer.js +366 -0
  438. package/dist/services/qa/patternInferer.js.map +1 -0
  439. package/dist/services/qa/qaService.d.ts +107 -0
  440. package/dist/services/qa/qaService.d.ts.map +1 -0
  441. package/dist/services/qa/qaService.js +874 -0
  442. package/dist/services/qa/qaService.js.map +1 -0
  443. package/dist/services/qa/topicDetector.d.ts +54 -0
  444. package/dist/services/qa/topicDetector.d.ts.map +1 -0
  445. package/dist/services/qa/topicDetector.js +306 -0
  446. package/dist/services/qa/topicDetector.js.map +1 -0
  447. package/dist/services/quickSync/index.d.ts +3 -0
  448. package/dist/services/quickSync/index.d.ts.map +1 -0
  449. package/dist/services/quickSync/index.js +7 -0
  450. package/dist/services/quickSync/index.js.map +1 -0
  451. package/dist/services/quickSync/quickSyncService.d.ts +70 -0
  452. package/dist/services/quickSync/quickSyncService.d.ts.map +1 -0
  453. package/dist/services/quickSync/quickSyncService.js +263 -0
  454. package/dist/services/quickSync/quickSyncService.js.map +1 -0
  455. package/dist/services/report/index.d.ts +3 -0
  456. package/dist/services/report/index.d.ts.map +1 -0
  457. package/dist/services/report/index.js +6 -0
  458. package/dist/services/report/index.js.map +1 -0
  459. package/dist/services/report/reportService.d.ts +131 -0
  460. package/dist/services/report/reportService.d.ts.map +1 -0
  461. package/dist/services/report/reportService.js +372 -0
  462. package/dist/services/report/reportService.js.map +1 -0
  463. package/dist/services/reverseSync/importSkillsService.d.ts +47 -0
  464. package/dist/services/reverseSync/importSkillsService.d.ts.map +1 -0
  465. package/dist/services/reverseSync/importSkillsService.js +362 -0
  466. package/dist/services/reverseSync/importSkillsService.js.map +1 -0
  467. package/dist/services/reverseSync/index.d.ts +12 -0
  468. package/dist/services/reverseSync/index.d.ts.map +1 -0
  469. package/dist/services/reverseSync/index.js +49 -0
  470. package/dist/services/reverseSync/index.js.map +1 -0
  471. package/dist/services/reverseSync/presets.d.ts +51 -0
  472. package/dist/services/reverseSync/presets.d.ts.map +1 -0
  473. package/dist/services/reverseSync/presets.js +77 -0
  474. package/dist/services/reverseSync/presets.js.map +1 -0
  475. package/dist/services/reverseSync/reverseQuickSyncService.d.ts +37 -0
  476. package/dist/services/reverseSync/reverseQuickSyncService.d.ts.map +1 -0
  477. package/dist/services/reverseSync/reverseQuickSyncService.js +265 -0
  478. package/dist/services/reverseSync/reverseQuickSyncService.js.map +1 -0
  479. package/dist/services/reverseSync/skillsDetector.d.ts +36 -0
  480. package/dist/services/reverseSync/skillsDetector.d.ts.map +1 -0
  481. package/dist/services/reverseSync/skillsDetector.js +287 -0
  482. package/dist/services/reverseSync/skillsDetector.js.map +1 -0
  483. package/dist/services/reverseSync/toolDetector.d.ts +36 -0
  484. package/dist/services/reverseSync/toolDetector.d.ts.map +1 -0
  485. package/dist/services/reverseSync/toolDetector.js +174 -0
  486. package/dist/services/reverseSync/toolDetector.js.map +1 -0
  487. package/dist/services/reverseSync/types.d.ts +203 -0
  488. package/dist/services/reverseSync/types.d.ts.map +1 -0
  489. package/dist/services/reverseSync/types.js +9 -0
  490. package/dist/services/reverseSync/types.js.map +1 -0
  491. package/dist/services/semantic/codebaseAnalyzer.d.ts +62 -0
  492. package/dist/services/semantic/codebaseAnalyzer.d.ts.map +1 -0
  493. package/dist/services/semantic/codebaseAnalyzer.js +1071 -0
  494. package/dist/services/semantic/codebaseAnalyzer.js.map +1 -0
  495. package/dist/services/semantic/contextBuilder.d.ts +86 -0
  496. package/dist/services/semantic/contextBuilder.d.ts.map +1 -0
  497. package/dist/services/semantic/contextBuilder.js +641 -0
  498. package/dist/services/semantic/contextBuilder.js.map +1 -0
  499. package/dist/services/semantic/contextCache.d.ts +67 -0
  500. package/dist/services/semantic/contextCache.d.ts.map +1 -0
  501. package/dist/services/semantic/contextCache.js +158 -0
  502. package/dist/services/semantic/contextCache.js.map +1 -0
  503. package/dist/services/semantic/index.d.ts +12 -0
  504. package/dist/services/semantic/index.d.ts.map +1 -0
  505. package/dist/services/semantic/index.js +33 -0
  506. package/dist/services/semantic/index.js.map +1 -0
  507. package/dist/services/semantic/lsp/index.d.ts +2 -0
  508. package/dist/services/semantic/lsp/index.d.ts.map +1 -0
  509. package/dist/services/semantic/lsp/index.js +6 -0
  510. package/dist/services/semantic/lsp/index.js.map +1 -0
  511. package/dist/services/semantic/lsp/lspLayer.d.ts +32 -0
  512. package/dist/services/semantic/lsp/lspLayer.d.ts.map +1 -0
  513. package/dist/services/semantic/lsp/lspLayer.js +378 -0
  514. package/dist/services/semantic/lsp/lspLayer.js.map +1 -0
  515. package/dist/services/semantic/treeSitter/index.d.ts +2 -0
  516. package/dist/services/semantic/treeSitter/index.d.ts.map +1 -0
  517. package/dist/services/semantic/treeSitter/index.js +6 -0
  518. package/dist/services/semantic/treeSitter/index.js.map +1 -0
  519. package/dist/services/semantic/treeSitter/treeSitterLayer.d.ts +37 -0
  520. package/dist/services/semantic/treeSitter/treeSitterLayer.d.ts.map +1 -0
  521. package/dist/services/semantic/treeSitter/treeSitterLayer.js +518 -0
  522. package/dist/services/semantic/treeSitter/treeSitterLayer.js.map +1 -0
  523. package/dist/services/semantic/types.d.ts +172 -0
  524. package/dist/services/semantic/types.d.ts.map +1 -0
  525. package/dist/services/semantic/types.js +33 -0
  526. package/dist/services/semantic/types.js.map +1 -0
  527. package/dist/services/shared/contentTypeRegistry.d.ts +66 -0
  528. package/dist/services/shared/contentTypeRegistry.d.ts.map +1 -0
  529. package/dist/services/shared/contentTypeRegistry.js +113 -0
  530. package/dist/services/shared/contentTypeRegistry.js.map +1 -0
  531. package/dist/services/shared/contextRootResolver.d.ts +57 -0
  532. package/dist/services/shared/contextRootResolver.d.ts.map +1 -0
  533. package/dist/services/shared/contextRootResolver.js +102 -0
  534. package/dist/services/shared/contextRootResolver.js.map +1 -0
  535. package/dist/services/shared/globPatterns.d.ts +48 -0
  536. package/dist/services/shared/globPatterns.d.ts.map +1 -0
  537. package/dist/services/shared/globPatterns.js +110 -0
  538. package/dist/services/shared/globPatterns.js.map +1 -0
  539. package/dist/services/shared/index.d.ts +13 -0
  540. package/dist/services/shared/index.d.ts.map +1 -0
  541. package/dist/services/shared/index.js +84 -0
  542. package/dist/services/shared/index.js.map +1 -0
  543. package/dist/services/shared/pathHelpers.d.ts +85 -0
  544. package/dist/services/shared/pathHelpers.d.ts.map +1 -0
  545. package/dist/services/shared/pathHelpers.js +187 -0
  546. package/dist/services/shared/pathHelpers.js.map +1 -0
  547. package/dist/services/shared/toolRegistry.d.ts +135 -0
  548. package/dist/services/shared/toolRegistry.d.ts.map +1 -0
  549. package/dist/services/shared/toolRegistry.js +545 -0
  550. package/dist/services/shared/toolRegistry.js.map +1 -0
  551. package/dist/services/shared/types.d.ts +68 -0
  552. package/dist/services/shared/types.d.ts.map +1 -0
  553. package/dist/services/shared/types.js +44 -0
  554. package/dist/services/shared/types.js.map +1 -0
  555. package/dist/services/shared/uiHelpers.d.ts +70 -0
  556. package/dist/services/shared/uiHelpers.d.ts.map +1 -0
  557. package/dist/services/shared/uiHelpers.js +131 -0
  558. package/dist/services/shared/uiHelpers.js.map +1 -0
  559. package/dist/services/stack/index.d.ts +6 -0
  560. package/dist/services/stack/index.d.ts.map +1 -0
  561. package/dist/services/stack/index.js +25 -0
  562. package/dist/services/stack/index.js.map +1 -0
  563. package/dist/services/stack/projectTypeClassifier.d.ts +59 -0
  564. package/dist/services/stack/projectTypeClassifier.d.ts.map +1 -0
  565. package/dist/services/stack/projectTypeClassifier.js +242 -0
  566. package/dist/services/stack/projectTypeClassifier.js.map +1 -0
  567. package/dist/services/stack/scaffoldFilter.d.ts +75 -0
  568. package/dist/services/stack/scaffoldFilter.d.ts.map +1 -0
  569. package/dist/services/stack/scaffoldFilter.js +222 -0
  570. package/dist/services/stack/scaffoldFilter.js.map +1 -0
  571. package/dist/services/stack/stackDetector.d.ts +43 -0
  572. package/dist/services/stack/stackDetector.d.ts.map +1 -0
  573. package/dist/services/stack/stackDetector.js +406 -0
  574. package/dist/services/stack/stackDetector.js.map +1 -0
  575. package/dist/services/state/index.d.ts +2 -0
  576. package/dist/services/state/index.d.ts.map +1 -0
  577. package/dist/services/state/index.js +6 -0
  578. package/dist/services/state/index.js.map +1 -0
  579. package/dist/services/state/stateDetector.d.ts +53 -0
  580. package/dist/services/state/stateDetector.d.ts.map +1 -0
  581. package/dist/services/state/stateDetector.js +189 -0
  582. package/dist/services/state/stateDetector.js.map +1 -0
  583. package/dist/services/sync/index.d.ts +6 -0
  584. package/dist/services/sync/index.d.ts.map +1 -0
  585. package/dist/services/sync/index.js +16 -0
  586. package/dist/services/sync/index.js.map +1 -0
  587. package/dist/services/sync/markdownReferenceHandler.d.ts +3 -0
  588. package/dist/services/sync/markdownReferenceHandler.d.ts.map +1 -0
  589. package/dist/services/sync/markdownReferenceHandler.js +133 -0
  590. package/dist/services/sync/markdownReferenceHandler.js.map +1 -0
  591. package/dist/services/sync/presets.d.ts +9 -0
  592. package/dist/services/sync/presets.d.ts.map +1 -0
  593. package/dist/services/sync/presets.js +52 -0
  594. package/dist/services/sync/presets.js.map +1 -0
  595. package/dist/services/sync/symlinkHandler.d.ts +7 -0
  596. package/dist/services/sync/symlinkHandler.d.ts.map +1 -0
  597. package/dist/services/sync/symlinkHandler.js +129 -0
  598. package/dist/services/sync/symlinkHandler.js.map +1 -0
  599. package/dist/services/sync/syncService.d.ts +23 -0
  600. package/dist/services/sync/syncService.d.ts.map +1 -0
  601. package/dist/services/sync/syncService.js +240 -0
  602. package/dist/services/sync/syncService.js.map +1 -0
  603. package/dist/services/sync/types.d.ts +62 -0
  604. package/dist/services/sync/types.d.ts.map +1 -0
  605. package/dist/services/sync/types.js +3 -0
  606. package/dist/services/sync/types.js.map +1 -0
  607. package/dist/services/workflow/autoAdvance.d.ts +38 -0
  608. package/dist/services/workflow/autoAdvance.d.ts.map +1 -0
  609. package/dist/services/workflow/autoAdvance.js +219 -0
  610. package/dist/services/workflow/autoAdvance.js.map +1 -0
  611. package/dist/services/workflow/index.d.ts +6 -0
  612. package/dist/services/workflow/index.d.ts.map +1 -0
  613. package/dist/services/workflow/index.js +11 -0
  614. package/dist/services/workflow/index.js.map +1 -0
  615. package/dist/services/workflow/workflowService.d.ts +151 -0
  616. package/dist/services/workflow/workflowService.d.ts.map +1 -0
  617. package/dist/services/workflow/workflowService.js +283 -0
  618. package/dist/services/workflow/workflowService.js.map +1 -0
  619. package/dist/types/scaffoldFrontmatter.d.ts +145 -0
  620. package/dist/types/scaffoldFrontmatter.d.ts.map +1 -0
  621. package/dist/types/scaffoldFrontmatter.js +172 -0
  622. package/dist/types/scaffoldFrontmatter.js.map +1 -0
  623. package/dist/types.d.ts +61 -0
  624. package/dist/types.d.ts.map +1 -0
  625. package/dist/types.js +3 -0
  626. package/dist/types.js.map +1 -0
  627. package/dist/utils/cliUI.d.ts +26 -0
  628. package/dist/utils/cliUI.d.ts.map +1 -0
  629. package/dist/utils/cliUI.js +216 -0
  630. package/dist/utils/cliUI.js.map +1 -0
  631. package/dist/utils/fileMapper.d.ts +13 -0
  632. package/dist/utils/fileMapper.d.ts.map +1 -0
  633. package/dist/utils/fileMapper.js +165 -0
  634. package/dist/utils/fileMapper.js.map +1 -0
  635. package/dist/utils/frontMatter.d.ts +104 -0
  636. package/dist/utils/frontMatter.d.ts.map +1 -0
  637. package/dist/utils/frontMatter.js +325 -0
  638. package/dist/utils/frontMatter.js.map +1 -0
  639. package/dist/utils/gitService.d.ts +76 -0
  640. package/dist/utils/gitService.d.ts.map +1 -0
  641. package/dist/utils/gitService.js +564 -0
  642. package/dist/utils/gitService.js.map +1 -0
  643. package/dist/utils/gitignoreManager.d.ts +61 -0
  644. package/dist/utils/gitignoreManager.d.ts.map +1 -0
  645. package/dist/utils/gitignoreManager.js +171 -0
  646. package/dist/utils/gitignoreManager.js.map +1 -0
  647. package/dist/utils/i18n.d.ts +530 -0
  648. package/dist/utils/i18n.d.ts.map +1 -0
  649. package/dist/utils/i18n.js +1179 -0
  650. package/dist/utils/i18n.js.map +1 -0
  651. package/dist/utils/pathSecurity.d.ts +55 -0
  652. package/dist/utils/pathSecurity.d.ts.map +1 -0
  653. package/dist/utils/pathSecurity.js +132 -0
  654. package/dist/utils/pathSecurity.js.map +1 -0
  655. package/dist/utils/prompts/configSummary.d.ts +7 -0
  656. package/dist/utils/prompts/configSummary.d.ts.map +1 -0
  657. package/dist/utils/prompts/configSummary.js +35 -0
  658. package/dist/utils/prompts/configSummary.js.map +1 -0
  659. package/dist/utils/prompts/index.d.ts +27 -0
  660. package/dist/utils/prompts/index.d.ts.map +1 -0
  661. package/dist/utils/prompts/index.js +114 -0
  662. package/dist/utils/prompts/index.js.map +1 -0
  663. package/dist/utils/prompts/smartDefaults.d.ts +15 -0
  664. package/dist/utils/prompts/smartDefaults.d.ts.map +1 -0
  665. package/dist/utils/prompts/smartDefaults.js +105 -0
  666. package/dist/utils/prompts/smartDefaults.js.map +1 -0
  667. package/dist/utils/prompts/types.d.ts +38 -0
  668. package/dist/utils/prompts/types.d.ts.map +1 -0
  669. package/dist/utils/prompts/types.js +3 -0
  670. package/dist/utils/prompts/types.js.map +1 -0
  671. package/dist/utils/splashScreen.d.ts +14 -0
  672. package/dist/utils/splashScreen.d.ts.map +1 -0
  673. package/dist/utils/splashScreen.js +106 -0
  674. package/dist/utils/splashScreen.js.map +1 -0
  675. package/dist/utils/theme.d.ts +69 -0
  676. package/dist/utils/theme.d.ts.map +1 -0
  677. package/dist/utils/theme.js +97 -0
  678. package/dist/utils/theme.js.map +1 -0
  679. package/dist/utils/themedPrompt.d.ts +46 -0
  680. package/dist/utils/themedPrompt.d.ts.map +1 -0
  681. package/dist/utils/themedPrompt.js +47 -0
  682. package/dist/utils/themedPrompt.js.map +1 -0
  683. package/dist/utils/versionChecker.d.ts +15 -0
  684. package/dist/utils/versionChecker.d.ts.map +1 -0
  685. package/dist/utils/versionChecker.js +49 -0
  686. package/dist/utils/versionChecker.js.map +1 -0
  687. package/dist/version.d.ts +8 -0
  688. package/dist/version.d.ts.map +1 -0
  689. package/dist/version.js +15 -0
  690. package/dist/version.js.map +1 -0
  691. package/dist/workflow/agents/agentRegistry.d.ts +82 -0
  692. package/dist/workflow/agents/agentRegistry.d.ts.map +1 -0
  693. package/dist/workflow/agents/agentRegistry.js +205 -0
  694. package/dist/workflow/agents/agentRegistry.js.map +1 -0
  695. package/dist/workflow/agents/index.d.ts +7 -0
  696. package/dist/workflow/agents/index.d.ts.map +1 -0
  697. package/dist/workflow/agents/index.js +14 -0
  698. package/dist/workflow/agents/index.js.map +1 -0
  699. package/dist/workflow/collaboration.d.ts +110 -0
  700. package/dist/workflow/collaboration.d.ts.map +1 -0
  701. package/dist/workflow/collaboration.js +301 -0
  702. package/dist/workflow/collaboration.js.map +1 -0
  703. package/dist/workflow/errors.d.ts +48 -0
  704. package/dist/workflow/errors.d.ts.map +1 -0
  705. package/dist/workflow/errors.js +52 -0
  706. package/dist/workflow/errors.js.map +1 -0
  707. package/dist/workflow/gates/gateChecker.d.ts +93 -0
  708. package/dist/workflow/gates/gateChecker.d.ts.map +1 -0
  709. package/dist/workflow/gates/gateChecker.js +197 -0
  710. package/dist/workflow/gates/gateChecker.js.map +1 -0
  711. package/dist/workflow/gates/index.d.ts +7 -0
  712. package/dist/workflow/gates/index.d.ts.map +1 -0
  713. package/dist/workflow/gates/index.js +13 -0
  714. package/dist/workflow/gates/index.js.map +1 -0
  715. package/dist/workflow/index.d.ts +27 -0
  716. package/dist/workflow/index.d.ts.map +1 -0
  717. package/dist/workflow/index.js +135 -0
  718. package/dist/workflow/index.js.map +1 -0
  719. package/dist/workflow/orchestration/agentOrchestrator.d.ts +68 -0
  720. package/dist/workflow/orchestration/agentOrchestrator.d.ts.map +1 -0
  721. package/dist/workflow/orchestration/agentOrchestrator.js +280 -0
  722. package/dist/workflow/orchestration/agentOrchestrator.js.map +1 -0
  723. package/dist/workflow/orchestration/documentLinker.d.ts +100 -0
  724. package/dist/workflow/orchestration/documentLinker.d.ts.map +1 -0
  725. package/dist/workflow/orchestration/documentLinker.js +266 -0
  726. package/dist/workflow/orchestration/documentLinker.js.map +1 -0
  727. package/dist/workflow/orchestration/index.d.ts +9 -0
  728. package/dist/workflow/orchestration/index.d.ts.map +1 -0
  729. package/dist/workflow/orchestration/index.js +25 -0
  730. package/dist/workflow/orchestration/index.js.map +1 -0
  731. package/dist/workflow/orchestrator.d.ts +188 -0
  732. package/dist/workflow/orchestrator.d.ts.map +1 -0
  733. package/dist/workflow/orchestrator.js +506 -0
  734. package/dist/workflow/orchestrator.js.map +1 -0
  735. package/dist/workflow/phases.d.ts +64 -0
  736. package/dist/workflow/phases.d.ts.map +1 -0
  737. package/dist/workflow/phases.js +151 -0
  738. package/dist/workflow/phases.js.map +1 -0
  739. package/dist/workflow/plans/index.d.ts +8 -0
  740. package/dist/workflow/plans/index.d.ts.map +1 -0
  741. package/dist/workflow/plans/index.js +27 -0
  742. package/dist/workflow/plans/index.js.map +1 -0
  743. package/dist/workflow/plans/planLinker.d.ts +195 -0
  744. package/dist/workflow/plans/planLinker.d.ts.map +1 -0
  745. package/dist/workflow/plans/planLinker.js +1018 -0
  746. package/dist/workflow/plans/planLinker.js.map +1 -0
  747. package/dist/workflow/plans/types.d.ts +231 -0
  748. package/dist/workflow/plans/types.d.ts.map +1 -0
  749. package/dist/workflow/plans/types.js +25 -0
  750. package/dist/workflow/plans/types.js.map +1 -0
  751. package/dist/workflow/prevcConfig.d.ts +27 -0
  752. package/dist/workflow/prevcConfig.d.ts.map +1 -0
  753. package/dist/workflow/prevcConfig.js +153 -0
  754. package/dist/workflow/prevcConfig.js.map +1 -0
  755. package/dist/workflow/roles.d.ts +50 -0
  756. package/dist/workflow/roles.d.ts.map +1 -0
  757. package/dist/workflow/roles.js +118 -0
  758. package/dist/workflow/roles.js.map +1 -0
  759. package/dist/workflow/scaling.d.ts +45 -0
  760. package/dist/workflow/scaling.d.ts.map +1 -0
  761. package/dist/workflow/scaling.js +215 -0
  762. package/dist/workflow/scaling.js.map +1 -0
  763. package/dist/workflow/skills/frontmatter.d.ts +23 -0
  764. package/dist/workflow/skills/frontmatter.d.ts.map +1 -0
  765. package/dist/workflow/skills/frontmatter.js +101 -0
  766. package/dist/workflow/skills/frontmatter.js.map +1 -0
  767. package/dist/workflow/skills/index.d.ts +10 -0
  768. package/dist/workflow/skills/index.d.ts.map +1 -0
  769. package/dist/workflow/skills/index.js +22 -0
  770. package/dist/workflow/skills/index.js.map +1 -0
  771. package/dist/workflow/skills/skillRegistry.d.ts +67 -0
  772. package/dist/workflow/skills/skillRegistry.d.ts.map +1 -0
  773. package/dist/workflow/skills/skillRegistry.js +276 -0
  774. package/dist/workflow/skills/skillRegistry.js.map +1 -0
  775. package/dist/workflow/skills/skillTemplates.d.ts +20 -0
  776. package/dist/workflow/skills/skillTemplates.d.ts.map +1 -0
  777. package/dist/workflow/skills/skillTemplates.js +111 -0
  778. package/dist/workflow/skills/skillTemplates.js.map +1 -0
  779. package/dist/workflow/skills/types.d.ts +72 -0
  780. package/dist/workflow/skills/types.d.ts.map +1 -0
  781. package/dist/workflow/skills/types.js +48 -0
  782. package/dist/workflow/skills/types.js.map +1 -0
  783. package/dist/workflow/status/statusManager.d.ts +137 -0
  784. package/dist/workflow/status/statusManager.d.ts.map +1 -0
  785. package/dist/workflow/status/statusManager.js +932 -0
  786. package/dist/workflow/status/statusManager.js.map +1 -0
  787. package/dist/workflow/status/templates.d.ts +49 -0
  788. package/dist/workflow/status/templates.d.ts.map +1 -0
  789. package/dist/workflow/status/templates.js +162 -0
  790. package/dist/workflow/status/templates.js.map +1 -0
  791. package/dist/workflow/types.d.ts +314 -0
  792. package/dist/workflow/types.d.ts.map +1 -0
  793. package/dist/workflow/types.js +24 -0
  794. package/dist/workflow/types.js.map +1 -0
  795. package/package.json +85 -0
  796. package/prompts/update_plan_prompt.md +41 -0
  797. package/prompts/update_scaffold_prompt.md +27 -0
package/dist/index.js ADDED
@@ -0,0 +1,1179 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const commander_1 = require("commander");
41
+ const path = __importStar(require("path"));
42
+ const inquirer_1 = __importDefault(require("inquirer"));
43
+ const theme_1 = require("./utils/theme");
44
+ const splashScreen_1 = require("./utils/splashScreen");
45
+ const themedPrompt_1 = require("./utils/themedPrompt");
46
+ const cliUI_1 = require("./utils/cliUI");
47
+ const versionChecker_1 = require("./utils/versionChecker");
48
+ const i18n_1 = require("./utils/i18n");
49
+ const syncService_1 = require("./services/sync/syncService");
50
+ const import_1 = require("./services/import");
51
+ const mcp_1 = require("./services/mcp");
52
+ const state_1 = require("./services/state");
53
+ const workflow_1 = require("./services/workflow");
54
+ const export_1 = require("./services/export");
55
+ const report_1 = require("./services/report");
56
+ const quickSync_1 = require("./services/quickSync");
57
+ const reverseSync_1 = require("./services/reverseSync");
58
+ const workflow_2 = require("./workflow");
59
+ const prompts_1 = require("./utils/prompts");
60
+ const version_1 = require("./version");
61
+ const rawArgs = process.argv.slice(2);
62
+ const isMcpCommand = rawArgs.includes('mcp');
63
+ // Determine if we're in interactive mode (no command args, only flags like --lang)
64
+ const isInteractiveMode = rawArgs.every(arg => arg.startsWith('-') ||
65
+ rawArgs[rawArgs.indexOf(arg) - 1]?.startsWith('--lang') ||
66
+ rawArgs[rawArgs.indexOf(arg) - 1]?.startsWith('--language') ||
67
+ rawArgs[rawArgs.indexOf(arg) - 1]?.startsWith('-l'));
68
+ const initialLocale = (0, i18n_1.detectLocale)(rawArgs, process.env.DOTCONTEXT_LANG, [
69
+ process.env.LC_ALL,
70
+ process.env.LC_MESSAGES,
71
+ process.env.LANG
72
+ ]);
73
+ let currentLocale = initialLocale;
74
+ let translateFn = (0, i18n_1.createTranslator)(initialLocale);
75
+ const t = (key, params) => translateFn(key, params);
76
+ const localeLabelKeys = {
77
+ en: 'prompts.language.option.en',
78
+ 'pt-BR': 'prompts.language.option.pt-BR'
79
+ };
80
+ const program = new commander_1.Command();
81
+ const ui = new cliUI_1.CLIInterface(t);
82
+ const syncService = new syncService_1.SyncService({
83
+ ui,
84
+ t,
85
+ version: version_1.VERSION
86
+ });
87
+ const importRulesService = new import_1.ImportRulesService({
88
+ ui,
89
+ t,
90
+ version: version_1.VERSION
91
+ });
92
+ const importAgentsService = new import_1.ImportAgentsService({
93
+ ui,
94
+ t,
95
+ version: version_1.VERSION
96
+ });
97
+ program
98
+ .name('dotcontext')
99
+ .description(t('cli.description'))
100
+ .version(version_1.VERSION);
101
+ program.option('-l, --lang <locale>', t('global.options.lang'), initialLocale);
102
+ let versionCheckPromise = null;
103
+ function scheduleVersionCheck(force = false) {
104
+ if (!versionCheckPromise || force) {
105
+ versionCheckPromise = (0, versionChecker_1.checkForUpdates)({
106
+ packageName: version_1.PACKAGE_NAME,
107
+ currentVersion: version_1.VERSION,
108
+ ui,
109
+ t,
110
+ force
111
+ }).catch(() => { });
112
+ }
113
+ return versionCheckPromise;
114
+ }
115
+ function buildMcpToolChoices(supportedTools, detectedTools) {
116
+ const detectedSet = new Set(detectedTools);
117
+ const orderedTools = [
118
+ ...supportedTools.filter(tool => detectedSet.has(tool.id)),
119
+ ...supportedTools.filter(tool => !detectedSet.has(tool.id)),
120
+ ];
121
+ return [
122
+ {
123
+ name: t('commands.mcpInstall.allDetected'),
124
+ value: 'all',
125
+ },
126
+ ...orderedTools.map(tool => ({
127
+ name: detectedSet.has(tool.id)
128
+ ? `${tool.displayName} (${t('labels.detected')})`
129
+ : tool.displayName,
130
+ value: tool.id,
131
+ })),
132
+ ];
133
+ }
134
+ program.hook('preAction', () => {
135
+ void scheduleVersionCheck();
136
+ });
137
+ program
138
+ .command('sync-agents')
139
+ .description(t('commands.sync.description'))
140
+ .option('-s, --source <dir>', t('commands.sync.options.source'), './.context/agents')
141
+ .option('-t, --target <paths...>', t('commands.sync.options.target'))
142
+ .option('-m, --mode <type>', t('commands.sync.options.mode'), 'symlink')
143
+ .option('-p, --preset <name>', t('commands.sync.options.preset'))
144
+ .option('--force', t('commands.sync.options.force'))
145
+ .option('--dry-run', t('commands.sync.options.dryRun'))
146
+ .option('-v, --verbose', t('commands.sync.options.verbose'))
147
+ .action(async (options) => {
148
+ try {
149
+ await syncService.run(options);
150
+ }
151
+ catch (error) {
152
+ ui.displayError(t('errors.sync.failed'), error);
153
+ process.exit(1);
154
+ }
155
+ });
156
+ program
157
+ .command('import-rules')
158
+ .description(t('commands.importRules.description'))
159
+ .argument('[repo-path]', 'Repository path to scan', process.cwd())
160
+ .option('-s, --source <paths...>', t('commands.importRules.options.source'))
161
+ .option('-t, --target <dir>', t('commands.importRules.options.target'))
162
+ .option('-f, --format <format>', t('commands.importRules.options.format'), 'markdown')
163
+ .option('--force', t('commands.importRules.options.force'))
164
+ .option('--dry-run', t('commands.importRules.options.dryRun'))
165
+ .option('-v, --verbose', t('commands.importRules.options.verbose'))
166
+ .option('--no-auto-detect', 'Disable auto-detection')
167
+ .action(async (repoPath, options) => {
168
+ try {
169
+ await importRulesService.run({
170
+ source: options.source,
171
+ target: options.target,
172
+ format: options.format,
173
+ force: options.force,
174
+ dryRun: options.dryRun,
175
+ verbose: options.verbose,
176
+ autoDetect: options.autoDetect !== false
177
+ }, repoPath);
178
+ }
179
+ catch (error) {
180
+ ui.displayError(t('errors.import.failed'), error);
181
+ process.exit(1);
182
+ }
183
+ });
184
+ program
185
+ .command('import-agents')
186
+ .description(t('commands.importAgents.description'))
187
+ .argument('[repo-path]', 'Repository path to scan', process.cwd())
188
+ .option('-s, --source <paths...>', t('commands.importAgents.options.source'))
189
+ .option('-t, --target <dir>', t('commands.importAgents.options.target'))
190
+ .option('--force', t('commands.importAgents.options.force'))
191
+ .option('--dry-run', t('commands.importAgents.options.dryRun'))
192
+ .option('-v, --verbose', t('commands.importAgents.options.verbose'))
193
+ .option('--no-auto-detect', 'Disable auto-detection')
194
+ .action(async (repoPath, options) => {
195
+ try {
196
+ await importAgentsService.run({
197
+ source: options.source,
198
+ target: options.target,
199
+ force: options.force,
200
+ dryRun: options.dryRun,
201
+ verbose: options.verbose,
202
+ autoDetect: options.autoDetect !== false
203
+ }, repoPath);
204
+ }
205
+ catch (error) {
206
+ ui.displayError(t('errors.import.failed'), error);
207
+ process.exit(1);
208
+ }
209
+ });
210
+ program
211
+ .command('reverse-sync')
212
+ .description('Import rules, agents, and skills from AI tool directories into .context/')
213
+ .argument('[repo-path]', 'Repository path to scan', process.cwd())
214
+ .option('--dry-run', 'Preview changes without importing')
215
+ .option('-f, --force', 'Overwrite existing files')
216
+ .option('--skip-agents', 'Skip importing agents')
217
+ .option('--skip-skills', 'Skip importing skills')
218
+ .option('--skip-rules', 'Skip importing rules')
219
+ .option('--merge-strategy <strategy>', 'How to handle conflicts: skip|overwrite|merge|rename', 'skip')
220
+ .option('--format <format>', 'Output format for rules: markdown|raw|formatted', 'formatted')
221
+ .option('--no-metadata', 'Do not add import metadata to files')
222
+ .option('-v, --verbose', 'Verbose output')
223
+ .action(async (repoPath, options) => {
224
+ try {
225
+ const service = new reverseSync_1.ReverseQuickSyncService({ ui, t, version: version_1.VERSION });
226
+ await service.run(repoPath, {
227
+ dryRun: options.dryRun,
228
+ force: options.force,
229
+ skipAgents: options.skipAgents,
230
+ skipSkills: options.skipSkills,
231
+ skipRules: options.skipRules,
232
+ mergeStrategy: options.mergeStrategy,
233
+ format: options.format,
234
+ metadata: options.metadata !== false,
235
+ verbose: options.verbose,
236
+ });
237
+ }
238
+ catch (error) {
239
+ ui.displayError(t('errors.reverseSync.failed'), error);
240
+ process.exit(1);
241
+ }
242
+ });
243
+ program
244
+ .command('mcp')
245
+ .description('Start MCP (Model Context Protocol) server for Claude Code integration')
246
+ .option('-r, --repo-path <path>', 'Default repository path for tools')
247
+ .option('-v, --verbose', 'Enable verbose logging to stderr')
248
+ .action(async (options) => {
249
+ try {
250
+ const server = await (0, mcp_1.startMCPServer)({
251
+ repoPath: options.repoPath,
252
+ verbose: options.verbose
253
+ });
254
+ // Handle graceful shutdown
255
+ process.on('SIGINT', async () => {
256
+ await server.stop();
257
+ process.exit(0);
258
+ });
259
+ process.on('SIGTERM', async () => {
260
+ await server.stop();
261
+ process.exit(0);
262
+ });
263
+ }
264
+ catch (error) {
265
+ if (options.verbose) {
266
+ process.stderr.write(`[mcp] Error: ${error}\n`);
267
+ }
268
+ process.exit(1);
269
+ }
270
+ });
271
+ // MCP Install Command
272
+ program
273
+ .command('mcp:install [tool]')
274
+ .description(t('commands.mcpInstall.description'))
275
+ .option('-g, --global', t('commands.mcpInstall.options.global'), true)
276
+ .option('-l, --local', t('commands.mcpInstall.options.local'))
277
+ .option('--dry-run', t('commands.mcpInstall.options.dryRun'))
278
+ .option('-v, --verbose', t('commands.mcpInstall.options.verbose'))
279
+ .action(async (tool, options) => {
280
+ try {
281
+ const mcpInstallService = new mcp_1.MCPInstallService({ ui, t, version: version_1.VERSION });
282
+ // If no tool specified and not in CI, show interactive prompt
283
+ if (!tool && process.stdin.isTTY) {
284
+ const supportedTools = mcpInstallService.getSupportedTools();
285
+ const detectedTools = await mcpInstallService.detectInstalledTools();
286
+ const choices = buildMcpToolChoices(supportedTools, detectedTools);
287
+ const { selectedTool } = await inquirer_1.default.prompt([
288
+ {
289
+ type: 'list',
290
+ name: 'selectedTool',
291
+ message: t('commands.mcpInstall.selectTool'),
292
+ choices,
293
+ },
294
+ ]);
295
+ tool = selectedTool;
296
+ }
297
+ const result = await mcpInstallService.run({
298
+ tool,
299
+ global: options.local ? false : options.global,
300
+ dryRun: options.dryRun,
301
+ verbose: options.verbose,
302
+ repoPath: process.cwd(),
303
+ });
304
+ if (result.installations.length > 0) {
305
+ ui.displayInfo('MCP', t('info.mcp.restartTools'));
306
+ }
307
+ }
308
+ catch (error) {
309
+ ui.displayError(t('errors.mcp.installFailed', { tool: tool || 'unknown' }), error);
310
+ process.exit(1);
311
+ }
312
+ });
313
+ program
314
+ .command('preview-splash')
315
+ .description(t('commands.previewSplash.description'))
316
+ .option('--title <title>', t('commands.previewSplash.options.title'))
317
+ .option('--directory <path>', t('commands.previewSplash.options.directory'), process.cwd())
318
+ .action(async (options) => {
319
+ try {
320
+ await renderStartupSplash(options.directory, options.title);
321
+ }
322
+ catch (error) {
323
+ ui.displayError(t('errors.cli.executionFailed'), error);
324
+ process.exit(1);
325
+ }
326
+ });
327
+ // Export Rules Command
328
+ program
329
+ .command('export-rules')
330
+ .description(t('commands.export.description'))
331
+ .argument('[repo-path]', 'Repository path', process.cwd())
332
+ .option('-s, --source <dir>', t('commands.export.options.source'), '.context/docs')
333
+ .option('-t, --targets <paths...>', t('commands.export.options.targets'))
334
+ .option('--preset <name>', t('commands.export.options.preset'))
335
+ .option('--force', t('commands.export.options.force'))
336
+ .option('--dry-run', t('commands.export.options.dryRun'))
337
+ .option('-v, --verbose', t('commands.fill.options.verbose'))
338
+ .action(async (repoPath, options) => {
339
+ try {
340
+ const exportService = new export_1.ExportRulesService({
341
+ ui,
342
+ t,
343
+ version: version_1.VERSION,
344
+ });
345
+ await exportService.run(repoPath, {
346
+ source: options.source,
347
+ targets: options.targets,
348
+ preset: options.preset,
349
+ force: options.force,
350
+ dryRun: options.dryRun,
351
+ verbose: options.verbose,
352
+ });
353
+ }
354
+ catch (error) {
355
+ ui.displayError(t('errors.cli.executionFailed'), error);
356
+ process.exit(1);
357
+ }
358
+ });
359
+ // Report Command
360
+ program
361
+ .command('report')
362
+ .description(t('commands.report.description'))
363
+ .argument('[repo-path]', 'Repository path', process.cwd())
364
+ .option('-f, --format <format>', t('commands.report.options.format'), 'console')
365
+ .option('-o, --output <path>', t('commands.report.options.output'))
366
+ .option('--include-stack', t('commands.report.options.includeStack'))
367
+ .option('-v, --verbose', t('commands.fill.options.verbose'))
368
+ .action(async (repoPath, options) => {
369
+ try {
370
+ const reportService = new report_1.ReportService({
371
+ ui,
372
+ t,
373
+ version: version_1.VERSION,
374
+ });
375
+ const report = await reportService.generate(repoPath, {
376
+ format: options.format,
377
+ output: options.output,
378
+ includeStack: options.includeStack,
379
+ verbose: options.verbose,
380
+ });
381
+ await reportService.output(report, options);
382
+ }
383
+ catch (error) {
384
+ ui.displayError(t('errors.cli.executionFailed'), error);
385
+ process.exit(1);
386
+ }
387
+ });
388
+ // Skill Commands
389
+ const skillCommand = program
390
+ .command('skill')
391
+ .description(t('commands.skill.description'));
392
+ skillCommand
393
+ .command('list')
394
+ .description(t('commands.skill.list.description'))
395
+ .argument('[repo-path]', 'Repository path', process.cwd())
396
+ .option('--json', 'Output as JSON')
397
+ .action(async (repoPath, options) => {
398
+ try {
399
+ const { createSkillRegistry } = await Promise.resolve().then(() => __importStar(require('./workflow/skills')));
400
+ const registry = createSkillRegistry(repoPath);
401
+ const discovered = await registry.discoverAll();
402
+ if (options.json) {
403
+ console.log(JSON.stringify({
404
+ builtIn: discovered.builtIn.map(s => s.slug),
405
+ custom: discovered.custom.map(s => s.slug),
406
+ total: discovered.all.length,
407
+ }, null, 2));
408
+ return;
409
+ }
410
+ console.log('\nBuilt-in Skills:');
411
+ for (const skill of discovered.builtIn) {
412
+ const projectSkill = discovered.all.find(s => s.slug === skill.slug && s.path.includes('.context'));
413
+ const status = projectSkill ? '[project]' : '[available]';
414
+ console.log(` ${skill.slug} ${status}`);
415
+ console.log(` ${skill.metadata.description}`);
416
+ }
417
+ if (discovered.custom.length > 0) {
418
+ console.log('\nCustom Skills:');
419
+ for (const skill of discovered.custom) {
420
+ console.log(` ${skill.slug}`);
421
+ console.log(` ${skill.metadata.description}`);
422
+ }
423
+ }
424
+ console.log(`\nTotal: ${discovered.all.length} skills (${discovered.builtIn.length} built-in, ${discovered.custom.length} custom)`);
425
+ }
426
+ catch (error) {
427
+ ui.displayError('Failed to list skills', error);
428
+ process.exit(1);
429
+ }
430
+ });
431
+ skillCommand
432
+ .command('export')
433
+ .description(t('commands.skill.export.description'))
434
+ .argument('[repo-path]', 'Repository path', process.cwd())
435
+ .option('-p, --preset <preset>', 'Export preset: claude, gemini, codex, all', 'all')
436
+ .option('-f, --force', 'Overwrite existing files')
437
+ .option('--include-builtin', 'Include built-in skills even if not scaffolded')
438
+ .option('--dry-run', 'Preview changes without writing')
439
+ .action(async (repoPath, options) => {
440
+ try {
441
+ const { SkillExportService } = await Promise.resolve().then(() => __importStar(require('./services/export/skillExportService')));
442
+ const exportService = new SkillExportService({
443
+ ui,
444
+ t,
445
+ version: version_1.VERSION,
446
+ });
447
+ const result = await exportService.run(repoPath, {
448
+ preset: options.preset,
449
+ force: options.force,
450
+ includeBuiltIn: options.includeBuiltin,
451
+ dryRun: options.dryRun,
452
+ });
453
+ if (options.dryRun) {
454
+ ui.displayInfo('Dry run', 'No files were written');
455
+ }
456
+ else {
457
+ ui.displaySuccess(`Exported ${result.skillsExported.length} skills to ${result.targets.length} targets`);
458
+ }
459
+ }
460
+ catch (error) {
461
+ ui.displayError('Failed to export skills', error);
462
+ process.exit(1);
463
+ }
464
+ });
465
+ // PREVC Workflow Commands
466
+ const workflowCommand = program
467
+ .command('workflow')
468
+ .description('PREVC workflow management (Planning, Review, Execution, Validation, Confirmation)');
469
+ // Helper to create workflow service dependencies
470
+ const getWorkflowDeps = () => ({
471
+ ui: {
472
+ displaySuccess: (msg) => ui.displaySuccess(msg),
473
+ displayError: (msg, err) => ui.displayError(msg, err),
474
+ displayInfo: (title, detail) => ui.displayInfo(title, detail || '')
475
+ }
476
+ });
477
+ workflowCommand
478
+ .command('init <name>')
479
+ .description('Initialize a new PREVC workflow')
480
+ .option('-d, --description <text>', 'Project description for scale detection')
481
+ .option('-s, --scale <scale>', 'Project scale: QUICK, SMALL, MEDIUM, LARGE')
482
+ .option('-r, --repo-path <path>', 'Repository path', process.cwd())
483
+ .action(async (name, options) => {
484
+ try {
485
+ const workflowService = new workflow_1.WorkflowService(options.repoPath, getWorkflowDeps());
486
+ const status = await workflowService.init({
487
+ name,
488
+ description: options.description,
489
+ scale: options.scale
490
+ });
491
+ ui.displaySuccess(`Workflow PREVC initialized: ${name}`);
492
+ ui.displayInfo('Scale', (0, workflow_2.getScaleName)(status.project.scale));
493
+ ui.displayInfo('Current Phase', `${status.project.current_phase} - ${workflow_2.PHASE_NAMES_PT[status.project.current_phase]}`);
494
+ }
495
+ catch (error) {
496
+ ui.displayError('Failed to initialize workflow', error);
497
+ process.exit(1);
498
+ }
499
+ });
500
+ workflowCommand
501
+ .command('status')
502
+ .description('Show current workflow status')
503
+ .option('-r, --repo-path <path>', 'Repository path', process.cwd())
504
+ .action(async (options) => {
505
+ try {
506
+ const workflowService = new workflow_1.WorkflowService(options.repoPath, getWorkflowDeps());
507
+ if (!await workflowService.hasWorkflow()) {
508
+ ui.displayError('No workflow found. Run "workflow init <name>" first.');
509
+ process.exit(1);
510
+ }
511
+ const formattedStatus = await workflowService.getFormattedStatus();
512
+ console.log(formattedStatus);
513
+ const actions = await workflowService.getRecommendedActions();
514
+ if (actions.length > 0) {
515
+ console.log('\nRecommended actions:');
516
+ actions.forEach((action, i) => console.log(` ${i + 1}. ${action}`));
517
+ }
518
+ }
519
+ catch (error) {
520
+ ui.displayError('Failed to get workflow status', error);
521
+ process.exit(1);
522
+ }
523
+ });
524
+ workflowCommand
525
+ .command('advance')
526
+ .description('Complete current phase and advance to next')
527
+ .option('-r, --repo-path <path>', 'Repository path', process.cwd())
528
+ .option('-o, --outputs <files...>', 'Output files generated in current phase')
529
+ .action(async (options) => {
530
+ try {
531
+ const workflowService = new workflow_1.WorkflowService(options.repoPath, getWorkflowDeps());
532
+ if (!await workflowService.hasWorkflow()) {
533
+ ui.displayError('No workflow found. Run "workflow init <name>" first.');
534
+ process.exit(1);
535
+ }
536
+ const nextPhase = await workflowService.advance(options.outputs);
537
+ if (nextPhase) {
538
+ ui.displaySuccess(`Advanced to phase: ${nextPhase} - ${workflow_2.PHASE_NAMES_PT[nextPhase]}`);
539
+ }
540
+ else {
541
+ ui.displaySuccess('Workflow completed!');
542
+ }
543
+ }
544
+ catch (error) {
545
+ ui.displayError('Failed to advance workflow', error);
546
+ process.exit(1);
547
+ }
548
+ });
549
+ workflowCommand
550
+ .command('handoff <from> <to>')
551
+ .description('Perform handoff between roles')
552
+ .option('-r, --repo-path <path>', 'Repository path', process.cwd())
553
+ .option('-a, --artifacts <files...>', 'Artifacts to hand off')
554
+ .action(async (from, to, options) => {
555
+ try {
556
+ const workflowService = new workflow_1.WorkflowService(options.repoPath, getWorkflowDeps());
557
+ if (!await workflowService.hasWorkflow()) {
558
+ ui.displayError('No workflow found. Run "workflow init <name>" first.');
559
+ process.exit(1);
560
+ }
561
+ await workflowService.handoff(from, to, options.artifacts || []);
562
+ ui.displaySuccess(`Handoff: ${workflow_2.ROLE_DISPLAY_NAMES[from]} → ${workflow_2.ROLE_DISPLAY_NAMES[to]}`);
563
+ }
564
+ catch (error) {
565
+ ui.displayError('Failed to perform handoff', error);
566
+ process.exit(1);
567
+ }
568
+ });
569
+ workflowCommand
570
+ .command('collaborate <topic>')
571
+ .description('Start a collaboration session between roles')
572
+ .option('-r, --repo-path <path>', 'Repository path', process.cwd())
573
+ .option('-p, --participants <roles...>', 'Participating roles')
574
+ .action(async (topic, options) => {
575
+ try {
576
+ const workflowService = new workflow_1.WorkflowService(options.repoPath, getWorkflowDeps());
577
+ const session = await workflowService.startCollaboration(topic, options.participants);
578
+ ui.displaySuccess(`Collaboration started: ${topic}`);
579
+ ui.displayInfo('Session ID', session.getId());
580
+ ui.displayInfo('Participants', session.getParticipantNames().join(', '));
581
+ console.log('\nUse MCP tools to contribute and synthesize the collaboration.');
582
+ }
583
+ catch (error) {
584
+ ui.displayError('Failed to start collaboration', error);
585
+ process.exit(1);
586
+ }
587
+ });
588
+ workflowCommand
589
+ .command('role <action> <role>')
590
+ .description('Manage role status (start/complete)')
591
+ .option('-r, --repo-path <path>', 'Repository path', process.cwd())
592
+ .option('-o, --outputs <files...>', 'Output files (for complete action)')
593
+ .action(async (action, role, options) => {
594
+ try {
595
+ const workflowService = new workflow_1.WorkflowService(options.repoPath, getWorkflowDeps());
596
+ if (!await workflowService.hasWorkflow()) {
597
+ ui.displayError('No workflow found. Run "workflow init <name>" first.');
598
+ process.exit(1);
599
+ }
600
+ if (action === 'start') {
601
+ await workflowService.startRole(role);
602
+ ui.displaySuccess(`Started role: ${workflow_2.ROLE_DISPLAY_NAMES[role]}`);
603
+ }
604
+ else if (action === 'complete') {
605
+ await workflowService.completeRole(role, options.outputs || []);
606
+ ui.displaySuccess(`Completed role: ${workflow_2.ROLE_DISPLAY_NAMES[role]}`);
607
+ }
608
+ else {
609
+ ui.displayError(`Unknown action: ${action}. Use 'start' or 'complete'.`);
610
+ process.exit(1);
611
+ }
612
+ }
613
+ catch (error) {
614
+ ui.displayError('Failed to manage role', error);
615
+ process.exit(1);
616
+ }
617
+ });
618
+ async function selectLocale() {
619
+ const locale = await (0, themedPrompt_1.themedSelect)({
620
+ message: t('prompts.language.select'),
621
+ default: currentLocale,
622
+ choices: i18n_1.SUPPORTED_LOCALES.map(option => ({
623
+ value: option,
624
+ name: t(localeLabelKeys[option])
625
+ }))
626
+ });
627
+ const normalizedLocale = (0, i18n_1.normalizeLocale)(locale);
628
+ currentLocale = normalizedLocale;
629
+ translateFn = (0, i18n_1.createTranslator)(normalizedLocale);
630
+ }
631
+ async function runInteractive() {
632
+ const projectPath = process.cwd();
633
+ const detector = new state_1.StateDetector({ projectPath });
634
+ const result = await detector.detect();
635
+ // Detect smart defaults for display
636
+ const defaults = await (0, prompts_1.detectSmartDefaults)(projectPath);
637
+ console.log('');
638
+ console.log((0, splashScreen_1.renderSplashScreen)({
639
+ title: (0, splashScreen_1.packageNameToDisplayName)(version_1.PACKAGE_NAME),
640
+ version: version_1.VERSION,
641
+ lines: [
642
+ {
643
+ label: t('ui.splash.directoryLabel'),
644
+ value: (0, splashScreen_1.formatSplashDirectory)(projectPath)
645
+ }
646
+ ]
647
+ }));
648
+ // Show what was detected from environment/project
649
+ const detectedParts = [];
650
+ if (defaults.detectedLanguages.length > 0) {
651
+ const langs = defaults.detectedLanguages.map(l => l.charAt(0).toUpperCase() + l.slice(1)).join(', ');
652
+ detectedParts.push(t('status.detected.project', { languages: langs }));
653
+ }
654
+ if (detectedParts.length > 0) {
655
+ console.log(theme_1.colors.secondaryDim(detectedParts.join(', ')));
656
+ }
657
+ // Show compact status line based on state
658
+ if (result.state === 'new') {
659
+ console.log(theme_1.colors.secondaryDim(t('status.new')));
660
+ }
661
+ else if (result.state === 'unfilled') {
662
+ console.log(theme_1.colors.secondaryDim(t('status.unfilled', { count: result.details.unfilledFiles })));
663
+ }
664
+ else {
665
+ // Get quick stats only when we have context
666
+ const quickSyncService = new quickSync_1.QuickSyncService({
667
+ ui,
668
+ t,
669
+ version: version_1.VERSION,
670
+ });
671
+ const stats = await quickSyncService.getStats(projectPath);
672
+ if (result.state === 'outdated') {
673
+ console.log(theme_1.colors.warning(t('status.outdated', { days: result.details.daysBehind || 0 })));
674
+ }
675
+ else {
676
+ console.log(theme_1.colors.success(t('status.compact', {
677
+ docs: stats.docs,
678
+ agents: stats.agents,
679
+ skills: stats.skills
680
+ })));
681
+ }
682
+ }
683
+ console.log('');
684
+ // Handle state-based flow: auto-detect what to show
685
+ if (result.state === 'new') {
686
+ const action = await (0, themedPrompt_1.themedSelect)({
687
+ message: t('prompts.main.action'),
688
+ choices: [
689
+ { name: t('prompts.main.choice.mcpInstall'), value: 'mcpInstall' },
690
+ { name: t('prompts.main.choice.reverseSync'), value: 'reverseSync' },
691
+ { name: t('prompts.main.choice.settings'), value: 'settings' },
692
+ { name: t('prompts.main.choice.exit'), value: 'exit' }
693
+ ]
694
+ });
695
+ if (action === 'mcpInstall') {
696
+ await runMcpInstall();
697
+ }
698
+ else if (action === 'reverseSync') {
699
+ await runReverseSync();
700
+ }
701
+ else if (action === 'settings') {
702
+ await runSettings();
703
+ }
704
+ const postOnboardingState = await detector.detect();
705
+ if (postOnboardingState.state !== 'new') {
706
+ await runFullMenu();
707
+ }
708
+ return;
709
+ }
710
+ // For any project that has completed onboarding, always show the full menu.
711
+ await runFullMenu();
712
+ }
713
+ async function runFullMenu() {
714
+ let exitRequested = false;
715
+ while (!exitRequested) {
716
+ const detector = new state_1.StateDetector({ projectPath: process.cwd() });
717
+ const state = await detector.detect();
718
+ const isUnfilled = state.state === 'unfilled';
719
+ const choices = isUnfilled
720
+ ? [
721
+ { name: t('prompts.main.choice.viewPending'), value: 'viewPending' },
722
+ { name: t('prompts.main.choice.mcpInstall'), value: 'mcpInstall' },
723
+ new themedPrompt_1.Separator(),
724
+ { name: t('prompts.main.choice.quickSync'), value: 'quickSync' },
725
+ { name: t('prompts.main.choice.reverseSync'), value: 'reverseSync' },
726
+ { name: t('prompts.main.choice.settings'), value: 'settings' },
727
+ { name: t('prompts.main.choice.exit'), value: 'exit' }
728
+ ]
729
+ : [
730
+ { name: t('prompts.main.choice.quickSync'), value: 'quickSync' },
731
+ { name: t('prompts.main.choice.reverseSync'), value: 'reverseSync' },
732
+ { name: t('prompts.main.choice.mcpInstall'), value: 'mcpInstall' },
733
+ { name: t('prompts.main.choice.settings'), value: 'settings' },
734
+ { name: t('prompts.main.choice.exit'), value: 'exit' }
735
+ ];
736
+ const action = await (0, themedPrompt_1.themedSelect)({
737
+ message: isUnfilled
738
+ ? t('prompts.main.unfilledPrompt', { count: state.details.unfilledFiles })
739
+ : t('prompts.main.action'),
740
+ choices
741
+ });
742
+ if (action === 'exit') {
743
+ exitRequested = true;
744
+ break;
745
+ }
746
+ if (action === 'viewPending') {
747
+ await displayPendingFiles(state.contextDir);
748
+ continue;
749
+ }
750
+ if (action === 'quickSync') {
751
+ await runQuickSync();
752
+ }
753
+ else if (action === 'reverseSync') {
754
+ await runReverseSync();
755
+ }
756
+ else if (action === 'mcpInstall') {
757
+ await runMcpInstall();
758
+ }
759
+ else if (action === 'settings') {
760
+ await runSettings();
761
+ }
762
+ }
763
+ ui.displaySuccess(t('success.interactive.goodbye'));
764
+ }
765
+ async function displayPendingFiles(contextDir) {
766
+ const { getUnfilledFiles } = await Promise.resolve().then(() => __importStar(require('./utils/frontMatter')));
767
+ const unfilled = await getUnfilledFiles(contextDir);
768
+ console.log();
769
+ console.log(theme_1.typography.subheader(t('prompts.main.pendingFilesHeader')));
770
+ for (const file of unfilled) {
771
+ const relative = path.relative(contextDir, file);
772
+ console.log(` ${theme_1.colors.secondary('•')} ${theme_1.colors.primary(relative)}`);
773
+ }
774
+ console.log();
775
+ }
776
+ async function runMcpInstall() {
777
+ const mcpInstallService = new mcp_1.MCPInstallService({ ui, t, version: version_1.VERSION });
778
+ const supportedTools = mcpInstallService.getSupportedTools();
779
+ const detectedTools = await mcpInstallService.detectInstalledTools();
780
+ const mcpChoices = buildMcpToolChoices(supportedTools, detectedTools);
781
+ const { selectedTool } = await inquirer_1.default.prompt([{
782
+ type: 'list',
783
+ name: 'selectedTool',
784
+ message: t('commands.mcpInstall.selectTool'),
785
+ choices: mcpChoices,
786
+ }]);
787
+ const mcpResult = await mcpInstallService.run({
788
+ tool: selectedTool,
789
+ global: true,
790
+ dryRun: false,
791
+ verbose: false,
792
+ repoPath: process.cwd(),
793
+ });
794
+ if (mcpResult.installations.length > 0) {
795
+ ui.displayInfo('MCP', t('info.mcp.restartTools'));
796
+ }
797
+ }
798
+ async function runInteractiveSync() {
799
+ const defaults = await (0, prompts_1.detectSmartDefaults)();
800
+ const defaultSource = path.resolve(defaults.repoPath, '.context/agents');
801
+ // Simplified: single prompt for target selection with common presets
802
+ const { quickTarget } = await inquirer_1.default.prompt([
803
+ {
804
+ type: 'list',
805
+ name: 'quickTarget',
806
+ message: t('prompts.sync.quickTarget'),
807
+ choices: [
808
+ { name: t('prompts.sync.quickTarget.common'), value: 'common' },
809
+ { name: t('prompts.sync.quickTarget.claude'), value: 'claude' },
810
+ { name: t('prompts.sync.quickTarget.all'), value: 'all' },
811
+ { name: t('prompts.sync.quickTarget.custom'), value: 'custom' }
812
+ ],
813
+ default: 'common'
814
+ }
815
+ ]);
816
+ let preset;
817
+ let target;
818
+ let sourcePath = defaultSource;
819
+ if (quickTarget === 'custom') {
820
+ // Custom path: ask for source and target
821
+ const answers = await inquirer_1.default.prompt([
822
+ {
823
+ type: 'input',
824
+ name: 'sourcePath',
825
+ message: t('prompts.sync.source'),
826
+ default: defaultSource
827
+ },
828
+ {
829
+ type: 'input',
830
+ name: 'customPath',
831
+ message: t('prompts.sync.customPath')
832
+ }
833
+ ]);
834
+ sourcePath = answers.sourcePath;
835
+ target = [answers.customPath];
836
+ }
837
+ else if (quickTarget === 'common') {
838
+ // Common: Claude + GitHub - use explicit target paths instead of preset
839
+ target = [
840
+ path.resolve(defaults.repoPath, '.claude/agents'),
841
+ path.resolve(defaults.repoPath, '.github/agents')
842
+ ];
843
+ }
844
+ else {
845
+ preset = quickTarget;
846
+ }
847
+ // Show summary
848
+ const summary = {
849
+ operation: 'sync',
850
+ repoPath: sourcePath,
851
+ options: {
852
+ Target: quickTarget === 'custom' ? (target?.[0] || 'custom') : quickTarget,
853
+ Mode: 'symlink'
854
+ }
855
+ };
856
+ (0, prompts_1.displayConfigSummary)(summary, t);
857
+ try {
858
+ await syncService.run({
859
+ source: sourcePath,
860
+ mode: 'symlink',
861
+ preset: preset,
862
+ target,
863
+ force: false,
864
+ dryRun: false
865
+ });
866
+ }
867
+ catch (error) {
868
+ ui.displayError(t('errors.sync.failed'), error);
869
+ }
870
+ }
871
+ // ============================================================================
872
+ // Quick Sync - Unified sync for agents, skills, and docs
873
+ // ============================================================================
874
+ async function runQuickSync() {
875
+ const projectPath = process.cwd();
876
+ // Single prompt: sync all or customize?
877
+ const { syncMode } = await inquirer_1.default.prompt([
878
+ {
879
+ type: 'list',
880
+ name: 'syncMode',
881
+ message: t('prompts.quickSync.mode'),
882
+ choices: [
883
+ { name: t('prompts.quickSync.mode.syncAll'), value: 'all' },
884
+ { name: t('prompts.quickSync.mode.customize'), value: 'customize' },
885
+ { name: t('prompts.quickSync.mode.cancel'), value: 'cancel' },
886
+ ],
887
+ },
888
+ ]);
889
+ if (syncMode === 'cancel')
890
+ return;
891
+ let options;
892
+ if (syncMode === 'all') {
893
+ // Sync all with default targets
894
+ options = {
895
+ skipAgents: false,
896
+ skipSkills: false,
897
+ skipDocs: false,
898
+ agentTargets: ['claude', 'github'],
899
+ skillTargets: ['claude', 'gemini', 'codex'],
900
+ docTargets: ['cursor', 'claude', 'agents'],
901
+ force: false,
902
+ dryRun: false,
903
+ verbose: false,
904
+ };
905
+ }
906
+ else {
907
+ // Customize: show the existing checkbox prompts
908
+ const { components } = await inquirer_1.default.prompt([
909
+ {
910
+ type: 'checkbox',
911
+ name: 'components',
912
+ message: t('prompts.quickSync.selectComponents'),
913
+ choices: [
914
+ { name: t('prompts.quickSync.components.agents'), value: 'agents', checked: true },
915
+ { name: t('prompts.quickSync.components.skills'), value: 'skills', checked: true },
916
+ { name: t('prompts.quickSync.components.docs'), value: 'docs', checked: true },
917
+ ],
918
+ },
919
+ ]);
920
+ if (components.length === 0) {
921
+ ui.displayWarning(t('prompts.quickSync.noComponentsSelected'));
922
+ return;
923
+ }
924
+ let agentTargets;
925
+ let skillTargets;
926
+ let docTargets;
927
+ if (components.includes('agents')) {
928
+ const { targets } = await inquirer_1.default.prompt([
929
+ {
930
+ type: 'checkbox',
931
+ name: 'targets',
932
+ message: t('prompts.quickSync.selectAgentTargets'),
933
+ choices: [
934
+ { name: '.claude/agents (Claude Code)', value: 'claude', checked: true },
935
+ { name: '.github/agents (GitHub Copilot)', value: 'github', checked: true },
936
+ { name: '.cursor/agents (Cursor AI)', value: 'cursor', checked: false },
937
+ { name: '.windsurf/agents (Windsurf/Codeium)', value: 'windsurf', checked: false },
938
+ { name: '.cline/agents (Cline)', value: 'cline', checked: false },
939
+ { name: '.continue/agents (Continue.dev)', value: 'continue', checked: false },
940
+ ],
941
+ },
942
+ ]);
943
+ agentTargets = targets.length > 0 ? targets : undefined;
944
+ }
945
+ if (components.includes('skills')) {
946
+ const { targets } = await inquirer_1.default.prompt([
947
+ {
948
+ type: 'checkbox',
949
+ name: 'targets',
950
+ message: t('prompts.quickSync.selectSkillTargets'),
951
+ choices: [
952
+ { name: '.claude/skills (Claude Code)', value: 'claude', checked: true },
953
+ { name: '.gemini/skills (Gemini CLI)', value: 'gemini', checked: true },
954
+ { name: '.codex/skills (Codex CLI)', value: 'codex', checked: true },
955
+ ],
956
+ },
957
+ ]);
958
+ skillTargets = targets.length > 0 ? targets : undefined;
959
+ }
960
+ if (components.includes('docs')) {
961
+ const { targets } = await inquirer_1.default.prompt([
962
+ {
963
+ type: 'checkbox',
964
+ name: 'targets',
965
+ message: t('prompts.quickSync.selectDocTargets'),
966
+ choices: [
967
+ { name: '.cursorrules (Cursor AI)', value: 'cursor', checked: true },
968
+ { name: 'CLAUDE.md (Claude Code)', value: 'claude', checked: true },
969
+ { name: 'AGENTS.md (Universal)', value: 'agents', checked: true },
970
+ { name: '.windsurfrules (Windsurf)', value: 'windsurf', checked: false },
971
+ { name: '.clinerules (Cline)', value: 'cline', checked: false },
972
+ { name: 'CONVENTIONS.md (Aider)', value: 'aider', checked: false },
973
+ ],
974
+ },
975
+ ]);
976
+ docTargets = targets.length > 0 ? targets : undefined;
977
+ }
978
+ options = {
979
+ skipAgents: !components.includes('agents'),
980
+ skipSkills: !components.includes('skills'),
981
+ skipDocs: !components.includes('docs'),
982
+ agentTargets,
983
+ skillTargets,
984
+ docTargets,
985
+ force: false,
986
+ dryRun: false,
987
+ verbose: false,
988
+ };
989
+ }
990
+ const quickSyncService = new quickSync_1.QuickSyncService({
991
+ ui,
992
+ t,
993
+ version: version_1.VERSION,
994
+ });
995
+ await quickSyncService.run(projectPath, options);
996
+ ui.displaySuccess(t('success.quickSync.complete'));
997
+ }
998
+ // ============================================================================
999
+ // Reverse Quick Sync - Import from AI tool directories
1000
+ // ============================================================================
1001
+ async function runReverseSync() {
1002
+ const projectPath = process.cwd();
1003
+ // Create service
1004
+ const reverseSyncService = new reverseSync_1.ReverseQuickSyncService({
1005
+ ui,
1006
+ t,
1007
+ version: version_1.VERSION,
1008
+ });
1009
+ // Step 1: Detect available tools
1010
+ ui.startSpinner(t('prompts.reverseSync.detecting'));
1011
+ const detection = await reverseSyncService.detect(projectPath);
1012
+ ui.stopSpinner();
1013
+ if (detection.summary.totalFiles === 0) {
1014
+ ui.displayWarning(t('prompts.reverseSync.noFilesFound'));
1015
+ return;
1016
+ }
1017
+ // Display detection summary
1018
+ console.log('');
1019
+ console.log(t('prompts.reverseSync.detected'));
1020
+ console.log('');
1021
+ for (const tool of detection.tools) {
1022
+ if (tool.detected) {
1023
+ const parts = [];
1024
+ if (tool.counts.rules > 0)
1025
+ parts.push(`${tool.counts.rules} rules`);
1026
+ if (tool.counts.agents > 0)
1027
+ parts.push(`${tool.counts.agents} agents`);
1028
+ if (tool.counts.skills > 0)
1029
+ parts.push(`${tool.counts.skills} skills`);
1030
+ console.log(` ${theme_1.colors.success('✓')} ${theme_1.colors.primary(tool.displayName)} (${parts.join(', ')})`);
1031
+ }
1032
+ }
1033
+ console.log('');
1034
+ // Step 2: Select components to import
1035
+ const { components } = await inquirer_1.default.prompt([
1036
+ {
1037
+ type: 'checkbox',
1038
+ name: 'components',
1039
+ message: t('prompts.reverseSync.selectComponents'),
1040
+ choices: [
1041
+ {
1042
+ name: `Rules (${detection.summary.totalRules} files)`,
1043
+ value: 'rules',
1044
+ checked: detection.summary.totalRules > 0,
1045
+ disabled: detection.summary.totalRules === 0,
1046
+ },
1047
+ {
1048
+ name: `Agents (${detection.summary.totalAgents} files)`,
1049
+ value: 'agents',
1050
+ checked: detection.summary.totalAgents > 0,
1051
+ disabled: detection.summary.totalAgents === 0,
1052
+ },
1053
+ {
1054
+ name: `Skills (${detection.summary.totalSkills} files)`,
1055
+ value: 'skills',
1056
+ checked: detection.summary.totalSkills > 0,
1057
+ disabled: detection.summary.totalSkills === 0,
1058
+ },
1059
+ ],
1060
+ },
1061
+ ]);
1062
+ if (components.length === 0) {
1063
+ ui.displayWarning(t('prompts.reverseSync.noComponentsSelected'));
1064
+ return;
1065
+ }
1066
+ // Step 3: Select merge strategy
1067
+ const { mergeStrategy } = await inquirer_1.default.prompt([
1068
+ {
1069
+ type: 'list',
1070
+ name: 'mergeStrategy',
1071
+ message: t('prompts.reverseSync.mergeStrategy'),
1072
+ choices: [
1073
+ { name: t('prompts.reverseSync.strategy.skip'), value: 'skip' },
1074
+ { name: t('prompts.reverseSync.strategy.overwrite'), value: 'overwrite' },
1075
+ { name: t('prompts.reverseSync.strategy.merge'), value: 'merge' },
1076
+ { name: t('prompts.reverseSync.strategy.rename'), value: 'rename' },
1077
+ ],
1078
+ },
1079
+ ]);
1080
+ // Step 4: Run import
1081
+ const result = await reverseSyncService.run(projectPath, {
1082
+ skipRules: !components.includes('rules'),
1083
+ skipAgents: !components.includes('agents'),
1084
+ skipSkills: !components.includes('skills'),
1085
+ mergeStrategy,
1086
+ verbose: false,
1087
+ });
1088
+ // Display result
1089
+ const totalImported = result.rulesImported + result.agentsImported + result.skillsImported;
1090
+ if (totalImported > 0) {
1091
+ ui.displaySuccess(t('success.reverseSync.complete', { count: totalImported }));
1092
+ }
1093
+ }
1094
+ // ============================================================================
1095
+ // Settings - Submenu for configuration
1096
+ // ============================================================================
1097
+ async function runSettings() {
1098
+ // Directly show language selection (the only setting currently)
1099
+ await selectLocale();
1100
+ }
1101
+ async function renderStartupSplash(directory, titleOverride) {
1102
+ console.log('');
1103
+ console.log((0, splashScreen_1.renderSplashScreen)({
1104
+ title: titleOverride || (0, splashScreen_1.packageNameToDisplayName)(version_1.PACKAGE_NAME),
1105
+ version: version_1.VERSION,
1106
+ lines: [
1107
+ {
1108
+ label: t('ui.splash.directoryLabel'),
1109
+ value: (0, splashScreen_1.formatSplashDirectory)(directory)
1110
+ }
1111
+ ]
1112
+ }));
1113
+ console.log('');
1114
+ }
1115
+ function filterOutLocaleArgs(args) {
1116
+ const filtered = [];
1117
+ for (let index = 0; index < args.length; index += 1) {
1118
+ const current = args[index];
1119
+ if (current === '--lang' || current === '--language' || current === '-l') {
1120
+ index += 1;
1121
+ continue;
1122
+ }
1123
+ if (current.startsWith('--lang=') || current.startsWith('--language=')) {
1124
+ continue;
1125
+ }
1126
+ filtered.push(current);
1127
+ }
1128
+ return filtered;
1129
+ }
1130
+ async function main() {
1131
+ const userArgs = process.argv.slice(2);
1132
+ void scheduleVersionCheck();
1133
+ const meaningfulArgs = filterOutLocaleArgs(userArgs);
1134
+ if (meaningfulArgs.length === 0) {
1135
+ await runInteractive();
1136
+ return;
1137
+ }
1138
+ await program.parseAsync(process.argv);
1139
+ }
1140
+ /**
1141
+ * Check if an error is from user interrupt (Ctrl+C)
1142
+ */
1143
+ function isUserInterrupt(error) {
1144
+ if (error instanceof Error) {
1145
+ // Inquirer's ExitPromptError when user presses Ctrl+C
1146
+ if (error.name === 'ExitPromptError')
1147
+ return true;
1148
+ // Check message patterns
1149
+ if (error.message.includes('force closed'))
1150
+ return true;
1151
+ if (error.message.includes('User force closed'))
1152
+ return true;
1153
+ }
1154
+ return false;
1155
+ }
1156
+ /**
1157
+ * Handle graceful exit
1158
+ */
1159
+ function handleGracefulExit() {
1160
+ console.log('');
1161
+ ui.displaySuccess(t('success.interactive.goodbye'));
1162
+ process.exit(0);
1163
+ }
1164
+ // Handle SIGINT (Ctrl+C) at process level
1165
+ process.on('SIGINT', () => {
1166
+ handleGracefulExit();
1167
+ });
1168
+ if (require.main === module) {
1169
+ main().catch(error => {
1170
+ if (isUserInterrupt(error)) {
1171
+ handleGracefulExit();
1172
+ }
1173
+ else {
1174
+ ui.displayError(t('errors.cli.executionFailed'), error);
1175
+ process.exit(1);
1176
+ }
1177
+ });
1178
+ }
1179
+ //# sourceMappingURL=index.js.map