popeye-cli 1.0.0 → 1.1.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.
- package/README.md +521 -125
- package/dist/adapters/claude.d.ts +16 -4
- package/dist/adapters/claude.d.ts.map +1 -1
- package/dist/adapters/claude.js +679 -33
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/gemini.d.ts +55 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +318 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +41 -7
- package/dist/adapters/openai.js.map +1 -1
- package/dist/auth/claude.d.ts +11 -9
- package/dist/auth/claude.d.ts.map +1 -1
- package/dist/auth/claude.js +107 -71
- package/dist/auth/claude.js.map +1 -1
- package/dist/auth/gemini.d.ts +58 -0
- package/dist/auth/gemini.d.ts.map +1 -0
- package/dist/auth/gemini.js +172 -0
- package/dist/auth/gemini.js.map +1 -0
- package/dist/auth/index.d.ts +11 -7
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +23 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keychain.d.ts +20 -7
- package/dist/auth/keychain.d.ts.map +1 -1
- package/dist/auth/keychain.js +85 -29
- package/dist/auth/keychain.js.map +1 -1
- package/dist/auth/openai.d.ts +2 -2
- package/dist/auth/openai.d.ts.map +1 -1
- package/dist/auth/openai.js +30 -32
- package/dist/auth/openai.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive.d.ts +2 -2
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +1380 -183
- package/dist/cli/interactive.js.map +1 -1
- package/dist/config/defaults.d.ts +6 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +10 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +20 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/generators/python.d.ts.map +1 -1
- package/dist/generators/python.js +1 -0
- package/dist/generators/python.js.map +1 -1
- package/dist/generators/typescript.d.ts.map +1 -1
- package/dist/generators/typescript.js +1 -0
- package/dist/generators/typescript.js.map +1 -1
- package/dist/state/index.d.ts +108 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +551 -4
- package/dist/state/index.js.map +1 -1
- package/dist/state/registry.d.ts +52 -0
- package/dist/state/registry.d.ts.map +1 -0
- package/dist/state/registry.js +215 -0
- package/dist/state/registry.js.map +1 -0
- package/dist/types/cli.d.ts +4 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/cli.js.map +1 -1
- package/dist/types/consensus.d.ts +69 -4
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js +24 -3
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/workflow.d.ts +55 -0
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +16 -0
- package/dist/types/workflow.js.map +1 -1
- package/dist/workflow/auto-fix.d.ts +45 -0
- package/dist/workflow/auto-fix.d.ts.map +1 -0
- package/dist/workflow/auto-fix.js +274 -0
- package/dist/workflow/auto-fix.js.map +1 -0
- package/dist/workflow/consensus.d.ts +44 -2
- package/dist/workflow/consensus.d.ts.map +1 -1
- package/dist/workflow/consensus.js +565 -17
- package/dist/workflow/consensus.js.map +1 -1
- package/dist/workflow/execution-mode.d.ts +10 -4
- package/dist/workflow/execution-mode.d.ts.map +1 -1
- package/dist/workflow/execution-mode.js +547 -58
- package/dist/workflow/execution-mode.js.map +1 -1
- package/dist/workflow/index.d.ts +14 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +69 -6
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/milestone-workflow.d.ts +34 -0
- package/dist/workflow/milestone-workflow.d.ts.map +1 -0
- package/dist/workflow/milestone-workflow.js +414 -0
- package/dist/workflow/milestone-workflow.js.map +1 -0
- package/dist/workflow/plan-mode.d.ts +14 -1
- package/dist/workflow/plan-mode.d.ts.map +1 -1
- package/dist/workflow/plan-mode.js +589 -47
- package/dist/workflow/plan-mode.js.map +1 -1
- package/dist/workflow/plan-storage.d.ts +142 -0
- package/dist/workflow/plan-storage.d.ts.map +1 -0
- package/dist/workflow/plan-storage.js +331 -0
- package/dist/workflow/plan-storage.js.map +1 -0
- package/dist/workflow/project-verification.d.ts +37 -0
- package/dist/workflow/project-verification.d.ts.map +1 -0
- package/dist/workflow/project-verification.js +381 -0
- package/dist/workflow/project-verification.js.map +1 -0
- package/dist/workflow/task-workflow.d.ts +37 -0
- package/dist/workflow/task-workflow.d.ts.map +1 -0
- package/dist/workflow/task-workflow.js +383 -0
- package/dist/workflow/task-workflow.js.map +1 -0
- package/dist/workflow/test-runner.d.ts +1 -0
- package/dist/workflow/test-runner.d.ts.map +1 -1
- package/dist/workflow/test-runner.js +9 -5
- package/dist/workflow/test-runner.js.map +1 -1
- package/dist/workflow/ui-designer.d.ts +82 -0
- package/dist/workflow/ui-designer.d.ts.map +1 -0
- package/dist/workflow/ui-designer.js +234 -0
- package/dist/workflow/ui-designer.js.map +1 -0
- package/dist/workflow/ui-setup.d.ts +58 -0
- package/dist/workflow/ui-setup.d.ts.map +1 -0
- package/dist/workflow/ui-setup.js +685 -0
- package/dist/workflow/ui-setup.js.map +1 -0
- package/dist/workflow/ui-verification.d.ts +114 -0
- package/dist/workflow/ui-verification.d.ts.map +1 -0
- package/dist/workflow/ui-verification.js +258 -0
- package/dist/workflow/ui-verification.js.map +1 -0
- package/dist/workflow/workflow-logger.d.ts +110 -0
- package/dist/workflow/workflow-logger.d.ts.map +1 -0
- package/dist/workflow/workflow-logger.js +267 -0
- package/dist/workflow/workflow-logger.js.map +1 -0
- package/package.json +2 -2
- package/src/adapters/claude.ts +815 -34
- package/src/adapters/gemini.ts +373 -0
- package/src/adapters/openai.ts +40 -7
- package/src/auth/claude.ts +120 -78
- package/src/auth/gemini.ts +207 -0
- package/src/auth/index.ts +28 -8
- package/src/auth/keychain.ts +95 -28
- package/src/auth/openai.ts +29 -36
- package/src/cli/index.ts +4 -7
- package/src/cli/interactive.ts +1641 -216
- package/src/config/defaults.ts +10 -2
- package/src/config/index.ts +21 -0
- package/src/config/schema.ts +7 -0
- package/src/generators/python.ts +1 -0
- package/src/generators/typescript.ts +1 -0
- package/src/state/index.ts +713 -4
- package/src/state/registry.ts +278 -0
- package/src/types/cli.ts +4 -0
- package/src/types/consensus.ts +65 -6
- package/src/types/workflow.ts +35 -0
- package/src/workflow/auto-fix.ts +340 -0
- package/src/workflow/consensus.ts +750 -16
- package/src/workflow/execution-mode.ts +673 -74
- package/src/workflow/index.ts +95 -6
- package/src/workflow/milestone-workflow.ts +576 -0
- package/src/workflow/plan-mode.ts +696 -50
- package/src/workflow/plan-storage.ts +482 -0
- package/src/workflow/project-verification.ts +471 -0
- package/src/workflow/task-workflow.ts +525 -0
- package/src/workflow/test-runner.ts +10 -5
- package/src/workflow/ui-designer.ts +337 -0
- package/src/workflow/ui-setup.ts +797 -0
- package/src/workflow/ui-verification.ts +357 -0
- package/src/workflow/workflow-logger.ts +353 -0
- package/tests/config/config.test.ts +1 -1
- package/tests/types/consensus.test.ts +3 -3
- package/tests/workflow/plan-mode.test.ts +213 -0
- package/tests/workflow/test-runner.test.ts +5 -3
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI/UX Verification Module
|
|
3
|
+
* Verifies visual design, responsiveness, and accessibility
|
|
4
|
+
*
|
|
5
|
+
* FUTURE IMPLEMENTATION - Requires:
|
|
6
|
+
* - Puppeteer/Playwright for screenshots
|
|
7
|
+
* - Visual regression testing
|
|
8
|
+
* - Accessibility testing (axe-core)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* UI Design Specification
|
|
12
|
+
* User should provide this before project generation
|
|
13
|
+
*/
|
|
14
|
+
export interface UIDesignSpec {
|
|
15
|
+
/** Design system to use */
|
|
16
|
+
designSystem: 'tailwind' | 'shadcn' | 'mui' | 'chakra' | 'custom';
|
|
17
|
+
/** Color palette */
|
|
18
|
+
colors: {
|
|
19
|
+
primary: string;
|
|
20
|
+
secondary: string;
|
|
21
|
+
accent: string;
|
|
22
|
+
background: string;
|
|
23
|
+
text: string;
|
|
24
|
+
error: string;
|
|
25
|
+
success: string;
|
|
26
|
+
warning: string;
|
|
27
|
+
};
|
|
28
|
+
/** Typography */
|
|
29
|
+
typography: {
|
|
30
|
+
fontFamily: string;
|
|
31
|
+
headingFont?: string;
|
|
32
|
+
baseSize: string;
|
|
33
|
+
};
|
|
34
|
+
/** Spacing scale */
|
|
35
|
+
spacing: 'compact' | 'comfortable' | 'spacious';
|
|
36
|
+
/** Border radius */
|
|
37
|
+
borderRadius: 'none' | 'small' | 'medium' | 'large' | 'full';
|
|
38
|
+
/** Dark mode support */
|
|
39
|
+
darkMode: boolean;
|
|
40
|
+
/** Responsive breakpoints to test */
|
|
41
|
+
breakpoints: ('mobile' | 'tablet' | 'desktop' | 'wide')[];
|
|
42
|
+
/** Accessibility level */
|
|
43
|
+
accessibilityLevel: 'A' | 'AA' | 'AAA';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Default design spec for when user doesn't provide one
|
|
47
|
+
*/
|
|
48
|
+
export declare const DEFAULT_DESIGN_SPEC: UIDesignSpec;
|
|
49
|
+
/**
|
|
50
|
+
* UI Verification Result
|
|
51
|
+
*/
|
|
52
|
+
export interface UIVerificationResult {
|
|
53
|
+
passed: boolean;
|
|
54
|
+
category: string;
|
|
55
|
+
check: string;
|
|
56
|
+
message: string;
|
|
57
|
+
screenshot?: string;
|
|
58
|
+
severity: 'error' | 'warning' | 'info';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generate Tailwind config from design spec
|
|
62
|
+
*/
|
|
63
|
+
export declare function generateTailwindConfig(spec: UIDesignSpec): string;
|
|
64
|
+
/**
|
|
65
|
+
* Generate CSS variables from design spec
|
|
66
|
+
*/
|
|
67
|
+
export declare function generateCSSVariables(spec: UIDesignSpec): string;
|
|
68
|
+
/**
|
|
69
|
+
* Component library setup instructions
|
|
70
|
+
*/
|
|
71
|
+
export declare const COMPONENT_LIBRARY_SETUP: Record<string, {
|
|
72
|
+
install: string;
|
|
73
|
+
setup: string;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Visual regression test configuration
|
|
77
|
+
* TODO: Implement with Playwright
|
|
78
|
+
*/
|
|
79
|
+
export interface VisualTestConfig {
|
|
80
|
+
/** Pages to test */
|
|
81
|
+
pages: Array<{
|
|
82
|
+
path: string;
|
|
83
|
+
name: string;
|
|
84
|
+
waitForSelector?: string;
|
|
85
|
+
}>;
|
|
86
|
+
/** Viewports to test */
|
|
87
|
+
viewports: Array<{
|
|
88
|
+
name: string;
|
|
89
|
+
width: number;
|
|
90
|
+
height: number;
|
|
91
|
+
}>;
|
|
92
|
+
/** Screenshot comparison threshold */
|
|
93
|
+
threshold: number;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Default visual test configuration
|
|
97
|
+
*/
|
|
98
|
+
export declare const DEFAULT_VISUAL_TEST_CONFIG: VisualTestConfig;
|
|
99
|
+
/**
|
|
100
|
+
* Accessibility checks to perform
|
|
101
|
+
* TODO: Implement with axe-core
|
|
102
|
+
*/
|
|
103
|
+
export declare const ACCESSIBILITY_CHECKS: string[];
|
|
104
|
+
/**
|
|
105
|
+
* FUTURE: Run visual regression tests
|
|
106
|
+
* Requires Playwright installation
|
|
107
|
+
*/
|
|
108
|
+
export declare function runVisualTests(_projectDir: string, _config?: VisualTestConfig): Promise<UIVerificationResult[]>;
|
|
109
|
+
/**
|
|
110
|
+
* FUTURE: Run accessibility tests
|
|
111
|
+
* Requires axe-core installation
|
|
112
|
+
*/
|
|
113
|
+
export declare function runAccessibilityTests(_projectDir: string, _level?: 'A' | 'AA' | 'AAA'): Promise<UIVerificationResult[]>;
|
|
114
|
+
//# sourceMappingURL=ui-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-verification.d.ts","sourceRoot":"","sources":["../../src/workflow/ui-verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,YAAY,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAElE,oBAAoB;IACpB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,iBAAiB;IACjB,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;IAEhD,oBAAoB;IACpB,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAE7D,wBAAwB;IACxB,QAAQ,EAAE,OAAO,CAAC;IAElB,qCAAqC;IACrC,WAAW,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;IAE1D,0BAA0B;IAC1B,kBAAkB,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;CACxC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAqBjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA2CjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA8B/D;AAgDD;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA2BtF,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;IAEH,wBAAwB;IACxB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAYxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAShC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAA6C,GACrD,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAiBjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,GAAG,GAAG,IAAI,GAAG,KAAY,GAChC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAgBjC"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI/UX Verification Module
|
|
3
|
+
* Verifies visual design, responsiveness, and accessibility
|
|
4
|
+
*
|
|
5
|
+
* FUTURE IMPLEMENTATION - Requires:
|
|
6
|
+
* - Puppeteer/Playwright for screenshots
|
|
7
|
+
* - Visual regression testing
|
|
8
|
+
* - Accessibility testing (axe-core)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Default design spec for when user doesn't provide one
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_DESIGN_SPEC = {
|
|
14
|
+
designSystem: 'shadcn',
|
|
15
|
+
colors: {
|
|
16
|
+
primary: '#3b82f6', // Blue 500
|
|
17
|
+
secondary: '#6b7280', // Gray 500
|
|
18
|
+
accent: '#8b5cf6', // Violet 500
|
|
19
|
+
background: '#ffffff',
|
|
20
|
+
text: '#111827', // Gray 900
|
|
21
|
+
error: '#ef4444', // Red 500
|
|
22
|
+
success: '#22c55e', // Green 500
|
|
23
|
+
warning: '#f59e0b', // Amber 500
|
|
24
|
+
},
|
|
25
|
+
typography: {
|
|
26
|
+
fontFamily: 'Inter, system-ui, sans-serif',
|
|
27
|
+
baseSize: '16px',
|
|
28
|
+
},
|
|
29
|
+
spacing: 'comfortable',
|
|
30
|
+
borderRadius: 'medium',
|
|
31
|
+
darkMode: true,
|
|
32
|
+
breakpoints: ['mobile', 'tablet', 'desktop'],
|
|
33
|
+
accessibilityLevel: 'AA',
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Generate Tailwind config from design spec
|
|
37
|
+
*/
|
|
38
|
+
export function generateTailwindConfig(spec) {
|
|
39
|
+
return `/** @type {import('tailwindcss').Config} */
|
|
40
|
+
export default {
|
|
41
|
+
content: [
|
|
42
|
+
"./index.html",
|
|
43
|
+
"./src/**/*.{js,ts,jsx,tsx}",
|
|
44
|
+
],
|
|
45
|
+
darkMode: ${spec.darkMode ? "'class'" : 'false'},
|
|
46
|
+
theme: {
|
|
47
|
+
extend: {
|
|
48
|
+
colors: {
|
|
49
|
+
primary: {
|
|
50
|
+
DEFAULT: '${spec.colors.primary}',
|
|
51
|
+
50: '${lighten(spec.colors.primary, 0.9)}',
|
|
52
|
+
100: '${lighten(spec.colors.primary, 0.8)}',
|
|
53
|
+
200: '${lighten(spec.colors.primary, 0.6)}',
|
|
54
|
+
300: '${lighten(spec.colors.primary, 0.4)}',
|
|
55
|
+
400: '${lighten(spec.colors.primary, 0.2)}',
|
|
56
|
+
500: '${spec.colors.primary}',
|
|
57
|
+
600: '${darken(spec.colors.primary, 0.1)}',
|
|
58
|
+
700: '${darken(spec.colors.primary, 0.2)}',
|
|
59
|
+
800: '${darken(spec.colors.primary, 0.3)}',
|
|
60
|
+
900: '${darken(spec.colors.primary, 0.4)}',
|
|
61
|
+
},
|
|
62
|
+
secondary: {
|
|
63
|
+
DEFAULT: '${spec.colors.secondary}',
|
|
64
|
+
},
|
|
65
|
+
accent: {
|
|
66
|
+
DEFAULT: '${spec.colors.accent}',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
fontFamily: {
|
|
70
|
+
sans: ['${spec.typography.fontFamily}'],
|
|
71
|
+
${spec.typography.headingFont ? `heading: ['${spec.typography.headingFont}'],` : ''}
|
|
72
|
+
},
|
|
73
|
+
borderRadius: {
|
|
74
|
+
DEFAULT: '${getBorderRadius(spec.borderRadius)}',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
plugins: [],
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate CSS variables from design spec
|
|
84
|
+
*/
|
|
85
|
+
export function generateCSSVariables(spec) {
|
|
86
|
+
return `:root {
|
|
87
|
+
/* Colors */
|
|
88
|
+
--color-primary: ${spec.colors.primary};
|
|
89
|
+
--color-secondary: ${spec.colors.secondary};
|
|
90
|
+
--color-accent: ${spec.colors.accent};
|
|
91
|
+
--color-background: ${spec.colors.background};
|
|
92
|
+
--color-text: ${spec.colors.text};
|
|
93
|
+
--color-error: ${spec.colors.error};
|
|
94
|
+
--color-success: ${spec.colors.success};
|
|
95
|
+
--color-warning: ${spec.colors.warning};
|
|
96
|
+
|
|
97
|
+
/* Typography */
|
|
98
|
+
--font-family: ${spec.typography.fontFamily};
|
|
99
|
+
--font-size-base: ${spec.typography.baseSize};
|
|
100
|
+
|
|
101
|
+
/* Spacing */
|
|
102
|
+
--spacing-unit: ${getSpacingUnit(spec.spacing)};
|
|
103
|
+
|
|
104
|
+
/* Border Radius */
|
|
105
|
+
--border-radius: ${getBorderRadius(spec.borderRadius)};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
${spec.darkMode ? `
|
|
109
|
+
.dark {
|
|
110
|
+
--color-background: #111827;
|
|
111
|
+
--color-text: #f9fafb;
|
|
112
|
+
}
|
|
113
|
+
` : ''}
|
|
114
|
+
`;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Helper to lighten a hex color
|
|
118
|
+
*/
|
|
119
|
+
function lighten(hex, amount) {
|
|
120
|
+
const num = parseInt(hex.replace('#', ''), 16);
|
|
121
|
+
const r = Math.min(255, Math.floor((num >> 16) + (255 - (num >> 16)) * amount));
|
|
122
|
+
const g = Math.min(255, Math.floor(((num >> 8) & 0x00FF) + (255 - ((num >> 8) & 0x00FF)) * amount));
|
|
123
|
+
const b = Math.min(255, Math.floor((num & 0x0000FF) + (255 - (num & 0x0000FF)) * amount));
|
|
124
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Helper to darken a hex color
|
|
128
|
+
*/
|
|
129
|
+
function darken(hex, amount) {
|
|
130
|
+
const num = parseInt(hex.replace('#', ''), 16);
|
|
131
|
+
const r = Math.max(0, Math.floor((num >> 16) * (1 - amount)));
|
|
132
|
+
const g = Math.max(0, Math.floor(((num >> 8) & 0x00FF) * (1 - amount)));
|
|
133
|
+
const b = Math.max(0, Math.floor((num & 0x0000FF) * (1 - amount)));
|
|
134
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get spacing unit based on preference
|
|
138
|
+
*/
|
|
139
|
+
function getSpacingUnit(spacing) {
|
|
140
|
+
switch (spacing) {
|
|
141
|
+
case 'compact': return '0.25rem';
|
|
142
|
+
case 'comfortable': return '0.5rem';
|
|
143
|
+
case 'spacious': return '0.75rem';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get border radius based on preference
|
|
148
|
+
*/
|
|
149
|
+
function getBorderRadius(radius) {
|
|
150
|
+
switch (radius) {
|
|
151
|
+
case 'none': return '0';
|
|
152
|
+
case 'small': return '0.25rem';
|
|
153
|
+
case 'medium': return '0.5rem';
|
|
154
|
+
case 'large': return '1rem';
|
|
155
|
+
case 'full': return '9999px';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Component library setup instructions
|
|
160
|
+
*/
|
|
161
|
+
export const COMPONENT_LIBRARY_SETUP = {
|
|
162
|
+
shadcn: {
|
|
163
|
+
install: 'npx shadcn@latest init',
|
|
164
|
+
setup: `
|
|
165
|
+
# After init, add components as needed:
|
|
166
|
+
npx shadcn@latest add button
|
|
167
|
+
npx shadcn@latest add card
|
|
168
|
+
npx shadcn@latest add input
|
|
169
|
+
npx shadcn@latest add dialog
|
|
170
|
+
# etc.
|
|
171
|
+
`,
|
|
172
|
+
},
|
|
173
|
+
mui: {
|
|
174
|
+
install: 'npm install @mui/material @emotion/react @emotion/styled',
|
|
175
|
+
setup: `
|
|
176
|
+
// Wrap app in ThemeProvider
|
|
177
|
+
import { ThemeProvider, createTheme } from '@mui/material/styles';
|
|
178
|
+
const theme = createTheme({ /* your theme */ });
|
|
179
|
+
`,
|
|
180
|
+
},
|
|
181
|
+
chakra: {
|
|
182
|
+
install: 'npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion',
|
|
183
|
+
setup: `
|
|
184
|
+
// Wrap app in ChakraProvider
|
|
185
|
+
import { ChakraProvider } from '@chakra-ui/react';
|
|
186
|
+
`,
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Default visual test configuration
|
|
191
|
+
*/
|
|
192
|
+
export const DEFAULT_VISUAL_TEST_CONFIG = {
|
|
193
|
+
pages: [
|
|
194
|
+
{ path: '/', name: 'home' },
|
|
195
|
+
{ path: '/dashboard', name: 'dashboard' },
|
|
196
|
+
{ path: '/board', name: 'board', waitForSelector: '[data-testid="kanban-board"]' },
|
|
197
|
+
],
|
|
198
|
+
viewports: [
|
|
199
|
+
{ name: 'mobile', width: 375, height: 667 },
|
|
200
|
+
{ name: 'tablet', width: 768, height: 1024 },
|
|
201
|
+
{ name: 'desktop', width: 1280, height: 800 },
|
|
202
|
+
],
|
|
203
|
+
threshold: 0.1, // 10% difference allowed
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* Accessibility checks to perform
|
|
207
|
+
* TODO: Implement with axe-core
|
|
208
|
+
*/
|
|
209
|
+
export const ACCESSIBILITY_CHECKS = [
|
|
210
|
+
'color-contrast',
|
|
211
|
+
'aria-roles',
|
|
212
|
+
'keyboard-navigation',
|
|
213
|
+
'focus-indicators',
|
|
214
|
+
'alt-text',
|
|
215
|
+
'form-labels',
|
|
216
|
+
'heading-order',
|
|
217
|
+
'link-purpose',
|
|
218
|
+
];
|
|
219
|
+
/**
|
|
220
|
+
* FUTURE: Run visual regression tests
|
|
221
|
+
* Requires Playwright installation
|
|
222
|
+
*/
|
|
223
|
+
export async function runVisualTests(_projectDir, _config = DEFAULT_VISUAL_TEST_CONFIG) {
|
|
224
|
+
// TODO: Implement with Playwright
|
|
225
|
+
// 1. Start dev server
|
|
226
|
+
// 2. Navigate to each page
|
|
227
|
+
// 3. Take screenshots at each viewport
|
|
228
|
+
// 4. Compare with baseline (if exists)
|
|
229
|
+
// 5. Report differences
|
|
230
|
+
console.warn('[UI Verification] Visual testing not yet implemented - requires Playwright');
|
|
231
|
+
return [{
|
|
232
|
+
passed: true,
|
|
233
|
+
category: 'Visual',
|
|
234
|
+
check: 'Visual regression tests',
|
|
235
|
+
message: 'Visual testing not yet implemented',
|
|
236
|
+
severity: 'warning',
|
|
237
|
+
}];
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* FUTURE: Run accessibility tests
|
|
241
|
+
* Requires axe-core installation
|
|
242
|
+
*/
|
|
243
|
+
export async function runAccessibilityTests(_projectDir, _level = 'AA') {
|
|
244
|
+
// TODO: Implement with axe-core
|
|
245
|
+
// 1. Start dev server
|
|
246
|
+
// 2. Navigate to each page
|
|
247
|
+
// 3. Run axe-core analysis
|
|
248
|
+
// 4. Report violations
|
|
249
|
+
console.warn('[UI Verification] Accessibility testing not yet implemented - requires axe-core');
|
|
250
|
+
return [{
|
|
251
|
+
passed: true,
|
|
252
|
+
category: 'Accessibility',
|
|
253
|
+
check: 'WCAG compliance',
|
|
254
|
+
message: 'Accessibility testing not yet implemented',
|
|
255
|
+
severity: 'warning',
|
|
256
|
+
}];
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=ui-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-verification.js","sourceRoot":"","sources":["../../src/workflow/ui-verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Logger
|
|
3
|
+
* Provides persistent logging of all workflow stages for transparency and debugging
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Log entry structure
|
|
7
|
+
*/
|
|
8
|
+
export interface LogEntry {
|
|
9
|
+
timestamp: string;
|
|
10
|
+
stage: WorkflowStage;
|
|
11
|
+
event: string;
|
|
12
|
+
message: string;
|
|
13
|
+
data?: Record<string, unknown>;
|
|
14
|
+
level: LogLevel;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Log levels for filtering and display
|
|
18
|
+
*/
|
|
19
|
+
export type LogLevel = 'info' | 'warn' | 'error' | 'success' | 'debug';
|
|
20
|
+
/**
|
|
21
|
+
* Workflow stages for categorization
|
|
22
|
+
*/
|
|
23
|
+
export type WorkflowStage = 'init' | 'plan-generation' | 'plan-parsing' | 'consensus' | 'arbitration' | 'execution' | 'task' | 'milestone' | 'testing' | 'verification' | 'ui-design' | 'ui-setup' | 'completion';
|
|
24
|
+
/**
|
|
25
|
+
* Workflow logger class that persists logs to the project's docs folder
|
|
26
|
+
*/
|
|
27
|
+
export declare class WorkflowLogger {
|
|
28
|
+
private projectDir;
|
|
29
|
+
private logFile;
|
|
30
|
+
private entries;
|
|
31
|
+
private initialized;
|
|
32
|
+
constructor(projectDir: string);
|
|
33
|
+
/**
|
|
34
|
+
* Initialize the logger and load existing entries
|
|
35
|
+
*/
|
|
36
|
+
initialize(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Parse existing log entries from markdown file
|
|
39
|
+
*/
|
|
40
|
+
private parseExistingLog;
|
|
41
|
+
/**
|
|
42
|
+
* Log an entry to the workflow log
|
|
43
|
+
*/
|
|
44
|
+
log(stage: WorkflowStage, event: string, message: string, data?: Record<string, unknown>, level?: LogLevel): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Log info message
|
|
47
|
+
*/
|
|
48
|
+
info(stage: WorkflowStage, event: string, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Log warning message
|
|
51
|
+
*/
|
|
52
|
+
warn(stage: WorkflowStage, event: string, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Log error message
|
|
55
|
+
*/
|
|
56
|
+
error(stage: WorkflowStage, event: string, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Log success message
|
|
59
|
+
*/
|
|
60
|
+
success(stage: WorkflowStage, event: string, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Log stage start
|
|
63
|
+
*/
|
|
64
|
+
stageStart(stage: WorkflowStage, description: string, data?: Record<string, unknown>): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Log stage completion
|
|
67
|
+
*/
|
|
68
|
+
stageComplete(stage: WorkflowStage, description: string, data?: Record<string, unknown>): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Log stage failure
|
|
71
|
+
*/
|
|
72
|
+
stageFailed(stage: WorkflowStage, description: string, error: string, data?: Record<string, unknown>): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Persist log entries to file
|
|
75
|
+
*/
|
|
76
|
+
private persist;
|
|
77
|
+
/**
|
|
78
|
+
* Format log entries as markdown
|
|
79
|
+
*/
|
|
80
|
+
private formatMarkdown;
|
|
81
|
+
/**
|
|
82
|
+
* Get icon for log level
|
|
83
|
+
*/
|
|
84
|
+
private getLevelIcon;
|
|
85
|
+
/**
|
|
86
|
+
* Get all log entries
|
|
87
|
+
*/
|
|
88
|
+
getEntries(): LogEntry[];
|
|
89
|
+
/**
|
|
90
|
+
* Get entries for a specific stage
|
|
91
|
+
*/
|
|
92
|
+
getEntriesForStage(stage: WorkflowStage): LogEntry[];
|
|
93
|
+
/**
|
|
94
|
+
* Get error entries
|
|
95
|
+
*/
|
|
96
|
+
getErrors(): LogEntry[];
|
|
97
|
+
/**
|
|
98
|
+
* Clear the log (for testing or reset)
|
|
99
|
+
*/
|
|
100
|
+
clear(): Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get or create a workflow logger for a project
|
|
104
|
+
*/
|
|
105
|
+
export declare function getWorkflowLogger(projectDir: string): WorkflowLogger;
|
|
106
|
+
/**
|
|
107
|
+
* Quick logging functions for common use cases
|
|
108
|
+
*/
|
|
109
|
+
export declare function logWorkflowEvent(projectDir: string, stage: WorkflowStage, event: string, message: string, data?: Record<string, unknown>, level?: LogLevel): Promise<void>;
|
|
110
|
+
//# sourceMappingURL=workflow-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-logger.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-logger.ts"],"names":[],"mappings":"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"}
|