@thanhvn14/csvibe 0.1.1 → 0.1.3

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 (180) hide show
  1. package/.csvibe/state/approaches.json +1 -0
  2. package/README.md +142 -3
  3. package/dist/commands/brainstorm.d.ts +16 -0
  4. package/dist/commands/brainstorm.d.ts.map +1 -0
  5. package/dist/commands/brainstorm.js +186 -0
  6. package/dist/commands/brainstorm.js.map +1 -0
  7. package/dist/commands/doctor.d.ts +9 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +72 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/help.d.ts.map +1 -1
  12. package/dist/commands/help.js +13 -7
  13. package/dist/commands/help.js.map +1 -1
  14. package/dist/commands/index.d.ts +3 -0
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +7 -1
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/commands/init/index.d.ts +7 -0
  19. package/dist/commands/init/index.d.ts.map +1 -0
  20. package/dist/commands/init/index.js +10 -0
  21. package/dist/commands/init/index.js.map +1 -0
  22. package/dist/commands/init/init-command.d.ts +10 -0
  23. package/dist/commands/init/init-command.d.ts.map +1 -0
  24. package/dist/commands/init/init-command.js +75 -0
  25. package/dist/commands/init/init-command.js.map +1 -0
  26. package/dist/commands/init/phases/config-handler.d.ts +10 -0
  27. package/dist/commands/init/phases/config-handler.d.ts.map +1 -0
  28. package/dist/commands/init/phases/config-handler.js +21 -0
  29. package/dist/commands/init/phases/config-handler.js.map +1 -0
  30. package/dist/commands/init/phases/detection-handler.d.ts +10 -0
  31. package/dist/commands/init/phases/detection-handler.d.ts.map +1 -0
  32. package/dist/commands/init/phases/detection-handler.js +80 -0
  33. package/dist/commands/init/phases/detection-handler.js.map +1 -0
  34. package/dist/commands/init/phases/download-handler.d.ts +9 -0
  35. package/dist/commands/init/phases/download-handler.d.ts.map +1 -0
  36. package/dist/commands/init/phases/download-handler.js +16 -0
  37. package/dist/commands/init/phases/download-handler.js.map +1 -0
  38. package/dist/commands/init/phases/prompt-handler.d.ts +10 -0
  39. package/dist/commands/init/phases/prompt-handler.d.ts.map +1 -0
  40. package/dist/commands/init/phases/prompt-handler.js +24 -0
  41. package/dist/commands/init/phases/prompt-handler.js.map +1 -0
  42. package/dist/commands/init/phases/scaffold-handler.d.ts +9 -0
  43. package/dist/commands/init/phases/scaffold-handler.d.ts.map +1 -0
  44. package/dist/commands/init/phases/scaffold-handler.js +18 -0
  45. package/dist/commands/init/phases/scaffold-handler.js.map +1 -0
  46. package/dist/commands/init/phases/validation-handler.d.ts +14 -0
  47. package/dist/commands/init/phases/validation-handler.d.ts.map +1 -0
  48. package/dist/commands/init/phases/validation-handler.js +50 -0
  49. package/dist/commands/init/phases/validation-handler.js.map +1 -0
  50. package/dist/commands/init/phases/vscode-handler.d.ts +9 -0
  51. package/dist/commands/init/phases/vscode-handler.d.ts.map +1 -0
  52. package/dist/commands/init/phases/vscode-handler.js +16 -0
  53. package/dist/commands/init/phases/vscode-handler.js.map +1 -0
  54. package/dist/commands/init/types.d.ts +28 -0
  55. package/dist/commands/init/types.d.ts.map +1 -0
  56. package/dist/commands/init/types.js +6 -0
  57. package/dist/commands/init/types.js.map +1 -0
  58. package/dist/commands/scout.d.ts +30 -0
  59. package/dist/commands/scout.d.ts.map +1 -0
  60. package/dist/commands/scout.js +116 -0
  61. package/dist/commands/scout.js.map +1 -0
  62. package/dist/config/constants.d.ts +2 -1
  63. package/dist/config/constants.d.ts.map +1 -1
  64. package/dist/config/constants.js +2 -1
  65. package/dist/config/constants.js.map +1 -1
  66. package/dist/domains/config/generator.d.ts +17 -0
  67. package/dist/domains/config/generator.d.ts.map +1 -0
  68. package/dist/domains/config/generator.js +67 -0
  69. package/dist/domains/config/generator.js.map +1 -0
  70. package/dist/domains/config/index.d.ts +8 -0
  71. package/dist/domains/config/index.d.ts.map +1 -0
  72. package/dist/domains/config/index.js +15 -0
  73. package/dist/domains/config/index.js.map +1 -0
  74. package/dist/domains/config/types.d.ts +39 -0
  75. package/dist/domains/config/types.d.ts.map +1 -0
  76. package/dist/domains/config/types.js +6 -0
  77. package/dist/domains/config/types.js.map +1 -0
  78. package/dist/domains/config/validator.d.ts +17 -0
  79. package/dist/domains/config/validator.d.ts.map +1 -0
  80. package/dist/domains/config/validator.js +54 -0
  81. package/dist/domains/config/validator.js.map +1 -0
  82. package/dist/domains/github/auth-api.d.ts +19 -0
  83. package/dist/domains/github/auth-api.d.ts.map +1 -0
  84. package/dist/domains/github/auth-api.js +196 -0
  85. package/dist/domains/github/auth-api.js.map +1 -0
  86. package/dist/domains/github/github-client.d.ts +323 -0
  87. package/dist/domains/github/github-client.d.ts.map +1 -0
  88. package/dist/domains/github/github-client.js +192 -0
  89. package/dist/domains/github/github-client.js.map +1 -0
  90. package/dist/domains/github/index.d.ts +9 -0
  91. package/dist/domains/github/index.d.ts.map +1 -0
  92. package/dist/domains/github/index.js +23 -0
  93. package/dist/domains/github/index.js.map +1 -0
  94. package/dist/domains/github/keychain.d.ts +19 -0
  95. package/dist/domains/github/keychain.d.ts.map +1 -0
  96. package/dist/domains/github/keychain.js +132 -0
  97. package/dist/domains/github/keychain.js.map +1 -0
  98. package/dist/domains/github/types.d.ts +40 -0
  99. package/dist/domains/github/types.d.ts.map +1 -0
  100. package/dist/domains/github/types.js +6 -0
  101. package/dist/domains/github/types.js.map +1 -0
  102. package/dist/domains/health-checks/auto-healer.d.ts +14 -0
  103. package/dist/domains/health-checks/auto-healer.d.ts.map +1 -0
  104. package/dist/domains/health-checks/auto-healer.js +160 -0
  105. package/dist/domains/health-checks/auto-healer.js.map +1 -0
  106. package/dist/domains/health-checks/check-runner.d.ts +10 -0
  107. package/dist/domains/health-checks/check-runner.d.ts.map +1 -0
  108. package/dist/domains/health-checks/check-runner.js +31 -0
  109. package/dist/domains/health-checks/check-runner.js.map +1 -0
  110. package/dist/domains/health-checks/checkers/auth-checker.d.ts +10 -0
  111. package/dist/domains/health-checks/checkers/auth-checker.d.ts.map +1 -0
  112. package/dist/domains/health-checks/checkers/auth-checker.js +90 -0
  113. package/dist/domains/health-checks/checkers/auth-checker.js.map +1 -0
  114. package/dist/domains/health-checks/checkers/deps-checker.d.ts +10 -0
  115. package/dist/domains/health-checks/checkers/deps-checker.d.ts.map +1 -0
  116. package/dist/domains/health-checks/checkers/deps-checker.js +150 -0
  117. package/dist/domains/health-checks/checkers/deps-checker.js.map +1 -0
  118. package/dist/domains/health-checks/checkers/project-checker.d.ts +10 -0
  119. package/dist/domains/health-checks/checkers/project-checker.d.ts.map +1 -0
  120. package/dist/domains/health-checks/checkers/project-checker.js +124 -0
  121. package/dist/domains/health-checks/checkers/project-checker.js.map +1 -0
  122. package/dist/domains/health-checks/checkers/system-checker.d.ts +10 -0
  123. package/dist/domains/health-checks/checkers/system-checker.d.ts.map +1 -0
  124. package/dist/domains/health-checks/checkers/system-checker.js +135 -0
  125. package/dist/domains/health-checks/checkers/system-checker.js.map +1 -0
  126. package/dist/domains/health-checks/index.d.ts +9 -0
  127. package/dist/domains/health-checks/index.d.ts.map +1 -0
  128. package/dist/domains/health-checks/index.js +21 -0
  129. package/dist/domains/health-checks/index.js.map +1 -0
  130. package/dist/domains/health-checks/report-generator.d.ts +18 -0
  131. package/dist/domains/health-checks/report-generator.d.ts.map +1 -0
  132. package/dist/domains/health-checks/report-generator.js +117 -0
  133. package/dist/domains/health-checks/report-generator.js.map +1 -0
  134. package/dist/domains/health-checks/types.d.ts +35 -0
  135. package/dist/domains/health-checks/types.d.ts.map +1 -0
  136. package/dist/domains/health-checks/types.js +6 -0
  137. package/dist/domains/health-checks/types.js.map +1 -0
  138. package/dist/index.js +33 -0
  139. package/dist/index.js.map +1 -1
  140. package/dist/utils/approaches-validator.d.ts +40 -0
  141. package/dist/utils/approaches-validator.d.ts.map +1 -0
  142. package/dist/utils/approaches-validator.js +101 -0
  143. package/dist/utils/approaches-validator.js.map +1 -0
  144. package/dist/utils/dependency-analyzer.d.ts +31 -0
  145. package/dist/utils/dependency-analyzer.d.ts.map +1 -0
  146. package/dist/utils/dependency-analyzer.js +294 -0
  147. package/dist/utils/dependency-analyzer.js.map +1 -0
  148. package/dist/utils/directory-analyzer.d.ts +23 -0
  149. package/dist/utils/directory-analyzer.d.ts.map +1 -0
  150. package/dist/utils/directory-analyzer.js +81 -0
  151. package/dist/utils/directory-analyzer.js.map +1 -0
  152. package/dist/utils/downloader.d.ts +3 -3
  153. package/dist/utils/downloader.d.ts.map +1 -1
  154. package/dist/utils/downloader.js +35 -65
  155. package/dist/utils/downloader.js.map +1 -1
  156. package/dist/utils/errors.d.ts +64 -10
  157. package/dist/utils/errors.d.ts.map +1 -1
  158. package/dist/utils/errors.js +136 -22
  159. package/dist/utils/errors.js.map +1 -1
  160. package/dist/utils/gh-cli.d.ts +4 -2
  161. package/dist/utils/gh-cli.d.ts.map +1 -1
  162. package/dist/utils/gh-cli.js +33 -38
  163. package/dist/utils/gh-cli.js.map +1 -1
  164. package/dist/utils/progress.d.ts +37 -0
  165. package/dist/utils/progress.d.ts.map +1 -0
  166. package/dist/utils/progress.js +121 -0
  167. package/dist/utils/progress.js.map +1 -0
  168. package/dist/utils/prompts.d.ts +5 -1
  169. package/dist/utils/prompts.d.ts.map +1 -1
  170. package/dist/utils/prompts.js +124 -64
  171. package/dist/utils/prompts.js.map +1 -1
  172. package/dist/utils/scaffolder.d.ts.map +1 -1
  173. package/dist/utils/scaffolder.js +1 -3
  174. package/dist/utils/scaffolder.js.map +1 -1
  175. package/package.json +7 -3
  176. package/test-jira-prompt.js +32 -0
  177. package/dist/commands/init.d.ts +0 -6
  178. package/dist/commands/init.d.ts.map +0 -1
  179. package/dist/commands/init.js +0 -147
  180. package/dist/commands/init.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Health check types and interfaces
