cortex-tms 3.1.0 → 4.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 (171) hide show
  1. package/README.md +248 -442
  2. package/dist/cli.js +26 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive.d.ts +5 -0
  5. package/dist/commands/archive.d.ts.map +1 -0
  6. package/dist/commands/archive.js +83 -0
  7. package/dist/commands/archive.js.map +1 -0
  8. package/dist/commands/auto-tier.d.ts.map +1 -1
  9. package/dist/commands/auto-tier.js +132 -58
  10. package/dist/commands/auto-tier.js.map +1 -1
  11. package/dist/commands/dashboard.d.ts +3 -0
  12. package/dist/commands/dashboard.d.ts.map +1 -0
  13. package/dist/commands/dashboard.js +20 -0
  14. package/dist/commands/dashboard.js.map +1 -0
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +23 -27
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/migrate.d.ts.map +1 -1
  19. package/dist/commands/migrate.js +26 -7
  20. package/dist/commands/migrate.js.map +1 -1
  21. package/dist/commands/prompt.d.ts.map +1 -1
  22. package/dist/commands/prompt.js +2 -0
  23. package/dist/commands/prompt.js.map +1 -1
  24. package/dist/commands/review.d.ts.map +1 -1
  25. package/dist/commands/review.js +44 -26
  26. package/dist/commands/review.js.map +1 -1
  27. package/dist/commands/status.d.ts +1 -0
  28. package/dist/commands/status.d.ts.map +1 -1
  29. package/dist/commands/status.js +4 -98
  30. package/dist/commands/status.js.map +1 -1
  31. package/dist/commands/tutorial.js +54 -3
  32. package/dist/commands/tutorial.js.map +1 -1
  33. package/dist/commands/validate.d.ts.map +1 -1
  34. package/dist/commands/validate.js +10 -3
  35. package/dist/commands/validate.js.map +1 -1
  36. package/dist/types/cli.d.ts +8 -0
  37. package/dist/types/cli.d.ts.map +1 -1
  38. package/dist/ui/components/Dashboard.d.ts +11 -0
  39. package/dist/ui/components/Dashboard.d.ts.map +1 -0
  40. package/dist/ui/components/Dashboard.js +63 -0
  41. package/dist/ui/components/Dashboard.js.map +1 -0
  42. package/dist/ui/components/dashboard/ContextReductionCard.d.ts +9 -0
  43. package/dist/ui/components/dashboard/ContextReductionCard.d.ts.map +1 -0
  44. package/dist/ui/components/dashboard/ContextReductionCard.js +38 -0
  45. package/dist/ui/components/dashboard/ContextReductionCard.js.map +1 -0
  46. package/dist/ui/components/dashboard/CostSavingsCard.d.ts +10 -0
  47. package/dist/ui/components/dashboard/CostSavingsCard.d.ts.map +1 -0
  48. package/dist/ui/components/dashboard/CostSavingsCard.js +45 -0
  49. package/dist/ui/components/dashboard/CostSavingsCard.js.map +1 -0
  50. package/dist/ui/components/dashboard/FileDistributionCard.d.ts +10 -0
  51. package/dist/ui/components/dashboard/FileDistributionCard.d.ts.map +1 -0
  52. package/dist/ui/components/dashboard/FileDistributionCard.js +51 -0
  53. package/dist/ui/components/dashboard/FileDistributionCard.js.map +1 -0
  54. package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts +15 -0
  55. package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts.map +1 -0
  56. package/dist/ui/components/dashboard/FileSizeHealthCard.js +48 -0
  57. package/dist/ui/components/dashboard/FileSizeHealthCard.js.map +1 -0
  58. package/dist/ui/components/dashboard/Footer.d.ts +3 -0
  59. package/dist/ui/components/dashboard/Footer.d.ts.map +1 -0
  60. package/dist/ui/components/dashboard/Footer.js +13 -0
  61. package/dist/ui/components/dashboard/Footer.js.map +1 -0
  62. package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts +10 -0
  63. package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts.map +1 -0
  64. package/dist/ui/components/dashboard/GovernanceHealthCard.js +43 -0
  65. package/dist/ui/components/dashboard/GovernanceHealthCard.js.map +1 -0
  66. package/dist/ui/components/dashboard/GuardianStatusCard.d.ts +10 -0
  67. package/dist/ui/components/dashboard/GuardianStatusCard.d.ts.map +1 -0
  68. package/dist/ui/components/dashboard/GuardianStatusCard.js +58 -0
  69. package/dist/ui/components/dashboard/GuardianStatusCard.js.map +1 -0
  70. package/dist/ui/components/dashboard/Header.d.ts +7 -0
  71. package/dist/ui/components/dashboard/Header.d.ts.map +1 -0
  72. package/dist/ui/components/dashboard/Header.js +21 -0
  73. package/dist/ui/components/dashboard/Header.js.map +1 -0
  74. package/dist/ui/components/dashboard/HotFilesCard.d.ts +8 -0
  75. package/dist/ui/components/dashboard/HotFilesCard.d.ts.map +1 -0
  76. package/dist/ui/components/dashboard/HotFilesCard.js +28 -0
  77. package/dist/ui/components/dashboard/HotFilesCard.js.map +1 -0
  78. package/dist/ui/components/dashboard/NotConfiguredCard.d.ts +10 -0
  79. package/dist/ui/components/dashboard/NotConfiguredCard.d.ts.map +1 -0
  80. package/dist/ui/components/dashboard/NotConfiguredCard.js +13 -0
  81. package/dist/ui/components/dashboard/NotConfiguredCard.js.map +1 -0
  82. package/dist/ui/components/dashboard/SprintProgressCard.d.ts +11 -0
  83. package/dist/ui/components/dashboard/SprintProgressCard.d.ts.map +1 -0
  84. package/dist/ui/components/dashboard/SprintProgressCard.js +33 -0
  85. package/dist/ui/components/dashboard/SprintProgressCard.js.map +1 -0
  86. package/dist/ui/components/dashboard/StalenessCard.d.ts +10 -0
  87. package/dist/ui/components/dashboard/StalenessCard.d.ts.map +1 -0
  88. package/dist/ui/components/dashboard/StalenessCard.js +43 -0
  89. package/dist/ui/components/dashboard/StalenessCard.js.map +1 -0
  90. package/dist/ui/components/dashboard/TabBar.d.ts +8 -0
  91. package/dist/ui/components/dashboard/TabBar.d.ts.map +1 -0
  92. package/dist/ui/components/dashboard/TabBar.js +16 -0
  93. package/dist/ui/components/dashboard/TabBar.js.map +1 -0
  94. package/dist/ui/components/dashboard/ValidationCard.d.ts +10 -0
  95. package/dist/ui/components/dashboard/ValidationCard.d.ts.map +1 -0
  96. package/dist/ui/components/dashboard/ValidationCard.js +62 -0
  97. package/dist/ui/components/dashboard/ValidationCard.js.map +1 -0
  98. package/dist/ui/components/dashboard/ViewContainer.d.ts +14 -0
  99. package/dist/ui/components/dashboard/ViewContainer.d.ts.map +1 -0
  100. package/dist/ui/components/dashboard/ViewContainer.js +53 -0
  101. package/dist/ui/components/dashboard/ViewContainer.js.map +1 -0
  102. package/dist/ui/components/dashboard/index.d.ts +14 -0
  103. package/dist/ui/components/dashboard/index.d.ts.map +1 -0
  104. package/dist/ui/components/dashboard/index.js +14 -0
  105. package/dist/ui/components/dashboard/index.js.map +1 -0
  106. package/dist/ui/index.d.ts +5 -0
  107. package/dist/ui/index.d.ts.map +1 -0
  108. package/dist/ui/index.js +46 -0
  109. package/dist/ui/index.js.map +1 -0
  110. package/dist/utils/errors.d.ts +20 -0
  111. package/dist/utils/errors.d.ts.map +1 -0
  112. package/dist/utils/errors.js +54 -0
  113. package/dist/utils/errors.js.map +1 -0
  114. package/dist/utils/git-history.d.ts.map +1 -1
  115. package/dist/utils/git-history.js +7 -3
  116. package/dist/utils/git-history.js.map +1 -1
  117. package/dist/utils/git-staleness.d.ts +13 -0
  118. package/dist/utils/git-staleness.d.ts.map +1 -0
  119. package/dist/utils/git-staleness.js +129 -0
  120. package/dist/utils/git-staleness.js.map +1 -0
  121. package/dist/utils/llm-client.d.ts.map +1 -1
  122. package/dist/utils/llm-client.js +5 -2
  123. package/dist/utils/llm-client.js.map +1 -1
  124. package/dist/utils/sanitize.d.ts +4 -0
  125. package/dist/utils/sanitize.d.ts.map +1 -0
  126. package/dist/utils/sanitize.js +44 -0
  127. package/dist/utils/sanitize.js.map +1 -0
  128. package/dist/utils/stats-collector.d.ts +62 -0
  129. package/dist/utils/stats-collector.d.ts.map +1 -0
  130. package/dist/utils/stats-collector.js +253 -0
  131. package/dist/utils/stats-collector.js.map +1 -0
  132. package/dist/utils/templates.d.ts.map +1 -1
  133. package/dist/utils/templates.js +11 -1
  134. package/dist/utils/templates.js.map +1 -1
  135. package/dist/utils/validation.d.ts +159 -0
  136. package/dist/utils/validation.d.ts.map +1 -0
  137. package/dist/utils/validation.js +172 -0
  138. package/dist/utils/validation.js.map +1 -0
  139. package/dist/utils/validator.d.ts.map +1 -1
  140. package/dist/utils/validator.js +66 -1
  141. package/dist/utils/validator.js.map +1 -1
  142. package/package.json +10 -3
  143. package/templates/CLAUDE.md +1 -1
  144. package/templates/FUTURE-ENHANCEMENTS.md +1 -1
  145. package/templates/NEXT-TASKS.md +1 -1
  146. package/templates/PROMPTS.md +1 -1
  147. package/templates/README.md +1 -1
  148. package/templates/docs/archive/v1.0-CHANGELOG.md +1 -1
  149. package/templates/docs/core/ARCHITECTURE.md +1 -1
  150. package/templates/docs/core/DECISIONS.md +1 -1
  151. package/templates/docs/core/DOMAIN-LOGIC.md +1 -1
  152. package/templates/docs/core/GLOSSARY.md +1 -1
  153. package/templates/docs/core/PATTERNS.md +1 -1
  154. package/templates/docs/core/SCHEMA.md +1 -1
  155. package/templates/docs/core/TROUBLESHOOTING.md +1 -1
  156. package/dist/__tests__/init.test.d.ts +0 -2
  157. package/dist/__tests__/init.test.d.ts.map +0 -1
  158. package/dist/__tests__/init.test.js +0 -173
  159. package/dist/__tests__/init.test.js.map +0 -1
  160. package/dist/__tests__/release.test.d.ts +0 -2
  161. package/dist/__tests__/release.test.d.ts.map +0 -1
  162. package/dist/__tests__/release.test.js +0 -484
  163. package/dist/__tests__/release.test.js.map +0 -1
  164. package/dist/__tests__/utils/temp-dir.d.ts +0 -6
  165. package/dist/__tests__/utils/temp-dir.d.ts.map +0 -1
  166. package/dist/__tests__/utils/temp-dir.js +0 -34
  167. package/dist/__tests__/utils/temp-dir.js.map +0 -1
  168. package/dist/__tests__/validate.test.d.ts +0 -2
  169. package/dist/__tests__/validate.test.d.ts.map +0 -1
  170. package/dist/__tests__/validate.test.js +0 -209
  171. package/dist/__tests__/validate.test.js.map +0 -1
