@ai-coders/context 0.5.2 → 0.6.1

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 (328) hide show
  1. package/README.md +247 -12
  2. package/dist/generators/agents/agentGenerator.d.ts +3 -0
  3. package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
  4. package/dist/generators/agents/agentGenerator.js +13 -7
  5. package/dist/generators/agents/agentGenerator.js.map +1 -1
  6. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -1
  7. package/dist/generators/agents/templates/playbookTemplate.js +3 -1
  8. package/dist/generators/agents/templates/playbookTemplate.js.map +1 -1
  9. package/dist/generators/documentation/codebaseMapGenerator.d.ts +98 -0
  10. package/dist/generators/documentation/codebaseMapGenerator.d.ts.map +1 -0
  11. package/dist/generators/documentation/codebaseMapGenerator.js +247 -0
  12. package/dist/generators/documentation/codebaseMapGenerator.js.map +1 -0
  13. package/dist/generators/documentation/documentationGenerator.d.ts +2 -0
  14. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
  15. package/dist/generators/documentation/documentationGenerator.js +20 -1
  16. package/dist/generators/documentation/documentationGenerator.js.map +1 -1
  17. package/dist/generators/documentation/index.d.ts +2 -0
  18. package/dist/generators/documentation/index.d.ts.map +1 -1
  19. package/dist/generators/documentation/index.js +3 -1
  20. package/dist/generators/documentation/index.js.map +1 -1
  21. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -1
  22. package/dist/generators/documentation/templates/architectureTemplate.js +2 -31
  23. package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -1
  24. package/dist/generators/documentation/templates/common.d.ts +4 -1
  25. package/dist/generators/documentation/templates/common.d.ts.map +1 -1
  26. package/dist/generators/documentation/templates/common.js +4 -2
  27. package/dist/generators/documentation/templates/common.js.map +1 -1
  28. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -1
  29. package/dist/generators/plans/templates/planTemplate.js +46 -2
  30. package/dist/generators/plans/templates/planTemplate.js.map +1 -1
  31. package/dist/generators/skills/index.d.ts +7 -0
  32. package/dist/generators/skills/index.d.ts.map +1 -0
  33. package/dist/generators/skills/index.js +15 -0
  34. package/dist/generators/skills/index.js.map +1 -0
  35. package/dist/generators/skills/skillGenerator.d.ts +53 -0
  36. package/dist/generators/skills/skillGenerator.d.ts.map +1 -0
  37. package/dist/generators/skills/skillGenerator.js +149 -0
  38. package/dist/generators/skills/skillGenerator.js.map +1 -0
  39. package/dist/generators/skills/templates/indexTemplate.d.ts +13 -0
  40. package/dist/generators/skills/templates/indexTemplate.d.ts.map +1 -0
  41. package/dist/generators/skills/templates/indexTemplate.js +102 -0
  42. package/dist/generators/skills/templates/indexTemplate.js.map +1 -0
  43. package/dist/generators/skills/templates/skillTemplate.d.ts +20 -0
  44. package/dist/generators/skills/templates/skillTemplate.d.ts.map +1 -0
  45. package/dist/generators/skills/templates/skillTemplate.js +85 -0
  46. package/dist/generators/skills/templates/skillTemplate.js.map +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1315 -43
  49. package/dist/index.js.map +1 -1
  50. package/dist/services/ai/agentEvents.d.ts +1 -1
  51. package/dist/services/ai/agentEvents.d.ts.map +1 -1
  52. package/dist/services/ai/agents/index.d.ts +2 -0
  53. package/dist/services/ai/agents/index.d.ts.map +1 -1
  54. package/dist/services/ai/agents/index.js +3 -1
  55. package/dist/services/ai/agents/index.js.map +1 -1
  56. package/dist/services/ai/agents/skillAgent.d.ts +49 -0
  57. package/dist/services/ai/agents/skillAgent.d.ts.map +1 -0
  58. package/dist/services/ai/agents/skillAgent.js +179 -0
  59. package/dist/services/ai/agents/skillAgent.js.map +1 -0
  60. package/dist/services/ai/prompts/index.d.ts +1 -1
  61. package/dist/services/ai/prompts/index.d.ts.map +1 -1
  62. package/dist/services/ai/prompts/index.js +2 -1
  63. package/dist/services/ai/prompts/index.js.map +1 -1
  64. package/dist/services/ai/prompts/sharedPrompts.d.ts +4 -0
  65. package/dist/services/ai/prompts/sharedPrompts.d.ts.map +1 -1
  66. package/dist/services/ai/prompts/sharedPrompts.js +33 -0
  67. package/dist/services/ai/prompts/sharedPrompts.js.map +1 -1
  68. package/dist/services/ai/schemas.d.ts +98 -1
  69. package/dist/services/ai/schemas.d.ts.map +1 -1
  70. package/dist/services/ai/schemas.js +61 -3
  71. package/dist/services/ai/schemas.js.map +1 -1
  72. package/dist/services/ai/toolRegistry.d.ts.map +1 -1
  73. package/dist/services/ai/toolRegistry.js +17 -0
  74. package/dist/services/ai/toolRegistry.js.map +1 -1
  75. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +21 -4
  76. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +1 -1
  77. package/dist/services/ai/tools/fillScaffoldingTool.js +17 -0
  78. package/dist/services/ai/tools/fillScaffoldingTool.js.map +1 -1
  79. package/dist/services/ai/tools/getCodebaseMapTool.d.ts +17 -0
  80. package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +1 -0
  81. package/dist/services/ai/tools/getCodebaseMapTool.js +115 -0
  82. package/dist/services/ai/tools/getCodebaseMapTool.js.map +1 -0
  83. package/dist/services/ai/tools/index.d.ts +3 -2
  84. package/dist/services/ai/tools/index.d.ts.map +1 -1
  85. package/dist/services/ai/tools/index.js +12 -3
  86. package/dist/services/ai/tools/index.js.map +1 -1
  87. package/dist/services/ai/tools/initializeContextTool.d.ts +22 -4
  88. package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -1
  89. package/dist/services/ai/tools/initializeContextTool.js +201 -16
  90. package/dist/services/ai/tools/initializeContextTool.js.map +1 -1
  91. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +11 -0
  92. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -1
  93. package/dist/services/ai/tools/scaffoldPlanTool.js +79 -7
  94. package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -1
  95. package/dist/services/export/exportRulesService.d.ts +62 -0
  96. package/dist/services/export/exportRulesService.d.ts.map +1 -0
  97. package/dist/services/export/exportRulesService.js +242 -0
  98. package/dist/services/export/exportRulesService.js.map +1 -0
  99. package/dist/services/export/index.d.ts +5 -0
  100. package/dist/services/export/index.d.ts.map +1 -0
  101. package/dist/services/export/index.js +10 -0
  102. package/dist/services/export/index.js.map +1 -0
  103. package/dist/services/export/skillExportService.d.ts +64 -0
  104. package/dist/services/export/skillExportService.d.ts.map +1 -0
  105. package/dist/services/export/skillExportService.js +238 -0
  106. package/dist/services/export/skillExportService.js.map +1 -0
  107. package/dist/services/fill/skillFillService.d.ts +50 -0
  108. package/dist/services/fill/skillFillService.d.ts.map +1 -0
  109. package/dist/services/fill/skillFillService.js +254 -0
  110. package/dist/services/fill/skillFillService.js.map +1 -0
  111. package/dist/services/import/agentsDetector.d.ts +12 -0
  112. package/dist/services/import/agentsDetector.d.ts.map +1 -0
  113. package/dist/services/import/agentsDetector.js +183 -0
  114. package/dist/services/import/agentsDetector.js.map +1 -0
  115. package/dist/services/import/importAgentsService.d.ts +14 -0
  116. package/dist/services/import/importAgentsService.d.ts.map +1 -0
  117. package/dist/services/import/importAgentsService.js +195 -0
  118. package/dist/services/import/importAgentsService.js.map +1 -0
  119. package/dist/services/import/importRulesService.d.ts +17 -0
  120. package/dist/services/import/importRulesService.d.ts.map +1 -0
  121. package/dist/services/import/importRulesService.js +222 -0
  122. package/dist/services/import/importRulesService.js.map +1 -0
  123. package/dist/services/import/index.d.ts +7 -0
  124. package/dist/services/import/index.d.ts.map +1 -0
  125. package/dist/services/import/index.js +28 -0
  126. package/dist/services/import/index.js.map +1 -0
  127. package/dist/services/import/presets.d.ts +8 -0
  128. package/dist/services/import/presets.d.ts.map +1 -0
  129. package/dist/services/import/presets.js +176 -0
  130. package/dist/services/import/presets.js.map +1 -0
  131. package/dist/services/import/rulesDetector.d.ts +16 -0
  132. package/dist/services/import/rulesDetector.d.ts.map +1 -0
  133. package/dist/services/import/rulesDetector.js +278 -0
  134. package/dist/services/import/rulesDetector.js.map +1 -0
  135. package/dist/services/import/types.d.ts +72 -0
  136. package/dist/services/import/types.d.ts.map +1 -0
  137. package/dist/services/import/types.js +3 -0
  138. package/dist/services/import/types.js.map +1 -0
  139. package/dist/services/mcp/mcpServer.d.ts +24 -0
  140. package/dist/services/mcp/mcpServer.d.ts.map +1 -1
  141. package/dist/services/mcp/mcpServer.js +1651 -7
  142. package/dist/services/mcp/mcpServer.js.map +1 -1
  143. package/dist/services/quickSync/index.d.ts +3 -0
  144. package/dist/services/quickSync/index.d.ts.map +1 -0
  145. package/dist/services/quickSync/index.js +7 -0
  146. package/dist/services/quickSync/index.js.map +1 -0
  147. package/dist/services/quickSync/quickSyncService.d.ts +72 -0
  148. package/dist/services/quickSync/quickSyncService.d.ts.map +1 -0
  149. package/dist/services/quickSync/quickSyncService.js +268 -0
  150. package/dist/services/quickSync/quickSyncService.js.map +1 -0
  151. package/dist/services/report/index.d.ts +3 -0
  152. package/dist/services/report/index.d.ts.map +1 -0
  153. package/dist/services/report/index.js +6 -0
  154. package/dist/services/report/index.js.map +1 -0
  155. package/dist/services/report/reportService.d.ts +131 -0
  156. package/dist/services/report/reportService.d.ts.map +1 -0
  157. package/dist/services/report/reportService.js +372 -0
  158. package/dist/services/report/reportService.js.map +1 -0
  159. package/dist/services/semantic/contextBuilder.d.ts +8 -1
  160. package/dist/services/semantic/contextBuilder.d.ts.map +1 -1
  161. package/dist/services/semantic/contextBuilder.js +107 -20
  162. package/dist/services/semantic/contextBuilder.js.map +1 -1
  163. package/dist/services/shared/globPatterns.d.ts +48 -0
  164. package/dist/services/shared/globPatterns.d.ts.map +1 -0
  165. package/dist/services/shared/globPatterns.js +110 -0
  166. package/dist/services/shared/globPatterns.js.map +1 -0
  167. package/dist/services/shared/index.d.ts +10 -0
  168. package/dist/services/shared/index.d.ts.map +1 -0
  169. package/dist/services/shared/index.js +46 -0
  170. package/dist/services/shared/index.js.map +1 -0
  171. package/dist/services/shared/pathHelpers.d.ts +71 -0
  172. package/dist/services/shared/pathHelpers.d.ts.map +1 -0
  173. package/dist/services/shared/pathHelpers.js +162 -0
  174. package/dist/services/shared/pathHelpers.js.map +1 -0
  175. package/dist/services/shared/types.d.ts +74 -0
  176. package/dist/services/shared/types.d.ts.map +1 -0
  177. package/dist/services/shared/types.js +44 -0
  178. package/dist/services/shared/types.js.map +1 -0
  179. package/dist/services/shared/uiHelpers.d.ts +70 -0
  180. package/dist/services/shared/uiHelpers.d.ts.map +1 -0
  181. package/dist/services/shared/uiHelpers.js +131 -0
  182. package/dist/services/shared/uiHelpers.js.map +1 -0
  183. package/dist/services/stack/index.d.ts +6 -0
  184. package/dist/services/stack/index.d.ts.map +1 -0
  185. package/dist/services/stack/index.js +25 -0
  186. package/dist/services/stack/index.js.map +1 -0
  187. package/dist/services/stack/projectTypeClassifier.d.ts +59 -0
  188. package/dist/services/stack/projectTypeClassifier.d.ts.map +1 -0
  189. package/dist/services/stack/projectTypeClassifier.js +242 -0
  190. package/dist/services/stack/projectTypeClassifier.js.map +1 -0
  191. package/dist/services/stack/scaffoldFilter.d.ts +75 -0
  192. package/dist/services/stack/scaffoldFilter.d.ts.map +1 -0
  193. package/dist/services/stack/scaffoldFilter.js +222 -0
  194. package/dist/services/stack/scaffoldFilter.js.map +1 -0
  195. package/dist/services/stack/stackDetector.d.ts +43 -0
  196. package/dist/services/stack/stackDetector.d.ts.map +1 -0
  197. package/dist/services/stack/stackDetector.js +406 -0
  198. package/dist/services/stack/stackDetector.js.map +1 -0
  199. package/dist/services/start/index.d.ts +3 -0
  200. package/dist/services/start/index.d.ts.map +1 -0
  201. package/dist/services/start/index.js +6 -0
  202. package/dist/services/start/index.js.map +1 -0
  203. package/dist/services/start/startService.d.ts +64 -0
  204. package/dist/services/start/startService.d.ts.map +1 -0
  205. package/dist/services/start/startService.js +180 -0
  206. package/dist/services/start/startService.js.map +1 -0
  207. package/dist/services/sync/presets.d.ts.map +1 -1
  208. package/dist/services/sync/presets.js +16 -1
  209. package/dist/services/sync/presets.js.map +1 -1
  210. package/dist/services/sync/types.d.ts +1 -1
  211. package/dist/services/sync/types.d.ts.map +1 -1
  212. package/dist/services/workflow/autoAdvance.d.ts +38 -0
  213. package/dist/services/workflow/autoAdvance.d.ts.map +1 -0
  214. package/dist/services/workflow/autoAdvance.js +219 -0
  215. package/dist/services/workflow/autoAdvance.js.map +1 -0
  216. package/dist/services/workflow/index.d.ts +6 -0
  217. package/dist/services/workflow/index.d.ts.map +1 -0
  218. package/dist/services/workflow/index.js +11 -0
  219. package/dist/services/workflow/index.js.map +1 -0
  220. package/dist/services/workflow/workflowService.d.ts +98 -0
  221. package/dist/services/workflow/workflowService.d.ts.map +1 -0
  222. package/dist/services/workflow/workflowService.js +210 -0
  223. package/dist/services/workflow/workflowService.js.map +1 -0
  224. package/dist/utils/cliUI.d.ts +4 -0
  225. package/dist/utils/cliUI.d.ts.map +1 -1
  226. package/dist/utils/cliUI.js +31 -1
  227. package/dist/utils/cliUI.js.map +1 -1
  228. package/dist/utils/i18n.d.ts +202 -0
  229. package/dist/utils/i18n.d.ts.map +1 -1
  230. package/dist/utils/i18n.js +438 -2
  231. package/dist/utils/i18n.js.map +1 -1
  232. package/dist/utils/theme.d.ts +1 -0
  233. package/dist/utils/theme.d.ts.map +1 -1
  234. package/dist/utils/theme.js +1 -0
  235. package/dist/utils/theme.js.map +1 -1
  236. package/dist/workflow/agents/agentRegistry.d.ts +82 -0
  237. package/dist/workflow/agents/agentRegistry.d.ts.map +1 -0
  238. package/dist/workflow/agents/agentRegistry.js +205 -0
  239. package/dist/workflow/agents/agentRegistry.js.map +1 -0
  240. package/dist/workflow/agents/index.d.ts +7 -0
  241. package/dist/workflow/agents/index.d.ts.map +1 -0
  242. package/dist/workflow/agents/index.js +14 -0
  243. package/dist/workflow/agents/index.js.map +1 -0
  244. package/dist/workflow/collaboration.d.ts +110 -0
  245. package/dist/workflow/collaboration.d.ts.map +1 -0
  246. package/dist/workflow/collaboration.js +301 -0
  247. package/dist/workflow/collaboration.js.map +1 -0
  248. package/dist/workflow/index.d.ts +25 -0
  249. package/dist/workflow/index.d.ts.map +1 -0
  250. package/dist/workflow/index.js +124 -0
  251. package/dist/workflow/index.js.map +1 -0
  252. package/dist/workflow/orchestration/agentOrchestrator.d.ts +68 -0
  253. package/dist/workflow/orchestration/agentOrchestrator.d.ts.map +1 -0
  254. package/dist/workflow/orchestration/agentOrchestrator.js +280 -0
  255. package/dist/workflow/orchestration/agentOrchestrator.js.map +1 -0
  256. package/dist/workflow/orchestration/documentLinker.d.ts +100 -0
  257. package/dist/workflow/orchestration/documentLinker.d.ts.map +1 -0
  258. package/dist/workflow/orchestration/documentLinker.js +266 -0
  259. package/dist/workflow/orchestration/documentLinker.js.map +1 -0
  260. package/dist/workflow/orchestration/index.d.ts +9 -0
  261. package/dist/workflow/orchestration/index.d.ts.map +1 -0
  262. package/dist/workflow/orchestration/index.js +25 -0
  263. package/dist/workflow/orchestration/index.js.map +1 -0
  264. package/dist/workflow/orchestrator.d.ts +99 -0
  265. package/dist/workflow/orchestrator.d.ts.map +1 -0
  266. package/dist/workflow/orchestrator.js +217 -0
  267. package/dist/workflow/orchestrator.js.map +1 -0
  268. package/dist/workflow/phases.d.ts +64 -0
  269. package/dist/workflow/phases.d.ts.map +1 -0
  270. package/dist/workflow/phases.js +151 -0
  271. package/dist/workflow/phases.js.map +1 -0
  272. package/dist/workflow/plans/index.d.ts +8 -0
  273. package/dist/workflow/plans/index.d.ts.map +1 -0
  274. package/dist/workflow/plans/index.js +27 -0
  275. package/dist/workflow/plans/index.js.map +1 -0
  276. package/dist/workflow/plans/planLinker.d.ts +119 -0
  277. package/dist/workflow/plans/planLinker.d.ts.map +1 -0
  278. package/dist/workflow/plans/planLinker.js +499 -0
  279. package/dist/workflow/plans/planLinker.js.map +1 -0
  280. package/dist/workflow/plans/types.d.ts +167 -0
  281. package/dist/workflow/plans/types.d.ts.map +1 -0
  282. package/dist/workflow/plans/types.js +25 -0
  283. package/dist/workflow/plans/types.js.map +1 -0
  284. package/dist/workflow/prevcConfig.d.ts +27 -0
  285. package/dist/workflow/prevcConfig.d.ts.map +1 -0
  286. package/dist/workflow/prevcConfig.js +153 -0
  287. package/dist/workflow/prevcConfig.js.map +1 -0
  288. package/dist/workflow/roles.d.ts +44 -0
  289. package/dist/workflow/roles.d.ts.map +1 -0
  290. package/dist/workflow/roles.js +112 -0
  291. package/dist/workflow/roles.js.map +1 -0
  292. package/dist/workflow/scaling.d.ts +44 -0
  293. package/dist/workflow/scaling.d.ts.map +1 -0
  294. package/dist/workflow/scaling.js +224 -0
  295. package/dist/workflow/scaling.js.map +1 -0
  296. package/dist/workflow/skills/frontmatter.d.ts +23 -0
  297. package/dist/workflow/skills/frontmatter.d.ts.map +1 -0
  298. package/dist/workflow/skills/frontmatter.js +100 -0
  299. package/dist/workflow/skills/frontmatter.js.map +1 -0
  300. package/dist/workflow/skills/index.d.ts +10 -0
  301. package/dist/workflow/skills/index.d.ts.map +1 -0
  302. package/dist/workflow/skills/index.js +22 -0
  303. package/dist/workflow/skills/index.js.map +1 -0
  304. package/dist/workflow/skills/skillRegistry.d.ts +60 -0
  305. package/dist/workflow/skills/skillRegistry.d.ts.map +1 -0
  306. package/dist/workflow/skills/skillRegistry.js +257 -0
  307. package/dist/workflow/skills/skillRegistry.js.map +1 -0
  308. package/dist/workflow/skills/skillTemplates.d.ts +16 -0
  309. package/dist/workflow/skills/skillTemplates.d.ts.map +1 -0
  310. package/dist/workflow/skills/skillTemplates.js +610 -0
  311. package/dist/workflow/skills/skillTemplates.js.map +1 -0
  312. package/dist/workflow/skills/types.d.ts +72 -0
  313. package/dist/workflow/skills/types.d.ts.map +1 -0
  314. package/dist/workflow/skills/types.js +48 -0
  315. package/dist/workflow/skills/types.js.map +1 -0
  316. package/dist/workflow/status/statusManager.d.ts +84 -0
  317. package/dist/workflow/status/statusManager.d.ts.map +1 -0
  318. package/dist/workflow/status/statusManager.js +402 -0
  319. package/dist/workflow/status/statusManager.js.map +1 -0
  320. package/dist/workflow/status/templates.d.ts +40 -0
  321. package/dist/workflow/status/templates.d.ts.map +1 -0
  322. package/dist/workflow/status/templates.js +148 -0
  323. package/dist/workflow/status/templates.js.map +1 -0
  324. package/dist/workflow/types.d.ts +178 -0
  325. package/dist/workflow/types.d.ts.map +1 -0
  326. package/dist/workflow/types.js +25 -0
  327. package/dist/workflow/types.js.map +1 -0
  328. package/package.json +1 -1
