aiag-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE +41 -0
  2. package/README.md +150 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +80 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/commit.d.ts +6 -0
  8. package/dist/commands/commit.d.ts.map +1 -0
  9. package/dist/commands/commit.js +90 -0
  10. package/dist/commands/commit.js.map +1 -0
  11. package/dist/commands/complete.d.ts +6 -0
  12. package/dist/commands/complete.d.ts.map +1 -0
  13. package/dist/commands/complete.js +73 -0
  14. package/dist/commands/complete.js.map +1 -0
  15. package/dist/commands/init.d.ts +7 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +164 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/next.d.ts +7 -0
  20. package/dist/commands/next.d.ts.map +1 -0
  21. package/dist/commands/next.js +77 -0
  22. package/dist/commands/next.js.map +1 -0
  23. package/dist/commands/session.d.ts +3 -0
  24. package/dist/commands/session.d.ts.map +1 -0
  25. package/dist/commands/session.js +65 -0
  26. package/dist/commands/session.js.map +1 -0
  27. package/dist/commands/status.d.ts +7 -0
  28. package/dist/commands/status.d.ts.map +1 -0
  29. package/dist/commands/status.js +78 -0
  30. package/dist/commands/status.js.map +1 -0
  31. package/dist/commands/test.d.ts +7 -0
  32. package/dist/commands/test.d.ts.map +1 -0
  33. package/dist/commands/test.js +170 -0
  34. package/dist/commands/test.js.map +1 -0
  35. package/dist/index.d.ts +12 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +13 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types.d.ts +53 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +9 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/utils/agentSelection.d.ts +28 -0
  44. package/dist/utils/agentSelection.d.ts.map +1 -0
  45. package/dist/utils/agentSelection.js +66 -0
  46. package/dist/utils/agentSelection.js.map +1 -0
  47. package/dist/utils/featureList.d.ts +109 -0
  48. package/dist/utils/featureList.d.ts.map +1 -0
  49. package/dist/utils/featureList.js +465 -0
  50. package/dist/utils/featureList.js.map +1 -0
  51. package/dist/utils/output.d.ts +71 -0
  52. package/dist/utils/output.d.ts.map +1 -0
  53. package/dist/utils/output.js +115 -0
  54. package/dist/utils/output.js.map +1 -0
  55. package/dist/utils/progress.d.ts +31 -0
  56. package/dist/utils/progress.d.ts.map +1 -0
  57. package/dist/utils/progress.js +165 -0
  58. package/dist/utils/progress.js.map +1 -0
  59. package/dist/utils/prompts.d.ts +50 -0
  60. package/dist/utils/prompts.d.ts.map +1 -0
  61. package/dist/utils/prompts.js +111 -0
  62. package/dist/utils/prompts.js.map +1 -0
  63. package/package.json +56 -0
  64. package/templates/coding.md +142 -0
  65. package/templates/initializer.md +125 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,MAAM,EACN,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAOtC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,+BAA+B;IAC/B,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1C,YAAY,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,qBAAqB;QACrB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7E,oCAAoC;QACpC,MAAM,mBAAmB,GAAG;YAC1B,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC5B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,qBAAqB;gBAClC,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,CAAC;aACrB;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,UAAU;oBACd,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,8CAA8C;oBAC3D,kBAAkB,EAAE,CAAC,4BAA4B,EAAE,6BAA6B,CAAC;oBACjF,WAAW,EAAE,UAAU;oBACvB,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;oBACnB,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAC;QAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7C,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAE1D,qBAAqB;QACrB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG;;cAEf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;eAIrB,KAAK;oBACA,KAAK;;;;cAIX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBrC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;QAEpD,iBAAiB;QACjB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;QAC1E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;QAEhD,4BAA4B;QAC5B,MAAM,sBAAsB,GAAG;;;;;;;kBAOjB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;CAKzC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;QAE3D,gEAAgE;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE7D,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAClF,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;YACrE,CAAC,CAAC,iEAAiE,CAAC;QAEtE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC3D,mBAAmB,CACpB,CAAC;QAEF,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACxE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC;YAChE,CAAC,CAAC,4DAA4D,CAAC;QAEjE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface NextOptions {
2
+ category?: string;
3
+ priority?: string;
4
+ }
5
+ export declare function next(options?: NextOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EnE"}
@@ -0,0 +1,77 @@
1
+ import { getNextFeature, getIncompleteFeatures } from '../utils/featureList.js';
2
+ import { printHeader, printSection, colors, icons, printError, getPriorityColor, } from '../utils/output.js';
3
+ export async function next(options = {}) {
4
+ const category = options.category;
5
+ const feature = getNextFeature(category);
6
+ if (!feature) {
7
+ if (category) {
8
+ printError(`No incomplete features in category "${category}".`);
9
+ }
10
+ else {
11
+ console.log('');
12
+ console.log(colors.success('🎉 All features completed!'));
13
+ console.log('');
14
+ }
15
+ return;
16
+ }
17
+ printHeader('Next Feature Recommendation');
18
+ // Feature details
19
+ console.log('');
20
+ console.log(`${colors.bold('ID:')} ${colors.info(feature.id)}`);
21
+ console.log(`${colors.bold('Category:')} ${feature.category}`);
22
+ console.log(`${colors.bold('Priority:')} ${getPriorityColor(feature.priority)(feature.priority)}`);
23
+ // Description
24
+ printSection('Description:');
25
+ console.log(` ${feature.description}`);
26
+ // Acceptance Criteria
27
+ if (feature.acceptanceCriteria.length > 0) {
28
+ printSection('Acceptance Criteria:');
29
+ for (const criteria of feature.acceptanceCriteria) {
30
+ console.log(` ${icons.checkbox.unchecked} ${criteria}`);
31
+ }
32
+ }
33
+ // Test Command
34
+ if (feature.testCommand) {
35
+ printSection('Test Command:');
36
+ console.log(` ${colors.dim('$')} ${feature.testCommand}`);
37
+ }
38
+ // Notes
39
+ if (feature.notes) {
40
+ printSection('Notes:');
41
+ console.log(` ${feature.notes}`);
42
+ }
43
+ // Complexity estimate based on acceptance criteria count
44
+ const complexity = getComplexityEstimate(feature.acceptanceCriteria.length);
45
+ console.log('');
46
+ console.log(`${colors.dim('Estimated Complexity:')} ${complexity} ${colors.dim(`(${feature.acceptanceCriteria.length} criteria)`)}`);
47
+ // Show alternatives
48
+ const allIncomplete = getIncompleteFeatures();
49
+ if (allIncomplete.length > 1) {
50
+ printSection('Other Options:');
51
+ const alternatives = allIncomplete.slice(1, 4);
52
+ for (const alt of alternatives) {
53
+ console.log(` ${icons.bullet} ${alt.id} [${getPriorityColor(alt.priority)(alt.priority)}] ${alt.description.substring(0, 50)}${alt.description.length > 50 ? '...' : ''}`);
54
+ }
55
+ if (allIncomplete.length > 4) {
56
+ console.log(colors.dim(` ... and ${allIncomplete.length - 4} more`));
57
+ }
58
+ }
59
+ console.log('');
60
+ console.log(colors.dim(`Ready to start? Run: aiag session start ${feature.id}`));
61
+ console.log('');
62
+ }
63
+ /**
64
+ * Estimate complexity based on criteria count
65
+ */
66
+ function getComplexityEstimate(criteriaCount) {
67
+ if (criteriaCount <= 2) {
68
+ return colors.success('Low');
69
+ }
70
+ else if (criteriaCount <= 4) {
71
+ return colors.warning('Medium');
72
+ }
73
+ else {
74
+ return colors.error('High');
75
+ }
76
+ }
77
+ //# sourceMappingURL=next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function sessionStart(featureId?: string): Promise<void>;
2
+ export declare function sessionEnd(): Promise<void>;
3
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwChD"}
@@ -0,0 +1,65 @@
1
+ import { updateLastUpdated } from '../utils/progress.js';
2
+ import { getProgress, getNextFeature } from '../utils/featureList.js';
3
+ import { printHeader, printSection, colors, icons, printInfo } from '../utils/output.js';
4
+ export async function sessionStart(featureId) {
5
+ printHeader('Session Start');
6
+ const progress = getProgress();
7
+ const nextFeature = featureId ? null : getNextFeature();
8
+ // Display current state
9
+ printSection('Current Progress');
10
+ console.log(` ${progress.completed}/${progress.total} features complete (${progress.percentage}%)`);
11
+ if (featureId) {
12
+ printSection('Target Feature');
13
+ console.log(` ${icons.arrow} ${featureId}`);
14
+ }
15
+ else if (nextFeature) {
16
+ printSection('Recommended Feature');
17
+ console.log(` ${icons.arrow} ${nextFeature.id}: ${nextFeature.description}`);
18
+ }
19
+ // Checklist
20
+ printSection('Session Start Checklist');
21
+ console.log(` ${icons.checkbox.checked} pwd - Confirm directory`);
22
+ console.log(` ${icons.checkbox.checked} Read progress.md`);
23
+ console.log(` ${icons.checkbox.checked} Read feature_list.json`);
24
+ console.log(` ${icons.checkbox.unchecked} git log --oneline -10`);
25
+ console.log(` ${icons.checkbox.unchecked} .aiag/init.sh`);
26
+ console.log(` ${icons.checkbox.unchecked} Identify next feature`);
27
+ console.log('');
28
+ printInfo('Session started. Remember: ONE feature at a time!');
29
+ console.log('');
30
+ }
31
+ export async function sessionEnd() {
32
+ printHeader('Session End');
33
+ const progress = getProgress();
34
+ // Get session summary
35
+ printSection('Session Summary');
36
+ console.log(` Progress: ${progress.completed}/${progress.total} features (${progress.percentage}%)`);
37
+ // Checklist
38
+ printSection('Session End Checklist');
39
+ console.log(` ${icons.checkbox.unchecked} Feature complete OR clean state`);
40
+ console.log(` ${icons.checkbox.unchecked} All tests passing`);
41
+ console.log(` ${icons.checkbox.unchecked} progress.md updated`);
42
+ console.log(` ${icons.checkbox.unchecked} feature_list.json updated`);
43
+ console.log(` ${icons.checkbox.unchecked} All changes committed`);
44
+ console.log(` ${icons.checkbox.unchecked} git status clean`);
45
+ // Update last updated
46
+ updateLastUpdated();
47
+ console.log('');
48
+ printInfo('Remember to update progress.md with your session summary!');
49
+ console.log('');
50
+ console.log(colors.dim('Template for progress.md:'));
51
+ console.log(colors.dim('---'));
52
+ console.log(colors.dim(`## Session: ${new Date().toISOString()}`));
53
+ console.log(colors.dim(''));
54
+ console.log(colors.dim('### Work Done'));
55
+ console.log(colors.dim('- [x] Completed task'));
56
+ console.log(colors.dim(''));
57
+ console.log(colors.dim('### Commits'));
58
+ console.log(colors.dim('- `hash` commit message'));
59
+ console.log(colors.dim(''));
60
+ console.log(colors.dim('### Next Session'));
61
+ console.log(colors.dim('- Continue with FEATURE-ID'));
62
+ console.log(colors.dim('---'));
63
+ console.log('');
64
+ }
65
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface StatusOptions {
2
+ json?: boolean;
3
+ verbose?: boolean;
4
+ }
5
+ export declare function status(options?: StatusOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAgBA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EvE"}
@@ -0,0 +1,78 @@
1
+ import { readFeatureList, getProgress, getRecentlyCompleted, getNextFeature, } from '../utils/featureList.js';
2
+ import { printHeader, printSection, progressBar, colors, icons, printError, getPriorityColor, } from '../utils/output.js';
3
+ export async function status(options = {}) {
4
+ const data = readFeatureList();
5
+ if (!data) {
6
+ printError('No feature_list.json found. Run "aiag init" first.');
7
+ process.exit(1);
8
+ }
9
+ if (options.json) {
10
+ const progress = getProgress();
11
+ console.log(JSON.stringify({ project: data.project, progress }, null, 2));
12
+ return;
13
+ }
14
+ const progress = getProgress();
15
+ // Header
16
+ printHeader(`AIAG Project Status: ${data.project.name}`);
17
+ // Progress bar
18
+ console.log('');
19
+ console.log(`Progress: ${progressBar(progress.percentage)} ${progress.percentage}% (${progress.completed}/${progress.total})`);
20
+ // By category
21
+ printSection('By Category:');
22
+ const categories = Object.entries(progress.byCategory).sort(([, a], [, b]) => b.completed / b.total - a.completed / a.total);
23
+ for (const [category, stats] of categories) {
24
+ const catPercentage = Math.round((stats.completed / stats.total) * 100);
25
+ const bar = progressBar(catPercentage, 10);
26
+ console.log(` ${category.padEnd(8)} ${bar} ${catPercentage.toString().padStart(3)}% (${stats.completed}/${stats.total})`);
27
+ }
28
+ // Recently completed
29
+ const recentlyCompleted = getRecentlyCompleted(3);
30
+ if (recentlyCompleted.length > 0) {
31
+ printSection('Recently Completed:');
32
+ for (const feature of recentlyCompleted) {
33
+ const time = feature.lastTestedAt ? getRelativeTime(new Date(feature.lastTestedAt)) : '';
34
+ console.log(` ${icons.success} ${feature.id}: ${feature.description} ${colors.dim(`(${time})`)}`);
35
+ }
36
+ }
37
+ // Next up
38
+ const nextFeature = getNextFeature();
39
+ if (nextFeature) {
40
+ printSection('Next Up:');
41
+ const priorityColor = getPriorityColor(nextFeature.priority);
42
+ console.log(` ${icons.arrow} ${colors.bold(nextFeature.id)}: ${nextFeature.description}`);
43
+ console.log(` ${colors.dim('Priority:')} ${priorityColor(nextFeature.priority)} ${colors.dim('Category:')} ${nextFeature.category}`);
44
+ }
45
+ // Verbose mode: show all incomplete features
46
+ if (options.verbose) {
47
+ printSection('Incomplete Features:');
48
+ const incomplete = data.features.filter((f) => !f.passes);
49
+ for (const feature of incomplete) {
50
+ const priorityColor = getPriorityColor(feature.priority);
51
+ console.log(` ${icons.checkbox.unchecked} ${feature.id} [${priorityColor(feature.priority)}] ${feature.description}`);
52
+ }
53
+ }
54
+ console.log('');
55
+ }
56
+ /**
57
+ * Get relative time string
58
+ */
59
+ function getRelativeTime(date) {
60
+ const now = new Date();
61
+ const diffMs = now.getTime() - date.getTime();
62
+ const diffMins = Math.floor(diffMs / 60000);
63
+ const diffHours = Math.floor(diffMs / 3600000);
64
+ const diffDays = Math.floor(diffMs / 86400000);
65
+ if (diffMins < 60) {
66
+ return `${diffMins} min ago`;
67
+ }
68
+ else if (diffHours < 24) {
69
+ return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
70
+ }
71
+ else if (diffDays < 7) {
72
+ return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
73
+ }
74
+ else {
75
+ return date.toLocaleDateString();
76
+ }
77
+ }
78
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,MAAM,EACN,KAAK,EACL,UAAU,EACV,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAO5B,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAyB,EAAE;IACtD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,CAAC,oDAAoD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,SAAS;IACT,WAAW,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEzD,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,aAAa,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,MAAM,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG,CAClH,CAAC;IAEF,cAAc;IACd,YAAY,CAAC,cAAc,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CACzD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAChE,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,GAAG,CAC9G,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,YAAY,CAAC,qBAAqB,CAAC,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,UAAU;IACV,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,WAAW,EAAE,CAAC;QAChB,YAAY,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CACT,QAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,CAC7H,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAC1G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAE/C,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,GAAG,QAAQ,UAAU,CAAC;IAC/B,CAAC;SAAM,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;QAC1B,OAAO,GAAG,SAAS,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAC5D,CAAC;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,QAAQ,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface TestOptions {
2
+ all?: boolean;
3
+ failed?: boolean;
4
+ }
5
+ export declare function test(featureId?: string, options?: TestOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHvF"}
@@ -0,0 +1,170 @@
1
+ import { spawn } from 'child_process';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import { getFeatureById, readFeatureList } from '../utils/featureList.js';
5
+ import { printHeader, printSection, colors, icons, printError, printSuccess, printWarning, } from '../utils/output.js';
6
+ const AIAG_DIR = '.aiag';
7
+ const TEST_RESULTS_FILE = 'test_results.json';
8
+ export async function test(featureId, options = {}) {
9
+ const data = readFeatureList();
10
+ if (!data) {
11
+ printError('No feature_list.json found. Run "aiag init" first.');
12
+ process.exit(1);
13
+ }
14
+ let featuresToTest = data.features;
15
+ if (featureId) {
16
+ // Test specific feature
17
+ const feature = getFeatureById(featureId);
18
+ if (!feature) {
19
+ printError(`Feature "${featureId}" not found.`);
20
+ process.exit(1);
21
+ }
22
+ featuresToTest = [feature];
23
+ }
24
+ else if (options.failed) {
25
+ // Test only previously failed
26
+ const prevResults = loadTestResults();
27
+ if (prevResults) {
28
+ const failedIds = Object.entries(prevResults.byFeature)
29
+ .filter(([, result]) => result.status === 'failed')
30
+ .map(([id]) => id);
31
+ featuresToTest = data.features.filter((f) => failedIds.includes(f.id));
32
+ }
33
+ }
34
+ else if (!options.all) {
35
+ // Default: test incomplete features
36
+ featuresToTest = data.features.filter((f) => !f.passes);
37
+ }
38
+ if (featuresToTest.length === 0) {
39
+ printWarning('No features to test.');
40
+ return;
41
+ }
42
+ printHeader(`Testing ${featuresToTest.length} Feature(s)`);
43
+ const results = {
44
+ lastRun: new Date().toISOString(),
45
+ summary: { total: 0, passed: 0, failed: 0, skipped: 0 },
46
+ byFeature: {},
47
+ };
48
+ for (const feature of featuresToTest) {
49
+ console.log('');
50
+ console.log(`${colors.bold(feature.id)}: ${feature.description}`);
51
+ if (!feature.testCommand) {
52
+ console.log(` ${colors.warning('⊘')} No test command defined`);
53
+ results.summary.skipped++;
54
+ results.byFeature[feature.id] = {
55
+ featureId: feature.id,
56
+ status: 'skipped',
57
+ duration: 0,
58
+ lastRun: new Date().toISOString(),
59
+ };
60
+ continue;
61
+ }
62
+ console.log(` ${colors.dim('$')} ${feature.testCommand}`);
63
+ const startTime = Date.now();
64
+ const { success, error } = await runTest(feature.testCommand);
65
+ const duration = Date.now() - startTime;
66
+ results.summary.total++;
67
+ if (success) {
68
+ console.log(` ${icons.success} Passed ${colors.dim(`(${duration}ms)`)}`);
69
+ results.summary.passed++;
70
+ results.byFeature[feature.id] = {
71
+ featureId: feature.id,
72
+ status: 'passed',
73
+ duration,
74
+ lastRun: new Date().toISOString(),
75
+ };
76
+ }
77
+ else {
78
+ console.log(` ${icons.error} Failed ${colors.dim(`(${duration}ms)`)}`);
79
+ if (error) {
80
+ console.log(` ${colors.dim(error)}`);
81
+ }
82
+ results.summary.failed++;
83
+ results.byFeature[feature.id] = {
84
+ featureId: feature.id,
85
+ status: 'failed',
86
+ duration,
87
+ error,
88
+ lastRun: new Date().toISOString(),
89
+ };
90
+ }
91
+ }
92
+ // Save results
93
+ saveTestResults(results);
94
+ // Summary
95
+ printSection('Summary');
96
+ console.log(` Total: ${results.summary.total} ` +
97
+ `${colors.success(`Passed: ${results.summary.passed}`)} ` +
98
+ `${colors.error(`Failed: ${results.summary.failed}`)} ` +
99
+ `${colors.dim(`Skipped: ${results.summary.skipped}`)}`);
100
+ if (results.summary.failed > 0) {
101
+ console.log('');
102
+ printError(`${results.summary.failed} test(s) failed`);
103
+ process.exit(1);
104
+ }
105
+ else if (results.summary.passed > 0) {
106
+ console.log('');
107
+ printSuccess('All tests passed!');
108
+ }
109
+ console.log('');
110
+ }
111
+ /**
112
+ * Run a test command
113
+ */
114
+ async function runTest(command) {
115
+ return new Promise((resolve) => {
116
+ const [cmd, ...args] = command.split(' ');
117
+ let stderr = '';
118
+ const proc = spawn(cmd, args, {
119
+ shell: true,
120
+ stdio: ['inherit', 'pipe', 'pipe'],
121
+ });
122
+ proc.stdout?.on('data', (data) => {
123
+ process.stdout.write(colors.dim(data.toString()));
124
+ });
125
+ proc.stderr?.on('data', (data) => {
126
+ stderr += data.toString();
127
+ });
128
+ proc.on('close', (code) => {
129
+ resolve({
130
+ success: code === 0,
131
+ error: stderr || undefined,
132
+ });
133
+ });
134
+ proc.on('error', (err) => {
135
+ resolve({
136
+ success: false,
137
+ error: err.message,
138
+ });
139
+ });
140
+ });
141
+ }
142
+ /**
143
+ * Load previous test results
144
+ */
145
+ function loadTestResults() {
146
+ const filePath = path.join(process.cwd(), AIAG_DIR, TEST_RESULTS_FILE);
147
+ if (!fs.existsSync(filePath)) {
148
+ return null;
149
+ }
150
+ try {
151
+ const content = fs.readFileSync(filePath, 'utf-8');
152
+ return JSON.parse(content);
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ }
158
+ /**
159
+ * Save test results
160
+ */
161
+ function saveTestResults(results) {
162
+ const filePath = path.join(process.cwd(), AIAG_DIR, TEST_RESULTS_FILE);
163
+ try {
164
+ fs.writeFileSync(filePath, JSON.stringify(results, null, 2));
165
+ }
166
+ catch (error) {
167
+ console.error('Failed to save test results:', error);
168
+ }
169
+ }
170
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAO9C,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,SAAkB,EAAE,UAAuB,EAAE;IACtE,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,CAAC,oDAAoD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEnC,IAAI,SAAS,EAAE,CAAC;QACd,wBAAwB;QACxB,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,UAAU,CAAC,YAAY,SAAS,cAAc,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,8BAA8B;QAC9B,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;iBACpD,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;iBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,oCAAoC;QACpC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,WAAW,CAAC,WAAW,cAAc,CAAC,MAAM,aAAa,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAgB;QAC3B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACvD,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAChE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;gBAC9B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC;YACF,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAExB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,WAAW,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;gBAC9B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,QAAQ;gBAChB,QAAQ;gBACR,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,WAAW,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;gBAC9B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,QAAQ;gBAChB,QAAQ;gBACR,KAAK;gBACL,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe;IACf,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzB,UAAU;IACV,YAAY,CAAC,SAAS,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CACT,YAAY,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI;QACnC,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI;QAC1D,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI;QACxD,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CACzD,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,UAAU,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,iBAAiB,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC5B,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC;gBACN,OAAO,EAAE,IAAI,KAAK,CAAC;gBACnB,KAAK,EAAE,MAAM,IAAI,SAAS;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,OAAO,CAAC;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,GAAG,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAEvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAoB;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from './types.js';
2
+ export * from './utils/featureList.js';
3
+ export * from './utils/progress.js';
4
+ export * from './utils/output.js';
5
+ export { init } from './commands/init.js';
6
+ export { status } from './commands/status.js';
7
+ export { next } from './commands/next.js';
8
+ export { test } from './commands/test.js';
9
+ export { complete } from './commands/complete.js';
10
+ export { commit } from './commands/commit.js';
11
+ export { sessionStart, sessionEnd } from './commands/session.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ // AIAG CLI - Main exports
2
+ export * from './types.js';
3
+ export * from './utils/featureList.js';
4
+ export * from './utils/progress.js';
5
+ export * from './utils/output.js';
6
+ export { init } from './commands/init.js';
7
+ export { status } from './commands/status.js';
8
+ export { next } from './commands/next.js';
9
+ export { test } from './commands/test.js';
10
+ export { complete } from './commands/complete.js';
11
+ export { commit } from './commands/commit.js';
12
+ export { sessionStart, sessionEnd } from './commands/session.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,53 @@
1
+ export interface Project {
2
+ name: string;
3
+ version: string;
4
+ description: string;
5
+ totalFeatures: number;
6
+ completedFeatures: number;
7
+ }
8
+ export interface Feature {
9
+ id: string;
10
+ category: FeatureCategory;
11
+ priority: FeaturePriority;
12
+ description: string;
13
+ acceptanceCriteria: string[];
14
+ testCommand?: string;
15
+ passes: boolean;
16
+ lastTestedAt: string | null;
17
+ implementedBy: string | null;
18
+ notes?: string;
19
+ dependsOn?: string[];
20
+ }
21
+ export interface FeatureList {
22
+ project: Project;
23
+ features: Feature[];
24
+ }
25
+ export type FeatureCategory = 'core' | 'cli' | 'api' | 'ui' | 'auth' | 'data' | 'test' | 'docs' | 'devops' | 'claude' | 'agent' | 'feature';
26
+ export type FeaturePriority = 'critical' | 'high' | 'medium' | 'low';
27
+ export interface TestResult {
28
+ featureId: string;
29
+ status: 'passed' | 'failed' | 'skipped';
30
+ duration: number;
31
+ error?: string;
32
+ lastRun: string;
33
+ }
34
+ export interface TestResults {
35
+ lastRun: string;
36
+ summary: {
37
+ total: number;
38
+ passed: number;
39
+ failed: number;
40
+ skipped: number;
41
+ };
42
+ byFeature: Record<string, TestResult>;
43
+ }
44
+ export interface SessionLog {
45
+ timestamp: string;
46
+ context: string[];
47
+ workDone: string[];
48
+ commits: string[];
49
+ nextSession: string[];
50
+ notes: string[];
51
+ }
52
+ export declare const PRIORITY_ORDER: Record<FeaturePriority, number>;
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,KAAK,GACL,KAAK,GACL,IAAI,GACJ,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAGD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAK1D,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
1
+ // AIAG Type Definitions
2
+ // Priority order for sorting
3
+ export const PRIORITY_ORDER = {
4
+ critical: 0,
5
+ high: 1,
6
+ medium: 2,
7
+ low: 3,
8
+ };
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,wBAAwB;AAyExB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAoC;IAC7D,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type AgentType = 'initializer' | 'coding';
2
+ /**
3
+ * Determine which agent type should be active based on project state
4
+ *
5
+ * - Initializer Agent: When .aiag/ directory does NOT exist
6
+ * - Coding Agent: When .aiag/ directory exists
7
+ */
8
+ export declare function getAgentType(cwd?: string): AgentType;
9
+ /**
10
+ * Check if AIAG project is initialized
11
+ */
12
+ export declare function isAiagInitialized(cwd?: string): boolean;
13
+ /**
14
+ * Get agent description for display
15
+ */
16
+ export declare function getAgentDescription(agentType: AgentType): string;
17
+ /**
18
+ * Get agent prompt template path
19
+ */
20
+ export declare function getAgentTemplatePath(agentType: AgentType, cwd?: string): string | null;
21
+ /**
22
+ * Validate that the correct agent is being used based on project state
23
+ */
24
+ export declare function validateAgentContext(expectedAgent: AgentType, cwd?: string): {
25
+ valid: boolean;
26
+ message: string;
27
+ };
28
+ //# sourceMappingURL=agentSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSelection.d.ts","sourceRoot":"","sources":["../../src/utils/agentSelection.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;AAIjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,SAAS,CAGnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAGtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAOhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,GAAG,GAAE,MAAsB,GAC1B,MAAM,GAAG,IAAI,CAWf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,SAAS,EACxB,GAAG,GAAE,MAAsB,GAC1B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBrC"}