autogit-tool 1.0.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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/ai/prompts.d.ts +10 -0
  4. package/dist/ai/prompts.d.ts.map +1 -0
  5. package/dist/ai/prompts.js +169 -0
  6. package/dist/ai/prompts.js.map +1 -0
  7. package/dist/ai/provider.d.ts +24 -0
  8. package/dist/ai/provider.d.ts.map +1 -0
  9. package/dist/ai/provider.js +305 -0
  10. package/dist/ai/provider.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +228 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/commands/analyze.d.ts +4 -0
  16. package/dist/commands/analyze.d.ts.map +1 -0
  17. package/dist/commands/analyze.js +63 -0
  18. package/dist/commands/analyze.js.map +1 -0
  19. package/dist/commands/config.d.ts +8 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +457 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/docs.d.ts +5 -0
  24. package/dist/commands/docs.d.ts.map +1 -0
  25. package/dist/commands/docs.js +22 -0
  26. package/dist/commands/docs.js.map +1 -0
  27. package/dist/commands/doctor.d.ts +2 -0
  28. package/dist/commands/doctor.d.ts.map +1 -0
  29. package/dist/commands/doctor.js +69 -0
  30. package/dist/commands/doctor.js.map +1 -0
  31. package/dist/commands/github.d.ts +5 -0
  32. package/dist/commands/github.d.ts.map +1 -0
  33. package/dist/commands/github.js +46 -0
  34. package/dist/commands/github.js.map +1 -0
  35. package/dist/commands/init.d.ts +2 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +38 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/linkedin.d.ts +4 -0
  40. package/dist/commands/linkedin.d.ts.map +1 -0
  41. package/dist/commands/linkedin.js +42 -0
  42. package/dist/commands/linkedin.js.map +1 -0
  43. package/dist/commands/login.d.ts +2 -0
  44. package/dist/commands/login.d.ts.map +1 -0
  45. package/dist/commands/login.js +301 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/publish.d.ts +5 -0
  48. package/dist/commands/publish.d.ts.map +1 -0
  49. package/dist/commands/publish.js +58 -0
  50. package/dist/commands/publish.js.map +1 -0
  51. package/dist/commands/readme.d.ts +5 -0
  52. package/dist/commands/readme.d.ts.map +1 -0
  53. package/dist/commands/readme.js +32 -0
  54. package/dist/commands/readme.js.map +1 -0
  55. package/dist/commands/release.d.ts +5 -0
  56. package/dist/commands/release.d.ts.map +1 -0
  57. package/dist/commands/release.js +56 -0
  58. package/dist/commands/release.js.map +1 -0
  59. package/dist/commands/resume.d.ts +8 -0
  60. package/dist/commands/resume.d.ts.map +1 -0
  61. package/dist/commands/resume.js +228 -0
  62. package/dist/commands/resume.js.map +1 -0
  63. package/dist/config/manager.d.ts +67 -0
  64. package/dist/config/manager.d.ts.map +1 -0
  65. package/dist/config/manager.js +78 -0
  66. package/dist/config/manager.js.map +1 -0
  67. package/dist/index.d.ts +6 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +6 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/pipeline/main-pipeline.d.ts +15 -0
  72. package/dist/pipeline/main-pipeline.d.ts.map +1 -0
  73. package/dist/pipeline/main-pipeline.js +279 -0
  74. package/dist/pipeline/main-pipeline.js.map +1 -0
  75. package/dist/scanner/file-scanner.d.ts +21 -0
  76. package/dist/scanner/file-scanner.d.ts.map +1 -0
  77. package/dist/scanner/file-scanner.js +90 -0
  78. package/dist/scanner/file-scanner.js.map +1 -0
  79. package/dist/scanner/project-analyzer.d.ts +26 -0
  80. package/dist/scanner/project-analyzer.d.ts.map +1 -0
  81. package/dist/scanner/project-analyzer.js +454 -0
  82. package/dist/scanner/project-analyzer.js.map +1 -0
  83. package/dist/services/docs-generator.d.ts +11 -0
  84. package/dist/services/docs-generator.d.ts.map +1 -0
  85. package/dist/services/docs-generator.js +172 -0
  86. package/dist/services/docs-generator.js.map +1 -0
  87. package/dist/services/git-service.d.ts +22 -0
  88. package/dist/services/git-service.d.ts.map +1 -0
  89. package/dist/services/git-service.js +162 -0
  90. package/dist/services/git-service.js.map +1 -0
  91. package/dist/services/github-service.d.ts +44 -0
  92. package/dist/services/github-service.d.ts.map +1 -0
  93. package/dist/services/github-service.js +131 -0
  94. package/dist/services/github-service.js.map +1 -0
  95. package/dist/services/insights.d.ts +24 -0
  96. package/dist/services/insights.d.ts.map +1 -0
  97. package/dist/services/insights.js +140 -0
  98. package/dist/services/insights.js.map +1 -0
  99. package/dist/services/readme-manager.d.ts +11 -0
  100. package/dist/services/readme-manager.d.ts.map +1 -0
  101. package/dist/services/readme-manager.js +180 -0
  102. package/dist/services/readme-manager.js.map +1 -0
  103. package/dist/services/resume-manager.d.ts +29 -0
  104. package/dist/services/resume-manager.d.ts.map +1 -0
  105. package/dist/services/resume-manager.js +186 -0
  106. package/dist/services/resume-manager.js.map +1 -0
  107. package/dist/services/social-generator.d.ts +14 -0
  108. package/dist/services/social-generator.d.ts.map +1 -0
  109. package/dist/services/social-generator.js +93 -0
  110. package/dist/services/social-generator.js.map +1 -0
  111. package/dist/utils/logger.d.ts +19 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +81 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/platform.d.ts +8 -0
  116. package/dist/utils/platform.d.ts.map +1 -0
  117. package/dist/utils/platform.js +27 -0
  118. package/dist/utils/platform.js.map +1 -0
  119. package/package.json +74 -0
