cortex-tms 2.2.0 → 2.4.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 (65) hide show
  1. package/README.md +2 -0
  2. package/dist/__tests__/init.test.js +4 -3
  3. package/dist/__tests__/init.test.js.map +1 -1
  4. package/dist/__tests__/validate.test.js +2 -0
  5. package/dist/__tests__/validate.test.js.map +1 -1
  6. package/dist/cli.js +6 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +96 -25
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/migrate.d.ts +12 -0
  12. package/dist/commands/migrate.d.ts.map +1 -0
  13. package/dist/commands/migrate.js +183 -0
  14. package/dist/commands/migrate.js.map +1 -0
  15. package/dist/commands/prompt.d.ts +4 -0
  16. package/dist/commands/prompt.d.ts.map +1 -0
  17. package/dist/commands/prompt.js +95 -0
  18. package/dist/commands/prompt.js.map +1 -0
  19. package/dist/commands/status.d.ts +4 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +99 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/commands/validate.d.ts.map +1 -1
  24. package/dist/commands/validate.js +39 -0
  25. package/dist/commands/validate.js.map +1 -1
  26. package/dist/types/cli.d.ts +5 -0
  27. package/dist/types/cli.d.ts.map +1 -1
  28. package/dist/utils/config.d.ts.map +1 -1
  29. package/dist/utils/config.js +2 -0
  30. package/dist/utils/config.js.map +1 -1
  31. package/dist/utils/prompt-parser.d.ts +9 -0
  32. package/dist/utils/prompt-parser.d.ts.map +1 -0
  33. package/dist/utils/prompt-parser.js +50 -0
  34. package/dist/utils/prompt-parser.js.map +1 -0
  35. package/dist/utils/prompts.d.ts.map +1 -1
  36. package/dist/utils/prompts.js +15 -0
  37. package/dist/utils/prompts.js.map +1 -1
  38. package/dist/utils/status.d.ts +21 -0
  39. package/dist/utils/status.d.ts.map +1 -0
  40. package/dist/utils/status.js +86 -0
  41. package/dist/utils/status.js.map +1 -0
  42. package/dist/utils/templates.d.ts +14 -1
  43. package/dist/utils/templates.d.ts.map +1 -1
  44. package/dist/utils/templates.js +122 -9
  45. package/dist/utils/templates.js.map +1 -1
  46. package/dist/utils/validator.d.ts +1 -0
  47. package/dist/utils/validator.d.ts.map +1 -1
  48. package/dist/utils/validator.js +54 -3
  49. package/dist/utils/validator.js.map +1 -1
  50. package/package.json +2 -1
  51. package/templates/.github/copilot-instructions.md +2 -0
  52. package/templates/CLAUDE.md +2 -0
  53. package/templates/FUTURE-ENHANCEMENTS.md +2 -0
  54. package/templates/NEXT-TASKS.md +2 -0
  55. package/templates/PROMPTS.md +55 -0
  56. package/templates/README.md +2 -0
  57. package/templates/docs/archive/v1.0-CHANGELOG.md +3 -0
  58. package/templates/docs/core/ARCHITECTURE.md +2 -0
  59. package/templates/docs/core/DECISIONS.md +2 -0
  60. package/templates/docs/core/DOMAIN-LOGIC.md +2 -0
  61. package/templates/docs/core/GLOSSARY.md +2 -0
  62. package/templates/docs/core/PATTERNS.md +2 -0
  63. package/templates/docs/core/SCHEMA.md +2 -0
  64. package/templates/docs/core/TROUBLESHOOTING.md +2 -0
  65. package/templates/vscode/tms.code-snippets +225 -0
