cortex-tms 4.0.0 → 4.0.2

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/README.md +22 -12
  2. package/dist/cli.js +45 -37
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive.d.ts +1 -1
  5. package/dist/commands/archive.d.ts.map +1 -1
  6. package/dist/commands/archive.js +36 -34
  7. package/dist/commands/archive.js.map +1 -1
  8. package/dist/commands/auto-tier.d.ts +1 -1
  9. package/dist/commands/auto-tier.d.ts.map +1 -1
  10. package/dist/commands/auto-tier.js +77 -76
  11. package/dist/commands/auto-tier.js.map +1 -1
  12. package/dist/commands/dashboard.d.ts +1 -1
  13. package/dist/commands/dashboard.js +8 -8
  14. package/dist/commands/init.d.ts +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +73 -73
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/migrate.d.ts +2 -2
  19. package/dist/commands/migrate.d.ts.map +1 -1
  20. package/dist/commands/migrate.js +147 -136
  21. package/dist/commands/migrate.js.map +1 -1
  22. package/dist/commands/prompt.d.ts +1 -1
  23. package/dist/commands/prompt.d.ts.map +1 -1
  24. package/dist/commands/prompt.js +32 -31
  25. package/dist/commands/prompt.js.map +1 -1
  26. package/dist/commands/review.d.ts +1 -1
  27. package/dist/commands/review.d.ts.map +1 -1
  28. package/dist/commands/review.js +60 -60
  29. package/dist/commands/review.js.map +1 -1
  30. package/dist/commands/status.d.ts +1 -1
  31. package/dist/commands/status.d.ts.map +1 -1
  32. package/dist/commands/status.js +51 -45
  33. package/dist/commands/status.js.map +1 -1
  34. package/dist/commands/tutorial.d.ts +1 -1
  35. package/dist/commands/tutorial.js +168 -168
  36. package/dist/commands/tutorial.js.map +1 -1
  37. package/dist/commands/validate.d.ts +1 -1
  38. package/dist/commands/validate.d.ts.map +1 -1
  39. package/dist/commands/validate.js +60 -60
  40. package/dist/commands/validate.js.map +1 -1
  41. package/dist/types/cli.d.ts +15 -15
  42. package/dist/types/guardian.d.ts +2 -2
  43. package/dist/ui/components/Dashboard.d.ts +2 -2
  44. package/dist/ui/components/Dashboard.d.ts.map +1 -1
  45. package/dist/ui/components/Dashboard.js +24 -23
  46. package/dist/ui/components/Dashboard.js.map +1 -1
  47. package/dist/ui/components/dashboard/ContextReductionCard.d.ts +1 -1
  48. package/dist/ui/components/dashboard/ContextReductionCard.d.ts.map +1 -1
  49. package/dist/ui/components/dashboard/ContextReductionCard.js +5 -5
  50. package/dist/ui/components/dashboard/ContextReductionCard.js.map +1 -1
  51. package/dist/ui/components/dashboard/CostSavingsCard.d.ts +1 -1
  52. package/dist/ui/components/dashboard/CostSavingsCard.d.ts.map +1 -1
  53. package/dist/ui/components/dashboard/CostSavingsCard.js +7 -7
  54. package/dist/ui/components/dashboard/CostSavingsCard.js.map +1 -1
  55. package/dist/ui/components/dashboard/FileDistributionCard.d.ts +1 -1
  56. package/dist/ui/components/dashboard/FileDistributionCard.d.ts.map +1 -1
  57. package/dist/ui/components/dashboard/FileDistributionCard.js +10 -10
  58. package/dist/ui/components/dashboard/FileDistributionCard.js.map +1 -1
  59. package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts +2 -2
  60. package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts.map +1 -1
  61. package/dist/ui/components/dashboard/FileSizeHealthCard.js +12 -12
  62. package/dist/ui/components/dashboard/FileSizeHealthCard.js.map +1 -1
  63. package/dist/ui/components/dashboard/Footer.d.ts +1 -1
  64. package/dist/ui/components/dashboard/Footer.d.ts.map +1 -1
  65. package/dist/ui/components/dashboard/Footer.js +2 -2
  66. package/dist/ui/components/dashboard/Footer.js.map +1 -1
  67. package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts +3 -3
  68. package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts.map +1 -1
  69. package/dist/ui/components/dashboard/GovernanceHealthCard.js +17 -14
  70. package/dist/ui/components/dashboard/GovernanceHealthCard.js.map +1 -1
  71. package/dist/ui/components/dashboard/GuardianStatusCard.d.ts +2 -2
  72. package/dist/ui/components/dashboard/GuardianStatusCard.d.ts.map +1 -1
  73. package/dist/ui/components/dashboard/GuardianStatusCard.js +29 -16
  74. package/dist/ui/components/dashboard/GuardianStatusCard.js.map +1 -1
  75. package/dist/ui/components/dashboard/Header.d.ts +1 -1
  76. package/dist/ui/components/dashboard/Header.js +2 -2
  77. package/dist/ui/components/dashboard/HotFilesCard.d.ts +1 -1
  78. package/dist/ui/components/dashboard/HotFilesCard.d.ts.map +1 -1
  79. package/dist/ui/components/dashboard/HotFilesCard.js +6 -6
  80. package/dist/ui/components/dashboard/HotFilesCard.js.map +1 -1
  81. package/dist/ui/components/dashboard/NotConfiguredCard.d.ts +2 -2
  82. package/dist/ui/components/dashboard/NotConfiguredCard.d.ts.map +1 -1
  83. package/dist/ui/components/dashboard/NotConfiguredCard.js +3 -3
  84. package/dist/ui/components/dashboard/NotConfiguredCard.js.map +1 -1
  85. package/dist/ui/components/dashboard/SprintProgressCard.d.ts +1 -1
  86. package/dist/ui/components/dashboard/SprintProgressCard.d.ts.map +1 -1
  87. package/dist/ui/components/dashboard/SprintProgressCard.js +4 -4
  88. package/dist/ui/components/dashboard/SprintProgressCard.js.map +1 -1
  89. package/dist/ui/components/dashboard/StalenessCard.d.ts +1 -1
  90. package/dist/ui/components/dashboard/StalenessCard.d.ts.map +1 -1
  91. package/dist/ui/components/dashboard/StalenessCard.js +9 -9
  92. package/dist/ui/components/dashboard/StalenessCard.js.map +1 -1
  93. package/dist/ui/components/dashboard/TabBar.d.ts +2 -2
  94. package/dist/ui/components/dashboard/TabBar.js +7 -7
  95. package/dist/ui/components/dashboard/TabBar.js.map +1 -1
  96. package/dist/ui/components/dashboard/ValidationCard.d.ts +2 -2
  97. package/dist/ui/components/dashboard/ValidationCard.d.ts.map +1 -1
  98. package/dist/ui/components/dashboard/ValidationCard.js +22 -22
  99. package/dist/ui/components/dashboard/ValidationCard.js.map +1 -1
  100. package/dist/ui/components/dashboard/ViewContainer.d.ts +3 -3
  101. package/dist/ui/components/dashboard/ViewContainer.d.ts.map +1 -1
  102. package/dist/ui/components/dashboard/ViewContainer.js +20 -20
  103. package/dist/ui/components/dashboard/ViewContainer.js.map +1 -1
  104. package/dist/ui/components/dashboard/index.d.ts +13 -13
  105. package/dist/ui/components/dashboard/index.js +13 -13
  106. package/dist/ui/index.d.ts.map +1 -1
  107. package/dist/ui/index.js +10 -10
  108. package/dist/ui/index.js.map +1 -1
  109. package/dist/utils/backup.d.ts.map +1 -1
  110. package/dist/utils/backup.js +20 -20
  111. package/dist/utils/backup.js.map +1 -1
  112. package/dist/utils/config.d.ts +1 -1
  113. package/dist/utils/config.js +68 -68
  114. package/dist/utils/detection.d.ts +1 -1
  115. package/dist/utils/detection.js +25 -25
  116. package/dist/utils/errors.d.ts.map +1 -1
  117. package/dist/utils/errors.js +4 -4
  118. package/dist/utils/errors.js.map +1 -1
  119. package/dist/utils/git-history.d.ts.map +1 -1
  120. package/dist/utils/git-history.js +9 -5
  121. package/dist/utils/git-history.js.map +1 -1
  122. package/dist/utils/git-staleness.d.ts.map +1 -1
  123. package/dist/utils/git-staleness.js +21 -21
  124. package/dist/utils/git-staleness.js.map +1 -1
  125. package/dist/utils/guardian-prompt.d.ts.map +1 -1
  126. package/dist/utils/guardian-prompt.js +1 -1
  127. package/dist/utils/guardian-prompt.js.map +1 -1
  128. package/dist/utils/llm-client.d.ts +5 -5
  129. package/dist/utils/llm-client.d.ts.map +1 -1
  130. package/dist/utils/llm-client.js +56 -53
  131. package/dist/utils/llm-client.js.map +1 -1
  132. package/dist/utils/prompt-parser.d.ts.map +1 -1
  133. package/dist/utils/prompt-parser.js +13 -17
  134. package/dist/utils/prompt-parser.js.map +1 -1
  135. package/dist/utils/prompts.d.ts +1 -1
  136. package/dist/utils/prompts.d.ts.map +1 -1
  137. package/dist/utils/prompts.js +74 -49
  138. package/dist/utils/prompts.js.map +1 -1
  139. package/dist/utils/sanitize.js +6 -6
  140. package/dist/utils/sanitize.js.map +1 -1
  141. package/dist/utils/stats-collector.d.ts +3 -9
  142. package/dist/utils/stats-collector.d.ts.map +1 -1
  143. package/dist/utils/stats-collector.js +74 -83
  144. package/dist/utils/stats-collector.js.map +1 -1
  145. package/dist/utils/status.d.ts +1 -1
  146. package/dist/utils/status.d.ts.map +1 -1
  147. package/dist/utils/status.js +16 -16
  148. package/dist/utils/status.js.map +1 -1
  149. package/dist/utils/templates.d.ts +3 -3
  150. package/dist/utils/templates.d.ts.map +1 -1
  151. package/dist/utils/templates.js +59 -54
  152. package/dist/utils/templates.js.map +1 -1
  153. package/dist/utils/tier-tags.d.ts +1 -1
  154. package/dist/utils/tier-tags.js +2 -2
  155. package/dist/utils/token-counter.d.ts +1 -43
  156. package/dist/utils/token-counter.d.ts.map +1 -1
  157. package/dist/utils/token-counter.js +32 -80
  158. package/dist/utils/token-counter.js.map +1 -1
  159. package/dist/utils/validation.d.ts +1 -1
  160. package/dist/utils/validation.d.ts.map +1 -1
  161. package/dist/utils/validation.js +25 -24
  162. package/dist/utils/validation.js.map +1 -1
  163. package/dist/utils/validator.d.ts +1 -1
  164. package/dist/utils/validator.d.ts.map +1 -1
  165. package/dist/utils/validator.js +97 -90
  166. package/dist/utils/validator.js.map +1 -1
  167. package/package.json +7 -5
  168. package/templates/CLAUDE.md +1 -1
  169. package/templates/FUTURE-ENHANCEMENTS.md +1 -1
  170. package/templates/NEXT-TASKS.md +1 -1
  171. package/templates/PROMPTS.md +1 -1
  172. package/templates/README.md +1 -1
  173. package/templates/docs/archive/v1.0-CHANGELOG.md +1 -1
  174. package/templates/docs/core/ARCHITECTURE.md +1 -1
  175. package/templates/docs/core/DECISIONS.md +1 -1
  176. package/templates/docs/core/DOMAIN-LOGIC.md +1 -1
  177. package/templates/docs/core/GLOSSARY.md +1 -1
  178. package/templates/docs/core/PATTERNS.md +1 -1
  179. package/templates/docs/core/SCHEMA.md +1 -1
  180. package/templates/docs/core/TROUBLESHOOTING.md +1 -1
