devcache-hub 0.1.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/analyzers/ArchitectureAnalyzer.d.ts +17 -0
  2. package/dist/analyzers/ArchitectureAnalyzer.d.ts.map +1 -0
  3. package/dist/analyzers/ArchitectureAnalyzer.js +217 -0
  4. package/dist/analyzers/ArchitectureAnalyzer.js.map +1 -0
  5. package/dist/analyzers/FeaturesAnalyzer.d.ts +18 -0
  6. package/dist/analyzers/FeaturesAnalyzer.d.ts.map +1 -0
  7. package/dist/analyzers/FeaturesAnalyzer.js +258 -0
  8. package/dist/analyzers/FeaturesAnalyzer.js.map +1 -0
  9. package/dist/analyzers/ImpactAnalyzer.d.ts +16 -0
  10. package/dist/analyzers/ImpactAnalyzer.d.ts.map +1 -0
  11. package/dist/analyzers/ImpactAnalyzer.js +165 -0
  12. package/dist/analyzers/ImpactAnalyzer.js.map +1 -0
  13. package/dist/analyzers/ProjectAnalyzer.d.ts +14 -0
  14. package/dist/analyzers/ProjectAnalyzer.d.ts.map +1 -0
  15. package/dist/analyzers/ProjectAnalyzer.js +142 -0
  16. package/dist/analyzers/ProjectAnalyzer.js.map +1 -0
  17. package/dist/analyzers/StackAnalyzer.d.ts +28 -0
  18. package/dist/analyzers/StackAnalyzer.d.ts.map +1 -0
  19. package/dist/analyzers/StackAnalyzer.js +320 -0
  20. package/dist/analyzers/StackAnalyzer.js.map +1 -0
  21. package/dist/analyzers/base/BaseAnalyzer.d.ts +39 -0
  22. package/dist/analyzers/base/BaseAnalyzer.d.ts.map +1 -0
  23. package/dist/analyzers/base/BaseAnalyzer.js +64 -0
  24. package/dist/analyzers/base/BaseAnalyzer.js.map +1 -0
  25. package/dist/analyzers/index.d.ts +7 -0
  26. package/dist/analyzers/index.d.ts.map +1 -0
  27. package/dist/analyzers/index.js +23 -0
  28. package/dist/analyzers/index.js.map +1 -0
  29. package/dist/cli/commands/generate.d.ts.map +1 -1
  30. package/dist/cli/commands/generate.js +32 -19
  31. package/dist/cli/commands/generate.js.map +1 -1
  32. package/dist/cli/commands/login.d.ts.map +1 -1
  33. package/dist/cli/commands/login.js +89 -19
  34. package/dist/cli/commands/login.js.map +1 -1
  35. package/dist/cli/commands/push.d.ts.map +1 -1
  36. package/dist/cli/commands/push.js +81 -10
  37. package/dist/cli/commands/push.js.map +1 -1
  38. package/dist/cli/index.js +9 -0
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/orchestrator/FileSystemHandler.d.ts +35 -0
  41. package/dist/orchestrator/FileSystemHandler.d.ts.map +1 -0
  42. package/dist/orchestrator/FileSystemHandler.js +138 -0
  43. package/dist/orchestrator/FileSystemHandler.js.map +1 -0
  44. package/dist/orchestrator/Orchestrator.d.ts +31 -0
  45. package/dist/orchestrator/Orchestrator.d.ts.map +1 -0
  46. package/dist/orchestrator/Orchestrator.js +141 -0
  47. package/dist/orchestrator/Orchestrator.js.map +1 -0
  48. package/dist/orchestrator/TemplateManager.d.ts +35 -0
  49. package/dist/orchestrator/TemplateManager.d.ts.map +1 -0
  50. package/dist/orchestrator/TemplateManager.js +116 -0
  51. package/dist/orchestrator/TemplateManager.js.map +1 -0
  52. package/dist/orchestrator/index.d.ts +4 -0
  53. package/dist/orchestrator/index.d.ts.map +1 -0
  54. package/dist/orchestrator/index.js +20 -0
  55. package/dist/orchestrator/index.js.map +1 -0
  56. package/dist/supabase/client.d.ts +54 -0
  57. package/dist/supabase/client.d.ts.map +1 -0
  58. package/dist/supabase/client.js +181 -0
  59. package/dist/supabase/client.js.map +1 -0
  60. package/dist/supabase/index.d.ts +3 -0
  61. package/dist/supabase/index.d.ts.map +1 -0
  62. package/dist/supabase/index.js +19 -0
  63. package/dist/supabase/index.js.map +1 -0
  64. package/dist/supabase/oauth.d.ts +25 -0
  65. package/dist/supabase/oauth.d.ts.map +1 -0
  66. package/dist/supabase/oauth.js +218 -0
  67. package/dist/supabase/oauth.js.map +1 -0
  68. package/dist/supabase/storage.d.ts +46 -0
  69. package/dist/supabase/storage.d.ts.map +1 -0
  70. package/dist/supabase/storage.js +179 -0
  71. package/dist/supabase/storage.js.map +1 -0
  72. package/dist/types/analyzers.d.ts +51 -0
  73. package/dist/types/analyzers.d.ts.map +1 -0
  74. package/dist/types/analyzers.js +3 -0
  75. package/dist/types/analyzers.js.map +1 -0
  76. package/dist/types/config.d.ts +27 -0
  77. package/dist/types/config.d.ts.map +1 -0
  78. package/dist/types/config.js +3 -0
  79. package/dist/types/config.js.map +1 -0
  80. package/dist/types/index.d.ts +4 -0
  81. package/dist/types/index.d.ts.map +1 -0
  82. package/dist/types/index.js +20 -0
  83. package/dist/types/index.js.map +1 -0
  84. package/dist/types/templates.d.ts +18 -0
  85. package/dist/types/templates.d.ts.map +1 -0
  86. package/dist/types/templates.js +3 -0
  87. package/dist/types/templates.js.map +1 -0
  88. package/dist/utils/config.d.ts +17 -0
  89. package/dist/utils/config.d.ts.map +1 -0
  90. package/dist/utils/config.js +46 -0
  91. package/dist/utils/config.js.map +1 -0
  92. package/dist/utils/fileParser.d.ts +28 -0
  93. package/dist/utils/fileParser.d.ts.map +1 -0
  94. package/dist/utils/fileParser.js +111 -0
  95. package/dist/utils/fileParser.js.map +1 -0
  96. package/dist/utils/index.d.ts +4 -0
  97. package/dist/utils/index.d.ts.map +1 -0
  98. package/dist/utils/index.js +20 -0
  99. package/dist/utils/index.js.map +1 -0
  100. package/dist/utils/logger.d.ts +9 -0
  101. package/dist/utils/logger.d.ts.map +1 -0
  102. package/dist/utils/logger.js +31 -0
  103. package/dist/utils/logger.js.map +1 -0
  104. package/package.json +13 -12
  105. package/templates/general/project-impact.yaml +34 -0
  106. package/templates/general/project-overview.yaml +34 -0
  107. package/templates/tech/architecture-project.yaml +42 -0
  108. package/templates/tech/features.yaml +38 -0
  109. package/templates/tech/stack-project.yaml +42 -0