@@ -0,0 +1,86 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { loadConfig } from './config.js';
5
+ export function parseSprintInfo(content) {
6
+ const sprintMatch = content.match(/##\s+Active Sprint:\s*(.+?)(?:\n|$)/i);
7
+ if (!sprintMatch) {
8
+ return null;
9
+ }
10
+ const sprintName = sprintMatch[1]?.trim() || '';
11
+ const descMatch = content.match(/\*\*Why this matters\*\*:\s*(.+?)(?:\n|$)/i);
12
+ const description = descMatch?.[1]?.trim() || '';
13
+ const taskLines = content.match(/\|[^|]*\|[^|]*\|[^|]*\|[^|]*\|[^|]*\|/g) || [];
14
+ const dataRows = taskLines.filter((line) => !line.includes('Task') && !line.includes('---'));
15
+ let completedTasks = 0;
16
+ let inProgressTasks = 0;
17
+ let todoTasks = 0;
18
+ for (const row of dataRows) {
19
+ if (row.includes('✅ Done')) {
20
+ completedTasks++;
21
+ }
22
+ else if (row.includes('🔄 In Progress')) {
23
+ inProgressTasks++;
24
+ }
25
+ else if (row.includes('⬜ Todo')) {
26
+ todoTasks++;
27
+ }
28
+ }
29
+ const totalTasks = completedTasks + inProgressTasks + todoTasks;
30
+ return {
31
+ name: sprintName,
32
+ description,
33
+ totalTasks,
34
+ completedTasks,
35
+ inProgressTasks,
36
+ todoTasks,
37
+ };
38
+ }
39
+ export function countBacklogItems(content) {
40
+ const itemMatches = content.match(/^- \*\*.+?\*\*:/gm) || [];
41
+ return itemMatches.length;
42
+ }
43
+ export function calculateProgress(sprint) {
44
+ if (sprint.totalTasks === 0) {
45
+ return 0;
46
+ }
47
+ return Math.round((sprint.completedTasks / sprint.totalTasks) * 100);
48
+ }
49
+ export async function getProjectStatus(cwd) {
50
+ let config = null;
51
+ try {
52
+ config = await loadConfig(cwd);
53
+ }
54
+ catch {
55
+ }
56
+ const projectName = config?.metadata?.projectName || 'Unknown Project';
57
+ const scope = config?.scope || 'unknown';
58
+ let sprint = null;
59
+ const tasksPath = join(cwd, 'NEXT-TASKS.md');
60
+ if (existsSync(tasksPath)) {
61
+ try {
62
+ const tasksContent = await readFile(tasksPath, 'utf-8');
63
+ sprint = parseSprintInfo(tasksContent);
64
+ }
65
+ catch {
66
+ }
67
+ }
68
+ let backlogSize = 0;
69
+ const backlogPath = join(cwd, 'FUTURE-ENHANCEMENTS.md');
70
+ if (existsSync(backlogPath)) {
71
+ try {
72
+ const backlogContent = await readFile(backlogPath, 'utf-8');
73
+ backlogSize = countBacklogItems(backlogContent);
74
+ }
75
+ catch {
76
+ }
77
+ }
78
+ return {
79
+ projectName,
80
+ scope,
81
+ sprint,
82
+ backlogSize,
83
+ config,
84
+ };
85
+ }
86
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/utils/status.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,28 @@
1
1
  import type { TemplateFile } from '../types/cli.js';
2
+ export declare function getPackageVersion(): string;
3
+ export declare function injectVersionMetadata(content: string, version: string): string;
4
+ export declare function extractVersion(filePath: string): Promise<string | null>;
5
+ export type FileStatus = 'CREATE' | 'UPDATE' | 'SKIP' | 'CONFLICT';
6
+ export interface FileChange {
7
+ path: string;
8
+ status: FileStatus;
9
+ reason?: string;
10
+ }
2
11
  export declare function getTemplatesDir(): string;
3
12
  export declare function replacePlaceholders(content: string, replacements: Record<string, string>): string;
4
- export declare function processTemplate(sourcePath: string, destPath: string, replacements: Record<string, string>): Promise<void>;
13
+ export declare function processTemplate(sourcePath: string, destPath: string, replacements: Record<string, string>, options?: {
14
+ injectVersion?: boolean;
15
+ }): Promise<void>;
5
16
  export declare function getTemplateFiles(templatesDir: string): Promise<TemplateFile[]>;
6
17
  export declare function copyTemplates(templatesDir: string, destDir: string, replacements: Record<string, string>, options?: {
7
18
  overwrite?: boolean;
8
19
  scope?: 'nano' | 'standard' | 'enterprise' | 'custom';
9
20
  customFiles?: string[];
21
+ dryRun?: boolean;
10
22
  }): Promise<{
11
23
  copied: number;
12
24
  skipped: number;
25
+ changes?: FileChange[];
13
26
  }>;
14
27
  export declare function generateReplacements(projectName: string, description?: string): Record<string, string>;
15
28
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AASpD,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAcD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAUR;AASD,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAYf;AAQD,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CzB;AAUD,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,GACL,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmD9C;AASD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AASpD,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAYD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM9E;AAWD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS7E;AAKD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAKnE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAcD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAUR;AAUD,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAQD,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CzB;AAUD,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAwGtE;AAgFD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB"}
@@ -2,9 +2,29 @@ import fs from 'fs-extra';
2
2
  import { join, relative } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { dirname } from 'path';
5
+ import chalk from 'chalk';
5
6
  import { getScopePreset } from './config.js';
6
7
  const __filename = fileURLToPath(import.meta.url);
7
8
  const __dirname = dirname(__filename);
9
+ export function getPackageVersion() {
10
+ const packageJsonPath = join(__dirname, '../../package.json');
11
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
12
+ return packageJson.version;
13
+ }
14
+ export function injectVersionMetadata(content, version) {
15
+ const normalizedContent = content.endsWith('\n') ? content : content + '\n';
16
+ return `${normalizedContent}\n<!-- @cortex-tms-version ${version} -->\n`;
17
+ }
18
+ export async function extractVersion(filePath) {
19
+ try {
20
+ const content = await fs.readFile(filePath, 'utf-8');
21
+ const match = content.match(/<!-- @cortex-tms-version ([\d.]+) -->/);
22
+ return match?.[1] ?? null;
23
+ }
24
+ catch (error) {
25
+ return null;
26
+ }
27
+ }
8
28
  export function getTemplatesDir() {
9
29
  return join(__dirname, '../../templates');
10
30
  }
@@ -16,9 +36,14 @@ export function replacePlaceholders(content, replacements) {
16
36
  });
