@ai-coders/context 0.5.2 → 0.6.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 (325) hide show
  1. package/README.md +244 -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 +96 -1
  69. package/dist/services/ai/schemas.d.ts.map +1 -1
  70. package/dist/services/ai/schemas.js +56 -2
  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 +4 -4
  76. package/dist/services/ai/tools/getCodebaseMapTool.d.ts +17 -0
  77. package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +1 -0
  78. package/dist/services/ai/tools/getCodebaseMapTool.js +115 -0
  79. package/dist/services/ai/tools/getCodebaseMapTool.js.map +1 -0
  80. package/dist/services/ai/tools/index.d.ts +2 -1
  81. package/dist/services/ai/tools/index.d.ts.map +1 -1
  82. package/dist/services/ai/tools/index.js +8 -3
  83. package/dist/services/ai/tools/index.js.map +1 -1
  84. package/dist/services/ai/tools/initializeContextTool.d.ts +9 -1
  85. package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -1
  86. package/dist/services/ai/tools/initializeContextTool.js +33 -3
  87. package/dist/services/ai/tools/initializeContextTool.js.map +1 -1
  88. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +6 -0
  89. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -1
  90. package/dist/services/ai/tools/scaffoldPlanTool.js +16 -3
  91. package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -1
  92. package/dist/services/export/exportRulesService.d.ts +62 -0
  93. package/dist/services/export/exportRulesService.d.ts.map +1 -0
  94. package/dist/services/export/exportRulesService.js +242 -0
  95. package/dist/services/export/exportRulesService.js.map +1 -0
  96. package/dist/services/export/index.d.ts +5 -0
  97. package/dist/services/export/index.d.ts.map +1 -0
  98. package/dist/services/export/index.js +10 -0
  99. package/dist/services/export/index.js.map +1 -0
  100. package/dist/services/export/skillExportService.d.ts +64 -0
  101. package/dist/services/export/skillExportService.d.ts.map +1 -0
  102. package/dist/services/export/skillExportService.js +238 -0
  103. package/dist/services/export/skillExportService.js.map +1 -0
  104. package/dist/services/fill/skillFillService.d.ts +50 -0
  105. package/dist/services/fill/skillFillService.d.ts.map +1 -0
  106. package/dist/services/fill/skillFillService.js +254 -0
  107. package/dist/services/fill/skillFillService.js.map +1 -0
  108. package/dist/services/import/agentsDetector.d.ts +12 -0
  109. package/dist/services/import/agentsDetector.d.ts.map +1 -0
  110. package/dist/services/import/agentsDetector.js +183 -0
  111. package/dist/services/import/agentsDetector.js.map +1 -0
  112. package/dist/services/import/importAgentsService.d.ts +14 -0
  113. package/dist/services/import/importAgentsService.d.ts.map +1 -0
  114. package/dist/services/import/importAgentsService.js +195 -0
  115. package/dist/services/import/importAgentsService.js.map +1 -0
  116. package/dist/services/import/importRulesService.d.ts +17 -0
  117. package/dist/services/import/importRulesService.d.ts.map +1 -0
  118. package/dist/services/import/importRulesService.js +222 -0
  119. package/dist/services/import/importRulesService.js.map +1 -0
  120. package/dist/services/import/index.d.ts +7 -0
  121. package/dist/services/import/index.d.ts.map +1 -0
  122. package/dist/services/import/index.js +28 -0
  123. package/dist/services/import/index.js.map +1 -0
  124. package/dist/services/import/presets.d.ts +8 -0
  125. package/dist/services/import/presets.d.ts.map +1 -0
  126. package/dist/services/import/presets.js +176 -0
  127. package/dist/services/import/presets.js.map +1 -0
  128. package/dist/services/import/rulesDetector.d.ts +16 -0
  129. package/dist/services/import/rulesDetector.d.ts.map +1 -0
  130. package/dist/services/import/rulesDetector.js +278 -0
  131. package/dist/services/import/rulesDetector.js.map +1 -0
  132. package/dist/services/import/types.d.ts +72 -0
  133. package/dist/services/import/types.d.ts.map +1 -0
  134. package/dist/services/import/types.js +3 -0
  135. package/dist/services/import/types.js.map +1 -0
  136. package/dist/services/mcp/mcpServer.d.ts +24 -0
  137. package/dist/services/mcp/mcpServer.d.ts.map +1 -1
  138. package/dist/services/mcp/mcpServer.js +1451 -1
  139. package/dist/services/mcp/mcpServer.js.map +1 -1
  140. package/dist/services/quickSync/index.d.ts +3 -0
  141. package/dist/services/quickSync/index.d.ts.map +1 -0
  142. package/dist/services/quickSync/index.js +7 -0
  143. package/dist/services/quickSync/index.js.map +1 -0
  144. package/dist/services/quickSync/quickSyncService.d.ts +72 -0
  145. package/dist/services/quickSync/quickSyncService.d.ts.map +1 -0
  146. package/dist/services/quickSync/quickSyncService.js +268 -0
  147. package/dist/services/quickSync/quickSyncService.js.map +1 -0
  148. package/dist/services/report/index.d.ts +3 -0
  149. package/dist/services/report/index.d.ts.map +1 -0
  150. package/dist/services/report/index.js +6 -0
  151. package/dist/services/report/index.js.map +1 -0
  152. package/dist/services/report/reportService.d.ts +131 -0
  153. package/dist/services/report/reportService.d.ts.map +1 -0
  154. package/dist/services/report/reportService.js +372 -0
  155. package/dist/services/report/reportService.js.map +1 -0
  156. package/dist/services/semantic/contextBuilder.d.ts +8 -1
  157. package/dist/services/semantic/contextBuilder.d.ts.map +1 -1
  158. package/dist/services/semantic/contextBuilder.js +107 -20
  159. package/dist/services/semantic/contextBuilder.js.map +1 -1
  160. package/dist/services/shared/globPatterns.d.ts +48 -0
  161. package/dist/services/shared/globPatterns.d.ts.map +1 -0
  162. package/dist/services/shared/globPatterns.js +110 -0
  163. package/dist/services/shared/globPatterns.js.map +1 -0
  164. package/dist/services/shared/index.d.ts +10 -0
  165. package/dist/services/shared/index.d.ts.map +1 -0
  166. package/dist/services/shared/index.js +46 -0
  167. package/dist/services/shared/index.js.map +1 -0
  168. package/dist/services/shared/pathHelpers.d.ts +71 -0
  169. package/dist/services/shared/pathHelpers.d.ts.map +1 -0
  170. package/dist/services/shared/pathHelpers.js +162 -0
  171. package/dist/services/shared/pathHelpers.js.map +1 -0
  172. package/dist/services/shared/types.d.ts +74 -0
  173. package/dist/services/shared/types.d.ts.map +1 -0
  174. package/dist/services/shared/types.js +44 -0
  175. package/dist/services/shared/types.js.map +1 -0
  176. package/dist/services/shared/uiHelpers.d.ts +70 -0
  177. package/dist/services/shared/uiHelpers.d.ts.map +1 -0
  178. package/dist/services/shared/uiHelpers.js +131 -0
  179. package/dist/services/shared/uiHelpers.js.map +1 -0
  180. package/dist/services/stack/index.d.ts +6 -0
  181. package/dist/services/stack/index.d.ts.map +1 -0
  182. package/dist/services/stack/index.js +25 -0
  183. package/dist/services/stack/index.js.map +1 -0
  184. package/dist/services/stack/projectTypeClassifier.d.ts +59 -0
  185. package/dist/services/stack/projectTypeClassifier.d.ts.map +1 -0
  186. package/dist/services/stack/projectTypeClassifier.js +242 -0
  187. package/dist/services/stack/projectTypeClassifier.js.map +1 -0
  188. package/dist/services/stack/scaffoldFilter.d.ts +75 -0
  189. package/dist/services/stack/scaffoldFilter.d.ts.map +1 -0
  190. package/dist/services/stack/scaffoldFilter.js +222 -0
  191. package/dist/services/stack/scaffoldFilter.js.map +1 -0
  192. package/dist/services/stack/stackDetector.d.ts +43 -0
  193. package/dist/services/stack/stackDetector.d.ts.map +1 -0
  194. package/dist/services/stack/stackDetector.js +406 -0
  195. package/dist/services/stack/stackDetector.js.map +1 -0
  196. package/dist/services/start/index.d.ts +3 -0
  197. package/dist/services/start/index.d.ts.map +1 -0
  198. package/dist/services/start/index.js +6 -0
  199. package/dist/services/start/index.js.map +1 -0
  200. package/dist/services/start/startService.d.ts +64 -0
  201. package/dist/services/start/startService.d.ts.map +1 -0
  202. package/dist/services/start/startService.js +180 -0
  203. package/dist/services/start/startService.js.map +1 -0
  204. package/dist/services/sync/presets.d.ts.map +1 -1
  205. package/dist/services/sync/presets.js +16 -1
  206. package/dist/services/sync/presets.js.map +1 -1
  207. package/dist/services/sync/types.d.ts +1 -1
  208. package/dist/services/sync/types.d.ts.map +1 -1
  209. package/dist/services/workflow/autoAdvance.d.ts +38 -0
  210. package/dist/services/workflow/autoAdvance.d.ts.map +1 -0
  211. package/dist/services/workflow/autoAdvance.js +219 -0
  212. package/dist/services/workflow/autoAdvance.js.map +1 -0
  213. package/dist/services/workflow/index.d.ts +6 -0
  214. package/dist/services/workflow/index.d.ts.map +1 -0
  215. package/dist/services/workflow/index.js +11 -0
  216. package/dist/services/workflow/index.js.map +1 -0
  217. package/dist/services/workflow/workflowService.d.ts +98 -0
  218. package/dist/services/workflow/workflowService.d.ts.map +1 -0
  219. package/dist/services/workflow/workflowService.js +210 -0
  220. package/dist/services/workflow/workflowService.js.map +1 -0
  221. package/dist/utils/cliUI.d.ts +4 -0
  222. package/dist/utils/cliUI.d.ts.map +1 -1
  223. package/dist/utils/cliUI.js +31 -1
  224. package/dist/utils/cliUI.js.map +1 -1
  225. package/dist/utils/i18n.d.ts +202 -0
  226. package/dist/utils/i18n.d.ts.map +1 -1
  227. package/dist/utils/i18n.js +438 -2
  228. package/dist/utils/i18n.js.map +1 -1
  229. package/dist/utils/theme.d.ts +1 -0
  230. package/dist/utils/theme.d.ts.map +1 -1
  231. package/dist/utils/theme.js +1 -0
  232. package/dist/utils/theme.js.map +1 -1
  233. package/dist/workflow/agents/agentRegistry.d.ts +82 -0
  234. package/dist/workflow/agents/agentRegistry.d.ts.map +1 -0
  235. package/dist/workflow/agents/agentRegistry.js +205 -0
  236. package/dist/workflow/agents/agentRegistry.js.map +1 -0
  237. package/dist/workflow/agents/index.d.ts +7 -0
  238. package/dist/workflow/agents/index.d.ts.map +1 -0
  239. package/dist/workflow/agents/index.js +14 -0
  240. package/dist/workflow/agents/index.js.map +1 -0
  241. package/dist/workflow/collaboration.d.ts +110 -0
  242. package/dist/workflow/collaboration.d.ts.map +1 -0
  243. package/dist/workflow/collaboration.js +301 -0
  244. package/dist/workflow/collaboration.js.map +1 -0
  245. package/dist/workflow/index.d.ts +25 -0
  246. package/dist/workflow/index.d.ts.map +1 -0
  247. package/dist/workflow/index.js +124 -0
  248. package/dist/workflow/index.js.map +1 -0
  249. package/dist/workflow/orchestration/agentOrchestrator.d.ts +68 -0
  250. package/dist/workflow/orchestration/agentOrchestrator.d.ts.map +1 -0
  251. package/dist/workflow/orchestration/agentOrchestrator.js +280 -0
  252. package/dist/workflow/orchestration/agentOrchestrator.js.map +1 -0
  253. package/dist/workflow/orchestration/documentLinker.d.ts +100 -0
  254. package/dist/workflow/orchestration/documentLinker.d.ts.map +1 -0
  255. package/dist/workflow/orchestration/documentLinker.js +266 -0
  256. package/dist/workflow/orchestration/documentLinker.js.map +1 -0
  257. package/dist/workflow/orchestration/index.d.ts +9 -0
  258. package/dist/workflow/orchestration/index.d.ts.map +1 -0
  259. package/dist/workflow/orchestration/index.js +25 -0
  260. package/dist/workflow/orchestration/index.js.map +1 -0
  261. package/dist/workflow/orchestrator.d.ts +99 -0
  262. package/dist/workflow/orchestrator.d.ts.map +1 -0
  263. package/dist/workflow/orchestrator.js +217 -0
  264. package/dist/workflow/orchestrator.js.map +1 -0
  265. package/dist/workflow/phases.d.ts +64 -0
  266. package/dist/workflow/phases.d.ts.map +1 -0
  267. package/dist/workflow/phases.js +151 -0
  268. package/dist/workflow/phases.js.map +1 -0
  269. package/dist/workflow/plans/index.d.ts +8 -0
  270. package/dist/workflow/plans/index.d.ts.map +1 -0
  271. package/dist/workflow/plans/index.js +27 -0
  272. package/dist/workflow/plans/index.js.map +1 -0
  273. package/dist/workflow/plans/planLinker.d.ts +119 -0
  274. package/dist/workflow/plans/planLinker.d.ts.map +1 -0
  275. package/dist/workflow/plans/planLinker.js +499 -0
  276. package/dist/workflow/plans/planLinker.js.map +1 -0
  277. package/dist/workflow/plans/types.d.ts +167 -0
  278. package/dist/workflow/plans/types.d.ts.map +1 -0
  279. package/dist/workflow/plans/types.js +25 -0
  280. package/dist/workflow/plans/types.js.map +1 -0
  281. package/dist/workflow/prevcConfig.d.ts +27 -0
  282. package/dist/workflow/prevcConfig.d.ts.map +1 -0
  283. package/dist/workflow/prevcConfig.js +153 -0
  284. package/dist/workflow/prevcConfig.js.map +1 -0
  285. package/dist/workflow/roles.d.ts +44 -0
  286. package/dist/workflow/roles.d.ts.map +1 -0
  287. package/dist/workflow/roles.js +112 -0
  288. package/dist/workflow/roles.js.map +1 -0
  289. package/dist/workflow/scaling.d.ts +44 -0
  290. package/dist/workflow/scaling.d.ts.map +1 -0
  291. package/dist/workflow/scaling.js +224 -0
  292. package/dist/workflow/scaling.js.map +1 -0
  293. package/dist/workflow/skills/frontmatter.d.ts +23 -0
  294. package/dist/workflow/skills/frontmatter.d.ts.map +1 -0
  295. package/dist/workflow/skills/frontmatter.js +100 -0
  296. package/dist/workflow/skills/frontmatter.js.map +1 -0
  297. package/dist/workflow/skills/index.d.ts +10 -0
  298. package/dist/workflow/skills/index.d.ts.map +1 -0
  299. package/dist/workflow/skills/index.js +22 -0
  300. package/dist/workflow/skills/index.js.map +1 -0
  301. package/dist/workflow/skills/skillRegistry.d.ts +60 -0
  302. package/dist/workflow/skills/skillRegistry.d.ts.map +1 -0
  303. package/dist/workflow/skills/skillRegistry.js +257 -0
  304. package/dist/workflow/skills/skillRegistry.js.map +1 -0
  305. package/dist/workflow/skills/skillTemplates.d.ts +16 -0
  306. package/dist/workflow/skills/skillTemplates.d.ts.map +1 -0
  307. package/dist/workflow/skills/skillTemplates.js +610 -0
  308. package/dist/workflow/skills/skillTemplates.js.map +1 -0
  309. package/dist/workflow/skills/types.d.ts +72 -0
  310. package/dist/workflow/skills/types.d.ts.map +1 -0
  311. package/dist/workflow/skills/types.js +48 -0
  312. package/dist/workflow/skills/types.js.map +1 -0
  313. package/dist/workflow/status/statusManager.d.ts +84 -0
  314. package/dist/workflow/status/statusManager.d.ts.map +1 -0
  315. package/dist/workflow/status/statusManager.js +402 -0
  316. package/dist/workflow/status/statusManager.js.map +1 -0
  317. package/dist/workflow/status/templates.d.ts +40 -0
  318. package/dist/workflow/status/templates.d.ts.map +1 -0
  319. package/dist/workflow/status/templates.js +148 -0
  320. package/dist/workflow/status/templates.js.map +1 -0
  321. package/dist/workflow/types.d.ts +178 -0
  322. package/dist/workflow/types.d.ts.map +1 -0
  323. package/dist/workflow/types.js +25 -0
  324. package/dist/workflow/types.js.map +1 -0
  325. package/package.json +1 -1
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ /**
3
+ * Project Type Classifier
4
+ *
5
+ * Classifies projects into categories based on detected stack information.
6
+ * Used to filter which agents, skills, and documentation are relevant.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FRAMEWORK_CATEGORIES = exports.PROJECT_TYPES = void 0;
10
+ exports.classifyProject = classifyProject;
11
+ exports.detectCLILibraries = detectCLILibraries;
12
+ exports.isLibraryPackage = isLibraryPackage;
13
+ exports.PROJECT_TYPES = [
14
+ 'cli',
15
+ 'web-frontend',
16
+ 'web-backend',
17
+ 'full-stack',
18
+ 'mobile',
19
+ 'library',
20
+ 'monorepo',
21
+ 'desktop',
22
+ 'unknown',
23
+ ];
24
+ /**
25
+ * Framework categories for project type detection.
26
+ * Exported for testing and extensibility.
27
+ */
28
+ exports.FRAMEWORK_CATEGORIES = {
29
+ frontend: [
30
+ 'react',
31
+ 'vue',
32
+ 'angular',
33
+ 'svelte',
34
+ 'nextjs',
35
+ 'nuxt',
36
+ 'gatsby',
37
+ 'remix',
38
+ 'astro',
39
+ 'solid',
40
+ 'qwik',
41
+ ],
42
+ backend: [
43
+ 'express',
44
+ 'nestjs',
45
+ 'fastify',
46
+ 'koa',
47
+ 'hapi',
48
+ 'django',
49
+ 'flask',
50
+ 'fastapi',
51
+ 'rails',
52
+ 'laravel',
53
+ 'spring',
54
+ 'phoenix',
55
+ 'gin',
56
+ 'echo',
57
+ 'fiber',
58
+ ],
59
+ mobile: ['react-native', 'flutter', 'ionic', 'capacitor', 'expo'],
60
+ desktop: ['electron', 'tauri', 'neutralino'],
61
+ cli: [
62
+ 'commander',
63
+ 'yargs',
64
+ 'meow',
65
+ 'inquirer',
66
+ 'prompts',
67
+ 'chalk',
68
+ 'ora',
69
+ 'listr',
70
+ 'oclif',
71
+ 'clipanion',
72
+ 'cac',
73
+ 'arg',
74
+ ],
75
+ monorepo: ['lerna', 'nx', 'turborepo', 'pnpm-workspace', 'rush'],
76
+ };
77
+ /** Confidence thresholds for classification */
78
+ const CONFIDENCE_THRESHOLDS = {
79
+ high: 3, // 3+ reasons = high confidence
80
+ medium: 1, // 1-2 reasons = medium confidence
81
+ };
82
+ /**
83
+ * Helper to check if any framework matches a category (case-insensitive)
84
+ */
85
+ function matchesCategory(frameworks, category) {
86
+ return frameworks.some((f) => category.some((c) => f.toLowerCase().includes(c)));
87
+ }
88
+ /**
89
+ * Helper to get matching frameworks from a category
90
+ */
91
+ function getMatchingFrameworks(frameworks, category) {
92
+ return frameworks.filter((f) => category.some((c) => f.toLowerCase().includes(c)));
93
+ }
94
+ /**
95
+ * Classify a project based on its detected stack
96
+ */
97
+ function classifyProject(stack) {
98
+ const reasoning = [];
99
+ const detectedTypes = [];
100
+ const extStack = stack;
101
+ // Check for monorepo first (can contain other types)
102
+ const hasMonorepoTools = stack.isMonorepo ||
103
+ stack.buildTools.some((t) => exports.FRAMEWORK_CATEGORIES.monorepo.includes(t));
104
+ if (hasMonorepoTools) {
105
+ detectedTypes.push('monorepo');
106
+ reasoning.push('Monorepo tools detected (lerna, nx, turborepo, or pnpm-workspace)');
107
+ }
108
+ // Check for mobile project
109
+ const hasMobileFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.mobile);
110
+ if (hasMobileFramework) {
111
+ detectedTypes.push('mobile');
112
+ const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.mobile);
113
+ reasoning.push(`Mobile framework detected: ${matched.join(', ')}`);
114
+ }
115
+ // Check for desktop project
116
+ const hasDesktopFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.desktop);
117
+ if (hasDesktopFramework) {
118
+ detectedTypes.push('desktop');
119
+ const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.desktop);
120
+ reasoning.push(`Desktop framework detected: ${matched.join(', ')}`);
121
+ }
122
+ // Check for frontend and backend frameworks
123
+ const hasFrontendFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.frontend);
124
+ const hasBackendFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.backend);
125
+ // Determine web project type
126
+ if (hasFrontendFramework && hasBackendFramework) {
127
+ detectedTypes.push('full-stack');
128
+ reasoning.push('Both frontend and backend frameworks detected');
129
+ }
130
+ else if (hasFrontendFramework) {
131
+ detectedTypes.push('web-frontend');
132
+ const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.frontend);
133
+ reasoning.push(`Frontend framework detected: ${matched.join(', ')}`);
134
+ }
135
+ else if (hasBackendFramework) {
136
+ detectedTypes.push('web-backend');
137
+ const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.backend);
138
+ reasoning.push(`Backend framework detected: ${matched.join(', ')}`);
139
+ }
140
+ // Check for CLI project
141
+ const hasCLIIndicators = extStack.hasBinField ||
142
+ (extStack.cliLibraries && extStack.cliLibraries.length > 0) ||
143
+ stack.files.some((f) => f.match(/^(bin\/|cli\.(js|ts)$)/));
144
+ if (hasCLIIndicators && !hasFrontendFramework && !hasMobileFramework) {
145
+ detectedTypes.push('cli');
146
+ if (extStack.hasBinField) {
147
+ reasoning.push('package.json has bin field');
148
+ }
149
+ if (extStack.cliLibraries && extStack.cliLibraries.length > 0) {
150
+ reasoning.push(`CLI libraries detected: ${extStack.cliLibraries.join(', ')}`);
151
+ }
152
+ if (stack.files.some((f) => f.match(/^(bin\/|cli\.(js|ts)$)/))) {
153
+ reasoning.push('CLI entry files detected (bin/ or cli.js/ts)');
154
+ }
155
+ }
156
+ // Check for library/package
157
+ const isLibrary = extStack.hasMainExport &&
158
+ !extStack.hasBinField &&
159
+ !hasFrontendFramework &&
160
+ !hasBackendFramework &&
161
+ !hasMobileFramework;
162
+ if (isLibrary) {
163
+ detectedTypes.push('library');
164
+ reasoning.push('Has main/exports field without bin, frontend, or backend indicators');
165
+ if (extStack.hasTypesField) {
166
+ reasoning.push('Has types/typings field (TypeScript library)');
167
+ }
168
+ }
169
+ // Determine primary and secondary types based on priority
170
+ const { primaryType, secondaryTypes } = prioritizeTypes(detectedTypes);
171
+ // Determine confidence based on reasoning count
172
+ const confidence = calculateConfidence(reasoning.length);
173
+ // Add fallback reasoning if nothing detected
174
+ if (primaryType === 'unknown') {
175
+ reasoning.push('Unable to determine project type from detected stack');
176
+ if (stack.primaryLanguage) {
177
+ reasoning.push(`Primary language: ${stack.primaryLanguage}`);
178
+ }
179
+ }
180
+ return { primaryType, secondaryTypes, confidence, reasoning };
181
+ }
182
+ /**
183
+ * Type priority order for classification.
184
+ * Higher priority types take precedence when multiple are detected.
185
+ */
186
+ const TYPE_PRIORITY = [
187
+ 'monorepo',
188
+ 'full-stack',
189
+ 'mobile',
190
+ 'desktop',
191
+ 'web-frontend',
192
+ 'web-backend',
193
+ 'cli',
194
+ 'library',
195
+ ];
196
+ /**
197
+ * Prioritize detected types and return primary + secondary
198
+ */
199
+ function prioritizeTypes(detectedTypes) {
200
+ let primaryType = 'unknown';
201
+ const secondaryTypes = [];
202
+ for (const type of TYPE_PRIORITY) {
203
+ if (detectedTypes.includes(type)) {
204
+ if (primaryType === 'unknown') {
205
+ primaryType = type;
206
+ }
207
+ else {
208
+ secondaryTypes.push(type);
209
+ }
210
+ }
211
+ }
212
+ return { primaryType, secondaryTypes };
213
+ }
214
+ /**
215
+ * Calculate confidence level based on reasoning count
216
+ */
217
+ function calculateConfidence(reasoningCount) {
218
+ if (reasoningCount >= CONFIDENCE_THRESHOLDS.high) {
219
+ return 'high';
220
+ }
221
+ if (reasoningCount >= CONFIDENCE_THRESHOLDS.medium) {
222
+ return 'medium';
223
+ }
224
+ return 'low';
225
+ }
226
+ /**
227
+ * Get CLI libraries from dependencies
228
+ */
229
+ function detectCLILibraries(dependencies) {
230
+ return exports.FRAMEWORK_CATEGORIES.cli.filter((lib) => lib in dependencies);
231
+ }
232
+ /**
233
+ * Check if package.json indicates a library
234
+ */
235
+ function isLibraryPackage(packageJson) {
236
+ return {
237
+ hasMain: !!(packageJson.main || packageJson.exports),
238
+ hasBin: !!packageJson.bin,
239
+ hasTypes: !!(packageJson.types || packageJson.typings),
240
+ };
241
+ }
242
+ //# sourceMappingURL=projectTypeClassifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectTypeClassifier.js","sourceRoot":"","sources":["../../../src/services/stack/projectTypeClassifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Scaffold Filter
3
+ *
4
+ * Provides filtering logic to determine which agents, docs, and skills
5
+ * are relevant for each project type.
6
+ *
7
+ * Design: Uses a "core + extras" pattern for maintainability.
8
+ * Core items are always included; extras are added per project type.
9
+ */
10
+ import { ProjectType } from './projectTypeClassifier';
11
+ import { AgentType } from '../../generators/agents/agentTypes';
12
+ import { BuiltInSkillType } from '../../workflow/skills/types';
13
+ /**
14
+ * Core agents that are always included regardless of project type
15
+ */
16
+ export declare const CORE_AGENTS: readonly AgentType[];
17
+ /**
18
+ * Core documentation that is always included
19
+ */
20
+ export declare const CORE_DOCS: readonly string[];
21
+ /**
22
+ * Core skills that are always included
23
+ */
24
+ export declare const CORE_SKILLS: readonly BuiltInSkillType[];
25
+ /**
26
+ * Agent filtering matrix - which agents are relevant for each project type
27
+ * Built from CORE_AGENTS + EXTRA_AGENTS_BY_TYPE for maintainability
28
+ */
29
+ export declare const AGENT_FILTER_MATRIX: Record<"unknown" | "cli" | "web-frontend" | "web-backend" | "full-stack" | "mobile" | "library" | "monorepo" | "desktop", Record<"code-reviewer" | "bug-fixer" | "feature-developer" | "refactoring-specialist" | "test-writer" | "documentation-writer" | "performance-optimizer" | "security-auditor" | "backend-specialist" | "frontend-specialist" | "architect-specialist" | "devops-specialist" | "database-specialist" | "mobile-specialist", boolean>>;
30
+ /**
31
+ * Documentation filtering matrix - which docs are relevant for each project type
32
+ * Built from CORE_DOCS + EXTRA_DOCS_BY_TYPE for maintainability
33
+ */
34
+ export declare const DOCS_FILTER_MATRIX: Record<"unknown" | "cli" | "web-frontend" | "web-backend" | "full-stack" | "mobile" | "library" | "monorepo" | "desktop", Record<string, boolean>>;
35
+ /**
36
+ * Skills filtering matrix - which skills are relevant for each project type
37
+ * Built from CORE_SKILLS + EXTRA_SKILLS_BY_TYPE for maintainability
38
+ */
39
+ export declare const SKILLS_FILTER_MATRIX: Record<"unknown" | "cli" | "web-frontend" | "web-backend" | "full-stack" | "mobile" | "library" | "monorepo" | "desktop", Record<"documentation" | "commit-message" | "pr-review" | "code-review" | "test-generation" | "refactoring" | "bug-investigation" | "feature-breakdown" | "api-design" | "security-audit", boolean>>;
40
+ /**
41
+ * Get filtered list of agents for a project type
42
+ * Uses core + extras pattern for efficiency
43
+ */
44
+ export declare function getAgentsForProjectType(projectType: ProjectType): AgentType[];
45
+ /**
46
+ * Get filtered list of documentation keys for a project type
47
+ * Uses core + extras pattern for efficiency
48
+ */
49
+ export declare function getDocsForProjectType(projectType: ProjectType): string[];
50
+ /**
51
+ * Get filtered list of skills for a project type
52
+ * Uses core + extras pattern for efficiency
53
+ */
54
+ export declare function getSkillsForProjectType(projectType: ProjectType): BuiltInSkillType[];
55
+ /**
56
+ * Get all scaffolds filtered by project type
57
+ */
58
+ export declare function getFilteredScaffolds(projectType: ProjectType): {
59
+ agents: AgentType[];
60
+ docs: string[];
61
+ skills: BuiltInSkillType[];
62
+ };
63
+ /**
64
+ * Check if a specific agent should be included for a project type
65
+ */
66
+ export declare function shouldIncludeAgent(projectType: ProjectType, agent: AgentType): boolean;
67
+ /**
68
+ * Check if a specific doc should be included for a project type
69
+ */
70
+ export declare function shouldIncludeDoc(projectType: ProjectType, doc: string): boolean;
71
+ /**
72
+ * Check if a specific skill should be included for a project type
73
+ */
74
+ export declare function shouldIncludeSkill(projectType: ProjectType, skill: BuiltInSkillType): boolean;
75
+ //# sourceMappingURL=scaffoldFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffoldFilter.d.ts","sourceRoot":"","sources":["../../../src/services/stack/scaffoldFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAiB,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAe,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAmB,MAAM,6BAA6B,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAQlC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAK7B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,gBAAgB,EAQzC,CAAC;AA6FX;;;GAGG;AACH,eAAO,MAAM,mBAAmB,gcAAqB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,oJAAoB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gUAAsB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,EAAE,CAG7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,CAGxE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,EAAE,CAGpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG;IAC9D,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAMA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAGtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAG7F"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * Scaffold Filter
4
+ *
5
+ * Provides filtering logic to determine which agents, docs, and skills
6
+ * are relevant for each project type.
7
+ *
8
+ * Design: Uses a "core + extras" pattern for maintainability.
9
+ * Core items are always included; extras are added per project type.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SKILLS_FILTER_MATRIX = exports.DOCS_FILTER_MATRIX = exports.AGENT_FILTER_MATRIX = exports.CORE_SKILLS = exports.CORE_DOCS = exports.CORE_AGENTS = void 0;
13
+ exports.getAgentsForProjectType = getAgentsForProjectType;
14
+ exports.getDocsForProjectType = getDocsForProjectType;
15
+ exports.getSkillsForProjectType = getSkillsForProjectType;
16
+ exports.getFilteredScaffolds = getFilteredScaffolds;
17
+ exports.shouldIncludeAgent = shouldIncludeAgent;
18
+ exports.shouldIncludeDoc = shouldIncludeDoc;
19
+ exports.shouldIncludeSkill = shouldIncludeSkill;
20
+ const projectTypeClassifier_1 = require("./projectTypeClassifier");
21
+ const agentTypes_1 = require("../../generators/agents/agentTypes");
22
+ const guideRegistry_1 = require("../../generators/documentation/guideRegistry");
23
+ const types_1 = require("../../workflow/skills/types");
24
+ /**
25
+ * Core agents that are always included regardless of project type
26
+ */
27
+ exports.CORE_AGENTS = [
28
+ 'code-reviewer',
29
+ 'bug-fixer',
30
+ 'feature-developer',
31
+ 'refactoring-specialist',
32
+ 'test-writer',
33
+ 'documentation-writer',
34
+ 'performance-optimizer',
35
+ ];
36
+ /**
37
+ * Core documentation that is always included
38
+ */
39
+ exports.CORE_DOCS = [
40
+ 'project-overview',
41
+ 'development-workflow',
42
+ 'testing-strategy',
43
+ 'tooling',
44
+ ];
45
+ /**
46
+ * Core skills that are always included
47
+ */
48
+ exports.CORE_SKILLS = [
49
+ 'commit-message',
50
+ 'pr-review',
51
+ 'code-review',
52
+ 'test-generation',
53
+ 'documentation',
54
+ 'refactoring',
55
+ 'bug-investigation',
56
+ ];
57
+ /**
58
+ * Extra agents to include for specific project types (beyond core)
59
+ */
60
+ const EXTRA_AGENTS_BY_TYPE = {
61
+ cli: [],
62
+ 'web-frontend': ['security-auditor', 'frontend-specialist', 'architect-specialist', 'devops-specialist'],
63
+ 'web-backend': ['security-auditor', 'backend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist'],
64
+ 'full-stack': ['security-auditor', 'backend-specialist', 'frontend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist'],
65
+ mobile: ['security-auditor', 'architect-specialist', 'devops-specialist', 'mobile-specialist'],
66
+ library: [],
67
+ monorepo: ['security-auditor', 'backend-specialist', 'frontend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist', 'mobile-specialist'],
68
+ desktop: ['security-auditor', 'frontend-specialist', 'architect-specialist', 'devops-specialist'],
69
+ unknown: ['security-auditor', 'backend-specialist', 'frontend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist', 'mobile-specialist'],
70
+ };
71
+ /**
72
+ * Extra docs to include for specific project types (beyond core)
73
+ */
74
+ const EXTRA_DOCS_BY_TYPE = {
75
+ cli: [],
76
+ 'web-frontend': ['architecture', 'glossary', 'security'],
77
+ 'web-backend': ['architecture', 'glossary', 'data-flow', 'security'],
78
+ 'full-stack': ['architecture', 'glossary', 'data-flow', 'security'],
79
+ mobile: ['architecture', 'glossary', 'security'],
80
+ library: [],
81
+ monorepo: ['architecture', 'glossary', 'data-flow', 'security'],
82
+ desktop: ['architecture', 'glossary', 'security'],
83
+ unknown: ['architecture', 'glossary', 'data-flow', 'security'],
84
+ };
85
+ /**
86
+ * Extra skills to include for specific project types (beyond core)
87
+ */
88
+ const EXTRA_SKILLS_BY_TYPE = {
89
+ cli: [],
90
+ 'web-frontend': ['feature-breakdown', 'security-audit'],
91
+ 'web-backend': ['feature-breakdown', 'api-design', 'security-audit'],
92
+ 'full-stack': ['feature-breakdown', 'api-design', 'security-audit'],
93
+ mobile: ['feature-breakdown', 'security-audit'],
94
+ library: ['api-design'],
95
+ monorepo: ['feature-breakdown', 'api-design', 'security-audit'],
96
+ desktop: ['feature-breakdown', 'security-audit'],
97
+ unknown: ['feature-breakdown', 'api-design', 'security-audit'],
98
+ };
99
+ // Build filter matrices from core + extras (for backward compatibility with existing exports)
100
+ function buildAgentMatrix() {
101
+ const matrix = {};
102
+ for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
103
+ const included = new Set([...exports.CORE_AGENTS, ...EXTRA_AGENTS_BY_TYPE[projectType]]);
104
+ matrix[projectType] = {};
105
+ for (const agent of agentTypes_1.AGENT_TYPES) {
106
+ matrix[projectType][agent] = included.has(agent);
107
+ }
108
+ }
109
+ return matrix;
110
+ }
111
+ function buildDocsMatrix() {
112
+ const matrix = {};
113
+ for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
114
+ const included = new Set([...exports.CORE_DOCS, ...EXTRA_DOCS_BY_TYPE[projectType]]);
115
+ matrix[projectType] = {};
116
+ for (const doc of guideRegistry_1.DOCUMENT_GUIDE_KEYS) {
117
+ matrix[projectType][doc] = included.has(doc);
118
+ }
119
+ }
120
+ return matrix;
121
+ }
122
+ function buildSkillsMatrix() {
123
+ const matrix = {};
124
+ for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
125
+ const included = new Set([...exports.CORE_SKILLS, ...EXTRA_SKILLS_BY_TYPE[projectType]]);
126
+ matrix[projectType] = {};
127
+ for (const skill of types_1.BUILT_IN_SKILLS) {
128
+ matrix[projectType][skill] = included.has(skill);
129
+ }
130
+ }
131
+ return matrix;
132
+ }
133
+ /**
134
+ * Agent filtering matrix - which agents are relevant for each project type
135
+ * Built from CORE_AGENTS + EXTRA_AGENTS_BY_TYPE for maintainability
136
+ */
137
+ exports.AGENT_FILTER_MATRIX = buildAgentMatrix();
138
+ /**
139
+ * Documentation filtering matrix - which docs are relevant for each project type
140
+ * Built from CORE_DOCS + EXTRA_DOCS_BY_TYPE for maintainability
141
+ */
142
+ exports.DOCS_FILTER_MATRIX = buildDocsMatrix();
143
+ /**
144
+ * Skills filtering matrix - which skills are relevant for each project type
145
+ * Built from CORE_SKILLS + EXTRA_SKILLS_BY_TYPE for maintainability
146
+ */
147
+ exports.SKILLS_FILTER_MATRIX = buildSkillsMatrix();
148
+ /**
149
+ * Get filtered list of agents for a project type
150
+ * Uses core + extras pattern for efficiency
151
+ */
152
+ function getAgentsForProjectType(projectType) {
153
+ const extras = EXTRA_AGENTS_BY_TYPE[projectType] ?? [];
154
+ return [...exports.CORE_AGENTS, ...extras];
155
+ }
156
+ /**
157
+ * Get filtered list of documentation keys for a project type
158
+ * Uses core + extras pattern for efficiency
159
+ */
160
+ function getDocsForProjectType(projectType) {
161
+ const extras = EXTRA_DOCS_BY_TYPE[projectType] ?? [];
162
+ return [...exports.CORE_DOCS, ...extras];
163
+ }
164
+ /**
165
+ * Get filtered list of skills for a project type
166
+ * Uses core + extras pattern for efficiency
167
+ */
168
+ function getSkillsForProjectType(projectType) {
169
+ const extras = EXTRA_SKILLS_BY_TYPE[projectType] ?? [];
170
+ return [...exports.CORE_SKILLS, ...extras];
171
+ }
172
+ /**
173
+ * Get all scaffolds filtered by project type
174
+ */
175
+ function getFilteredScaffolds(projectType) {
176
+ return {
177
+ agents: getAgentsForProjectType(projectType),
178
+ docs: getDocsForProjectType(projectType),
179
+ skills: getSkillsForProjectType(projectType),
180
+ };
181
+ }
182
+ /**
183
+ * Check if a specific agent should be included for a project type
184
+ */
185
+ function shouldIncludeAgent(projectType, agent) {
186
+ const included = new Set(getAgentsForProjectType(projectType));
187
+ return included.has(agent);
188
+ }
189
+ /**
190
+ * Check if a specific doc should be included for a project type
191
+ */
192
+ function shouldIncludeDoc(projectType, doc) {
193
+ const included = new Set(getDocsForProjectType(projectType));
194
+ return included.has(doc);
195
+ }
196
+ /**
197
+ * Check if a specific skill should be included for a project type
198
+ */
199
+ function shouldIncludeSkill(projectType, skill) {
200
+ const included = new Set(getSkillsForProjectType(projectType));
201
+ return included.has(skill);
202
+ }
203
+ /**
204
+ * Validation: Ensure all project types have entries in extras maps.
205
+ * Called at module load time to catch configuration errors early.
206
+ */
207
+ function validateConfiguration() {
208
+ for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
209
+ if (!(projectType in EXTRA_AGENTS_BY_TYPE)) {
210
+ throw new Error(`Missing EXTRA_AGENTS_BY_TYPE entry for project type: ${projectType}`);
211
+ }
212
+ if (!(projectType in EXTRA_DOCS_BY_TYPE)) {
213
+ throw new Error(`Missing EXTRA_DOCS_BY_TYPE entry for project type: ${projectType}`);
214
+ }
215
+ if (!(projectType in EXTRA_SKILLS_BY_TYPE)) {
216
+ throw new Error(`Missing EXTRA_SKILLS_BY_TYPE entry for project type: ${projectType}`);
217
+ }
218
+ }
219
+ }
220
+ // Validate configuration at module load time
221
+ validateConfiguration();
222
+ //# sourceMappingURL=scaffoldFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffoldFilter.js","sourceRoot":"","sources":["../../../src/services/stack/scaffoldFilter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Stack Detector Service
3
+ *
4
+ * Detects the technology stack of a project for intelligent defaults.
5
+ */
6
+ export interface StackInfo {
7
+ primaryLanguage: string | null;
8
+ languages: string[];
9
+ frameworks: string[];
10
+ buildTools: string[];
11
+ testFrameworks: string[];
12
+ files: string[];
13
+ packageManager: string | null;
14
+ isMonorepo: boolean;
15
+ hasDocker: boolean;
16
+ hasCI: boolean;
17
+ hasBinField?: boolean;
18
+ hasMainExport?: boolean;
19
+ hasTypesField?: boolean;
20
+ cliLibraries?: string[];
21
+ }
22
+ export declare class StackDetector {
23
+ /**
24
+ * Detect the technology stack of a project
25
+ */
26
+ detect(repoPath: string): Promise<StackInfo>;
27
+ /**
28
+ * Get recommended agents based on stack
29
+ */
30
+ getRecommendedAgents(stack: StackInfo): string[];
31
+ /**
32
+ * Get recommended rules based on stack
33
+ */
34
+ getRecommendedRules(stack: StackInfo): string[];
35
+ private checkFileExists;
36
+ private countLanguagesByExtension;
37
+ private hasCI;
38
+ /**
39
+ * Analyze package.json for CLI, library, and other indicators
40
+ */
41
+ private analyzePackageJson;
42
+ }
43
+ //# sourceMappingURL=stackDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stackDetector.d.ts","sourceRoot":"","sources":["../../../src/services/stack/stackDetector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IAEf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAyJD,qBAAa,aAAa;IACxB;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsFlD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE;IAiChD;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE;YAsBjC,eAAe;YAoBf,yBAAyB;YAwBzB,KAAK;IAqBnB;;OAEG;YACW,kBAAkB;CA6DjC"}