@@ -39,17 +39,29 @@ const path = __importStar(require("path"));
39
39
  const fs = __importStar(require("fs-extra"));
40
40
  const schemas_1 = require("../schemas");
41
41
  const planGenerator_1 = require("../../../generators/plans/planGenerator");
42
+ const stack_1 = require("../../stack");
42
43
  exports.scaffoldPlanTool = (0, ai_1.tool)({
43
- description: 'Create a plan template in .context/plans/',
44
+ description: `Create a plan template in .context/plans/.
45
+ When autoFill is true (default), returns semantic context and fill instructions.
46
+ The AI agent MUST then fill the plan with specific implementation details.`,
44
47
  inputSchema: schemas_1.ScaffoldPlanInputSchema,
45
48
  execute: async (input) => {
46
- const { planName, repoPath: customRepoPath, outputDir: customOutputDir, title, summary, semantic = true } = input;
49
+ const { planName, repoPath: customRepoPath, outputDir: customOutputDir, title, summary, semantic = true, autoFill = true, } = input;
47
50
  const repoPath = customRepoPath ? path.resolve(customRepoPath) : process.cwd();
48
51
  const outputDir = customOutputDir
49
52
  ? path.resolve(customOutputDir)
50
53
  : path.resolve(repoPath, '.context');
51
54
  try {
55
+ // Detect project type for intelligent agent/doc filtering
56
+ const stackDetector = new stack_1.StackDetector();
57
+ const stackInfo = await stackDetector.detect(repoPath);
58
+ const classification = (0, stack_1.classifyProject)(stackInfo);
59
+ // Get filtered agents and docs based on project type
60
+ const filteredAgents = (0, stack_1.getAgentsForProjectType)(classification.primaryType);
61
+ const filteredDocs = (0, stack_1.getDocsForProjectType)(classification.primaryType);
52
62
  const planGenerator = new planGenerator_1.PlanGenerator();
63
+ // When autoFill is true, enable semantic analysis for richer content
64
+ const enableSemantic = autoFill && semantic;
53
65
  const result = await planGenerator.generatePlan({
54
66
  planName,
55
67
  outputDir,
@@ -57,17 +69,28 @@ exports.scaffoldPlanTool = (0, ai_1.tool)({
57
69
  summary,
58
70
  force: true, // MCP calls should always overwrite (non-interactive)
59
71
  verbose: false,
60
- semantic,
61
- projectPath: semantic ? repoPath : undefined,
62
- selectedAgentTypes: undefined, // Include all agents
63
- selectedDocKeys: undefined // Include all docs
72
+ semantic: enableSemantic,
73
+ projectPath: enableSemantic ? repoPath : undefined,
74
+ selectedAgentTypes: filteredAgents,
75
+ selectedDocKeys: filteredDocs,
64
76
  });
65
77
  // Read the generated content to return
66
78
  const planContent = await fs.readFile(result.planPath, 'utf-8');
79
+ // Build fill instructions for the plan
80
+ const fillInstructions = autoFill ? buildPlanFillInstructions(planName, result.planPath, summary) : undefined;
67
81
  return {
68
82
  success: true,
69
83
  planPath: result.planPath,
70
- planContent
84
+ planContent,
85
+ classification: {
86
+ projectType: classification.primaryType,
87
+ confidence: classification.confidence,
88
+ reasoning: classification.reasoning,
89
+ },
90
+ fillInstructions,
91
+ instructions: autoFill
92
+ ? 'IMPORTANT: Review the generated plan and fill in the specific implementation details. The plan template has been created with codebase context - you must now customize it with the actual tasks, phases, and deliverables for this feature/project.'
93
+ : 'The plan template has been created. You can customize it manually or use fillScaffolding to get suggested content.',
71
94
  };
72
95
  }
73
96
  catch (error) {
@@ -78,4 +101,53 @@ exports.scaffoldPlanTool = (0, ai_1.tool)({
78
101
  }
79
102
  }
80
103
  });
104
+ /**
105
+ * Build fill instructions for a plan file
106
+ */
107
+ function buildPlanFillInstructions(planName, planPath, summary) {
108
+ const lines = [];
109
+ lines.push('# Plan Fill Instructions');
110
+ lines.push('');
111
+ lines.push(`A plan template has been created at: \`${planPath}\``);
112
+ lines.push('');
113
+ lines.push('You MUST now fill in the following sections with specific implementation details:');
114
+ lines.push('');
115
+ lines.push('## Required Sections to Fill');
116
+ lines.push('');
117
+ lines.push('### 1. Goal & Scope');
118
+ lines.push('- Define the specific objective of this plan');
119
+ lines.push('- List what is included and excluded from scope');
120
+ if (summary) {
121
+ lines.push(`- Initial summary provided: "${summary}"`);
122
+ }
123
+ lines.push('');
124
+ lines.push('### 2. Phases');
125
+ lines.push('- Break down the implementation into logical phases');
126
+ lines.push('- Each phase should have:');
127
+ lines.push(' - Clear objective');
128
+ lines.push(' - Specific steps with owners (agent types)');
129
+ lines.push(' - Deliverables and evidence of completion');
130
+ lines.push(' - Git commit checkpoint message');
131
+ lines.push('');
132
+ lines.push('### 3. Agent Lineup');
133
+ lines.push('- Assign specific agents to phases');
134
+ lines.push('- Define focus areas for each agent');
135
+ lines.push('');
136
+ lines.push('### 4. Documentation Touchpoints');
137
+ lines.push('- List which docs need to be updated');
138
+ lines.push('- Specify which sections and why');
139
+ lines.push('');
140
+ lines.push('### 5. Success Criteria');
141
+ lines.push('- Define measurable success criteria');
142
+ lines.push('- Include testing and validation requirements');
143
+ lines.push('');
144
+ lines.push('## Action Required');
145
+ lines.push('');
146
+ lines.push('1. Read the generated plan template');
147
+ lines.push('2. Fill in each section with specific, actionable content');
148
+ lines.push('3. Write the completed plan back to the file');
149
+ lines.push('');
150
+ lines.push('DO NOT leave placeholder text. Each section must have concrete, implementation-ready content.');
151
+ return lines.join('\n');
152
+ }
81
153
  //# sourceMappingURL=scaffoldPlanTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffoldPlanTool.js","sourceRoot":"","sources":["../../../../src/services/ai/tools/scaffoldPlanTool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAA0B;AAC1B,2CAA6B;AAC7B,6CAA+B;AAC/B,wCAA6E;AAC7E,2EAAwE;AAE3D,QAAA,gBAAgB,GAAG,IAAA,SAAI,EAAC;IACnC,WAAW,EAAE,2CAA2C;IACxD,WAAW,EAAE,iCAAuB;IACpC,OAAO,EAAE,KAAK,EAAE,KAAwB,EAAE,EAAE;QAC1C,MAAM,EACJ,QAAQ,EACR,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,eAAe,EAC1B,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,IAAI,EAChB,GAAG,KAAK,CAAC;QAEV,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/E,MAAM,SAAS,GAAG,eAAe;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,6BAAa,EAAE,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC;gBAC9C,QAAQ;gBACR,SAAS;gBACT,KAAK;gBACL,OAAO;gBACP,KAAK,EAAE,IAAI,EAAE,sDAAsD;gBACnE,OAAO,EAAE,KAAK;gBACd,QAAQ;gBACR,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBAC5C,kBAAkB,EAAE,SAAS,EAAE,qBAAqB;gBACpD,eAAe,EAAE,SAAS,CAAC,mBAAmB;aAC/C,CAAC,CAAC;YAEH,uCAAuC;YACvC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"scaffoldPlanTool.js","sourceRoot":"","sources":["../../../../src/services/ai/tools/scaffoldPlanTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Export Rules Service
3
+ *
4
+ * Bidirectional sync: export rules from .context to AI tool directories.
5
+ */
6
+ import { BaseDependencies, OperationResult } from '../shared';
7
+ export type ExportRulesServiceDependencies = BaseDependencies;
8
+ export interface ExportTarget {
9
+ name: string;
10
+ path: string;
11
+ format: 'single' | 'directory';
12
+ filename?: string;
13
+ description: string;
14
+ }
15
+ export interface ExportOptions {
16
+ source?: string;
17
+ targets?: string[];
18
+ preset?: string;
19
+ force?: boolean;
20
+ dryRun?: boolean;
21
+ verbose?: boolean;
22
+ }
23
+ export interface ExportResult extends OperationResult {
24
+ targets: string[];
25
+ }
26
+ /**
27
+ * Export presets for different AI tools
28
+ */
29
+ export declare const EXPORT_PRESETS: Record<string, ExportTarget[]>;
30
+ export declare class ExportRulesService {
31
+ private deps;
32
+ constructor(deps: ExportRulesServiceDependencies);
33
+ /**
34
+ * Export rules to AI tool directories
35
+ */
36
+ run(repoPath: string, options?: ExportOptions): Promise<ExportResult>;
37
+ /**
38
+ * Export to a single target
39
+ */
40
+ private exportToTarget;
41
+ /**
42
+ * Resolve export targets from options
43
+ */
44
+ private resolveTargets;
45
+ /**
46
+ * Read source rules from .context/docs
47
+ */
48
+ private readSourceRules;
49
+ /**
50
+ * Combine multiple rules into a single content block
51
+ */
52
+ private combineRules;
53
+ /**
54
+ * Export rules to a directory (multiple files)
55
+ */
56
+ private exportToDirectory;
57
+ /**
58
+ * Get available presets
59
+ */
60
+ getAvailablePresets(): string[];
61
+ }
62
+ //# sourceMappingURL=exportRulesService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportRulesService.d.ts","sourceRoot":"","sources":["../../../src/services/export/exportRulesService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,gBAAgB,EAChB,eAAe,EAUhB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAQD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAkBzD,CAAC;AAOF,qBAAa,kBAAkB;IACjB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,8BAA8B;IAExD;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAgD/E;;OAEG;YACW,cAAc;IA6D5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;YACW,eAAe;IAgC7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;CAGhC"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ /**
3
+ * Export Rules Service
4
+ *
5
+ * Bidirectional sync: export rules from .context to AI tool directories.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.ExportRulesService = exports.EXPORT_PRESETS = void 0;
42
+ const path = __importStar(require("path"));
43
+ const fs = __importStar(require("fs-extra"));
44
+ const shared_1 = require("../shared");
45
+ /**
46
+ * Export presets for different AI tools
47
+ */
48
+ exports.EXPORT_PRESETS = {
49
+ cursor: [
50
+ { name: 'cursorrules', path: '.cursorrules', format: 'single', description: 'Cursor AI rules file' },
51
+ { name: 'cursor-rules-dir', path: '.cursor/rules', format: 'directory', description: 'Cursor AI rules directory' },
52
+ ],
53
+ claude: [
54
+ { name: 'claude-md', path: 'CLAUDE.md', format: 'single', description: 'Claude Code main rules file' },
55
+ ],
56
+ github: [
57
+ { name: 'copilot-instructions', path: '.github/copilot-instructions.md', format: 'single', description: 'GitHub Copilot instructions' },
58
+ ],
59
+ windsurf: [
60
+ { name: 'windsurf-rules-dir', path: '.windsurf/rules', format: 'single', description: 'Windsurf rules file' },
61
+ ],
62
+ agents: [
63
+ { name: 'agents-md', path: 'AGENTS.md', format: 'single', description: 'Universal AGENTS.md file' },
64
+ ],
65
+ all: [], // Populated dynamically below
66
+ };
67
+ // Populate 'all' preset
68
+ exports.EXPORT_PRESETS.all = Object.entries(exports.EXPORT_PRESETS)
69
+ .filter(([key]) => key !== 'all')
70
+ .flatMap(([, targets]) => targets);
71
+ class ExportRulesService {
72
+ constructor(deps) {
73
+ this.deps = deps;
74
+ }
75
+ /**
76
+ * Export rules to AI tool directories
77
+ */
78
+ async run(repoPath, options = {}) {
79
+ const absolutePath = path.resolve(repoPath);
80
+ const sourcePath = (0, shared_1.resolveAbsolutePath)(options.source, '.context/docs', absolutePath);
81
+ const result = {
82
+ ...(0, shared_1.createEmptyResult)(),
83
+ targets: [],
84
+ };
85
+ // Determine targets
86
+ const targets = this.resolveTargets(options);
87
+ if (targets.length === 0) {
88
+ this.deps.ui.displayError(this.deps.t('errors.export.noTargets'));
89
+ return result;
90
+ }
91
+ // Read source rules
92
+ const rules = await this.readSourceRules(sourcePath);
93
+ if (rules.length === 0) {
94
+ this.deps.ui.displayError(this.deps.t('errors.export.noRules'));
95
+ return result;
96
+ }
97
+ // Combine rules into single content
98
+ const combinedContent = this.combineRules(rules);
99
+ // Export to each target
100
+ for (const target of targets) {
101
+ await this.exportToTarget(absolutePath, target, rules, combinedContent, options, result);
102
+ }
103
+ // Display summary
104
+ if (!options.dryRun && result.filesCreated > 0) {
105
+ this.deps.ui.displaySuccess(this.deps.t('success.export.completed', { count: result.filesCreated }));
106
+ }
107
+ if (options.verbose) {
108
+ (0, shared_1.displayOperationSummary)(result, {
109
+ dryRun: options.dryRun,
110
+ labels: { created: 'Exported' },
111
+ });
112
+ }
113
+ return result;
114
+ }
115
+ /**
116
+ * Export to a single target
117
+ */
118
+ async exportToTarget(repoPath, target, rules, combinedContent, options, result) {
119
+ const targetPath = path.join(repoPath, target.path);
120
+ try {
121
+ this.deps.ui.startSpinner(this.deps.t('spinner.export.exporting', { target: target.name }));
122
+ if (options.dryRun) {
123
+ this.deps.ui.updateSpinner(this.deps.t('spinner.export.dryRun', { target: targetPath }), 'success');
124
+ result.filesSkipped++;
125
+ this.deps.ui.stopSpinner();
126
+ return;
127
+ }
128
+ // Check if target exists and force is not set
129
+ if (await (0, shared_1.pathExists)(targetPath) && !options.force) {
130
+ this.deps.ui.updateSpinner(this.deps.t('spinner.export.skipped', { target: targetPath }), 'warn');
131
+ result.filesSkipped++;
132
+ this.deps.ui.stopSpinner();
133
+ return;
134
+ }
135
+ // Export based on format
136
+ if (target.format === 'single') {
137
+ await (0, shared_1.ensureParentDirectory)(targetPath);
138
+ await fs.writeFile(targetPath, combinedContent, 'utf-8');
139
+ }
140
+ else {
141
+ await this.exportToDirectory(targetPath, rules);
142
+ }
143
+ result.filesCreated++;
144
+ result.targets.push(targetPath);
145
+ this.deps.ui.updateSpinner(this.deps.t('spinner.export.exported', { target: targetPath }), 'success');
146
+ }
147
+ catch (error) {
148
+ (0, shared_1.addError)(result, target.name, error);
149
+ this.deps.ui.updateSpinner(this.deps.t('spinner.export.failed', { target: target.name }), 'fail');
150
+ }
151
+ finally {
152
+ this.deps.ui.stopSpinner();
153
+ }
154
+ }
155
+ /**
156
+ * Resolve export targets from options
157
+ */
158
+ resolveTargets(options) {
159
+ if (options.preset) {
160
+ const preset = exports.EXPORT_PRESETS[options.preset.toLowerCase()];
161
+ if (preset)
162
+ return preset;
163
+ }
164
+ if (options.targets?.length) {
165
+ return options.targets.map((t) => ({
166
+ name: path.basename(t),
167
+ path: t,
168
+ format: 'single',
169
+ description: 'Custom target',
170
+ }));
171
+ }
172
+ // Default: export to common targets
173
+ return [
174
+ exports.EXPORT_PRESETS.cursor[0],
175
+ ...exports.EXPORT_PRESETS.claude,
176
+ ...exports.EXPORT_PRESETS.github,
177
+ ];
178
+ }
179
+ /**
180
+ * Read source rules from .context/docs
181
+ */
182
+ async readSourceRules(sourcePath) {
183
+ const rules = [];
184
+ const patterns = ['**/*rules*.md', '**/*instructions*.md', '**/*conventions*.md', '**/README.md'];
185
+ try {
186
+ const files = await (0, shared_1.globFiles)(`**/*.md`, sourcePath, { absolute: true });
187
+ for (const file of files) {
188
+ const basename = (0, shared_1.getBasename)(file).toLowerCase();
189
+ const isRuleFile = patterns.some(p => basename.includes('rules') ||
190
+ basename.includes('instructions') ||
191
+ basename.includes('conventions') ||
192
+ basename === 'readme');
193
+ if (isRuleFile || patterns.length === 0) {
194
+ try {
195
+ const content = await fs.readFile(file, 'utf-8');
196
+ rules.push({ name: (0, shared_1.getBasename)(file), content, path: file });
197
+ }
198
+ catch {
199
+ // Skip unreadable files
200
+ }
201
+ }
202
+ }
203
+ }
204
+ catch {
205
+ // Source path doesn't exist
206
+ }
207
+ return rules;
208
+ }
209
+ /**
210
+ * Combine multiple rules into a single content block
211
+ */
212
+ combineRules(rules) {
213
+ const lines = [
214
+ '# Project Rules and Guidelines',
215
+ '',
216
+ `> Auto-generated from .context/docs on ${new Date().toISOString()}`,
217
+ '',
218
+ ];
219
+ for (const rule of rules) {
220
+ lines.push(`## ${rule.name}`, '', rule.content, '');
221
+ }
222
+ return lines.join('\n');
223
+ }
224
+ /**
225
+ * Export rules to a directory (multiple files)
226
+ */
227
+ async exportToDirectory(targetPath, rules) {
228
+ await (0, shared_1.ensureDirectory)(targetPath);
229
+ for (const rule of rules) {
230
+ const filePath = path.join(targetPath, `${rule.name}.md`);
231
+ await fs.writeFile(filePath, rule.content, 'utf-8');
232
+ }
233
+ }
234
+ /**
235
+ * Get available presets
236
+ */
237
+ getAvailablePresets() {
238
+ return Object.keys(exports.EXPORT_PRESETS);
239
+ }
240
+ }
241
+ exports.ExportRulesService = ExportRulesService;
242
+ //# sourceMappingURL=exportRulesService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportRulesService.js","sourceRoot":"","sources":["../../../src/services/export/exportRulesService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { ExportRulesService, EXPORT_PRESETS } from './exportRulesService';
2
+ export type { ExportOptions, ExportResult, ExportTarget, ExportRulesServiceDependencies } from './exportRulesService';
3
+ export { SkillExportService, SKILL_EXPORT_PRESETS } from './skillExportService';
4
+ export type { SkillExportOptions, SkillExportResult, SkillExportTarget, SkillExportServiceDependencies } from './skillExportService';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/export/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAEtH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SKILL_EXPORT_PRESETS = exports.SkillExportService = exports.EXPORT_PRESETS = exports.ExportRulesService = void 0;
4
+ var exportRulesService_1 = require("./exportRulesService");
5
+ Object.defineProperty(exports, "ExportRulesService", { enumerable: true, get: function () { return exportRulesService_1.ExportRulesService; } });
6
+ Object.defineProperty(exports, "EXPORT_PRESETS", { enumerable: true, get: function () { return exportRulesService_1.EXPORT_PRESETS; } });
7
+ var skillExportService_1 = require("./skillExportService");
8
+ Object.defineProperty(exports, "SkillExportService", { enumerable: true, get: function () { return skillExportService_1.SkillExportService; } });
9
+ Object.defineProperty(exports, "SKILL_EXPORT_PRESETS", { enumerable: true, get: function () { return skillExportService_1.SKILL_EXPORT_PRESETS; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/export/index.ts"],"names":[],"mappings":";;;AAAA,2DAA0E;AAAjE,wHAAA,kBAAkB,OAAA;AAAE,oHAAA,cAAc,OAAA;AAG3C,2DAAgF;AAAvE,wHAAA,kBAAkB,OAAA;AAAE,0HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Skill Export Service
3
+ *
4
+ * Export skills from .context/skills to AI tool skill directories.
5
+ */
6
+ import { BaseDependencies, OperationResult } from '../shared';
7
+ export type SkillExportServiceDependencies = BaseDependencies;
8
+ export interface SkillExportTarget {
9
+ name: string;
10
+ path: string;
11
+ description: string;
12
+ }
13
+ export interface SkillExportOptions {
14
+ targets?: string[];
15
+ preset?: string;
16
+ force?: boolean;
17
+ dryRun?: boolean;
18
+ verbose?: boolean;
19
+ /** Only export specific skills */
20
+ skills?: string[];
21
+ /** Include built-in skills even if not scaffolded */
22
+ includeBuiltIn?: boolean;
23
+ }
24
+ export interface SkillExportResult extends OperationResult {
25
+ targets: string[];
26
+ skillsExported: string[];
27
+ }
28
+ /**
29
+ * Skill export presets for different AI tools
30
+ */
31
+ export declare const SKILL_EXPORT_PRESETS: Record<string, SkillExportTarget[]>;
32
+ export declare class SkillExportService {
33
+ private deps;
34
+ constructor(deps: SkillExportServiceDependencies);
35
+ /**
36
+ * Export skills to AI tool directories
37
+ */
38
+ run(repoPath: string, options?: SkillExportOptions): Promise<SkillExportResult>;
39
+ /**
40
+ * Get skills to export
41
+ */
42
+ private getSkillsToExport;
43
+ /**
44
+ * Export to a single target
45
+ */
46
+ private exportToTarget;
47
+ /**
48
+ * Export a single skill to target directory
49
+ */
50
+ private exportSkill;
51
+ /**
52
+ * Generate SKILL.md content with frontmatter
53
+ */
54
+ private generateSkillContent;
55
+ /**
56
+ * Resolve export targets from options
57
+ */
58
+ private resolveTargets;
59
+ /**
60
+ * Get available presets
61
+ */
62
+ getAvailablePresets(): string[];
63
+ }
64
+ //# sourceMappingURL=skillExportService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillExportService.d.ts","sourceRoot":"","sources":["../../../src/services/export/skillExportService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,gBAAgB,EAChB,eAAe,EAMhB,MAAM,WAAW,CAAC;AAGnB,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAWpE,CAAC;AAOF,qBAAa,kBAAkB;IACjB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,8BAA8B;IAExD;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6CzF;;OAEG;YACW,iBAAiB;IAsC/B;;OAEG;YACW,cAAc;IAqC5B;;OAEG;YACW,WAAW;IAyCzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;CAGhC"}