17
37
  return result;
18
38
  }
19
- export async function processTemplate(sourcePath, destPath, replacements) {
39
+ export async function processTemplate(sourcePath, destPath, replacements, options = {}) {
40
+ const { injectVersion = true } = options;
20
41
  const content = await fs.readFile(sourcePath, 'utf-8');
21
- const processed = replacePlaceholders(content, replacements);
42
+ let processed = replacePlaceholders(content, replacements);
43
+ if (injectVersion && destPath.endsWith('.md')) {
44
+ const version = getPackageVersion();
45
+ processed = injectVersionMetadata(processed, version);
46
+ }
22
47
  await fs.ensureDir(dirname(destPath));
23
48
  await fs.writeFile(destPath, processed, 'utf-8');
24
49
  }
@@ -57,7 +82,7 @@ export async function getTemplateFiles(templatesDir) {
57
82
  return files;
58
83
  }
59
84
  export async function copyTemplates(templatesDir, destDir, replacements, options = {}) {
60
- const { overwrite = false, scope = 'standard', customFiles } = options;
85
+ const { overwrite = false, scope = 'standard', customFiles, dryRun = false } = options;
61
86
  const allFiles = await getTemplateFiles(templatesDir);
62
87
  let allowedFiles;
63
88
  if (scope === 'custom' && customFiles) {
@@ -78,16 +103,104 @@ export async function copyTemplates(templatesDir, destDir, replacements, options
78
103
  });
79
104
  let copied = 0;
80
105
  let skipped = 0;
106
+ const changes = [];
81
107
  for (const file of filesToCopy) {
82
108
  const destPath = join(destDir, file.destination);
83
- if (!overwrite && (await fs.pathExists(destPath))) {
84
- skipped++;
85
- continue;
109
+ const exists = await fs.pathExists(destPath);
110
+ if (dryRun) {
111
+ if (!exists) {
112
+ changes.push({
113
+ path: file.destination,
114
+ status: 'CREATE',
115
+ });
116
+ copied++;
117
+ }
118
+ else if (overwrite) {
119
+ const existingContent = await fs.readFile(destPath, 'utf-8');
120
+ const templateContent = await fs.readFile(file.source, 'utf-8');
121
+ let processedContent = replacePlaceholders(templateContent, replacements);
122
+ if (destPath.endsWith('.md')) {
123
+ const version = getPackageVersion();
124
+ processedContent = injectVersionMetadata(processedContent, version);
125
+ }
126
+ if (existingContent !== processedContent) {
127
+ changes.push({
128
+ path: file.destination,
129
+ status: 'UPDATE',
130
+ reason: 'Content differs from template',
131
+ });
132
+ copied++;
133
+ }
134
+ else {
135
+ changes.push({
136
+ path: file.destination,
137
+ status: 'SKIP',
138
+ reason: 'Already up to date',
139
+ });
140
+ skipped++;
141
+ }
142
+ }
143
+ else {
144
+ changes.push({
145
+ path: file.destination,
146
+ status: 'CONFLICT',
147
+ reason: 'File exists (use --force to overwrite)',
148
+ });
149
+ skipped++;
150
+ }
151
+ }
152
+ else {
153
+ if (!overwrite && exists) {
154
+ skipped++;
155
+ continue;
156
+ }
157
+ await processTemplate(file.source, destPath, replacements);
158
+ copied++;
86
159
  }
87
- await processTemplate(file.source, destPath, replacements);
88
- copied++;
89
160
  }
90
- return { copied, skipped };
161
+ if (dryRun && changes.length > 0) {
162
+ printImpactReport(changes);
163
+ }
164
+ return { copied, skipped, ...(dryRun && { changes }) };
165
+ }
166
+ function printImpactReport(changes) {
167
+ console.log(chalk.bold('\n📋 IMPACT ANALYSIS:\n'));
168
+ const byStatus = {
169
+ CREATE: [],
170
+ UPDATE: [],
171
+ SKIP: [],
172
+ CONFLICT: [],
173
+ };
174
+ changes.forEach((change) => {
175
+ byStatus[change.status].push(change);
176
+ });
177
+ const statusConfig = {
178
+ CREATE: { icon: '✨', color: chalk.green, label: 'CREATE' },
179
+ UPDATE: { icon: '🔄', color: chalk.blue, label: 'UPDATE' },
180
+ CONFLICT: { icon: '⚠️ ', color: chalk.yellow, label: 'CONFLICT' },
181
+ SKIP: { icon: '⏭️ ', color: chalk.gray, label: 'SKIP' },
182
+ };
183
+ for (const status of ['CREATE', 'UPDATE', 'CONFLICT', 'SKIP']) {
184
+ const items = byStatus[status];
185
+ if (items.length === 0)
186
+ continue;
187
+ const config = statusConfig[status];
188
+ console.log(config.color.bold(`${config.icon} ${config.label} (${items.length}):`));
189
+ items.forEach((item) => {
190
+ const reasonText = item.reason ? chalk.gray(` - ${item.reason}`) : '';
191
+ console.log(` ${config.color(item.path)}${reasonText}`);
192
+ });
193
+ console.log();
194
+ }
195
+ const conflicts = byStatus.CONFLICT.length;
196
+ const updates = byStatus.UPDATE.length;
197
+ if (conflicts > 0) {
198
+ console.log(chalk.yellow.bold('⚠️ WARNING:'), chalk.yellow(`${conflicts} file(s) will be skipped due to conflicts. Use --force to overwrite.`));
199
+ }
200
+ if (updates > 0) {
201
+ console.log(chalk.blue.bold('ℹ️ INFO:'), chalk.blue(`${updates} file(s) will be updated with new template content. Review changes carefully.`));
202
+ }
203
+ console.log(chalk.gray('\n💡 Tip: Run without --dry-run to apply these changes.'));
91
204
  }
92
205
  export function generateReplacements(projectName, description) {
93
206
  const kebabName = projectName
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export declare const DEFAULT_LINE_LIMITS: LineLimits;
3
3
  export declare const MANDATORY_FILES: MandatoryFile[];
4
4
  export declare function validateFileSizes(cwd: string, limits?: LineLimits): Promise<ValidationCheck[]>;
5
5
  export declare function validateMandatoryFiles(cwd: string): ValidationCheck[];
6
+ export declare function validateConfig(cwd: string): ValidationCheck[];
6
7
  export declare function validatePlaceholders(cwd: string, ignoreFiles?: string[]): Promise<ValidationCheck[]>;
7
8
  export declare function validateArchiveStatus(cwd: string): Promise<ValidationCheck[]>;
8
9
  export declare function validateProject(cwd: string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,aAAa,EACd,MAAM,iBAAiB,CAAC;AAWzB,eAAO,MAAM,mBAAmB,EAAE,UAUjC,CAAC;AAKF,eAAO,MAAM,eAAe,EAAE,aAAa,EAI1C,CAAC;AA2EF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,UAAgC,GACvC,OAAO,CAAC,eAAe,EAAE,CAAC,CAkC5B;AAKD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAmBrE;AAKD,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,MAAM,EAAO,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAiD5B;AAKD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAoDnF;AAKD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACtD,OAAO,CAAC,gBAAgB,CAAC,CA+C3B"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,aAAa,EACd,MAAM,iBAAiB,CAAC;AAczB,eAAO,MAAM,mBAAmB,EAAE,UAUjC,CAAC;AAKF,eAAO,MAAM,eAAe,EAAE,aAAa,EAI1C,CAAC;AA8FF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,UAAgC,GACvC,OAAO,CAAC,eAAe,EAAE,CAAC,CAkC5B;AAKD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAuBrE;AA2BD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAkB7D;AAKD,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,MAAM,EAAO,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAiD5B;AAKD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAoDnF;AAKD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAO,GACtD,OAAO,CAAC,gBAAgB,CAAC,CAiD3B"}
@@ -1,7 +1,8 @@
1
1
  import { readFile } from 'fs/promises';
2
2
  import { existsSync } from 'fs';
3
- import { join } from 'path';
4
- import { loadConfig, mergeConfig, getEffectiveLineLimits, } from './config.js';
3
+ import { join, basename } from 'path';
4
+ import { loadConfig, mergeConfig, getEffectiveLineLimits, saveConfig, createConfigFromScope, } from './config.js';
5
+ import { getTemplatesDir, processTemplate } from './templates.js';
5
6
  export const DEFAULT_LINE_LIMITS = {
6
7
  'NEXT-TASKS.md': 200,
7
8
  'FUTURE-ENHANCEMENTS.md': 500,
@@ -66,6 +67,18 @@ async function countCompletedTasks(filePath) {
66
67
  function hasArchiveDirectory(cwd) {
67
68
  return existsSync(join(cwd, 'docs/archive'));
68
69
  }
70
+ async function fixMissingFile(cwd, file) {
71
+ const templatesDir = getTemplatesDir();
72
+ const sourcePath = join(templatesDir, file);
73
+ const destPath = join(cwd, file);
74
+ const projectName = basename(cwd);
75
+ const replacements = {
76
+ 'Project Name': projectName,
77
+ 'project-name': projectName.toLowerCase().replace(/[^a-z0-9-]/g, '-'),
78
+ Description: `A project powered by Cortex TMS`,
79
+ };
80
+ await processTemplate(sourcePath, destPath, replacements);
81
+ }
69
82
  export async function validateFileSizes(cwd, limits = DEFAULT_LINE_LIMITS) {
70
83
  const checks = [];
71
84
  for (const [filename, limit] of Object.entries(limits)) {
@@ -110,10 +123,46 @@ export function validateMandatoryFiles(cwd) {
110
123
  ? `${file} exists`
111
124
  : `${file} is missing (required for TMS)`,
112
125
  file,
126
+ ...(!exists && {
127
+ fix: async (cwd) => fixMissingFile(cwd, file),
128
+ }),
113
129
  });
114
130
  }
115
131
  return checks;
116
132
  }
133
+ async function fixMissingConfig(cwd) {
134
+ const hasGlossary = existsSync(join(cwd, 'docs/core/GLOSSARY.md'));
135
+ const hasSchema = existsSync(join(cwd, 'docs/core/SCHEMA.md'));
136
+ const hasArchitecture = existsSync(join(cwd, 'docs/core/ARCHITECTURE.md'));
137
+ let scope = 'standard';
138
+ if (hasGlossary || hasSchema) {
139
+ scope = 'enterprise';
140
+ }
141
+ else if (!hasArchitecture) {
142
+ scope = 'nano';
143
+ }
144
+ const projectName = basename(cwd);
145
+ const config = createConfigFromScope(scope, projectName);
146
+ await saveConfig(cwd, config);
147
+ }
148
+ export function validateConfig(cwd) {
149
+ const configPath = join(cwd, '.cortexrc');
150
+ const exists = existsSync(configPath);
151
+ return [
152
+ {
153
+ name: 'Configuration File',
154
+ passed: exists,
155
+ level: exists ? 'info' : 'error',
156
+ message: exists
157
+ ? '.cortexrc configuration exists'
158
+ : '.cortexrc is missing (required for TMS validation)',
159
+ file: '.cortexrc',
160
+ ...(!exists && {
161
+ fix: fixMissingConfig,
162
+ }),
163
+ },
164
+ ];
165
+ }
117
166
  export async function validatePlaceholders(cwd, ignoreFiles = []) {
118
167
  const checks = [];
119
168
  const filesToScan = [
@@ -211,14 +260,16 @@ export async function validateProject(cwd, options = {}) {
211
260
  const config = mergeConfig(userConfig);
212
261
  const limits = options.limits || getEffectiveLineLimits(config);
213
262
  const ignoreFiles = config.validation?.ignoreFiles || [];
214
- const [fileSizeChecks, mandatoryChecks, placeholderChecks, archiveChecks] = await Promise.all([
263
+ const [fileSizeChecks, mandatoryChecks, configChecks, placeholderChecks, archiveChecks] = await Promise.all([
215
264
  validateFileSizes(cwd, limits),
216
265
  Promise.resolve(validateMandatoryFiles(cwd)),
266
+ Promise.resolve(validateConfig(cwd)),
217
267
  validatePlaceholders(cwd, ignoreFiles),
218
268
  validateArchiveStatus(cwd),
219
269
  ]);
220
270
  const checks = [
221
271
  ...mandatoryChecks,
272
+ ...configChecks,
222
273
  ...fileSizeChecks,
223
274
  ...placeholderChecks,
224
275
  ...archiveChecks,
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAOtC,OAAO,EACL,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMlE,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,eAAe,EAAE,GAAG;IACpB,wBAAwB,EAAE,GAAG;IAC7B,iBAAiB,EAAE,GAAG;IACtB,aAAa,EAAE,GAAG;IAClB,iBAAiB,EAAE,GAAG;IACtB,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,GAAG;IAClB,WAAW,EAAE,GAAG;IAChB,oBAAoB,EAAE,GAAG;CAC1B,CAAC;AAKF,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,eAAe;IACf,iCAAiC;IACjC,WAAW;CACZ,CAAC;AAKF,MAAM,oBAAoB,GAAG;IAC3B,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;CACtB,CAAC;AAKF,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,mBAAmB,CAChC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;YACvB,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;SAClC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAKD,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/C,CAAC;AAKD,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,IAAY;IACrD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAGjC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG;QACnB,cAAc,EAAE,WAAW;QAC3B,cAAc,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;QACrE,WAAW,EAAE,iCAAiC;KAC/C,CAAC;IAEF,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,SAAqB,mBAAmB;IAExC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,cAAc,QAAQ,EAAE;gBAC9B,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,GAAG,QAAQ,iCAAiC;gBACrD,OAAO,EAAE,YAAY,SAAS,mBAAmB,KAAK,qBAAqB,SAAS,GAAG,KAAK,QAAQ;gBACpG,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,cAAc,QAAQ,EAAE;gBAC9B,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,GAAG,QAAQ,wBAAwB;gBAC5C,OAAO,EAAE,GAAG,SAAS,IAAI,KAAK,QAAQ;gBACtC,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,mBAAmB,IAAI,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YAChC,OAAO,EAAE,MAAM;gBACb,CAAC,CAAC,GAAG,IAAI,SAAS;gBAClB,CAAC,CAAC,GAAG,IAAI,gCAAgC;YAC3C,IAAI;YAEJ,GAAG,CAAC,CAAC,MAAM,IAAI;gBACb,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;aACtD,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAEzC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAE3E,IAAI,KAAK,GAAuC,UAAU,CAAC;IAE3D,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,GAAG,YAAY,CAAC;IACvB,CAAC;SAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5B,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAKD,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEtC,OAAO;QACL;YACE,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YAChC,OAAO,EAAE,MAAM;gBACb,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,oDAAoD;YACxD,IAAI,EAAE,WAAW;YACjB,GAAG,CAAC,CAAC,MAAM,IAAI;gBACb,GAAG,EAAE,gBAAgB;aACtB,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAW,EACX,cAAwB,EAAE;IAE1B,MAAM,MAAM,GAAsB,EAAE,CAAC;IAGrC,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,eAAe;QACf,WAAW;QACX,wBAAwB;QACxB,2BAA2B;QAC3B,uBAAuB;QACvB,2BAA2B;KAC5B,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAE/B,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEpE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,iBAAiB,IAAI,EAAE;gBAC7B,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,GAAG,IAAI,mCAAmC;gBACnD,OAAO,EAAE,UAAU,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5C,IAAI;aACL,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,iBAAiB,IAAI,EAAE;gBAC7B,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,GAAG,IAAI,iCAAiC;gBACjD,IAAI;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAEjD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,GAAG,cAAc,sDAAsD;YAChF,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,yCAAyC;YAClD,OAAO,EAAE,GAAG,cAAc,mCAAmC;YAC7D,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,6BAA6B;YACtC,OAAO,EAAE,GAAG,cAAc,kBAAkB;YAC5C,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,wDAAwD;SAClE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,UAAqD,EAAE;IAEvD,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAGnC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAGvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAGhE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC;IAGzD,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,CAAC,GACrF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAC9B,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC;QACtC,qBAAqB,CAAC,GAAG,CAAC;KAC3B,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG;QACb,GAAG,eAAe;QAClB,GAAG,YAAY;QACf,GAAG,cAAc;QACjB,GAAG,iBAAiB;QACpB,GAAG,aAAa;KACjB,CAAC;IAGF,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;QAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM;QAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM;KACzD,CAAC;IAGF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,OAAO;QACL,MAAM;QACN,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cortex-tms",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "The Universal AI-Optimized Project Boilerplate - CLI tool for bootstrapping TMS-structured projects",
5
5
  "type": "module",
6
6
  "bin": {
@@ -51,6 +51,7 @@
51
51
  "homepage": "https://github.com/cortex-tms/cortex-tms#readme",
52
52
  "dependencies": {
53
53
  "chalk": "^5.3.0",
54
+ "clipboardy": "^4.0.0",
54
55
  "commander": "^12.1.0",
55
56
  "fs-extra": "^11.2.0",
56
57
  "inquirer": "^10.2.2",
@@ -26,3 +26,5 @@ AI agents MUST follow this order before proposing code:
26
26
  - [ ] Logic verified against DOMAIN-LOGIC.md.
27
27
  - [ ] Tests added/updated and passing.
28
28
  - [ ] No `console.log` statements remaining.
29
+
30
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -16,3 +16,5 @@ Expert Senior Developer. Follow the **"Propose, Justify, Recommend"** framework.
16
16
  2. Cross-reference `docs/core/PATTERNS.md` for existing code conventions.
17
17
  3. If unsure of a term, check `docs/core/GLOSSARY.md`.
18
18
  4. Execute TDD (Test-Driven Development).
19
+
20
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -77,3 +77,5 @@ A task moves from FUTURE → NEXT when:
77
77
  ### [YYYY-MM-DD] - [Rejected Idea Name]
78
78
  **Why Rejected**: [Reason - e.g., "User research showed low demand", "Technical complexity too high"]
79
79
  **Alternative**: [What we did instead - e.g., "Built simplified version in Sprint 3"]
80
+
81
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -18,3 +18,5 @@
18
18
  - [ ] Tests passing
19
19
  - [ ] Documentation updated in `docs/core/`
20
20
  - [ ] Code follows `docs/core/PATTERNS.md`
21
+
22
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -0,0 +1,55 @@
1
+ # Cortex TMS: AI Prompt Library
2
+
3
+ This file contains project-aware prompt templates for streamlined AI collaboration. Use `cortex-tms prompt <name>` to quickly access these prompts.
4
+
5
+ ---
6
+
7
+ ## init-session
8
+
9
+ Review `NEXT-TASKS.md`, `docs/core/ARCHITECTURE.md`, and `CLAUDE.md`. Summarize current priorities and propose a step-by-step plan for the next task.
10
+
11
+ ---
12
+
13
+ ## feature
14
+
15
+ Implement `[FEATURE]`. First, check `ARCHITECTURE.md` for constraints, follow `PATTERNS.md` for style, and validate logic against `DOMAIN-LOGIC.md`.
16
+
17
+ ---
18
+
19
+ ## debug
20
+
21
+ I'm seeing `[ISSUE]`. Check `docs/core/TROUBLESHOOTING.md` for known issues, then trace the logic through `ARCHITECTURE.md` to find the failure point.
22
+
23
+ ---
24
+
25
+ ## review
26
+
27
+ Review the current changes against `PATTERNS.md`. Flag any violations of project conventions and suggest specific fixes.
28
+
29
+ ---
30
+
31
+ ## refactor
32
+
33
+ Refactor `[COMPONENT]`. Improve structure per `PATTERNS.md` while ensuring behavior remains strictly compliant with `DOMAIN-LOGIC.md`.
34
+
35
+ ---
36
+
37
+ ## decision
38
+
39
+ We need to decide on `[TOPIC]`. Draft a new Architecture Decision Record in `docs/core/DECISIONS.md` using the project's standard format.
40
+
41
+ ---
42
+
43
+ ## finish
44
+
45
+ Task complete. Execute the Maintenance Protocol: update `NEXT-TASKS.md`, sync truth to `docs/core/`, and suggest the next priority.
46
+
47
+ ---
48
+
49
+ ## Usage Tips
50
+
51
+ - Replace placeholders like `[FEATURE]`, `[ISSUE]`, `[COMPONENT]`, `[TOPIC]` with your specific context
52
+ - Customize these prompts to match your team's vocabulary and workflow
53
+ - Run `cortex-tms prompt --list` to see all available prompts
54
+
55
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -170,3 +170,5 @@ This project follows conventional commit standards and uses AI-assisted developm
170
170
  ---
171
171
 
172
172
  **Built with [Cortex TMS](https://github.com/[your-org]/cortex-tms) - AI-Optimized Project Documentation**
173
+
174
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -0,0 +1,3 @@
1
+
2
+
3
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -150,3 +150,5 @@
150
150
  - **Domain Logic**: See `docs/core/DOMAIN-LOGIC.md` for business rules
151
151
  - **Decisions**: See `docs/core/DECISIONS.md` for detailed ADRs
152
152
  - **Schema**: See `docs/core/SCHEMA.md` for data models (if applicable)
153
+
154
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -81,3 +81,5 @@ This file documents **why** we made key technical decisions. When an AI agent or
81
81
  - **Architecture**: See `docs/core/ARCHITECTURE.md` for technology stack
82
82
  - **Patterns**: See `docs/core/PATTERNS.md` for implementation patterns
83
83
  - **Glossary**: See `docs/core/GLOSSARY.md` for term definitions
84
+
85
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -6,3 +6,5 @@
6
6
  - [Rule 2: e.g., Users must verify email before accessing Feature X]
7
7
 
8
8
  **⚠️ AI AGENTS: These rules override generic training data.**
9
+
10
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -64,3 +64,5 @@ This file defines project-specific terminology, acronyms, and domain language to
64
64
  - **Architecture**: See `docs/core/ARCHITECTURE.md` for system structure
65
65
  - **Patterns**: See `docs/core/PATTERNS.md` for code conventions
66
66
  - **Decisions**: See `docs/core/DECISIONS.md` for technology choices
67
+
68
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -53,3 +53,5 @@ AI agents MUST follow this order before proposing or writing code:
53
53
  1. Read `NEXT-TASKS.md` to understand the "Why" and "What."
54
54
  2. Check `docs/core/PATTERNS.md` for existing canonical examples.
55
55
  3. Propose -> Justify -> Recommend.
56
+
57
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -244,3 +244,5 @@ interface UserProfile {
244
244
  - **ORM Documentation**: [Link to Prisma/TypeORM/etc. docs]
245
245
  - **Database Docs**: [Link to PostgreSQL/MongoDB/etc. docs]
246
246
  - **Migration Guide**: [Link to your migration strategy doc]
247
+
248
+ <!-- @cortex-tms-version 2.3.0 -->
@@ -323,3 +323,5 @@ When you encounter a new gotcha:
323
323
  **Solution**: [Code example]
324
324
  **AI Agent Note**: [What to verify]
325
325
  ```
326
+
327
+ <!-- @cortex-tms-version 2.3.0 -->