@@ -6,33 +6,103 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.loginCommand = loginCommand;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const inquirer_1 = __importDefault(require("inquirer"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const client_1 = require("../../supabase/client");
11
+ const oauth_1 = require("../../supabase/oauth");
12
+ const utils_1 = require("../../utils");
13
+ const DEFAULT_APP_URL = 'https://devcache.vercel.app'; // Your production URL
9
14
  async function loginCommand() {
10
15
  console.log(chalk_1.default.blue.bold('\n🔐 DevCache Login\n'));
11
16
  try {
12
- const answers = await inquirer_1.default.prompt([
17
+ // Initialize Supabase client
18
+ const supabase = (0, client_1.getSupabaseClient)();
19
+ await supabase.initialize();
20
+ // Check if already logged in
21
+ const existingSession = await supabase.getSession();
22
+ if (existingSession) {
23
+ const { relogin } = await inquirer_1.default.prompt([
24
+ {
25
+ type: 'confirm',
26
+ name: 'relogin',
27
+ message: `Already logged in as ${existingSession.email}. Login with different account?`,
28
+ default: false,
29
+ },
30
+ ]);
31
+ if (!relogin) {
32
+ utils_1.Logger.success('Already authenticated');
33
+ return;
34
+ }
35
+ await supabase.clearSession();
36
+ }
37
+ // Ask for authentication method
38
+ const { method } = await inquirer_1.default.prompt([
13
39
  {
14
- type: 'input',
15
- name: 'email',
16
- message: 'Email:',
17
- validate: (input) => {
18
- if (input.includes('@'))
19
- return true;
20
- return 'Please enter a valid email address';
21
- }
40
+ type: 'list',
41
+ name: 'method',
42
+ message: 'Choose authentication method:',
43
+ choices: [
44
+ { name: 'Browser (OAuth) - Recommended', value: 'oauth' },
45
+ { name: 'Email & Password', value: 'password' },
46
+ ],
47
+ default: 'oauth',
22
48
  },
23
- {
24
- type: 'password',
25
- name: 'password',
26
- message: 'Password:',
27
- mask: '*'
28
- }
29
49
  ]);
30
- // TODO: Implement Supabase authentication
31
- console.log(chalk_1.default.green('\n✓ Login successful!'));
32
- console.log(chalk_1.default.gray('Session stored locally\n'));
50
+ if (method === 'oauth') {
51
+ // OAuth flow
52
+ console.log(chalk_1.default.gray('\nOpening browser for authentication...'));
53
+ console.log(chalk_1.default.gray('If browser doesn\'t open, copy the URL from the terminal.\n'));
54
+ const oauth = new oauth_1.OAuthFlow();
55
+ const appUrl = process.env.NEXT_PUBLIC_APP_URL || DEFAULT_APP_URL;
56
+ const spinner = (0, ora_1.default)('Waiting for authentication...').start();
57
+ try {
58
+ const session = await oauth.startFlow(appUrl);
59
+ // Save session
60
+ await supabase.saveOAuthSession(session);
61
+ spinner.succeed(chalk_1.default.green('Login successful!'));
62
+ console.log(chalk_1.default.gray(`\nLogged in as: ${session.email}`));
63
+ console.log(chalk_1.default.gray('Session stored locally\n'));
64
+ }
65
+ catch (error) {
66
+ spinner.fail('Authentication failed');
67
+ throw error;
68
+ }
69
+ }
70
+ else {
71
+ // Password flow
72
+ const answers = await inquirer_1.default.prompt([
73
+ {
74
+ type: 'input',
75
+ name: 'email',
76
+ message: 'Email:',
77
+ validate: (input) => {
78
+ if (input.includes('@'))
79
+ return true;
80
+ return 'Please enter a valid email address';
81
+ },
82
+ },
83
+ {
84
+ type: 'password',
85
+ name: 'password',
86
+ message: 'Password:',
87
+ mask: '*',
88
+ },
89
+ ]);
90
+ const spinner = (0, ora_1.default)('Authenticating...').start();
91
+ // Authenticate
92
+ const session = await supabase.login(answers.email, answers.password);
93
+ spinner.succeed(chalk_1.default.green('Login successful!'));
94
+ console.log(chalk_1.default.gray(`\nLogged in as: ${session.email}`));
95
+ console.log(chalk_1.default.gray('Session stored locally\n'));
96
+ }
33
97
  }
34
98
  catch (error) {
35
- console.error(chalk_1.default.red('Login failed:'), error);
99
+ utils_1.Logger.error(`Login failed: ${error.message}`);
100
+ if (error.message.includes('timeout')) {
101
+ console.log(chalk_1.default.yellow('\nAuthentication timed out. Please try again.'));
102
+ }
103
+ else if (error.message.includes('credentials')) {
104
+ console.log(chalk_1.default.yellow('\nPlease check your email and password and try again.'));
105
+ }
36
106
  process.exit(1);
37
107
  }
38
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":";;;;;AAGA,oCA8BC;AAjCD,kDAA0B;AAC1B,wDAAgC;AAEzB,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,OAAO,IAAI,CAAC;oBACrC,OAAO,oCAAoC,CAAC;gBAC9C,CAAC;aACF;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,GAAG;aACV;SACF,CAAC,CAAC;QAEH,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,kBAyBhC"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,kBA6GhC"}
@@ -6,24 +6,95 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.pushCommand = pushCommand;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const ora_1 = __importDefault(require("ora"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const promises_1 = __importDefault(require("fs/promises"));
11
+ const client_1 = require("../../supabase/client");
12
+ const storage_1 = require("../../supabase/storage");
13
+ const utils_1 = require("../../utils");
9
14
  async function pushCommand() {
10
- const spinner = (0, ora_1.default)('Pushing documentation to Supabase...').start();
15
+ const spinner = (0, ora_1.default)('Initializing...').start();
11
16
  try {
12
- // TODO: Implement Supabase integration
13
- spinner.text = 'Authenticating...';
14
- await new Promise(resolve => setTimeout(resolve, 500));
15
- spinner.text = 'Uploading files...';
16
- await new Promise(resolve => setTimeout(resolve, 1000));
17
- spinner.text = 'Generating embeddings...';
18
- await new Promise(resolve => setTimeout(resolve, 1500));
17
+ // Initialize Supabase client
18
+ const supabase = (0, client_1.getSupabaseClient)();
19
+ await supabase.initialize();
20
+ // Check authentication
21
+ spinner.text = 'Checking authentication...';
22
+ const session = await supabase.getSession();
23
+ if (!session) {
24
+ spinner.fail('Not authenticated');
25
+ console.log(chalk_1.default.yellow('\nPlease run'), chalk_1.default.cyan('devcache-hub login'), chalk_1.default.yellow('first.'));
26
+ process.exit(1);
27
+ }
28
+ utils_1.Logger.debug(`Authenticated as: ${session.email}`);
29
+ // Load configuration
30
+ spinner.text = 'Loading configuration...';
31
+ const config = await utils_1.ConfigManager.readConfig();
32
+ // Check if documentation exists
33
+ const projectPath = path_1.default.join(process.cwd(), config.outputDir, config.projectName);
34
+ try {
35
+ await promises_1.default.access(projectPath);
36
+ }
37
+ catch (error) {
38
+ spinner.fail('No documentation found');
39
+ console.log(chalk_1.default.yellow('\nPlease run'), chalk_1.default.cyan('devcache-hub generate'), chalk_1.default.yellow('first.'));
40
+ process.exit(1);
41
+ }
42
+ // Read index.md file
43
+ spinner.text = 'Reading documentation files...';
44
+ const indexPath = path_1.default.join(projectPath, 'index.md');
45
+ let indexContent;
46
+ try {
47
+ indexContent = await promises_1.default.readFile(indexPath, 'utf-8');
48
+ }
49
+ catch (error) {
50
+ spinner.fail('index.md not found');
51
+ console.log(chalk_1.default.yellow('\nPlease run'), chalk_1.default.cyan('devcache-hub generate'), chalk_1.default.yellow('to create documentation.'));
52
+ process.exit(1);
53
+ }
54
+ // Read all documentation files
55
+ const files = [];
56
+ const categories = ['general', 'tech'];
57
+ for (const category of categories) {
58
+ const categoryPath = path_1.default.join(projectPath, category);
59
+ try {
60
+ const fileNames = await promises_1.default.readdir(categoryPath);
61
+ for (const filename of fileNames) {
62
+ if (filename.endsWith('.md')) {
63
+ const filePath = path_1.default.join(categoryPath, filename);
64
+ const content = await promises_1.default.readFile(filePath, 'utf-8');
65
+ files.push({ category, filename, content });
66
+ }
67
+ }
68
+ }
69
+ catch (error) {
70
+ utils_1.Logger.warn(`Category folder not found: ${category}`);
71
+ }
72
+ }
73
+ if (files.length === 0) {
74
+ spinner.fail('No documentation files found');
75
+ process.exit(1);
76
+ }
77
+ utils_1.Logger.debug(`Found ${files.length} documentation files + index.md`);
78
+ // Upload to Supabase
79
+ spinner.text = 'Uploading to Supabase...';
80
+ const storage = new storage_1.StorageManager(supabase);
81
+ const projectId = await storage.uploadDocumentation(config.projectName, files, indexContent, config.description);
19
82
  spinner.succeed(chalk_1.default.green('Documentation pushed successfully!'));
83
+ // Get project URL
84
+ const appUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://devcache.vercel.app';
20
85
  console.log(chalk_1.default.blue('\n✨ View your project at:'));
21
- console.log(chalk_1.default.cyan(' https://yourapp.com/dashboard/projects'));
86
+ console.log(chalk_1.default.cyan(` ${appUrl}/dashboard/projects/file/${projectId}`));
22
87
  console.log();
23
88
  }
24
89
  catch (error) {
25
90
  spinner.fail(chalk_1.default.red('Push failed'));
26
- console.error(error);
91
+ utils_1.Logger.error(error.message);
92
+ if (error.message.includes('not initialized')) {
93
+ console.log(chalk_1.default.yellow('\nRun'), chalk_1.default.cyan('devcache-hub init'), chalk_1.default.yellow('first to initialize the project.'));
94
+ }
95
+ else if (error.message.includes('Not authenticated')) {
96
+ console.log(chalk_1.default.yellow('\nRun'), chalk_1.default.cyan('devcache-hub login'), chalk_1.default.yellow('to authenticate.'));
97
+ }
27
98
  process.exit(1);
28
99
  }
29
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":";;;;;AAGA,kCAyBC;AA5BD,kDAA0B;AAC1B,8CAAsB;AAEf,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,sCAAsC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpE,IAAI,CAAC;QACH,uCAAuC;QACvC,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;QACnC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEvD,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACpC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC;QAC1C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAEnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -4,12 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ const dotenv_1 = require("dotenv");
8
+ const path_1 = require("path");
7
9
  const commander_1 = require("commander");
8
10
  const chalk_1 = __importDefault(require("chalk"));
9
11
  const init_1 = require("./commands/init");
10
12
  const generate_1 = require("./commands/generate");
11
13
  const push_1 = require("./commands/push");
12
14
  const login_1 = require("./commands/login");
15
+ // Load environment variables from multiple possible locations
16
+ // 1. Current working directory .env
17
+ (0, dotenv_1.config)({ path: (0, path_1.resolve)(process.cwd(), '.env') });
18
+ // 2. Current working directory .env.local
19
+ (0, dotenv_1.config)({ path: (0, path_1.resolve)(process.cwd(), '.env.local') });
20
+ // 3. User home directory .devcache/.env
21
+ (0, dotenv_1.config)({ path: (0, path_1.resolve)(process.env.HOME || process.env.USERPROFILE || '', '.devcache', '.env') });
13
22
  const program = new commander_1.Command();
14
23
  program
15
24
  .name('devcache')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,0CAA8C;AAC9C,kDAAsD;AACtD,0CAA8C;AAC9C,4CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AAEA,mCAAgC;AAChC,+BAA+B;AAC/B,yCAAoC;AACpC,kDAA0B;AAC1B,0CAA8C;AAC9C,kDAAsD;AACtD,0CAA8C;AAC9C,4CAAgD;AAEhD,8DAA8D;AAC9D,oCAAoC;AACpC,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACjD,0CAA0C;AAC1C,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AACvD,wCAAwC;AACxC,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAElG,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ export declare class FileSystemHandler {
2
+ /**
3
+ * Create output directory structure with project name
4
+ */
5
+ createOutputDirectory(outputPath: string, projectName: string): Promise<void>;
6
+ /**
7
+ * Write documentation file inside project folder
8
+ */
9
+ writeDocumentation(outputPath: string, projectName: string, category: 'general' | 'tech', filename: string, content: string): Promise<void>;
10
+ /**
11
+ * Write index.md file with project map
12
+ */
13
+ writeIndexFile(outputPath: string, projectName: string, projectDescription: string, files: Array<{
14
+ category: string;
15
+ filename: string;
16
+ description: string;
17
+ }>): Promise<void>;
18
+ /**
19
+ * Check if file exists
20
+ */
21
+ fileExists(filePath: string): Promise<boolean>;
22
+ /**
23
+ * Read file content
24
+ */
25
+ readFile(filePath: string): Promise<string>;
26
+ /**
27
+ * List files in directory
28
+ */
29
+ listFiles(dirPath: string): Promise<string[]>;
30
+ /**
31
+ * Delete directory recursively
32
+ */
33
+ deleteDirectory(dirPath: string): Promise<void>;
34
+ }
35
+ //# sourceMappingURL=FileSystemHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystemHandler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/FileSystemHandler.ts"],"names":[],"mappings":"AAIA,qBAAa,iBAAiB;IAC5B;;OAEG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnF;;OAEG;IACG,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS,GAAG,MAAM,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,GACxE,OAAO,CAAC,IAAI,CAAC;IA+ChB;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpD;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjD;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWnD;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtD"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FileSystemHandler = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const utils_1 = require("../utils");
10
+ class FileSystemHandler {
11
+ /**
12
+ * Create output directory structure with project name
13
+ */
14
+ async createOutputDirectory(outputPath, projectName) {
15
+ try {
16
+ // Create main output directory
17
+ await promises_1.default.mkdir(outputPath, { recursive: true });
18
+ // Create project-specific directory
19
+ const projectDir = path_1.default.join(outputPath, projectName);
20
+ await promises_1.default.mkdir(projectDir, { recursive: true });
21
+ // Create category directories inside project folder
22
+ await promises_1.default.mkdir(path_1.default.join(projectDir, 'general'), { recursive: true });
23
+ await promises_1.default.mkdir(path_1.default.join(projectDir, 'tech'), { recursive: true });
24
+ utils_1.Logger.debug(`Created output directory structure: ${projectDir}`);
25
+ }
26
+ catch (error) {
27
+ throw new Error(`Failed to create output directory: ${error}`);
28
+ }
29
+ }
30
+ /**
31
+ * Write documentation file inside project folder
32
+ */
33
+ async writeDocumentation(outputPath, projectName, category, filename, content) {
34
+ const filePath = path_1.default.join(outputPath, projectName, category, filename);
35
+ try {
36
+ await promises_1.default.writeFile(filePath, content, 'utf-8');
37
+ utils_1.Logger.debug(`Written file: ${filePath}`);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`Failed to write file ${filePath}: ${error}`);
41
+ }
42
+ }
43
+ /**
44
+ * Write index.md file with project map
45
+ */
46
+ async writeIndexFile(outputPath, projectName, projectDescription, files) {
47
+ const indexPath = path_1.default.join(outputPath, projectName, 'index.md');
48
+ let content = `# ${projectName}\n\n`;
49
+ content += `${projectDescription}\n\n`;
50
+ content += `---\n\n`;
51
+ content += `## 📁 Documentation Structure\n\n`;
52
+ content += `This documentation is organized into the following categories:\n\n`;
53
+ // Group by category
54
+ const general = files.filter(f => f.category === 'general');
55
+ const tech = files.filter(f => f.category === 'tech');
56
+ if (general.length > 0) {
57
+ content += `### 📋 General\n\n`;
58
+ content += `High-level overview and project context:\n\n`;
59
+ for (const file of general) {
60
+ content += `- **[${file.filename}](./general/${file.filename})** - ${file.description}\n`;
61
+ }
62
+ content += `\n`;
63
+ }
64
+ if (tech.length > 0) {
65
+ content += `### 🔧 Technical\n\n`;
66
+ content += `Technical details and implementation:\n\n`;
67
+ for (const file of tech) {
68
+ content += `- **[${file.filename}](./tech/${file.filename})** - ${file.description}\n`;
69
+ }
70
+ content += `\n`;
71
+ }
72
+ content += `---\n\n`;
73
+ content += `## 🚀 Quick Navigation\n\n`;
74
+ content += `- Start with **General** documentation to understand the project's purpose\n`;
75
+ content += `- Dive into **Technical** documentation for implementation details\n`;
76
+ content += `- Each document is self-contained and can be read independently\n\n`;
77
+ content += `---\n\n`;
78
+ content += `*Generated by DevCache on ${new Date().toISOString()}*\n`;
79
+ try {
80
+ await promises_1.default.writeFile(indexPath, content, 'utf-8');
81
+ utils_1.Logger.debug(`Written index file: ${indexPath}`);
82
+ }
83
+ catch (error) {
84
+ throw new Error(`Failed to write index file: ${error}`);
85
+ }
86
+ }
87
+ /**
88
+ * Check if file exists
89
+ */
90
+ async fileExists(filePath) {
91
+ try {
92
+ await promises_1.default.access(filePath);
93
+ return true;
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ /**
100
+ * Read file content
101
+ */
102
+ async readFile(filePath) {
103
+ try {
104
+ return await promises_1.default.readFile(filePath, 'utf-8');
105
+ }
106
+ catch (error) {
107
+ throw new Error(`Failed to read file ${filePath}: ${error}`);
108
+ }
109
+ }
110
+ /**
111
+ * List files in directory
112
+ */
113
+ async listFiles(dirPath) {
114
+ try {
115
+ const entries = await promises_1.default.readdir(dirPath, { withFileTypes: true });
116
+ return entries
117
+ .filter((entry) => entry.isFile())
118
+ .map((entry) => entry.name);
119
+ }
120
+ catch (error) {
121
+ throw new Error(`Failed to list files in ${dirPath}: ${error}`);
122
+ }
123
+ }
124
+ /**
125
+ * Delete directory recursively
126
+ */
127
+ async deleteDirectory(dirPath) {
128
+ try {
129
+ await promises_1.default.rm(dirPath, { recursive: true, force: true });
130
+ utils_1.Logger.debug(`Deleted directory: ${dirPath}`);
131
+ }
132
+ catch (error) {
133
+ throw new Error(`Failed to delete directory ${dirPath}: ${error}`);
134
+ }
135
+ }
136
+ }
137
+ exports.FileSystemHandler = FileSystemHandler;
138
+ //# sourceMappingURL=FileSystemHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystemHandler.js","sourceRoot":"","sources":["../../src/orchestrator/FileSystemHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { BaseAnalyzer } from '../analyzers/base/BaseAnalyzer';
2
+ import { AnalysisResult } from '../types';
3
+ export declare class Orchestrator {
4
+ private analyzers;
5
+ private templateManager;
6
+ private fsHandler;
7
+ private config;
8
+ private rootPath;
9
+ constructor(rootPath?: string);
10
+ /**
11
+ * Initialize orchestrator
12
+ */
13
+ initialize(): Promise<void>;
14
+ /**
15
+ * Register an analyzer
16
+ */
17
+ registerAnalyzer(analyzer: BaseAnalyzer): void;
18
+ /**
19
+ * Main analysis workflow
20
+ */
21
+ analyze(): Promise<AnalysisResult[]>;
22
+ /**
23
+ * Scan project and build context
24
+ */
25
+ private scanProject;
26
+ /**
27
+ * Get analysis summary
28
+ */
29
+ getSummary(results: AnalysisResult[]): string;
30
+ }
31
+ //# sourceMappingURL=Orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/Orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,OAAO,EAAkB,cAAc,EAAkB,MAAM,UAAU,CAAC;AAE1E,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,GAAE,MAAsB;IAO5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAK9C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAoF1C;;OAEG;YACW,WAAW;IA6BzB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM;CAmB9C"}