package/dist/cli.js CHANGED
@@ -4,6 +4,8 @@ import { readFileSync } from 'fs';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { dirname, join } from 'path';
6
6
  import chalk from 'chalk';
7
+ import { CLIError, ValidationError, formatError } from './utils/errors.js';
8
+ import { sanitizeApiKey } from './utils/sanitize.js';
7
9
  const __filename = fileURLToPath(import.meta.url);
8
10
  const __dirname = dirname(__filename);
9
11
  const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
@@ -23,7 +25,8 @@ import { migrateCommand } from './commands/migrate.js';
23
25
  import { promptCommand } from './commands/prompt.js';
24
26
  import { tutorialCommand } from './commands/tutorial.js';
25
27
  import { reviewCommand } from './commands/review.js';
26
- import { autoTierCommand } from './commands/auto-tier.js';
28
+ import { archiveCommand } from './commands/archive.js';
29
+ import { dashboardCommand } from './commands/dashboard.js';
27
30
  program.addCommand(initCommand);
28
31
  program.addCommand(validateCommand);
29
32
  program.addCommand(statusCommand);
@@ -31,23 +34,40 @@ program.addCommand(migrateCommand);
31
34
  program.addCommand(promptCommand);
32
35
  program.addCommand(tutorialCommand);
33
36
  program.addCommand(reviewCommand);