package/dist/cli.js ADDED
@@ -0,0 +1,228 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ import { setLogLevel } from './utils/logger.js';
5
+ import { runMainPipeline } from './pipeline/main-pipeline.js';
6
+ import { cmdInit } from './commands/init.js';
7
+ import { cmdDocs } from './commands/docs.js';
8
+ import { cmdReadme } from './commands/readme.js';
9
+ import { cmdPublish } from './commands/publish.js';
10
+ import { cmdGithub } from './commands/github.js';
11
+ import { cmdLinkedin } from './commands/linkedin.js';
12
+ import { cmdRelease } from './commands/release.js';
13
+ import { cmdAnalyze } from './commands/analyze.js';
14
+ import { cmdDoctor } from './commands/doctor.js';
15
+ import { cmdConfig } from './commands/config.js';
16
+ import { cmdLogin } from './commands/login.js';
17
+ import { cmdResume } from './commands/resume.js';
18
+ import { registerOctokitReset } from './config/manager.js';
19
+ import { resetOctokitCache } from './services/github-service.js';
20
+ // Wire Octokit cache reset whenever config is saved
21
+ registerOctokitReset(resetOctokitCache);
22
+ const program = new Command();
23
+ program
24
+ .name('autogit')
25
+ .version('1.0.0')
26
+ .description('Automate project documentation, GitHub publishing, and social media content generation')
27
+ .option('--yes', 'Skip all confirmation prompts')
28
+ .option('--dry-run', 'Preview changes without applying them')
29
+ .option('--verbose', 'Show detailed output')
30
+ .option('--quiet', 'Suppress non-essential output')
31
+ .option('--private', 'Create private GitHub repository')
32
+ .option('--public', 'Create public GitHub repository')
33
+ .option('--skip-readme', 'Skip README generation')
34
+ .option('--skip-linkedin', 'Skip LinkedIn post generation')
35
+ .option('--skip-github', 'Skip GitHub operations')
36
+ .option('--skip-resume', 'Skip resume auto-update')
37
+ .option('--no-ai', 'Disable AI-powered generation')
38
+ .option('--force', 'Force overwrite existing files')
39
+ .option('--regenerate', 'Regenerate existing documentation')
40
+ .action(async (opts) => {
41
+ setupLogLevel(opts);
42
+ try {
43
+ await runMainPipeline({
44
+ yes: opts.yes,
45
+ dryRun: opts.dryRun,
46
+ skipReadme: opts.skipReadme,
47
+ skipLinkedin: opts.skipLinkedin,
48
+ skipGithub: opts.skipGithub,
49
+ skipResume: opts.skipResume,
50
+ noAI: !opts.ai,
51
+ force: opts.force,
52
+ regenerate: opts.regenerate,
53
+ private: opts.private,
54
+ public: opts.public,
55
+ });
56
+ }
57
+ catch (error) {
58
+ handleError(error);
59
+ }
60
+ });
61
+ program
62
+ .command('init')
63
+ .description('Initialize AutoGit in the current project')
64
+ .action(async () => {
65
+ try {
66
+ await cmdInit();
67
+ }
68
+ catch (e) {
69
+ handleError(e);
70
+ }
71
+ });
72
+ program
73
+ .command('docs')
74
+ .description('Generate project documentation')
75
+ .option('--regenerate', 'Regenerate existing docs')
76
+ .option('--no-ai', 'Disable AI generation')
77
+ .action(async (opts) => {
78
+ try {
79
+ await cmdDocs(opts);
80
+ }
81
+ catch (e) {
82
+ handleError(e);
83
+ }
84
+ });
85
+ program
86
+ .command('readme')
87
+ .description('Generate or update README')
88
+ .option('--regenerate', 'Force regenerate README')
89
+ .option('--no-ai', 'Disable AI generation')
90
+ .action(async (opts) => {
91
+ try {
92
+ await cmdReadme(opts);
93
+ }
94
+ catch (e) {
95
+ handleError(e);
96
+ }
97
+ });
98
+ program
99
+ .command('publish')
100
+ .description('Commit and push to GitHub')
101
+ .option('--yes', 'Skip confirmations')
102
+ .option('--private', 'Create private repository')
103
+ .action(async (opts) => {
104
+ try {
105
+ await cmdPublish(opts);
106
+ }
107
+ catch (e) {
108
+ handleError(e);
109
+ }
110
+ });
111
+ program
112
+ .command('github')
113
+ .description('GitHub repository operations')
114
+ .option('--create', 'Create repository')
115
+ .option('--private', 'Private repository')
116
+ .action(async (opts) => {
117
+ try {
118
+ await cmdGithub(opts);
119
+ }
120
+ catch (e) {
121
+ handleError(e);
122
+ }
123
+ });
124
+ program
125
+ .command('linkedin')
126
+ .description('Generate LinkedIn posts')
127
+ .option('--no-ai', 'Use template generation')
128
+ .action(async (opts) => {
129
+ try {
130
+ await cmdLinkedin(opts);
131
+ }
132
+ catch (e) {
133
+ handleError(e);
134
+ }
135
+ });
136
+ program
137
+ .command('release')
138
+ .description('Create a GitHub release')
139
+ .option('--tag <tag>', 'Release tag')
140
+ .option('--draft', 'Create as draft')
141
+ .action(async (opts) => {
142
+ try {
143
+ await cmdRelease(opts);
144
+ }
145
+ catch (e) {
146
+ handleError(e);
147
+ }
148
+ });
149
+ program
150
+ .command('analyze')
151
+ .description('Analyze project and show insights')
152
+ .option('--no-ai', 'Static analysis only')
153
+ .action(async (opts) => {
154
+ try {
155
+ await cmdAnalyze(opts);
156
+ }
157
+ catch (e) {
158
+ handleError(e);
159
+ }
160
+ });
161
+ program
162
+ .command('doctor')
163
+ .description('Check AutoGit setup and dependencies')
164
+ .action(async () => {
165
+ try {
166
+ await cmdDoctor();
167
+ }
168
+ catch (e) {
169
+ handleError(e);
170
+ }
171
+ });
172
+ program
173
+ .command('config')
174
+ .description('Manage AutoGit configuration')
175
+ .option('--set <key=value>', 'Set a configuration value')
176
+ .option('--get <key>', 'Get a configuration value')
177
+ .option('--list', 'List all configuration')
178
+ .option('--test', 'Verify the active AI provider key works')
179
+ .option('--debug', 'Show stored key details for troubleshooting')
180
+ .action(async (opts) => {
181
+ try {
182
+ await cmdConfig(opts);
183
+ }
184
+ catch (e) {
185
+ handleError(e);
186
+ }
187
+ });
188
+ program
189
+ .command('resume')
190
+ .description('Update your LaTeX resume with the current project')
191
+ .option('--setup', 'Configure resume file path and owner info')
192
+ .option('--show', 'Show current resume configuration')
193
+ .option('--no-ai', 'Use template instead of AI for bullet generation')
194
+ .action(async (opts) => {
195
+ try {
196
+ await cmdResume(opts);
197
+ }
198
+ catch (e) {
199
+ handleError(e);
200
+ }
201
+ });
202
+ program
203
+ .command('login')
204
+ .description('Authenticate with GitHub')
205
+ .option('--check', 'Show which token source is active and verify it')
206
+ .action(async () => {
207
+ try {
208
+ await cmdLogin();
209
+ }
210
+ catch (e) {
211
+ handleError(e);
212
+ }
213
+ });
214
+ function setupLogLevel(opts) {
215
+ if (opts.verbose)
216
+ setLogLevel('verbose');
217
+ else if (opts.quiet)
218
+ setLogLevel('quiet');
219
+ }
220
+ function handleError(error) {
221
+ console.error(chalk.red(`\n✖ Error: ${error.message}`));
222
+ if (process.env.AUTOGIT_DEBUG) {
223
+ console.error(error.stack);
224
+ }
225
+ process.exit(1);
226
+ }
227
+ program.parse();
228
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,oDAAoD;AACpD,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAExC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wFAAwF,CAAC;KACrG,MAAM,CAAC,OAAO,EAAE,+BAA+B,CAAC;KAChD,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC;KAC5D,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,UAAU,EAAE,iCAAiC,CAAC;KACrD,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;KAClD,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,eAAe,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QAAC,MAAM,OAAO,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,SAAS,EAAE,uBAAuB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,SAAS,EAAE,uBAAuB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC;KACvC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;KACpC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACpC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QAAC,MAAM,SAAS,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC1C,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC;KAC3D,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;KAC9D,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;KACrD,MAAM,CAAC,SAAS,EAAE,kDAAkD,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,SAAS,EAAE,iDAAiD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QAAC,MAAM,QAAQ,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEL,SAAS,aAAa,CAAC,IAAS;IAC9B,IAAI,IAAI,CAAC,OAAO;QAAE,WAAW,CAAC,SAAS,CAAC,CAAC;SACpC,IAAI,IAAI,CAAC,KAAK;QAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function cmdAnalyze(opts: {
2
+ ai?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAQA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEtE"}
@@ -0,0 +1,63 @@
1
+ import { resolve } from 'path';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { scanProject } from '../scanner/file-scanner.js';
5
+ import { analyzeProject } from '../scanner/project-analyzer.js';
6
+ import { generateInsights } from '../services/insights.js';
7
+ import { logger } from '../utils/logger.js';
8
+ export async function cmdAnalyze(opts) {
9
+ const rootDir = resolve(process.cwd());
10
+ logger.header('Project Analysis');
11
+ const scan = scanProject(rootDir);
12
+ const analysis = analyzeProject(rootDir, scan);
13
+ const useAI = opts.ai !== false;
14
+ // Display project info
15
+ const infoTable = new Table({
16
+ style: { head: ['cyan'] },
17
+ });
18
+ infoTable.push({ 'Project': analysis.name }, { 'Languages': analysis.languages.join(', ') || 'None detected' }, { 'Frameworks': analysis.frameworks.join(', ') || 'None detected' }, { 'Package Manager': analysis.packageManager || 'None' }, { 'Build System': analysis.buildSystem || 'None' }, { 'Architecture': analysis.architecture }, { 'Test Framework': analysis.testFramework || 'None' }, { 'Files': `${scan.totalFiles}` }, { 'License': analysis.license || 'None' });
19
+ console.log(infoTable.toString());
20
+ logger.blank();
21
+ // Generate insights
22
+ const insights = await generateInsights(analysis, scan, useAI);
23
+ // Scores table
24
+ logger.header('Scores');
25
+ const scoreTable = new Table({
26
+ head: ['Area', 'Score', 'Assessment'],
27
+ style: { head: ['cyan'] },
28
+ });
29
+ scoreTable.push(['Documentation', formatScore(insights.documentationScore.score), insights.documentationScore.reason], ['Code Quality', formatScore(insights.codeQualityScore.score), insights.codeQualityScore.reason], ['Maintainability', formatScore(insights.maintainabilityScore.score), insights.maintainabilityScore.reason]);
30
+ console.log(scoreTable.toString());
31
+ // Suggestions
32
+ if (insights.suggestions.length > 0) {
33
+ logger.blank();
34
+ logger.header('Suggestions');
35
+ for (const s of insights.suggestions) {
36
+ logger.step(s);
37
+ }
38
+ }
39
+ // Security
40
+ if (insights.securityObservations.length > 0) {
41
+ logger.blank();
42
+ logger.header('Security Observations');
43
+ for (const s of insights.securityObservations) {
44
+ logger.warn(s);
45
+ }
46
+ }
47
+ // Missing docs
48
+ if (insights.missingDocumentation.length > 0) {
49
+ logger.blank();
50
+ logger.header('Missing Documentation');
51
+ for (const d of insights.missingDocumentation) {
52
+ logger.dimmed(` • ${d}`);
53
+ }
54
+ }
55
+ }
56
+ function formatScore(score) {
57
+ if (score >= 8)
58
+ return chalk.green(`${score}/10`);
59
+ if (score >= 5)
60
+ return chalk.yellow(`${score}/10`);
61
+ return chalk.red(`${score}/10`);
62
+ }
63
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function cmdConfig(opts: {
2
+ set?: string;
3
+ get?: string;
4
+ list?: boolean;
5
+ test?: boolean;
6
+ debug?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AA4DA,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB"}