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.
Files changed (171) hide show
  1. package/README.md +521 -125
  2. package/dist/adapters/claude.d.ts +16 -4
  3. package/dist/adapters/claude.d.ts.map +1 -1
  4. package/dist/adapters/claude.js +679 -33
  5. package/dist/adapters/claude.js.map +1 -1
  6. package/dist/adapters/gemini.d.ts +55 -0
  7. package/dist/adapters/gemini.d.ts.map +1 -0
  8. package/dist/adapters/gemini.js +318 -0
  9. package/dist/adapters/gemini.js.map +1 -0
  10. package/dist/adapters/openai.d.ts.map +1 -1
  11. package/dist/adapters/openai.js +41 -7
  12. package/dist/adapters/openai.js.map +1 -1
  13. package/dist/auth/claude.d.ts +11 -9
  14. package/dist/auth/claude.d.ts.map +1 -1
  15. package/dist/auth/claude.js +107 -71
  16. package/dist/auth/claude.js.map +1 -1
  17. package/dist/auth/gemini.d.ts +58 -0
  18. package/dist/auth/gemini.d.ts.map +1 -0
  19. package/dist/auth/gemini.js +172 -0
  20. package/dist/auth/gemini.js.map +1 -0
  21. package/dist/auth/index.d.ts +11 -7
  22. package/dist/auth/index.d.ts.map +1 -1
  23. package/dist/auth/index.js +23 -5
  24. package/dist/auth/index.js.map +1 -1
  25. package/dist/auth/keychain.d.ts +20 -7
  26. package/dist/auth/keychain.d.ts.map +1 -1
  27. package/dist/auth/keychain.js +85 -29
  28. package/dist/auth/keychain.js.map +1 -1
  29. package/dist/auth/openai.d.ts +2 -2
  30. package/dist/auth/openai.d.ts.map +1 -1
  31. package/dist/auth/openai.js +30 -32
  32. package/dist/auth/openai.js.map +1 -1
  33. package/dist/cli/index.d.ts.map +1 -1
  34. package/dist/cli/index.js +4 -7
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/interactive.d.ts +2 -2
  37. package/dist/cli/interactive.d.ts.map +1 -1
  38. package/dist/cli/interactive.js +1380 -183
  39. package/dist/cli/interactive.js.map +1 -1
  40. package/dist/config/defaults.d.ts +6 -1
  41. package/dist/config/defaults.d.ts.map +1 -1
  42. package/dist/config/defaults.js +10 -2
  43. package/dist/config/defaults.js.map +1 -1
  44. package/dist/config/index.d.ts +10 -0
  45. package/dist/config/index.d.ts.map +1 -1
  46. package/dist/config/index.js +19 -0
  47. package/dist/config/index.js.map +1 -1
  48. package/dist/config/schema.d.ts +20 -0
  49. package/dist/config/schema.d.ts.map +1 -1
  50. package/dist/config/schema.js +7 -0
  51. package/dist/config/schema.js.map +1 -1
  52. package/dist/generators/python.d.ts.map +1 -1
  53. package/dist/generators/python.js +1 -0
  54. package/dist/generators/python.js.map +1 -1
  55. package/dist/generators/typescript.d.ts.map +1 -1
  56. package/dist/generators/typescript.js +1 -0
  57. package/dist/generators/typescript.js.map +1 -1
  58. package/dist/state/index.d.ts +108 -0
  59. package/dist/state/index.d.ts.map +1 -1
  60. package/dist/state/index.js +551 -4
  61. package/dist/state/index.js.map +1 -1
  62. package/dist/state/registry.d.ts +52 -0
  63. package/dist/state/registry.d.ts.map +1 -0
  64. package/dist/state/registry.js +215 -0
  65. package/dist/state/registry.js.map +1 -0
  66. package/dist/types/cli.d.ts +4 -0
  67. package/dist/types/cli.d.ts.map +1 -1
  68. package/dist/types/cli.js.map +1 -1
  69. package/dist/types/consensus.d.ts +69 -4
  70. package/dist/types/consensus.d.ts.map +1 -1
  71. package/dist/types/consensus.js +24 -3
  72. package/dist/types/consensus.js.map +1 -1
  73. package/dist/types/workflow.d.ts +55 -0
  74. package/dist/types/workflow.d.ts.map +1 -1
  75. package/dist/types/workflow.js +16 -0
  76. package/dist/types/workflow.js.map +1 -1
  77. package/dist/workflow/auto-fix.d.ts +45 -0
  78. package/dist/workflow/auto-fix.d.ts.map +1 -0
  79. package/dist/workflow/auto-fix.js +274 -0
  80. package/dist/workflow/auto-fix.js.map +1 -0
  81. package/dist/workflow/consensus.d.ts +44 -2
  82. package/dist/workflow/consensus.d.ts.map +1 -1
  83. package/dist/workflow/consensus.js +565 -17
  84. package/dist/workflow/consensus.js.map +1 -1
  85. package/dist/workflow/execution-mode.d.ts +10 -4
  86. package/dist/workflow/execution-mode.d.ts.map +1 -1
  87. package/dist/workflow/execution-mode.js +547 -58
  88. package/dist/workflow/execution-mode.js.map +1 -1
  89. package/dist/workflow/index.d.ts +14 -2
  90. package/dist/workflow/index.d.ts.map +1 -1
  91. package/dist/workflow/index.js +69 -6
  92. package/dist/workflow/index.js.map +1 -1
  93. package/dist/workflow/milestone-workflow.d.ts +34 -0
  94. package/dist/workflow/milestone-workflow.d.ts.map +1 -0
  95. package/dist/workflow/milestone-workflow.js +414 -0
  96. package/dist/workflow/milestone-workflow.js.map +1 -0
  97. package/dist/workflow/plan-mode.d.ts +14 -1
  98. package/dist/workflow/plan-mode.d.ts.map +1 -1
  99. package/dist/workflow/plan-mode.js +589 -47
  100. package/dist/workflow/plan-mode.js.map +1 -1
  101. package/dist/workflow/plan-storage.d.ts +142 -0
  102. package/dist/workflow/plan-storage.d.ts.map +1 -0
  103. package/dist/workflow/plan-storage.js +331 -0
  104. package/dist/workflow/plan-storage.js.map +1 -0
  105. package/dist/workflow/project-verification.d.ts +37 -0
  106. package/dist/workflow/project-verification.d.ts.map +1 -0
  107. package/dist/workflow/project-verification.js +381 -0
  108. package/dist/workflow/project-verification.js.map +1 -0
  109. package/dist/workflow/task-workflow.d.ts +37 -0
  110. package/dist/workflow/task-workflow.d.ts.map +1 -0
  111. package/dist/workflow/task-workflow.js +383 -0
  112. package/dist/workflow/task-workflow.js.map +1 -0
  113. package/dist/workflow/test-runner.d.ts +1 -0
  114. package/dist/workflow/test-runner.d.ts.map +1 -1
  115. package/dist/workflow/test-runner.js +9 -5
  116. package/dist/workflow/test-runner.js.map +1 -1
  117. package/dist/workflow/ui-designer.d.ts +82 -0
  118. package/dist/workflow/ui-designer.d.ts.map +1 -0
  119. package/dist/workflow/ui-designer.js +234 -0
  120. package/dist/workflow/ui-designer.js.map +1 -0
  121. package/dist/workflow/ui-setup.d.ts +58 -0
  122. package/dist/workflow/ui-setup.d.ts.map +1 -0
  123. package/dist/workflow/ui-setup.js +685 -0
  124. package/dist/workflow/ui-setup.js.map +1 -0
  125. package/dist/workflow/ui-verification.d.ts +114 -0
  126. package/dist/workflow/ui-verification.d.ts.map +1 -0
  127. package/dist/workflow/ui-verification.js +258 -0
  128. package/dist/workflow/ui-verification.js.map +1 -0
  129. package/dist/workflow/workflow-logger.d.ts +110 -0
  130. package/dist/workflow/workflow-logger.d.ts.map +1 -0
  131. package/dist/workflow/workflow-logger.js +267 -0
  132. package/dist/workflow/workflow-logger.js.map +1 -0
  133. package/package.json +2 -2
  134. package/src/adapters/claude.ts +815 -34
  135. package/src/adapters/gemini.ts +373 -0
  136. package/src/adapters/openai.ts +40 -7
  137. package/src/auth/claude.ts +120 -78
  138. package/src/auth/gemini.ts +207 -0
  139. package/src/auth/index.ts +28 -8
  140. package/src/auth/keychain.ts +95 -28
  141. package/src/auth/openai.ts +29 -36
  142. package/src/cli/index.ts +4 -7
  143. package/src/cli/interactive.ts +1641 -216
  144. package/src/config/defaults.ts +10 -2
  145. package/src/config/index.ts +21 -0
  146. package/src/config/schema.ts +7 -0
  147. package/src/generators/python.ts +1 -0
  148. package/src/generators/typescript.ts +1 -0
  149. package/src/state/index.ts +713 -4
  150. package/src/state/registry.ts +278 -0
  151. package/src/types/cli.ts +4 -0
  152. package/src/types/consensus.ts +65 -6
  153. package/src/types/workflow.ts +35 -0
  154. package/src/workflow/auto-fix.ts +340 -0
  155. package/src/workflow/consensus.ts +750 -16
  156. package/src/workflow/execution-mode.ts +673 -74
  157. package/src/workflow/index.ts +95 -6
  158. package/src/workflow/milestone-workflow.ts +576 -0
  159. package/src/workflow/plan-mode.ts +696 -50
  160. package/src/workflow/plan-storage.ts +482 -0
  161. package/src/workflow/project-verification.ts +471 -0
  162. package/src/workflow/task-workflow.ts +525 -0
  163. package/src/workflow/test-runner.ts +10 -5
  164. package/src/workflow/ui-designer.ts +337 -0
  165. package/src/workflow/ui-setup.ts +797 -0
  166. package/src/workflow/ui-verification.ts +357 -0
  167. package/src/workflow/workflow-logger.ts +353 -0
  168. package/tests/config/config.test.ts +1 -1
  169. package/tests/types/consensus.test.ts +3 -3
  170. package/tests/workflow/plan-mode.test.ts +213 -0
  171. 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":"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"}
@@ -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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"}