34
- program.addCommand(autoTierCommand);
37
+ program.addCommand(archiveCommand);
38
+ program.addCommand(dashboardCommand);
39
+ const autoTierDeprecated = new Command('auto-tier')
40
+ .description(chalk.yellow('āš ļø DEPRECATED: Use "cortex-tms archive" instead'))
41
+ .option('--dry-run', 'Preview what would be archived')
42
+ .action(async (options) => {
43
+ console.log(chalk.yellow('\nāš ļø DEPRECATION WARNING'));
44
+ console.log(chalk.gray(' The "auto-tier" command is deprecated and will be removed in v5.0'));
45
+ console.log(chalk.gray(' Please use'), chalk.cyan('cortex-tms archive'), chalk.gray('instead\n'));
46
+ await archiveCommand.parseAsync(['node', 'cortex-tms', 'archive', ...(options.dryRun ? ['--dry-run'] : [])]);
47
+ });
48
+ program.addCommand(autoTierDeprecated);
35
49
  program.on('command:*', () => {
36
- console.error(chalk.red('\nāŒ Invalid command:'), chalk.bold(program.args.join(' ')));
37
- console.log(chalk.gray('\nRun'), chalk.cyan('cortex-tms --help'), chalk.gray('to see available commands.'));
38
- process.exit(1);
50
+ throw new ValidationError('Invalid command', {
51
+ command: program.args.join(' '),
52
+ hint: 'Run "cortex-tms --help" to see available commands',
53
+ });
39
54
  });