@@ -1,16 +1,16 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import inquirer from 'inquirer';
4
- import clipboard from 'clipboardy';
5
- import { getProjectPrompts, getPrompt } from '../utils/prompt-parser.js';
6
- import { promptOptionsSchema, validateOptions } from '../utils/validation.js';
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import inquirer from "inquirer";
4
+ import clipboard from "clipboardy";
5
+ import { getProjectPrompts, getPrompt } from "../utils/prompt-parser.js";
6
+ import { promptOptionsSchema, validateOptions } from "../utils/validation.js";
7
7
  export function createPromptCommand() {
8
- const promptCommand = new Command('prompt');
8
+ const promptCommand = new Command("prompt");
9
9
  promptCommand
10
- .description('Access project-aware AI prompt templates')
11
- .argument('[name]', 'Prompt name to display (e.g., "init-session", "feature")')
12
- .option('-l, --list', 'List all available prompts')
13
- .option('--no-copy', 'Do not copy to clipboard (stdout only)')
10
+ .description("Access project-aware AI prompt templates")
11
+ .argument("[name]", 'Prompt name to display (e.g., "init-session", "feature")')
12
+ .option("-l, --list", "List all available prompts")
13
+ .option("--no-copy", "Do not copy to clipboard (stdout only)")
14
14
  .action(async (name, options) => {
15
15
  await runPromptCommand(name, options);
16
16
  });
@@ -19,63 +19,64 @@ export function createPromptCommand() {
19
19
  export const promptCommand = createPromptCommand();
20
20
  async function runPromptCommand(promptName, options) {
21
21
  const cwd = process.cwd();
22
- validateOptions(promptOptionsSchema, options, 'prompt');
22
+ validateOptions(promptOptionsSchema, options, "prompt");
23
23
  try {
24
24
  const prompts = await getProjectPrompts(cwd);
25
25
  if (prompts.length === 0) {
26
- console.log(chalk.yellow('\nāš ļø No prompts found in PROMPTS.md'));
26
+ console.log(chalk.yellow("\nāš ļø No prompts found in PROMPTS.md"));
27
27
  console.log(chalk.gray('\nRun "cortex-tms init" to install the prompt library.\n'));
28
28
  return;
29
29
  }
30
30
  if (options.list) {
31
- console.log(chalk.bold.cyan('\nšŸ“‹ Available Prompts:\n'));
31
+ console.log(chalk.bold.cyan("\nšŸ“‹ Available Prompts:\n"));
32
32
  prompts.forEach((p) => {
33
33
  console.log(chalk.bold.blue(` ${p.name}`));
34
34
  console.log(chalk.gray(` ${p.description}\n`));
35
35
  });
36
- console.log(chalk.gray(`\nUse: ${chalk.cyan('cortex-tms prompt <name>')} to access a prompt`));
37
- console.log(chalk.gray(`Example: ${chalk.cyan('cortex-tms prompt init-session')}\n`));
36
+ console.log(chalk.gray(`\nUse: ${chalk.cyan("cortex-tms prompt <name>")} to access a prompt`));
37
+ console.log(chalk.gray(`Example: ${chalk.cyan("cortex-tms prompt init-session")}\n`));
38
38
  return;
39
39
  }
40
40
  if (promptName) {
41
41
  const content = await getPrompt(cwd, promptName);
42
42
  if (!content) {
43
- console.log(chalk.red('\nāŒ Error:'), `Prompt "${promptName}" not found`);
44
- console.log(chalk.gray('\nRun'), chalk.cyan('cortex-tms prompt --list'), chalk.gray('to see available prompts.\n'));
43
+ console.log(chalk.red("\nāŒ Error:"), `Prompt "${promptName}" not found`);
44
+ console.log(chalk.gray("\nRun"), chalk.cyan("cortex-tms prompt --list"), chalk.gray("to see available prompts.\n"));
45
45
  return;
46
46
  }
47
47
  await displayPrompt(promptName, content, options.copy);
48
48
  return;
49
49
  }
50
50
  const choices = prompts.map((p) => ({
51
- name: `${chalk.bold(p.name)} ${chalk.gray('- ' + p.description)}`,
51
+ name: `${chalk.bold(p.name)} ${chalk.gray("- " + p.description)}`,
52
52
  value: p.name,
53
53
  short: p.name,
54
54
  }));
55
55
  const answer = await inquirer.prompt([
56
56
  {
57
- type: 'list',
58
- name: 'selectedPrompt',
59
- message: 'Select a prompt:',
57
+ type: "list",
58
+ name: "selectedPrompt",
59
+ message: "Select a prompt:",
60
60
  choices,
61
61
  pageSize: 10,
62
62
  },
63
63
  ]);
64
64
  const selectedPrompt = prompts.find((p) => p.name === answer.selectedPrompt);
65
65
  if (!selectedPrompt) {
66
- console.log(chalk.red('\nāŒ Error:'), 'Prompt not found\n');
66
+ console.log(chalk.red("\nāŒ Error:"), "Prompt not found\n");
67
67
  return;
68
68
  }
69
69
  await displayPrompt(selectedPrompt.name, selectedPrompt.content, options.copy);
70
70
  }
71
71
  catch (error) {
72
- if (error instanceof Error && error.message.includes('PROMPTS.md not found')) {
73
- console.log(chalk.yellow('\nāš ļø PROMPTS.md not found in current directory'));
74
- console.log(chalk.gray('\nThis command must be run from a Cortex TMS project.'));
72
+ if (error instanceof Error &&
73
+ error.message.includes("PROMPTS.md not found")) {
74
+ console.log(chalk.yellow("\nāš ļø PROMPTS.md not found in current directory"));
75
+ console.log(chalk.gray("\nThis command must be run from a Cortex TMS project."));
75
76
  console.log(chalk.gray('Run "cortex-tms init" to initialize.\n'));
76
77
  }
77
78
  else {
78
- throw error instanceof Error ? error : new Error('Unknown error');
79
+ throw error instanceof Error ? error : new Error("Unknown error");
79
80
  }
80
81
  }
81
82
  }
@@ -85,12 +86,12 @@ async function displayPrompt(name, content, shouldCopy) {
85
86
  if (shouldCopy) {
86
87
  try {
87
88
  await clipboard.write(content);
88
- console.log(chalk.green('\nāœ… Copied to clipboard!'));
89
+ console.log(chalk.green("\nāœ… Copied to clipboard!"));
89
90
  }
90
- catch (error) {
91
- console.log(chalk.yellow('\nāš ļø Could not copy to clipboard'), chalk.gray('(no clipboard access)'));
91
+ catch {
92
+ console.log(chalk.yellow("\nāš ļø Could not copy to clipboard"), chalk.gray("(no clipboard access)"));
92
93
  }
93
94
  }
94
- console.log(chalk.gray('\nšŸ’” Tip: Paste this prompt into your AI conversation.\n'));
95
+ console.log(chalk.gray("\nšŸ’” Tip: Paste this prompt into your AI conversation.\n"));
95
96
  }
96
97
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Command } from 'commander';
1
+ import { Command } from "commander";
2
2
  export declare function createReviewCommand(): Command;
3
3
  export declare const reviewCommand: Command;
4
4
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,mBAAmB,IAAI,OAAO,CAgB7C;AAKD,eAAO,MAAM,aAAa,SAAwB,CAAC"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,wBAAgB,mBAAmB,IAAI,OAAO,CA6B7C;AAKD,eAAO,MAAM,aAAa,SAAwB,CAAC"}
@@ -1,23 +1,23 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
4
- import { join } from 'path';
5
- import inquirer from 'inquirer';
6
- import { callLLM, getApiKey, parseGuardianJSON, } from '../utils/llm-client.js';
7
- import { buildGuardianSystemPrompt, buildGuardianUserPrompt } from '../utils/guardian-prompt.js';
8
- import { SAFE_MODE_THRESHOLD } from '../types/guardian.js';
9
- import { reviewOptionsSchema, validateOptions, validateFilePath } from '../utils/validation.js';
10
- import { ValidationError } from '../utils/errors.js';
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { readFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
4
+ import { join } from "path";
5
+ import inquirer from "inquirer";
6
+ import { callLLM, getApiKey, parseGuardianJSON, } from "../utils/llm-client.js";
7
+ import { buildGuardianSystemPrompt, buildGuardianUserPrompt, } from "../utils/guardian-prompt.js";
8
+ import { SAFE_MODE_THRESHOLD } from "../types/guardian.js";
9
+ import { reviewOptionsSchema, validateOptions, validateFilePath, } from "../utils/validation.js";
10
+ import { ValidationError } from "../utils/errors.js";
11
11
  export function createReviewCommand() {
12
- const reviewCommand = new Command('review');
12
+ const reviewCommand = new Command("review");
13
13
  reviewCommand
14
- .description('šŸ›”ļø Guardian: Analyze code against project patterns')
15
- .argument('<file>', 'Path to file to review')
16
- .option('-p, --provider <provider>', 'LLM provider: openai or anthropic', 'anthropic')
17
- .option('-m, --model <model>', 'Model name (default: gpt-4-turbo-preview or claude-3-5-sonnet-20241022)')
18
- .option('--api-key <key>', 'API key (alternative to environment variable)')
19
- .option('--safe', `Safe Mode: only show high-confidence violations (>= ${SAFE_MODE_THRESHOLD * 100}%)`)
20
- .option('--output-json', 'Output raw JSON instead of formatted text (for programmatic use)')
14
+ .description("šŸ›”ļø Guardian: Analyze code against project patterns")
15
+ .argument("<file>", "Path to file to review")
16
+ .option("-p, --provider <provider>", "LLM provider: openai or anthropic", "anthropic")
17
+ .option("-m, --model <model>", "Model name (default: gpt-4-turbo-preview or claude-3-5-sonnet-20241022)")
18
+ .option("--api-key <key>", "API key (alternative to environment variable)")
19
+ .option("--safe", `Safe Mode: only show high-confidence violations (>= ${SAFE_MODE_THRESHOLD * 100}%)`)
20
+ .option("--output-json", "Output raw JSON instead of formatted text (for programmatic use)")
21
21
  .action(async (filePath, options) => {
22
22
  await runReviewCommand(filePath, options);
23
23
  });
@@ -25,19 +25,19 @@ export function createReviewCommand() {
25
25
  }
26
26
  export const reviewCommand = createReviewCommand();
27
27
  function formatGuardianResult(result) {
28
- let output = '';
28
+ let output = "";
29
29
  const statusConfig = {
30
- compliant: { emoji: 'āœ…', label: 'Compliant' },
31
- minor_issues: { emoji: 'āš ļø ', label: 'Minor Issues' },
32
- major_violations: { emoji: 'āŒ', label: 'Major Violations' },
30
+ compliant: { emoji: "āœ…", label: "Compliant" },
31
+ minor_issues: { emoji: "āš ļø ", label: "Minor Issues" },
32
+ major_violations: { emoji: "āŒ", label: "Major Violations" },
33
33
  };
34
34
  const { emoji, label } = statusConfig[result.summary.status];
35
35
  output += `${emoji} **${label}**\n\n`;
36
36
  output += `${result.summary.message}\n\n`;
37
37
  if (result.violations.length > 0) {
38
- output += '## Violations\n\n';
38
+ output += "## Violations\n\n";
39
39
  result.violations.forEach((v, index) => {
40
- const severityIcon = v.severity === 'major' ? 'āŒ' : 'āš ļø ';
40
+ const severityIcon = v.severity === "major" ? "āŒ" : "āš ļø ";
41
41
  output += `${index + 1}. ${severityIcon} **${v.pattern}**\n`;
42
42
  if (v.line) {
43
43
  output += ` šŸ“ Line: ${v.line}\n`;
@@ -47,11 +47,11 @@ function formatGuardianResult(result) {
47
47
  if (v.confidence !== undefined) {
48
48
  output += ` šŸ“Š Confidence: ${Math.round(v.confidence * 100)}%\n`;
49
49
  }
50
- output += '\n';
50
+ output += "\n";
51
51
  });
52
52
  }
53
53
  if (result.positiveObservations.length > 0) {
54
- output += '## Positive Observations\n\n';
54
+ output += "## Positive Observations\n\n";
55
55
  result.positiveObservations.forEach((obs) => {
56
56
  output += `āœ… ${obs}\n`;
57
57
  });
@@ -60,83 +60,83 @@ function formatGuardianResult(result) {
60
60
  }
61
61
  async function runReviewCommand(filePath, options) {
62
62
  const cwd = process.cwd();
63
- const validated = validateOptions(reviewOptionsSchema, options, 'review');
63
+ const validated = validateOptions(reviewOptionsSchema, options, "review");
64
64
  if (!validated.outputJson) {
65
- console.log(chalk.bold.cyan('\nšŸ›”ļø Guardian Code Review\n'));
65
+ console.log(chalk.bold.cyan("\nšŸ›”ļø Guardian Code Review\n"));
66
66
  }
67
67
  const provider = validated.provider;
68
68
  let apiKey = validated.apiKey || getApiKey(provider);
69
69
  if (!apiKey) {
70
- if (validated.outputJson || process.env.CI === 'true') {
71
- const envVar = provider === 'openai' ? 'OPENAI_API_KEY' : 'ANTHROPIC_API_KEY';
70
+ if (validated.outputJson || process.env.CI === "true") {
71
+ const envVar = provider === "openai" ? "OPENAI_API_KEY" : "ANTHROPIC_API_KEY";
72
72
  throw new ValidationError(`API key is required. Set ${envVar} environment variable or use --api-key flag`);
73
73
  }
74
74
  }
75
- const patternsPath = join(cwd, 'docs/core/PATTERNS.md');
76
- const domainLogicPath = join(cwd, 'docs/core/DOMAIN-LOGIC.md');
75
+ const patternsPath = join(cwd, "docs/core/PATTERNS.md");
76
+ const domainLogicPath = join(cwd, "docs/core/DOMAIN-LOGIC.md");
77
77
  if (!existsSync(patternsPath)) {
78
78
  if (!validated.outputJson) {
79
- console.log(chalk.gray('\nGuardian requires a Cortex TMS project with pattern documentation.'));
80
- console.log(chalk.gray('Run'), chalk.cyan('cortex-tms init'), chalk.gray('to set up TMS files.\n'));
79
+ console.log(chalk.gray("\nGuardian requires a Cortex TMS project with pattern documentation."));
80
+ console.log(chalk.gray("Run"), chalk.cyan("cortex-tms init"), chalk.gray("to set up TMS files.\n"));
81
81
  }
82
- throw new ValidationError('PATTERNS.md not found at docs/core/PATTERNS.md');
82
+ throw new ValidationError("PATTERNS.md not found at docs/core/PATTERNS.md");
83
83
  }
84
84
  if (!existsSync(domainLogicPath) && !validated.outputJson) {
85
- console.log(chalk.yellow('āš ļø Warning:'), 'DOMAIN-LOGIC.md not found (optional)');
85
+ console.log(chalk.yellow("āš ļø Warning:"), "DOMAIN-LOGIC.md not found (optional)");
86
86
  }
87
87
  const targetPath = validateFilePath(filePath, cwd);
88
88
  try {
89
89
  if (!validated.outputJson) {
90
- console.log(chalk.gray('šŸ“– Reading project patterns...'));
90
+ console.log(chalk.gray("šŸ“– Reading project patterns..."));
91
91
  }
92
- const patterns = readFileSync(patternsPath, 'utf-8');
92
+ const patterns = readFileSync(patternsPath, "utf-8");
93
93
  const domainLogic = existsSync(domainLogicPath)
94
- ? readFileSync(domainLogicPath, 'utf-8')
94
+ ? readFileSync(domainLogicPath, "utf-8")
95
95
  : null;
96
- const codeToReview = readFileSync(targetPath, 'utf-8');
96
+ const codeToReview = readFileSync(targetPath, "utf-8");
97
97
  if (!apiKey) {
98
98
  const answer = await inquirer.prompt([
99
99
  {
100
- type: 'password',
101
- name: 'apiKey',
102
- message: `Enter your ${provider === 'openai' ? 'OpenAI' : 'Anthropic'} API key:`,
103
- mask: '*',
100
+ type: "password",
101
+ name: "apiKey",
102
+ message: `Enter your ${provider === "openai" ? "OpenAI" : "Anthropic"} API key:`,
103
+ mask: "*",
104
104
  },
105
105
  ]);
106
106
  apiKey = answer.apiKey;
107
107
  if (!apiKey) {
108
- throw new ValidationError('API key is required');
108
+ throw new ValidationError("API key is required");
109
109
  }
110
110
  }
111
111
  if (!validated.outputJson) {
112
- console.log(chalk.gray('šŸ¤– Analyzing code with', provider, '...'));
112
+ console.log(chalk.gray("šŸ¤– Analyzing code with", provider, "..."));
113
113
  }
114
114
  const systemPrompt = buildGuardianSystemPrompt(patterns, domainLogic);
115
115
  const userPrompt = buildGuardianUserPrompt(filePath, codeToReview);
116
116
  const messages = [
117
- { role: 'system', content: systemPrompt },
118
- { role: 'user', content: userPrompt },
117
+ { role: "system", content: systemPrompt },
118
+ { role: "user", content: userPrompt },
119
119
  ];
120
120
  const config = {
121
121
  provider,
122
122
  apiKey,
123
123
  ...(validated.model && { model: validated.model }),
124
124
  timeoutMs: 60000,
125
- responseFormat: 'json',
125
+ responseFormat: "json",
126
126
  };
127
127
  const response = await callLLM(config, messages);
128
- let parsedResult = parseGuardianJSON(response.content);
128
+ const parsedResult = parseGuardianJSON(response.content);
129
129
  if (parsedResult && validated.safe) {
130
130
  const originalCount = parsedResult.violations.length;
131
- parsedResult.violations = parsedResult.violations.filter(v => (v.confidence ?? 1.0) >= SAFE_MODE_THRESHOLD);
131
+ parsedResult.violations = parsedResult.violations.filter((v) => (v.confidence ?? 1.0) >= SAFE_MODE_THRESHOLD);
132
132
  if (originalCount > 0 && parsedResult.violations.length === 0) {
133
- parsedResult.summary.status = 'compliant';
134
- parsedResult.summary.message = `No high-confidence violations found (Safe Mode filtered ${originalCount} low-confidence issue${originalCount === 1 ? '' : 's'})`;
133
+ parsedResult.summary.status = "compliant";
134
+ parsedResult.summary.message = `No high-confidence violations found (Safe Mode filtered ${originalCount} low-confidence issue${originalCount === 1 ? "" : "s"})`;
135
135
  }
136
136
  }
137
137
  if (parsedResult) {
138
138
  try {
139
- const cortexDir = join(cwd, '.cortex');
139
+ const cortexDir = join(cwd, ".cortex");
140
140
  if (!existsSync(cortexDir)) {
141
141
  mkdirSync(cortexDir, { recursive: true });
142
142
  }
@@ -147,7 +147,7 @@ async function runReviewCommand(filePath, options) {
147
147
  violations: parsedResult.violations,
148
148
  filesReviewed: 1,
149
149
  };
150
- writeFileSync(join(cortexDir, 'guardian-cache.json'), JSON.stringify(cacheData, null, 2), 'utf-8');
150
+ writeFileSync(join(cortexDir, "guardian-cache.json"), JSON.stringify(cacheData, null, 2), "utf-8");
151
151
  }
152
152
  catch {
153
153
  }
@@ -158,19 +158,19 @@ async function runReviewCommand(filePath, options) {
158
158
  }
159
159
  else {
160
160
  console.log(JSON.stringify({
161
- error: 'Failed to parse Guardian response',
162
- rawContent: response.content
161
+ error: "Failed to parse Guardian response",
162
+ rawContent: response.content,
163
163
  }, null, 2));
164
164
  }
165
165
  }
166
166
  else {
167
- console.log(chalk.bold.green('\nāœ… Analysis Complete\n'));
167
+ console.log(chalk.bold.green("\nāœ… Analysis Complete\n"));
168
168
  if (parsedResult) {
169
169
  const formatted = formatGuardianResult(parsedResult);
170
170
  console.log(chalk.white(formatted));
171
171
  }
172
172
  else {
173
- console.log(chalk.yellow('āš ļø Warning: Could not parse JSON response, displaying raw output:\n'));
173
+ console.log(chalk.yellow("āš ļø Warning: Could not parse JSON response, displaying raw output:\n"));
174
174
  console.log(chalk.white(response.content));
175
175
  }
176
176
  if (response.usage) {
@@ -179,7 +179,7 @@ async function runReviewCommand(filePath, options) {
179
179
  }
180
180
  }
181
181
  catch (error) {
182
- throw error instanceof Error ? error : new Error('Unknown error');
182
+ throw error instanceof Error ? error : new Error("Unknown error");
183
183
  }
184
184
  }
185
185
  //# sourceMappingURL=review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Command } from 'commander';
1
+ import { Command } from "commander";
2
2
  export declare function createStatusCommand(): Command;
3
3
  export declare const statusCommand: Command;
4
4
  export default createStatusCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C;AAoID,eAAO,MAAM,aAAa,SAAwB,CAAC;AACnD,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C;AA4JD,eAAO,MAAM,aAAa,SAAwB,CAAC;AACnD,eAAe,mBAAmB,CAAC"}
@@ -1,12 +1,12 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import ora from 'ora';
4
- import { getProjectStatus, calculateProgress } from '../utils/status.js';
5
- import { validateProject } from '../utils/validator.js';
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { getProjectStatus, calculateProgress } from "../utils/status.js";
5
+ import { validateProject } from "../utils/validator.js";
6
6
  export function createStatusCommand() {
7
- const statusCommand = new Command('status');
7
+ const statusCommand = new Command("status");
8
8
  statusCommand
9
- .description('Show project health dashboard and sprint progress')
9
+ .description("Show project health dashboard and sprint progress")
10
10
  .action(async () => {
11
11
  await runStatus();
12
12
  });
@@ -14,63 +14,69 @@ export function createStatusCommand() {
14
14
  }
15
15
  async function runStatus() {
16
16
  const cwd = process.cwd();
17
- console.log(chalk.bold.cyan('\nšŸ“Š Cortex TMS Status Dashboard\n'));
18
- const spinner = ora('Gathering project information...').start();
17
+ console.log(chalk.bold.cyan("\nšŸ“Š Cortex TMS Status Dashboard\n"));
18
+ const spinner = ora("Gathering project information...").start();
19
19
  try {
20
20
  const status = await getProjectStatus(cwd);
21
21
  const validation = await validateProject(cwd, { strict: false });
22
- spinner.succeed('Project information loaded');
23
- console.log(chalk.bold('\nšŸ·ļø Project Identity'));
24
- console.log(` ${chalk.cyan('Name:')} ${status.projectName}`);
25
- console.log(` ${chalk.cyan('Scope:')} ${formatScope(status.scope)} ${getScopeEmoji(status.scope)}`);
22
+ spinner.succeed("Project information loaded");
23
+ console.log(chalk.bold("\nšŸ·ļø Project Identity"));
24
+ console.log(` ${chalk.cyan("Name:")} ${status.projectName}`);
25
+ console.log(` ${chalk.cyan("Scope:")} ${formatScope(status.scope)} ${getScopeEmoji(status.scope)}`);
26
26
  if (status.config) {
27
- console.log(` ${chalk.cyan('TMS Version:')} ${status.config.version}`);
27
+ console.log(` ${chalk.cyan("TMS Version:")} ${status.config.version}`);
28
28
  }
29
- console.log(chalk.bold('\nšŸ’š Project Health'));
30
- const healthEmoji = validation.passed ? 'āœ…' : 'āš ļø';
31
- const healthText = validation.passed ? chalk.green('Healthy') : chalk.yellow('Issues Found');
29
+ console.log(chalk.bold("\nšŸ’š Project Health"));
30
+ const healthEmoji = validation.passed ? "āœ…" : "āš ļø";
31
+ const healthText = validation.passed
32
+ ? chalk.green("Healthy")
33
+ : chalk.yellow("Issues Found");
32
34
  console.log(` ${healthEmoji} ${healthText}`);
33
- console.log(` ${chalk.cyan('Checks:')} ${validation.summary.passed}/${validation.summary.total} passed`);
35
+ console.log(` ${chalk.cyan("Checks:")} ${validation.summary.passed}/${validation.summary.total} passed`);
34
36
  if (validation.summary.warnings > 0) {
35
- console.log(` ${chalk.yellow('⚠')} ${validation.summary.warnings} warnings`);
37
+ console.log(` ${chalk.yellow("⚠")} ${validation.summary.warnings} warnings`);
36
38
  }
37
39
  if (validation.summary.errors > 0) {
38
- console.log(` ${chalk.red('āœ—')} ${validation.summary.errors} errors`);
40
+ console.log(` ${chalk.red("āœ—")} ${validation.summary.errors} errors`);
39
41
  }
40
42
  if (status.sprint) {
41
- console.log(chalk.bold('\nšŸŽÆ Current Sprint'));
42
- console.log(` ${chalk.cyan('Name:')} ${status.sprint.name}`);
43
+ console.log(chalk.bold("\nšŸŽÆ Current Sprint"));
44
+ console.log(` ${chalk.cyan("Name:")} ${status.sprint.name}`);
43
45
  if (status.sprint.description) {
44
- console.log(` ${chalk.cyan('Focus:')} ${status.sprint.description}`);
46
+ console.log(` ${chalk.cyan("Focus:")} ${status.sprint.description}`);
45
47
  }
46
48
  const progress = calculateProgress(status.sprint);
47
49
  const progressBar = createProgressBar(progress, 20);
48
- const progressColor = progress === 100 ? chalk.green : progress >= 50 ? chalk.yellow : chalk.gray;
49
- console.log(` ${chalk.cyan('Progress:')} ${progressBar} ${progressColor(`${progress}%`)}`);
50
- console.log(` ${chalk.cyan('Tasks:')} ${status.sprint.completedTasks} done, ${status.sprint.inProgressTasks} in progress, ${status.sprint.todoTasks} todo`);
50
+ const progressColor = progress === 100
51
+ ? chalk.green
52
+ : progress >= 50
53
+ ? chalk.yellow
54
+ : chalk.gray;
55
+ console.log(` ${chalk.cyan("Progress:")} ${progressBar} ${progressColor(`${progress}%`)}`);
56
+ console.log(` ${chalk.cyan("Tasks:")} ${status.sprint.completedTasks} done, ${status.sprint.inProgressTasks} in progress, ${status.sprint.todoTasks} todo`);
51
57
  }
52
58
  else {
53
- console.log(chalk.bold('\nšŸŽÆ Current Sprint'));
54
- console.log(chalk.gray(' No active sprint found in NEXT-TASKS.md'));
59
+ console.log(chalk.bold("\nšŸŽÆ Current Sprint"));
60
+ console.log(chalk.gray(" No active sprint found in NEXT-TASKS.md"));
55
61
  }
56
- console.log(chalk.bold('\nšŸ“‹ Backlog'));
62
+ console.log(chalk.bold("\nšŸ“‹ Backlog"));
57
63
  if (status.backlogSize > 0) {
58
- console.log(` ${chalk.cyan('Future Enhancements:')} ${status.backlogSize} items pending`);
64
+ console.log(` ${chalk.cyan("Future Enhancements:")} ${status.backlogSize} items pending`);
59
65
  }
60
66
  else {
61
- console.log(chalk.gray(' No backlog items found in FUTURE-ENHANCEMENTS.md'));
67
+ console.log(chalk.gray(" No backlog items found in FUTURE-ENHANCEMENTS.md"));
62
68
  }
63
- console.log(chalk.bold('\n⚔ Quick Actions'));
64
- console.log(chalk.gray(' Run'), chalk.cyan('cortex-tms validate'), chalk.gray('for detailed health checks'));
65
- console.log(chalk.gray(' Edit'), chalk.cyan('NEXT-TASKS.md'), chalk.gray('to update sprint tasks'));
69
+ console.log(chalk.bold("\n⚔ Quick Actions"));
70
+ console.log(chalk.gray(" Run"), chalk.cyan("cortex-tms validate"), chalk.gray("for detailed health checks"));
71
+ console.log(chalk.gray(" Edit"), chalk.cyan("NEXT-TASKS.md"), chalk.gray("to update sprint tasks"));
66
72
  if (validation.summary.warnings > 0 || validation.summary.errors > 0) {
67
- console.log(chalk.gray(' Run'), chalk.cyan('cortex-tms validate --fix'), chalk.gray('to auto-fix issues'));
73
+ console.log(chalk.gray(" Run"), chalk.cyan("cortex-tms validate --fix"), chalk.gray("to auto-fix issues"));
68
74
  }
69
75
  console.log();
70
76
  }
71
77
  catch (error) {
72
- spinner.fail('Failed to gather project information');
73
- throw error instanceof Error ? error : new Error('Unknown error');
78
+ spinner.fail("Failed to gather project information");
79
+ throw error instanceof Error ? error : new Error("Unknown error");
74
80
  }
75
81
  }
76
82
  function formatScope(scope) {
@@ -78,21 +84,21 @@ function formatScope(scope) {
78
84
  }
79
85
  function getScopeEmoji(scope) {
80
86
  switch (scope.toLowerCase()) {
81
- case 'nano':
82
- return 'šŸ”¬';
83
- case 'standard':
84
- return 'šŸ“¦';
85
- case 'enterprise':
86
- return 'šŸ¢';
87
+ case "nano":
88
+ return "šŸ”¬";
89
+ case "standard":
90
+ return "šŸ“¦";
91
+ case "enterprise":
92
+ return "šŸ¢";
87
93
  default:
88
- return 'ā“';
94
+ return "ā“";
89
95
  }
90
96
  }
91
97
  function createProgressBar(progress, width) {
92
98
  const filled = Math.round((progress / 100) * width);
93
99
  const empty = width - filled;
94
100
  const filledColor = progress === 100 ? chalk.green : progress >= 50 ? chalk.yellow : chalk.gray;
95
- return `[${filledColor('ā–ˆ'.repeat(filled))}${chalk.gray('ā–‘'.repeat(empty))}]`;
101
+ return `[${filledColor("ā–ˆ".repeat(filled))}${chalk.gray("ā–‘".repeat(empty))}]`;
96
102
  }
97
103
  export const statusCommand = createStatusCommand();
98
104
  export default createStatusCommand;