@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,162 @@
1
+ "use strict";
2
+ /**
3
+ * Shared Path Helpers
4
+ *
5
+ * Common path resolution and context path utilities.
6
+ * Reduces duplication of path handling across services.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.resolveContextPaths = resolveContextPaths;
43
+ exports.resolveAbsolutePath = resolveAbsolutePath;
44
+ exports.ensureDirectory = ensureDirectory;
45
+ exports.ensureParentDirectory = ensureParentDirectory;
46
+ exports.getRelativePath = getRelativePath;
47
+ exports.pathExists = pathExists;
48
+ exports.isDirectory = isDirectory;
49
+ exports.isFile = isFile;
50
+ exports.normalizePath = normalizePath;
51
+ exports.deduplicatePaths = deduplicatePaths;
52
+ exports.getExtension = getExtension;
53
+ exports.getBasename = getBasename;
54
+ exports.joinPaths = joinPaths;
55
+ const path = __importStar(require("path"));
56
+ const fs = __importStar(require("fs-extra"));
57
+ /**
58
+ * Resolve all context paths for a repository
59
+ */
60
+ function resolveContextPaths(repoPath) {
61
+ const absolutePath = path.resolve(repoPath);
62
+ const contextPath = path.join(absolutePath, '.context');
63
+ return {
64
+ absolutePath,
65
+ contextPath,
66
+ docsPath: path.join(contextPath, 'docs'),
67
+ agentsPath: path.join(contextPath, 'agents'),
68
+ plansPath: path.join(contextPath, 'plans'),
69
+ rulesPath: path.join(contextPath, 'rules'),
70
+ workflowPath: path.join(contextPath, 'workflow'),
71
+ };
72
+ }
73
+ /**
74
+ * Resolve an absolute path from input
75
+ */
76
+ function resolveAbsolutePath(inputPath, defaultPath, basePath) {
77
+ const resolved = inputPath || defaultPath;
78
+ return path.isAbsolute(resolved)
79
+ ? resolved
80
+ : path.join(basePath, resolved);
81
+ }
82
+ /**
83
+ * Ensure a directory exists
84
+ */
85
+ async function ensureDirectory(dirPath) {
86
+ await fs.ensureDir(dirPath);
87
+ }
88
+ /**
89
+ * Ensure parent directory of a file exists
90
+ */
91
+ async function ensureParentDirectory(filePath) {
92
+ await fs.ensureDir(path.dirname(filePath));
93
+ }
94
+ /**
95
+ * Get relative path from base
96
+ */
97
+ function getRelativePath(fullPath, basePath) {
98
+ return path.relative(basePath, fullPath);
99
+ }
100
+ /**
101
+ * Check if path exists
102
+ */
103
+ async function pathExists(targetPath) {
104
+ return fs.pathExists(targetPath);
105
+ }
106
+ /**
107
+ * Check if path is a directory
108
+ */
109
+ async function isDirectory(targetPath) {
110
+ try {
111
+ const stat = await fs.stat(targetPath);
112
+ return stat.isDirectory();
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ }
118
+ /**
119
+ * Check if path is a file
120
+ */
121
+ async function isFile(targetPath) {
122
+ try {
123
+ const stat = await fs.stat(targetPath);
124
+ return stat.isFile();
125
+ }
126
+ catch {
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * Normalize path separators to forward slashes
132
+ */
133
+ function normalizePath(inputPath) {
134
+ return inputPath.replace(/\\/g, '/');
135
+ }
136
+ /**
137
+ * Deduplicate an array of paths
138
+ */
139
+ function deduplicatePaths(paths) {
140
+ return [...new Set(paths.map((p) => path.normalize(p)))];
141
+ }
142
+ /**
143
+ * Get file extension without dot
144
+ */
145
+ function getExtension(filePath) {
146
+ const ext = path.extname(filePath);
147
+ return ext.startsWith('.') ? ext.slice(1) : ext;
148
+ }
149
+ /**
150
+ * Get filename without extension
151
+ */
152
+ function getBasename(filePath) {
153
+ return path.basename(filePath, path.extname(filePath));
154
+ }
155
+ /**
156
+ * Join paths safely, handling undefined values
157
+ */
158
+ function joinPaths(...parts) {
159
+ const validParts = parts.filter((p) => p !== undefined && p !== '');
160
+ return path.join(...validParts);
161
+ }
162
+ //# sourceMappingURL=pathHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathHelpers.js","sourceRoot":"","sources":["../../../src/services/shared/pathHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Shared Service Types
3
+ *
4
+ * Common interfaces and types used across all services.
5
+ * Reduces duplication of dependency injection patterns and result types.
6
+ */
7
+ import type { CLIInterface } from '../../utils/cliUI';
8
+ import type { TranslateFn } from '../../utils/i18n';
9
+ /**
10
+ * Base dependencies for all services
11
+ */
12
+ export interface BaseDependencies {
13
+ ui: CLIInterface;
14
+ t: TranslateFn;
15
+ version: string;
16
+ }
17
+ /**
18
+ * Extended dependencies for services that use AI
19
+ */
20
+ export interface AIDependencies extends BaseDependencies {
21
+ defaultModel: string;
22
+ }
23
+ /**
24
+ * Common result type for file operations (import, export, sync)
25
+ */
26
+ export interface OperationResult {
27
+ filesCreated: number;
28
+ filesSkipped: number;
29
+ filesFailed: number;
30
+ errors: OperationError[];
31
+ }
32
+ /**
33
+ * Error entry in operation results
34
+ */
35
+ export interface OperationError {
36
+ file: string;
37
+ error: string;
38
+ }
39
+ /**
40
+ * Base file information for detection services
41
+ */
42
+ export interface FileInfo {
43
+ name: string;
44
+ path: string;
45
+ relativePath: string;
46
+ }
47
+ /**
48
+ * Detection result for file discovery services
49
+ */
50
+ export interface DetectionResult<T extends FileInfo = FileInfo> {
51
+ files: T[];
52
+ sources: string[];
53
+ }
54
+ /**
55
+ * Options for dry-run operations
56
+ */
57
+ export interface DryRunOptions {
58
+ dryRun?: boolean;
59
+ verbose?: boolean;
60
+ force?: boolean;
61
+ }
62
+ /**
63
+ * Create an empty operation result
64
+ */
65
+ export declare function createEmptyResult(): OperationResult;
66
+ /**
67
+ * Merge multiple operation results
68
+ */
69
+ export declare function mergeResults(...results: OperationResult[]): OperationResult;
70
+ /**
71
+ * Add an error to operation result
72
+ */
73
+ export declare function addError(result: OperationResult, file: string, error: unknown): void;
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,YAAY,CAAC;IACjB,CAAC,EAAE,WAAW,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC5D,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,CAOnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,CAU3E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAMN"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Shared Service Types
4
+ *
5
+ * Common interfaces and types used across all services.
6
+ * Reduces duplication of dependency injection patterns and result types.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createEmptyResult = createEmptyResult;
10
+ exports.mergeResults = mergeResults;
11
+ exports.addError = addError;
12
+ /**
13
+ * Create an empty operation result
14
+ */
15
+ function createEmptyResult() {
16
+ return {
17
+ filesCreated: 0,
18
+ filesSkipped: 0,
19
+ filesFailed: 0,
20
+ errors: [],
21
+ };
22
+ }
23
+ /**
24
+ * Merge multiple operation results
25
+ */
26
+ function mergeResults(...results) {
27
+ return results.reduce((acc, result) => ({
28
+ filesCreated: acc.filesCreated + result.filesCreated,
29
+ filesSkipped: acc.filesSkipped + result.filesSkipped,
30
+ filesFailed: acc.filesFailed + result.filesFailed,
31
+ errors: [...acc.errors, ...result.errors],
32
+ }), createEmptyResult());
33
+ }
34
+ /**
35
+ * Add an error to operation result
36
+ */
37
+ function addError(result, file, error) {
38
+ result.filesFailed++;
39
+ result.errors.push({
40
+ file,
41
+ error: error instanceof Error ? error.message : String(error),
42
+ });
43
+ }
44
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/shared/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoEH,8CAOC;AAKD,oCAUC;AAKD,4BAUC;AAxCD;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO;QACL,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,GAAG,OAA0B;IACxD,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,YAAY,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;QACpD,YAAY,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;QACpD,WAAW,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;QACjD,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;KAC1C,CAAC,EACF,iBAAiB,EAAE,CACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CACtB,MAAuB,EACvB,IAAY,EACZ,KAAc;IAEd,MAAM,CAAC,WAAW,EAAE,CAAC;IACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjB,IAAI;QACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Shared UI Helpers
3
+ *
4
+ * Common UI interaction patterns used across services.
5
+ * Reduces duplication of spinner and summary display logic.
6
+ */
7
+ import type { CLIInterface } from '../../utils/cliUI';
8
+ import type { OperationResult } from './types';
9
+ /**
10
+ * Status types for spinner updates
11
+ */
12
+ export type SpinnerStatus = 'success' | 'fail' | 'warn' | 'info';
13
+ /**
14
+ * Execute an async operation with spinner feedback
15
+ */
16
+ export declare function withSpinner<T>(ui: CLIInterface, message: string, fn: () => Promise<T>, options?: {
17
+ successMessage?: string;
18
+ failMessage?: string;
19
+ successStatus?: SpinnerStatus;
20
+ failStatus?: SpinnerStatus;
21
+ }): Promise<{
22
+ result: T | null;
23
+ success: boolean;
24
+ error?: Error;
25
+ }>;
26
+ /**
27
+ * Display operation summary with consistent formatting
28
+ */
29
+ export declare function displayOperationSummary(result: OperationResult, options?: {
30
+ title?: string;
31
+ dryRun?: boolean;
32
+ showErrors?: boolean;
33
+ labels?: {
34
+ created?: string;
35
+ skipped?: string;
36
+ failed?: string;
37
+ };
38
+ }): void;
39
+ /**
40
+ * Display a visual progress bar
41
+ */
42
+ export declare function displayProgressBar(current: number, total: number, options?: {
43
+ width?: number;
44
+ label?: string;
45
+ showPercentage?: boolean;
46
+ }): string;
47
+ /**
48
+ * Display a visual phase indicator
49
+ */
50
+ export declare function displayPhaseIndicator(phases: Array<{
51
+ id: string;
52
+ status: 'completed' | 'in_progress' | 'pending' | 'skipped';
53
+ }>, options?: {
54
+ currentLabel?: string;
55
+ symbols?: {
56
+ completed?: string;
57
+ inProgress?: string;
58
+ pending?: string;
59
+ skipped?: string;
60
+ };
61
+ }): string;
62
+ /**
63
+ * Create a box with content
64
+ */
65
+ export declare function createBox(content: string[], options?: {
66
+ width?: number;
67
+ title?: string;
68
+ padding?: number;
69
+ }): string;
70
+ //# sourceMappingURL=uiHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiHelpers.d.ts","sourceRoot":"","sources":["../../../src/services/shared/uiHelpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,GACA,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CA+BhE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,GACA,IAAI,CA2BN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GACA,MAAM,CAoBR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC,EAC1F,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,GACA,MAAM,CA6BR;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,MAAM,CA8BR"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * Shared UI Helpers
4
+ *
5
+ * Common UI interaction patterns used across services.
6
+ * Reduces duplication of spinner and summary display logic.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.withSpinner = withSpinner;
10
+ exports.displayOperationSummary = displayOperationSummary;
11
+ exports.displayProgressBar = displayProgressBar;
12
+ exports.displayPhaseIndicator = displayPhaseIndicator;
13
+ exports.createBox = createBox;
14
+ const theme_1 = require("../../utils/theme");
15
+ /**
16
+ * Execute an async operation with spinner feedback
17
+ */
18
+ async function withSpinner(ui, message, fn, options) {
19
+ const { successMessage, failMessage, successStatus = 'success', failStatus = 'fail', } = options || {};
20
+ ui.startSpinner(message);
21
+ try {
22
+ const result = await fn();
23
+ if (successMessage) {
24
+ ui.updateSpinner(successMessage, successStatus);
25
+ }
26
+ ui.stopSpinner();
27
+ return { result, success: true };
28
+ }
29
+ catch (error) {
30
+ if (failMessage) {
31
+ ui.updateSpinner(failMessage, failStatus);
32
+ }
33
+ ui.stopSpinner();
34
+ return {
35
+ result: null,
36
+ success: false,
37
+ error: error instanceof Error ? error : new Error(String(error)),
38
+ };
39
+ }
40
+ }
41
+ /**
42
+ * Display operation summary with consistent formatting
43
+ */
44
+ function displayOperationSummary(result, options) {
45
+ const { title = 'Summary', dryRun = false, showErrors = true, labels = {}, } = options || {};
46
+ const { created = dryRun ? 'Would create' : 'Created', skipped = 'Skipped', failed = 'Failed', } = labels;
47
+ console.log('');
48
+ console.log(theme_1.typography.header(title));
49
+ console.log(theme_1.typography.labeledValue(created, String(result.filesCreated)));
50
+ console.log(theme_1.typography.labeledValue(skipped, String(result.filesSkipped)));
51
+ console.log(theme_1.typography.labeledValue(failed, String(result.filesFailed)));
52
+ if (showErrors && result.errors.length > 0) {
53
+ console.log('');
54
+ console.log(theme_1.typography.header('Errors'));
55
+ for (const { file, error } of result.errors) {
56
+ console.log(theme_1.typography.labeledValue(file, error));
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Display a visual progress bar
62
+ */
63
+ function displayProgressBar(current, total, options) {
64
+ const { width = 40, label, showPercentage = true } = options || {};
65
+ const percentage = total > 0 ? Math.round((current / total) * 100) : 0;
66
+ const filledWidth = Math.round((current / total) * width);
67
+ const emptyWidth = width - filledWidth;
68
+ const filled = '█'.repeat(filledWidth);
69
+ const empty = '░'.repeat(emptyWidth);
70
+ const bar = `${filled}${empty}`;
71
+ let output = bar;
72
+ if (showPercentage) {
73
+ output += ` ${percentage}%`;
74
+ }
75
+ if (label) {
76
+ output += ` (${label})`;
77
+ }
78
+ return output;
79
+ }
80
+ /**
81
+ * Display a visual phase indicator
82
+ */
83
+ function displayPhaseIndicator(phases, options) {
84
+ const { currentLabel, symbols = {} } = options || {};
85
+ const { completed = '[x]', inProgress = '[>]', pending = '[ ]', skipped = '[-]', } = symbols;
86
+ const symbolMap = {
87
+ completed,
88
+ in_progress: inProgress,
89
+ pending,
90
+ skipped,
91
+ };
92
+ const parts = phases.map((phase) => {
93
+ const symbol = symbolMap[phase.status] || pending;
94
+ return `${symbol} ${phase.id}`;
95
+ });
96
+ let output = parts.join(' → ');
97
+ if (currentLabel) {
98
+ output += `\n${' '.repeat(10)}^ ${currentLabel}`;
99
+ }
100
+ return output;
101
+ }
102
+ /**
103
+ * Create a box with content
104
+ */
105
+ function createBox(content, options) {
106
+ const { width = 50, title, padding = 1 } = options || {};
107
+ const innerWidth = width - 2;
108
+ const padStr = ' '.repeat(padding);
109
+ const lines = [];
110
+ // Top border
111
+ if (title) {
112
+ const titlePadded = ` ${title} `;
113
+ const remainingWidth = innerWidth - titlePadded.length;
114
+ const leftWidth = Math.floor(remainingWidth / 2);
115
+ const rightWidth = remainingWidth - leftWidth;
116
+ lines.push(`╭${'─'.repeat(leftWidth)}${titlePadded}${'─'.repeat(rightWidth)}╮`);
117
+ }
118
+ else {
119
+ lines.push(`╭${'─'.repeat(innerWidth)}╮`);
120
+ }
121
+ // Content
122
+ for (const line of content) {
123
+ const contentWidth = innerWidth - padding * 2;
124
+ const paddedLine = line.slice(0, contentWidth).padEnd(contentWidth);
125
+ lines.push(`│${padStr}${paddedLine}${padStr}│`);
126
+ }
127
+ // Bottom border
128
+ lines.push(`╰${'─'.repeat(innerWidth)}╯`);
129
+ return lines.join('\n');
130
+ }
131
+ //# sourceMappingURL=uiHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiHelpers.js","sourceRoot":"","sources":["../../../src/services/shared/uiHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { StackDetector } from './stackDetector';
2
+ export type { StackInfo } from './stackDetector';
3
+ export { classifyProject, detectCLILibraries, isLibraryPackage, PROJECT_TYPES, } from './projectTypeClassifier';
4
+ export type { ProjectType, ProjectClassification, ExtendedStackInfo, } from './projectTypeClassifier';
5
+ export { getAgentsForProjectType, getDocsForProjectType, getSkillsForProjectType, getFilteredScaffolds, shouldIncludeAgent, shouldIncludeDoc, shouldIncludeSkill, CORE_AGENTS, CORE_DOCS, CORE_SKILLS, AGENT_FILTER_MATRIX, DOCS_FILTER_MATRIX, SKILLS_FILTER_MATRIX, } from './scaffoldFilter';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/stack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SKILLS_FILTER_MATRIX = exports.DOCS_FILTER_MATRIX = exports.AGENT_FILTER_MATRIX = exports.CORE_SKILLS = exports.CORE_DOCS = exports.CORE_AGENTS = exports.shouldIncludeSkill = exports.shouldIncludeDoc = exports.shouldIncludeAgent = exports.getFilteredScaffolds = exports.getSkillsForProjectType = exports.getDocsForProjectType = exports.getAgentsForProjectType = exports.PROJECT_TYPES = exports.isLibraryPackage = exports.detectCLILibraries = exports.classifyProject = exports.StackDetector = void 0;
4
+ var stackDetector_1 = require("./stackDetector");
5
+ Object.defineProperty(exports, "StackDetector", { enumerable: true, get: function () { return stackDetector_1.StackDetector; } });
6
+ var projectTypeClassifier_1 = require("./projectTypeClassifier");
7
+ Object.defineProperty(exports, "classifyProject", { enumerable: true, get: function () { return projectTypeClassifier_1.classifyProject; } });
8
+ Object.defineProperty(exports, "detectCLILibraries", { enumerable: true, get: function () { return projectTypeClassifier_1.detectCLILibraries; } });
9
+ Object.defineProperty(exports, "isLibraryPackage", { enumerable: true, get: function () { return projectTypeClassifier_1.isLibraryPackage; } });
10
+ Object.defineProperty(exports, "PROJECT_TYPES", { enumerable: true, get: function () { return projectTypeClassifier_1.PROJECT_TYPES; } });
11
+ var scaffoldFilter_1 = require("./scaffoldFilter");
12
+ Object.defineProperty(exports, "getAgentsForProjectType", { enumerable: true, get: function () { return scaffoldFilter_1.getAgentsForProjectType; } });
13
+ Object.defineProperty(exports, "getDocsForProjectType", { enumerable: true, get: function () { return scaffoldFilter_1.getDocsForProjectType; } });
14
+ Object.defineProperty(exports, "getSkillsForProjectType", { enumerable: true, get: function () { return scaffoldFilter_1.getSkillsForProjectType; } });
15
+ Object.defineProperty(exports, "getFilteredScaffolds", { enumerable: true, get: function () { return scaffoldFilter_1.getFilteredScaffolds; } });
16
+ Object.defineProperty(exports, "shouldIncludeAgent", { enumerable: true, get: function () { return scaffoldFilter_1.shouldIncludeAgent; } });
17
+ Object.defineProperty(exports, "shouldIncludeDoc", { enumerable: true, get: function () { return scaffoldFilter_1.shouldIncludeDoc; } });
18
+ Object.defineProperty(exports, "shouldIncludeSkill", { enumerable: true, get: function () { return scaffoldFilter_1.shouldIncludeSkill; } });
19
+ Object.defineProperty(exports, "CORE_AGENTS", { enumerable: true, get: function () { return scaffoldFilter_1.CORE_AGENTS; } });
20
+ Object.defineProperty(exports, "CORE_DOCS", { enumerable: true, get: function () { return scaffoldFilter_1.CORE_DOCS; } });
21
+ Object.defineProperty(exports, "CORE_SKILLS", { enumerable: true, get: function () { return scaffoldFilter_1.CORE_SKILLS; } });
22
+ Object.defineProperty(exports, "AGENT_FILTER_MATRIX", { enumerable: true, get: function () { return scaffoldFilter_1.AGENT_FILTER_MATRIX; } });
23
+ Object.defineProperty(exports, "DOCS_FILTER_MATRIX", { enumerable: true, get: function () { return scaffoldFilter_1.DOCS_FILTER_MATRIX; } });
24
+ Object.defineProperty(exports, "SKILLS_FILTER_MATRIX", { enumerable: true, get: function () { return scaffoldFilter_1.SKILLS_FILTER_MATRIX; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/stack/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAGtB,iEAKiC;AAJ/B,wHAAA,eAAe,OAAA;AACf,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAChB,sHAAA,aAAa,OAAA;AAQf,mDAc0B;AAbxB,yHAAA,uBAAuB,OAAA;AACvB,uHAAA,qBAAqB,OAAA;AACrB,yHAAA,uBAAuB,OAAA;AACvB,sHAAA,oBAAoB,OAAA;AACpB,oHAAA,kBAAkB,OAAA;AAClB,kHAAA,gBAAgB,OAAA;AAChB,oHAAA,kBAAkB,OAAA;AAClB,6GAAA,WAAW,OAAA;AACX,2GAAA,SAAS,OAAA;AACT,6GAAA,WAAW,OAAA;AACX,qHAAA,mBAAmB,OAAA;AACnB,oHAAA,kBAAkB,OAAA;AAClB,sHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Project Type Classifier
3
+ *
4
+ * Classifies projects into categories based on detected stack information.
5
+ * Used to filter which agents, skills, and documentation are relevant.
6
+ */
7
+ import { StackInfo } from './stackDetector';
8
+ export declare const PROJECT_TYPES: readonly ["cli", "web-frontend", "web-backend", "full-stack", "mobile", "library", "monorepo", "desktop", "unknown"];
9
+ export type ProjectType = (typeof PROJECT_TYPES)[number];
10
+ export interface ProjectClassification {
11
+ primaryType: ProjectType;
12
+ secondaryTypes: ProjectType[];
13
+ confidence: 'high' | 'medium' | 'low';
14
+ reasoning: string[];
15
+ }
16
+ /**
17
+ * Framework categories for project type detection.
18
+ * Exported for testing and extensibility.
19
+ */
20
+ export declare const FRAMEWORK_CATEGORIES: {
21
+ readonly frontend: readonly ["react", "vue", "angular", "svelte", "nextjs", "nuxt", "gatsby", "remix", "astro", "solid", "qwik"];
22
+ readonly backend: readonly ["express", "nestjs", "fastify", "koa", "hapi", "django", "flask", "fastapi", "rails", "laravel", "spring", "phoenix", "gin", "echo", "fiber"];
23
+ readonly mobile: readonly ["react-native", "flutter", "ionic", "capacitor", "expo"];
24
+ readonly desktop: readonly ["electron", "tauri", "neutralino"];
25
+ readonly cli: readonly ["commander", "yargs", "meow", "inquirer", "prompts", "chalk", "ora", "listr", "oclif", "clipanion", "cac", "arg"];
26
+ readonly monorepo: readonly ["lerna", "nx", "turborepo", "pnpm-workspace", "rush"];
27
+ };
28
+ /**
29
+ * Extended stack info with additional fields for classification
30
+ */
31
+ export interface ExtendedStackInfo extends StackInfo {
32
+ hasBinField?: boolean;
33
+ hasMainExport?: boolean;
34
+ hasTypesField?: boolean;
35
+ cliLibraries?: string[];
36
+ }
37
+ /**
38
+ * Classify a project based on its detected stack
39
+ */
40
+ export declare function classifyProject(stack: StackInfo | ExtendedStackInfo): ProjectClassification;
41
+ /**
42
+ * Get CLI libraries from dependencies
43
+ */
44
+ export declare function detectCLILibraries(dependencies: Record<string, string>): string[];
45
+ /**
46
+ * Check if package.json indicates a library
47
+ */
48
+ export declare function isLibraryPackage(packageJson: {
49
+ main?: string;
50
+ exports?: unknown;
51
+ bin?: unknown;
52
+ types?: string;
53
+ typings?: string;
54
+ }): {
55
+ hasMain: boolean;
56
+ hasBin: boolean;
57
+ hasTypes: boolean;
58
+ };
59
+ //# sourceMappingURL=projectTypeClassifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectTypeClassifier.d.ts","sourceRoot":"","sources":["../../../src/services/stack/projectTypeClassifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,aAAa,sHAUhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;CAgDvB,CAAC;AAQX;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,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;AAoBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,qBAAqB,CAiG3F;AAqDD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAM3D"}