40
55
  program.exitOverride();
41
56
  try {
42
57
  await program.parseAsync(process.argv);
43
58
  }
44
59
  catch (error) {
60
+ if (error instanceof CLIError) {
61
+ console.error(chalk.red('\nāŒ Error:'), formatError(error));
62
+ process.exit(error.exitCode);
63
+ }
45
64
  if (error instanceof Error) {
46
65
  if ('code' in error && typeof error.code === 'string') {
47
66
  process.exit(1);
48
67
  }
49
68
  if (!error.message.includes('(outputHelp)')) {
50
- console.error(chalk.red('\nāŒ Error:'), error.message);
69
+ const sanitizedMessage = sanitizeApiKey(error.message);
70
+ console.error(chalk.red('\nāŒ Error:'), sanitizedMessage);
51
71
  }
52
72
  }
53
73
  process.exit(1);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ export declare function createArchiveCommand(): Command;
3
+ export declare const archiveCommand: Command;
4
+ export default createArchiveCommand;
5
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,oBAAoB,IAAI,OAAO,CAW9C;AA6FD,eAAO,MAAM,cAAc,SAAyB,CAAC;AACrD,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { readFile, writeFile, mkdir } from 'fs/promises';
5
+ import { join } from 'path';
6
+ import { existsSync } from 'fs';
7
+ export function createArchiveCommand() {
8
+ const archiveCommand = new Command('archive');
9
+ archiveCommand
10
+ .description('Archive completed tasks and old content')
11
+ .option('--dry-run', 'Preview what would be archived without making changes')
12
+ .action(async (options) => {
13
+ await runArchive(options);
14
+ });
15
+ return archiveCommand;
16
+ }
17
+ async function runArchive(options) {
18
+ const cwd = process.cwd();
19
+ const nextTasksPath = join(cwd, 'NEXT-TASKS.md');
20
+ const archiveDir = join(cwd, 'docs', 'archive');
21
+ console.log(chalk.bold.cyan('\nšŸ“¦ Cortex TMS Archive\n'));
22
+ if (!existsSync(nextTasksPath)) {
23
+ console.log(chalk.yellow('āš ļø NEXT-TASKS.md not found in current directory'));
24
+ console.log(chalk.gray(' Run this command from your project root\n'));
25
+ return;
26
+ }
27
+ const spinner = ora('Analyzing tasks...').start();
28
+ try {
29
+ const content = await readFile(nextTasksPath, 'utf-8');
30
+ const lines = content.split('\n');
31
+ const completedTaskLines = lines.filter(line => line.includes('āœ…') || /\[x\]/i.test(line) || line.includes('COMPLETED'));
32
+ spinner.succeed(`Found ${completedTaskLines.length} completed task markers`);
33
+ if (completedTaskLines.length === 0) {
34
+ console.log(chalk.green('\nāœ“ No completed tasks to archive'));
35
+ console.log(chalk.gray(' NEXT-TASKS.md is already clean\n'));
36
+ return;
37
+ }
38
+ if (options.dryRun) {
39
+ console.log(chalk.bold('\nšŸ“‹ Archive Preview (Dry Run)\n'));
40
+ console.log(chalk.gray(' The following would be archived:\n'));
41
+ completedTaskLines.slice(0, 5).forEach(line => {
42
+ console.log(chalk.gray(` ${line.trim().substring(0, 80)}...`));
43
+ });
44
+ if (completedTaskLines.length > 5) {
45
+ console.log(chalk.gray(` ... and ${completedTaskLines.length - 5} more\n`));
46
+ }
47
+ console.log(chalk.yellow('\nāš ļø Run without --dry-run to actually archive\n'));
48
+ return;
49
+ }
50
+ if (!existsSync(archiveDir)) {
51
+ await mkdir(archiveDir, { recursive: true });
52
+ }
53
+ const timestamp = new Date().toISOString().split('T')[0];
54
+ const archiveFilename = `completed-tasks-${timestamp}.md`;
55
+ const archivePath = join(archiveDir, archiveFilename);
56
+ const archiveContent = `# Completed Tasks - Archived ${timestamp}
57
+
58
+ This file contains tasks that were completed and archived from NEXT-TASKS.md.
59
+
60
+ ---
61
+
62
+ ${completedTaskLines.join('\n')}
63
+
64
+ ---
65
+
66
+ Archived on: ${new Date().toISOString()}
67
+ `;
68
+ await writeFile(archivePath, archiveContent, 'utf-8');
69
+ console.log(chalk.bold('\n✨ Archive Complete\n'));
70
+ console.log(chalk.green(` āœ“ Archived ${completedTaskLines.length} completed tasks`));
71
+ console.log(chalk.gray(` āœ“ Saved to: ${archivePath.replace(cwd, '.')}\n`));
72
+ console.log(chalk.yellow('āš ļø Note: NEXT-TASKS.md was not modified'));
73
+ console.log(chalk.gray(' Manually remove completed tasks from NEXT-TASKS.md'));
74
+ console.log(chalk.gray(' Or use `cortex-tms validate` to check for cleanup recommendations\n'));
75
+ }
76
+ catch (error) {
77
+ spinner.fail('Archive failed');
78
+ throw error instanceof Error ? error : new Error('Unknown error');
79
+ }
80
+ }
81
+ export const archiveCommand = createArchiveCommand();
82
+ export default createArchiveCommand;
83
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-tier.d.ts","sourceRoot":"","sources":["../../src/commands/auto-tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,qBAAqB,IAAI,OAAO,CAc/C;AA0LD,eAAO,MAAM,eAAe,SAA0B,CAAC"}
1
+ {"version":3,"file":"auto-tier.d.ts","sourceRoot":"","sources":["../../src/commands/auto-tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmHpC,wBAAgB,qBAAqB,IAAI,OAAO,CAe/C;AA4OD,eAAO,MAAM,eAAe,SAA0B,CAAC"}
@@ -5,14 +5,66 @@ import { glob } from 'glob';
5
5
  import { readFile, writeFile } from 'fs/promises';
6
6
  import { isGitRepo, analyzeFileHistory } from '../utils/git-history.js';
7
7
  import { readTierTag, writeTierTag } from '../utils/tier-tags.js';
8
- const MANDATORY_HOT = ['NEXT-TASKS.md', 'CLAUDE.md', '.github/copilot-instructions.md'];
8
+ import { GitError } from '../utils/errors.js';
9
+ import { autoTierOptionsSchema, validateOptions } from '../utils/validation.js';
10
+ const MANDATORY_HOT = [
11
+ 'NEXT-TASKS.md',
12
+ 'CLAUDE.md',
13
+ '.github/copilot-instructions.md',
14
+ 'docs/core/PATTERNS.md',
15
+ 'docs/core/GLOSSARY.md',
16
+ ];
17
+ function isCanonicalHot(filePath) {
18
+ return MANDATORY_HOT.includes(filePath);
19
+ }
20
+ function calculateFileScore(filePath, daysSinceChange, hotDays) {
21
+ let score = 0;
22
+ if (isCanonicalHot(filePath)) {
23
+ score += 100;
24
+ }
25
+ if (filePath.startsWith('docs/')) {
26
+ score += 40;
27
+ if (filePath.startsWith('docs/core/')) {
28
+ score += 10;
29
+ }
30
+ if (filePath.startsWith('docs/archive/')) {
31
+ score -= 60;
32
+ }
33
+ }
34
+ if (daysSinceChange <= hotDays) {
35
+ score += 15;
36
+ }
37
+ else if (daysSinceChange <= hotDays * 2) {
38
+ score += 5;
39
+ }
40
+ return score;
41
+ }
42
+ function getDirectoryBasedTier(filePath) {
43
+ if (filePath.startsWith('docs/archive/')) {
44
+ return { tier: 'COLD', directory: 'docs/archive/' };
45
+ }
46
+ if (filePath.startsWith('examples/')) {
47
+ return { tier: 'COLD', directory: 'examples/' };
48
+ }
49
+ if (filePath.startsWith('templates/')) {
50
+ return { tier: 'WARM', directory: 'templates/' };
51
+ }
52
+ if (filePath.startsWith('docs/guides/')) {
53
+ return { tier: 'WARM', directory: 'docs/guides/' };
54
+ }
55
+ if (filePath.startsWith('docs/tasks/')) {
56
+ return { tier: 'WARM', directory: 'docs/tasks/' };
57
+ }
58
+ return null;
59
+ }
9
60
  export function createAutoTierCommand() {
10
61
  const cmd = new Command('auto-tier');
11
62
  cmd
12
63
  .description('Analyze and apply tier tags based on git history (use --dry-run to preview)')
13
- .option('--hot <days>', 'Files modified within N days → HOT', '7')
14
- .option('--warm <days>', 'Files modified within N days → WARM', '30')
64
+ .option('--hot <days>', 'Files modified ≤N days ago get recency bonus', '7')
65
+ .option('--warm <days>', 'Files modified ≤N days ago → WARM (aging beyond this stays WARM until --cold)', '30')
15
66
  .option('--cold <days>', 'Files older than N days → COLD', '90')
67
+ .option('--max-hot <count>', 'Maximum number of HOT files (capped)', '10')
16
68
  .option('-d, --dry-run', 'Preview changes without applying')
17
69
  .option('-f, --force', 'Overwrite existing tier tags')
18
70
  .option('-v, --verbose', 'Show detailed output')
@@ -21,36 +73,14 @@ export function createAutoTierCommand() {
21
73
  }
22
74
  async function runAutoTier(options) {
23
75
  const cwd = process.cwd();
24
- const hotDays = parseInt(String(options.hot), 10);
25
- const warmDays = parseInt(String(options.warm), 10);
26
- const coldDays = parseInt(String(options.cold), 10);
27
- if (isNaN(hotDays) || hotDays < 0) {
28
- console.log(chalk.red('āŒ Error: --hot must be a positive number'));
29
- process.exit(1);
30
- }
31
- if (isNaN(warmDays) || warmDays < 0) {
32
- console.log(chalk.red('āŒ Error: --warm must be a positive number'));
33
- process.exit(1);
34
- }
35
- if (isNaN(coldDays) || coldDays < 0) {
36
- console.log(chalk.red('āŒ Error: --cold must be a positive number'));
37
- process.exit(1);
38
- }
39
- if (hotDays > warmDays) {
40
- console.log(chalk.red('āŒ Error: --hot threshold must be ≤ --warm threshold'));
41
- console.log(chalk.gray(` Got: hot=${hotDays}, warm=${warmDays}`));
42
- process.exit(1);
43
- }
44
- if (warmDays > coldDays) {
45
- console.log(chalk.red('āŒ Error: --warm threshold must be ≤ --cold threshold'));
46
- console.log(chalk.gray(` Got: warm=${warmDays}, cold=${coldDays}`));
47
- process.exit(1);
48
- }
76
+ const validated = validateOptions(autoTierOptionsSchema, options, 'auto-tier');
77
+ const hotDays = validated.hot;
78
+ const warmDays = validated.warm;
79
+ const coldDays = validated.cold;
80
+ const maxHotFiles = validated.maxHot ?? 10;
49
81
  console.log(chalk.bold.cyan('\nšŸ”„ Git-Based Auto-Tiering\n'));
50
82
  if (!isGitRepo(cwd)) {
51
- console.log(chalk.red('āŒ Error: Not a git repository'));
52
- console.log(chalk.gray(' Run this command in a git-initialized project.'));
53
- process.exit(1);
83
+ throw new GitError('Not a git repository. Run this command in a git-initialized project.');
54
84
  }
55
85
  if (options.dryRun) {
56
86
  console.log(chalk.yellow('šŸ” DRY RUN MODE: No files will be modified.\n'));
@@ -58,50 +88,74 @@ async function runAutoTier(options) {
58
88
  const spinner = ora('Analyzing git history...').start();
59
89
  const files = await glob('**/*.md', {
60
90
  cwd,
61
- ignore: ['node_modules/**', '.git/**', 'dist/**'],
91
+ dot: true,
92
+ ignore: ['**/node_modules/**', '.git/**', '**/dist/**'],
62
93
  });
63
94
  const gitInfo = analyzeFileHistory(cwd, files);
64
95
  spinner.text = 'Calculating tier suggestions...';
65
- const suggestions = [];
96
+ const scoredFiles = [];
66
97
  for (const info of gitInfo) {
98
+ if (!info.isTracked) {
99
+ continue;
100
+ }
67
101
  const content = await readFile(info.path, 'utf-8');
68
102
  const currentTier = readTierTag(content);
103
+ if (currentTier && !options.force && !isCanonicalHot(info.path)) {
104
+ continue;
105
+ }
106
+ const score = calculateFileScore(info.path, info.daysSinceChange, hotDays);
107
+ scoredFiles.push({
108
+ info,
109
+ content,
110
+ currentTier,
111
+ score,
112
+ });
113
+ }
114
+ scoredFiles.sort((a, b) => {
115
+ const scoreDiff = b.score - a.score;
116
+ if (scoreDiff !== 0)
117
+ return scoreDiff;
118
+ return a.info.path.localeCompare(b.info.path);
119
+ });
120
+ const suggestions = [];
121
+ let hotCount = 0;
122
+ for (const scored of scoredFiles) {
123
+ const { info, currentTier } = scored;
69
124
  let suggestedTier;
70
125
  let reason;
71
- if (MANDATORY_HOT.some(f => info.path.endsWith(f))) {
72
- suggestedTier = 'HOT';
73
- reason = 'Mandatory HOT file';
74
- }
75
- else if (info.isNewFile) {
76
- suggestedTier = 'HOT';
77
- reason = 'New/untracked file (active work)';
78
- }
79
- else if (info.daysSinceChange <= hotDays) {
126
+ if (hotCount < maxHotFiles && (isCanonicalHot(info.path) || scored.score >= 40)) {
80
127
  suggestedTier = 'HOT';
81
- reason = `Modified ${Math.round(info.daysSinceChange)} days ago`;
82
- }
83
- else if (info.daysSinceChange <= warmDays) {
84
- suggestedTier = 'WARM';
85
- reason = `Modified ${Math.round(info.daysSinceChange)} days ago`;
86
- }
87
- else if (info.daysSinceChange <= coldDays) {
88
- suggestedTier = 'WARM';
89
- reason = `Modified ${Math.round(info.daysSinceChange)} days ago (aging)`;
128
+ reason = isCanonicalHot(info.path)
129
+ ? 'Canonical HOT file'
130
+ : `High-value doc (score: ${scored.score})`;
131
+ hotCount++;
90
132
  }
91
133
  else {
92
- suggestedTier = 'COLD';
93
- reason = `No changes in ${Math.round(info.daysSinceChange)} days`;
134
+ const dirResult = getDirectoryBasedTier(info.path);
135
+ if (dirResult) {
136
+ suggestedTier = dirResult.tier;
137
+ reason = `Directory convention: ${dirResult.directory}`;
138
+ }
139
+ else if (info.daysSinceChange <= warmDays) {
140
+ suggestedTier = 'WARM';
141
+ reason = `Modified ${Math.round(info.daysSinceChange)} days ago`;
142
+ }
143
+ else if (info.daysSinceChange <= coldDays) {
144
+ suggestedTier = 'WARM';
145
+ reason = `Modified ${Math.round(info.daysSinceChange)} days ago (aging)`;
146
+ }
147
+ else {
148
+ suggestedTier = 'COLD';
149
+ reason = `No changes in ${Math.round(info.daysSinceChange)} days`;
150
+ }
94
151
  }
95
152
  let action;
96
153
  if (!currentTier) {
97
154
  action = 'CREATE';
98
155
  }
99
- else if (currentTier !== suggestedTier && options.force) {
156
+ else if (currentTier !== suggestedTier) {
100
157
  action = 'UPDATE';
101
158
  }
102
- else if (currentTier === suggestedTier) {
103
- action = 'SKIP';
104
- }
105
159
  else {
106
160
  action = 'SKIP';
107
161
  }
@@ -114,6 +168,25 @@ async function runAutoTier(options) {
114
168
  action,
115
169
  });
116
170
  }
171
+ for (const info of gitInfo) {
172
+ if (!info.isTracked)
173
+ continue;
174
+ const content = await readFile(info.path, 'utf-8');
175
+ const currentTier = readTierTag(content);
176
+ if (currentTier && !options.force) {
177
+ const alreadyAdded = suggestions.some(s => s.path === info.path);
178
+ if (!alreadyAdded) {
179
+ suggestions.push({
180
+ path: info.path,
181
+ currentTier,
182
+ suggestedTier: currentTier,
183
+ reason: 'Explicit tier tag (use --force to override)',
184
+ daysSinceChange: info.daysSinceChange,
185
+ action: 'SKIP',
186
+ });
187
+ }
188
+ }
189
+ }
117
190
  spinner.succeed(`Analyzed ${files.length} files`);
118
191
  printSuggestions(suggestions, options.verbose || false);
119
192
  if (!options.dryRun) {
@@ -121,8 +194,9 @@ async function runAutoTier(options) {
121
194
  }
122
195
  }
123
196
  function printSuggestions(suggestions, verbose) {
197
+ const toChange = suggestions.filter(s => s.action !== 'SKIP');
124
198
  const byTier = { HOT: [], WARM: [], COLD: [] };
125
- suggestions.forEach(s => byTier[s.suggestedTier].push(s));
199
+ toChange.forEach(s => byTier[s.suggestedTier].push(s));
126
200
  console.log(chalk.bold('\nšŸ“Š Tier Suggestions:\n'));
127
201
  console.log(chalk.red.bold(`šŸ”„ HOT (${byTier.HOT.length} files)`));
128
202
  byTier.HOT.slice(0, 10).forEach(s => {
@@ -1 +1 @@
1
- {"version":3,"file":"auto-tier.js","sourceRoot":"","sources":["../../src/commands/auto-tier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-tier.js","sourceRoot":"","sources":["../../src/commands/auto-tier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const dashboardCommand: Command;
3
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,gBAAgB,SAezB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Command } from 'commander';
2
+ import { renderDashboard } from '../ui/index.js';
3
+ import { CLIError } from '../utils/errors.js';
4
+ export const dashboardCommand = new Command('dashboard')
5
+ .description('šŸŽØ Interactive terminal dashboard for TMS project stats')
6
+ .option('--live', 'Enable live updates (refreshes every 5 seconds)', false)
7
+ .option('--cwd <path>', 'Project directory (defaults to current directory)')
8
+ .action(async (options) => {
9
+ const cwd = options.cwd || process.cwd();
10
+ const live = options.live || false;
11
+ try {
12
+ await renderDashboard({ cwd, live });
13
+ }
14
+ catch (error) {
15
+ throw new CLIError('Failed to render dashboard', 1, {
16
+ cause: error instanceof Error ? error.message : String(error),
17
+ });
18
+ }
19
+ });
20
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,QAAQ,EAAE,iDAAiD,EAAE,KAAK,CAAC;KAC1E,MAAM,CAAC,cAAc,EAAE,mDAAmD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,4BAA4B,EAAE,CAAC,EAAE;YAClD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAe3C;AAsSD,eAAO,MAAM,WAAW,SAAsB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAe3C;AA+RD,eAAO,MAAM,WAAW,SAAsB,CAAC"}