3
+ */
4
+ export type CheckStatus = 'pass' | 'warn' | 'fail';
5
+ export interface Check {
6
+ name: string;
7
+ status: CheckStatus;
8
+ message: string;
9
+ fixable: boolean;
10
+ fix?: string;
11
+ error?: string;
12
+ }
13
+ export interface CheckResult {
14
+ category: string;
15
+ checks: Check[];
16
+ passed: boolean;
17
+ }
18
+ export interface HealthCheckReport {
19
+ results: CheckResult[];
20
+ passed: boolean;
21
+ fixable: number;
22
+ timestamp: string;
23
+ }
24
+ export interface FixResult {
25
+ success: boolean;
26
+ message: string;
27
+ error?: string;
28
+ }
29
+ export interface DoctorOptions {
30
+ fix?: boolean;
31
+ report?: boolean;
32
+ json?: boolean;
33
+ checkOnly?: boolean;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domains/health-checks/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Health check types and interfaces
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/domains/health-checks/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/dist/index.js CHANGED
@@ -42,6 +42,39 @@ program
42
42
  .action((0, errors_1.withErrorHandling)(async (options) => {
43
43
  await (0, commands_1.initCommand)();
44
44
  }));
45
+ /**
46
+ * Doctor command
47
+ */
48
+ program
49
+ .command('doctor')
50
+ .description('Run health checks and diagnostics')
51
+ .option('--fix', 'Auto-fix fixable issues')
52
+ .option('--report', 'Upload report to GitHub Gist')
53
+ .option('--json', 'Output JSON format')
54
+ .option('--check-only', 'CI mode (exit 1 on failures)')
55
+ .action((0, errors_1.withErrorHandling)(async (options) => {
56
+ await (0, commands_1.doctorCommand)(options);
57
+ }));
58
+ /**
59
+ * Scout command (Story 4)
60
+ */
61
+ program
62
+ .command('scout')
63
+ .description('Analyze project structure and gather context')
64
+ .option('-o, --output <path>', 'Output path for context JSON')
65
+ .action((0, errors_1.withErrorHandling)(async (options) => {
66
+ await (0, commands_1.scoutCommand)(options);
67
+ }));
68
+ /**
69
+ * Brainstorm command (Story 5)
70
+ */
71
+ program
72
+ .command('brainstorm')
73
+ .description('Generate solution approaches with trade-off analysis')
74
+ .option('-o, --output <path>', 'Output path for approaches JSON')
75
+ .action((0, errors_1.withErrorHandling)(async (options) => {
76
+ await (0, commands_1.brainstormCommand)(options);
77
+ }));
45
78
  // Default action (no subcommand)
46
79
  program.action(() => {
47
80
  (0, commands_1.helpCommand)();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,yCAAkF;AAClF,mDAAyD;AACzD,2CAAgE;AAEhE,2CAA2C;AAC3C,IAAI,CAAC;IACH,IAAA,gCAAmB,GAAE,CAAC;AACxB,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,mBAAmB;AACnB,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,IAAA,qBAAU,GAAE,EAAE,eAAe,EAAE,wBAAwB,CAAC;KAChE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAExD,oBAAoB;AAEpB;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,sBAAW,CAAC,CAAC;AAEvB;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,sBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC,CAAC;AAEN,iCAAiC;AACjC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,IAAA,sBAAW,GAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,oBAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,yCAAkI;AAClI,mDAAyD;AACzD,2CAAgE;AAEhE,2CAA2C;AAC3C,IAAI,CAAC;IACH,IAAA,gCAAmB,GAAE,CAAC;AACxB,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,mBAAmB;AACnB,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,IAAA,qBAAU,GAAE,EAAE,eAAe,EAAE,wBAAwB,CAAC;KAChE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAExD,oBAAoB;AAEpB;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,sBAAW,CAAC,CAAC;AAEvB;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,sBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC,CAAC;AAEN;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC;KAC1C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACtC,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC,CAAC;AAEN;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;KAC7D,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC,CAAC;AAEN;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAChE,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,4BAAiB,EAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC,CAAC;AAEN,iCAAiC;AACjC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,IAAA,sBAAW,GAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,oBAAW,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Approaches validation utilities
3
+ * Validates approaches.json schema and content from brainstorm phase
4
+ */
5
+ /**
6
+ * Approach interface
7
+ */
8
+ export interface Approach {
9
+ name: string;
10
+ strategy: string;
11
+ technologies: string[];
12
+ pros: string[];
13
+ cons: string[];
14
+ effort: string;
15
+ }
16
+ /**
17
+ * Brainstorm context interface
18
+ */
19
+ export interface BrainstormContext {
20
+ requirement: string;
21
+ approaches: Approach[];
22
+ recommendation: string;
23
+ }
24
+ /**
25
+ * Validate individual approach structure
26
+ *
27
+ * @param approach - Approach object to validate
28
+ * @param index - Approach index for error messages
29
+ * @throws Error if approach structure is invalid
30
+ */
31
+ export declare function validateApproach(approach: unknown, index: number): Approach;
32
+ /**
33
+ * Validate approaches.json schema
34
+ *
35
+ * @param data - Unknown data to validate
36
+ * @returns Validated BrainstormContext
37
+ * @throws Error if schema is invalid
38
+ */
39
+ export declare function validateApproachesSchema(data: unknown): BrainstormContext;
40
+ //# sourceMappingURL=approaches-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approaches-validator.d.ts","sourceRoot":"","sources":["../../src/utils/approaches-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAyD3E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAwCzE"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * Approaches validation utilities
4
+ * Validates approaches.json schema and content from brainstorm phase
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.validateApproach = validateApproach;
8
+ exports.validateApproachesSchema = validateApproachesSchema;
9
+ /**
10
+ * Validate individual approach structure
11
+ *
12
+ * @param approach - Approach object to validate
13
+ * @param index - Approach index for error messages
14
+ * @throws Error if approach structure is invalid
15
+ */
16
+ function validateApproach(approach, index) {
17
+ if (!approach || typeof approach !== 'object') {
18
+ throw new Error(`Approach ${index + 1}: Must be an object`);
19
+ }
20
+ const app = approach;
21
+ // Validate name
22
+ if (!app.name || typeof app.name !== 'string' || app.name.trim().length === 0) {
23
+ throw new Error(`Approach ${index + 1}: Missing or invalid 'name' field`);
24
+ }
25
+ // Validate strategy
26
+ if (!app.strategy || typeof app.strategy !== 'string' || app.strategy.trim().length === 0) {
27
+ throw new Error(`Approach ${index + 1}: Missing or invalid 'strategy' field`);
28
+ }
29
+ // Validate technologies array
30
+ if (!Array.isArray(app.technologies) || app.technologies.length === 0) {
31
+ throw new Error(`Approach ${index + 1}: 'technologies' must be a non-empty array`);
32
+ }
33
+ if (!app.technologies.every((tech) => typeof tech === 'string' && tech.trim().length > 0)) {
34
+ throw new Error(`Approach ${index + 1}: All technologies must be non-empty strings`);
35
+ }
36
+ // Validate pros array
37
+ if (!Array.isArray(app.pros) || app.pros.length === 0) {
38
+ throw new Error(`Approach ${index + 1}: 'pros' must be a non-empty array`);
39
+ }
40
+ if (!app.pros.every((pro) => typeof pro === 'string' && pro.trim().length > 0)) {
41
+ throw new Error(`Approach ${index + 1}: All pros must be non-empty strings`);
42
+ }
43
+ // Validate cons array
44
+ if (!Array.isArray(app.cons) || app.cons.length === 0) {
45
+ throw new Error(`Approach ${index + 1}: 'cons' must be a non-empty array`);
46
+ }
47
+ if (!app.cons.every((con) => typeof con === 'string' && con.trim().length > 0)) {
48
+ throw new Error(`Approach ${index + 1}: All cons must be non-empty strings`);
49
+ }
50
+ // Validate effort
51
+ if (!app.effort || typeof app.effort !== 'string' || app.effort.trim().length === 0) {
52
+ throw new Error(`Approach ${index + 1}: Missing or invalid 'effort' field`);
53
+ }
54
+ return {
55
+ name: app.name,
56
+ strategy: app.strategy,
57
+ technologies: app.technologies,
58
+ pros: app.pros,
59
+ cons: app.cons,
60
+ effort: app.effort
61
+ };
62
+ }
63
+ /**
64
+ * Validate approaches.json schema
65
+ *
66
+ * @param data - Unknown data to validate
67
+ * @returns Validated BrainstormContext
68
+ * @throws Error if schema is invalid
69
+ */
70
+ function validateApproachesSchema(data) {
71
+ if (!data || typeof data !== 'object') {
72
+ throw new Error('Invalid approaches data: Must be an object');
73
+ }
74
+ const context = data;
75
+ // Validate requirement
76
+ if (!context.requirement || typeof context.requirement !== 'string' || context.requirement.trim().length === 0) {
77
+ throw new Error('Missing or invalid \'requirement\' field');
78
+ }
79
+ // Validate approaches array
80
+ if (!Array.isArray(context.approaches)) {
81
+ throw new Error('Missing or invalid \'approaches\' field: Must be an array');
82
+ }
83
+ if (context.approaches.length === 0) {
84
+ throw new Error('\'approaches\' array cannot be empty');
85
+ }
86
+ if (context.approaches.length < 2 || context.approaches.length > 3) {
87
+ throw new Error('Must have 2-3 approaches (got ' + context.approaches.length + ')');
88
+ }
89
+ // Validate each approach
90
+ const validatedApproaches = context.approaches.map((approach, index) => validateApproach(approach, index));
91
+ // Validate recommendation
92
+ if (!context.recommendation || typeof context.recommendation !== 'string' || context.recommendation.trim().length === 0) {
93
+ throw new Error('Missing or invalid \'recommendation\' field');
94
+ }
95
+ return {
96
+ requirement: context.requirement,
97
+ approaches: validatedApproaches,
98
+ recommendation: context.recommendation
99
+ };
100
+ }
101
+ //# sourceMappingURL=approaches-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approaches-validator.js","sourceRoot":"","sources":["../../src/utils/approaches-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Dependency analysis utilities
3
+ * Extracts dependencies from manifest files and infers tech stack
4
+ */
5
+ import { ProjectType } from './project-detector';
6
+ /**
7
+ * Extract dependencies from project manifest files
8
+ *
9
+ * @param projectRoot - Root directory of the project
10
+ * @param projectType - Detected project type
11
+ * @returns Record of dependency names to versions
12
+ */
13
+ export declare function analyzeDependencies(projectRoot: string, projectType: ProjectType): Promise<Record<string, string>>;
14
+ /**
15
+ * Infer tech stack from dependencies
16
+ * Uses pattern matching on dependency names to identify frameworks and tools
17
+ *
18
+ * @param dependencies - Dependency map from analyzeDependencies
19
+ * @param projectType - Detected project type
20
+ * @returns Array of detected technologies
21
+ */
22
+ export declare function inferTechStack(dependencies: Record<string, string>, projectType: ProjectType): string[];
23
+ /**
24
+ * Detect build tool from lock files
25
+ *
26
+ * @param projectRoot - Root directory of the project
27
+ * @param projectType - Detected project type
28
+ * @returns Detected build tool name
29
+ */
30
+ export declare function detectBuildTool(projectRoot: string, projectType: ProjectType): Promise<string>;
31
+ //# sourceMappingURL=dependency-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../../src/utils/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAYjC;AAoED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,WAAW,GACvB,MAAM,EAAE,CAyDV;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ /**
3
+ * Dependency analysis utilities
4
+ * Extracts dependencies from manifest files and infers tech stack
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.analyzeDependencies = analyzeDependencies;
11
+ exports.inferTechStack = inferTechStack;
12
+ exports.detectBuildTool = detectBuildTool;
13
+ const fs_extra_1 = __importDefault(require("fs-extra"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const project_detector_1 = require("./project-detector");
16
+ /**
17
+ * Extract dependencies from project manifest files
18
+ *
19
+ * @param projectRoot - Root directory of the project
20
+ * @param projectType - Detected project type
21
+ * @returns Record of dependency names to versions
22
+ */
23
+ async function analyzeDependencies(projectRoot, projectType) {
24
+ switch (projectType) {
25
+ case project_detector_1.ProjectType.Node:
26
+ case project_detector_1.ProjectType.NodeMonorepo:
27
+ return analyzeNodeDependencies(projectRoot);
28
+ case project_detector_1.ProjectType.Python:
29
+ return analyzePythonDependencies(projectRoot);
30
+ case project_detector_1.ProjectType.Rust:
31
+ return analyzeRustDependencies(projectRoot);
32
+ default:
33
+ return {};
34
+ }
35
+ }
36
+ /**
37
+ * Extract Node.js dependencies from package.json
38
+ */
39
+ async function analyzeNodeDependencies(projectRoot) {
40
+ const packageJsonPath = path_1.default.join(projectRoot, 'package.json');
41
+ if (!await fs_extra_1.default.pathExists(packageJsonPath)) {
42
+ return {};
43
+ }
44
+ try {
45
+ const pkg = await fs_extra_1.default.readJson(packageJsonPath);
46
+ return {
47
+ ...(pkg.dependencies || {}),
48
+ ...(pkg.devDependencies || {})
49
+ };
50
+ }
51
+ catch {
52
+ return {};
53
+ }
54
+ }
55
+ /**
56
+ * Extract Python dependencies from requirements.txt or pyproject.toml
57
+ */
58
+ async function analyzePythonDependencies(projectRoot) {
59
+ // Try requirements.txt first
60
+ const requirementsPath = path_1.default.join(projectRoot, 'requirements.txt');
61
+ if (await fs_extra_1.default.pathExists(requirementsPath)) {
62
+ try {
63
+ const content = await fs_extra_1.default.readFile(requirementsPath, 'utf-8');
64
+ return parseRequirementsTxt(content);
65
+ }
66
+ catch {
67
+ // Continue to try pyproject.toml
68
+ }
69
+ }
70
+ // Try pyproject.toml
71
+ const pyprojectPath = path_1.default.join(projectRoot, 'pyproject.toml');
72
+ if (await fs_extra_1.default.pathExists(pyprojectPath)) {
73
+ try {
74
+ const content = await fs_extra_1.default.readFile(pyprojectPath, 'utf-8');
75
+ return parsePyprojectToml(content);
76
+ }
77
+ catch {
78
+ return {};
79
+ }
80
+ }
81
+ return {};
82
+ }
83
+ /**
84
+ * Extract Rust dependencies from Cargo.toml
85
+ */
86
+ async function analyzeRustDependencies(projectRoot) {
87
+ const cargoPath = path_1.default.join(projectRoot, 'Cargo.toml');
88
+ if (!await fs_extra_1.default.pathExists(cargoPath)) {
89
+ return {};
90
+ }
91
+ try {
92
+ const content = await fs_extra_1.default.readFile(cargoPath, 'utf-8');
93
+ return parseCargoToml(content);
94
+ }
95
+ catch {
96
+ return {};
97
+ }
98
+ }
99
+ /**
100
+ * Infer tech stack from dependencies
101
+ * Uses pattern matching on dependency names to identify frameworks and tools
102
+ *
103
+ * @param dependencies - Dependency map from analyzeDependencies
104
+ * @param projectType - Detected project type
105
+ * @returns Array of detected technologies
106
+ */
107
+ function inferTechStack(dependencies, projectType) {
108
+ const stack = [];
109
+ // Language/runtime
110
+ if (projectType === project_detector_1.ProjectType.Node || projectType === project_detector_1.ProjectType.NodeMonorepo) {
111
+ if (dependencies.typescript || dependencies['@types/node']) {
112
+ stack.push('TypeScript');
113
+ }
114
+ else {
115
+ stack.push('JavaScript');
116
+ }
117
+ }
118
+ else if (projectType === project_detector_1.ProjectType.Python) {
119
+ stack.push('Python');
120
+ }
121
+ else if (projectType === project_detector_1.ProjectType.Rust) {
122
+ stack.push('Rust');
123
+ }
124
+ // Frontend frameworks
125
+ if (dependencies.react)
126
+ stack.push('React');
127
+ if (dependencies.vue)
128
+ stack.push('Vue');
129
+ if (dependencies.angular || dependencies['@angular/core'])
130
+ stack.push('Angular');
131
+ if (dependencies.svelte)
132
+ stack.push('Svelte');
133
+ if (dependencies.next)
134
+ stack.push('Next.js');
135
+ if (dependencies.nuxt)
136
+ stack.push('Nuxt');
137
+ // Backend frameworks
138
+ if (dependencies.express)
139
+ stack.push('Express');
140
+ if (dependencies.fastify)
141
+ stack.push('Fastify');
142
+ if (dependencies.nestjs || dependencies['@nestjs/core'])
143
+ stack.push('NestJS');
144
+ if (dependencies.django)
145
+ stack.push('Django');
146
+ if (dependencies.fastapi)
147
+ stack.push('FastAPI');
148
+ if (dependencies.flask)
149
+ stack.push('Flask');
150
+ if (dependencies.actix || dependencies['actix-web'])
151
+ stack.push('Actix');
152
+ // CSS frameworks
153
+ if (dependencies.tailwindcss)
154
+ stack.push('Tailwind CSS');
155
+ if (dependencies['@mui/material'])
156
+ stack.push('MUI');
157
+ if (dependencies.bootstrap)
158
+ stack.push('Bootstrap');
159
+ // Databases
160
+ if (dependencies.pg || dependencies.postgres)
161
+ stack.push('PostgreSQL');
162
+ if (dependencies.mongodb || dependencies.mongoose)
163
+ stack.push('MongoDB');
164
+ if (dependencies.mysql || dependencies.mysql2)
165
+ stack.push('MySQL');
166
+ if (dependencies.redis)
167
+ stack.push('Redis');
168
+ // Build tools
169
+ if (dependencies.vite)
170
+ stack.push('Vite');
171
+ if (dependencies.webpack)
172
+ stack.push('Webpack');
173
+ if (dependencies.rollup)
174
+ stack.push('Rollup');
175
+ if (dependencies.turbopack)
176
+ stack.push('Turbopack');
177
+ // Testing frameworks
178
+ if (dependencies.vitest)
179
+ stack.push('Vitest');
180
+ if (dependencies.jest)
181
+ stack.push('Jest');
182
+ if (dependencies.pytest)
183
+ stack.push('Pytest');
184
+ if (dependencies.mocha)
185
+ stack.push('Mocha');
186
+ return stack;
187
+ }
188
+ /**
189
+ * Detect build tool from lock files
190
+ *
191
+ * @param projectRoot - Root directory of the project
192
+ * @param projectType - Detected project type
193
+ * @returns Detected build tool name
194
+ */
195
+ async function detectBuildTool(projectRoot, projectType) {
196
+ switch (projectType) {
197
+ case project_detector_1.ProjectType.Node:
198
+ case project_detector_1.ProjectType.NodeMonorepo:
199
+ if (await fs_extra_1.default.pathExists(path_1.default.join(projectRoot, 'pnpm-lock.yaml')))
200
+ return 'pnpm';
201
+ if (await fs_extra_1.default.pathExists(path_1.default.join(projectRoot, 'yarn.lock')))
202
+ return 'yarn';
203
+ if (await fs_extra_1.default.pathExists(path_1.default.join(projectRoot, 'bun.lockb')))
204
+ return 'bun';
205
+ if (await fs_extra_1.default.pathExists(path_1.default.join(projectRoot, 'package-lock.json')))
206
+ return 'npm';
207
+ return 'npm'; // default
208
+ case project_detector_1.ProjectType.Python:
209
+ if (await fs_extra_1.default.pathExists(path_1.default.join(projectRoot, 'poetry.lock')))
210
+ return 'poetry';
211
+ if (await fs_extra_1.default.pathExists(path_1.default.join(projectRoot, 'Pipfile.lock')))
212
+ return 'pipenv';
213
+ return 'pip'; // default
214
+ case project_detector_1.ProjectType.Rust:
215
+ return 'cargo';
216
+ default:
217
+ return 'unknown';
218
+ }
219
+ }
220
+ // ===== Helper Parsers =====
221
+ /**
222
+ * Parse requirements.txt format
223
+ * Supports lines like: package==1.0.0, package>=1.0, package
224
+ */
225
+ function parseRequirementsTxt(content) {
226
+ const deps = {};
227
+ const lines = content.split('\n');
228
+ for (const line of lines) {
229
+ const trimmed = line.trim();
230
+ // Skip empty lines and comments
231
+ if (!trimmed || trimmed.startsWith('#'))
232
+ continue;
233
+ // Match package name with optional version specifier
234
+ const match = trimmed.match(/^([a-zA-Z0-9_-]+)([>=<~!]=?.*)?$/);
235
+ if (match) {
236
+ const packageName = match[1];
237
+ const version = match[2]?.trim() || '*';
238
+ deps[packageName] = version;
239
+ }
240
+ }
241
+ return deps;
242
+ }
243
+ /**
244
+ * Parse pyproject.toml format (simple regex-based)
245
+ * Extracts dependencies from [tool.poetry.dependencies] section
246
+ */
247
+ function parsePyprojectToml(content) {
248
+ const deps = {};
249
+ // Extract [tool.poetry.dependencies] section
250
+ const depSection = content.match(/\[tool\.poetry\.dependencies\]([\s\S]*?)(\[|$)/);
251
+ if (depSection) {
252
+ const lines = depSection[1].split('\n');
253
+ for (const line of lines) {
254
+ // Match: package = "^1.0.0" or package = { version = "^1.0.0" }
255
+ const match = line.match(/^(\w+)\s*=\s*["']([^"']+)["']/);
256
+ if (match) {
257
+ deps[match[1]] = match[2];
258
+ }
259
+ }
260
+ }
261
+ return deps;
262
+ }
263
+ /**
264
+ * Parse Cargo.toml format (simple regex-based)
265
+ * Extracts dependencies from [dependencies] section
266
+ */
267
+ function parseCargoToml(content) {
268
+ const deps = {};
269
+ // Extract [dependencies] section (until next section or end of file)
270
+ const depSection = content.match(/\[dependencies\]([\s\S]*?)(\n\[|$)/);
271
+ if (depSection) {
272
+ const lines = depSection[1].split('\n');
273
+ for (const line of lines) {
274
+ const trimmed = line.trim();
275
+ // Skip empty lines
276
+ if (!trimmed)
277
+ continue;
278
+ // Match: package = "1.0" or package = { version = "1.0" }
279
+ // Support hyphens in package names (e.g., actix-web)
280
+ const simpleMatch = trimmed.match(/^([\w-]+)\s*=\s*["']([^"']+)["']/);
281
+ if (simpleMatch) {
282
+ deps[simpleMatch[1]] = simpleMatch[2];
283
+ continue;
284
+ }
285
+ // Match object notation: package = { version = "1.0", ... }
286
+ const objectMatch = trimmed.match(/^([\w-]+)\s*=\s*\{.*version\s*=\s*["']([^"']+)["']/);
287
+ if (objectMatch) {
288
+ deps[objectMatch[1]] = objectMatch[2];
289
+ }
290
+ }
291
+ }
292
+ return deps;
293
+ }
294
+ //# sourceMappingURL=dependency-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-analyzer.js","sourceRoot":"","sources":["../../src/utils/dependency-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Directory structure analysis
3
+ * Analyzes project directory structure to identify source, test, and config directories
4
+ */
5
+ import { ProjectType } from './project-detector';
6
+ /**
7
+ * Directory structure result
8
+ */
9
+ export interface DirectoryStructure {
10
+ source: string[];
11
+ tests: string[];
12
+ config: string[];
13
+ }
14
+ /**
15
+ * Analyze project directory structure
16
+ * Uses predefined candidate lists to identify common directory patterns
17
+ *
18
+ * @param projectRoot - Root directory of the project
19
+ * @param projectType - Detected project type
20
+ * @returns Directory structure with source, test, and config directories
21
+ */
22
+ export declare function analyzeDirectories(projectRoot: string, projectType: ProjectType): Promise<DirectoryStructure>;
23
+ //# sourceMappingURL=directory-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-analyzer.d.ts","sourceRoot":"","sources":["../../src/utils/directory-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,kBAAkB,CAAC,CA6D7B"}