popeye-cli 1.2.1 → 1.3.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 (114) hide show
  1. package/.env.example +4 -1
  2. package/CONTRIBUTING.md +10 -0
  3. package/README.md +111 -2
  4. package/dist/adapters/claude.d.ts +3 -2
  5. package/dist/adapters/claude.d.ts.map +1 -1
  6. package/dist/adapters/claude.js +214 -0
  7. package/dist/adapters/claude.js.map +1 -1
  8. package/dist/adapters/grok.d.ts +2 -1
  9. package/dist/adapters/grok.d.ts.map +1 -1
  10. package/dist/adapters/grok.js.map +1 -1
  11. package/dist/adapters/index.d.ts +8 -0
  12. package/dist/adapters/index.d.ts.map +1 -0
  13. package/dist/adapters/index.js +12 -0
  14. package/dist/adapters/index.js.map +1 -0
  15. package/dist/adapters/openai.d.ts +2 -2
  16. package/dist/adapters/openai.d.ts.map +1 -1
  17. package/dist/adapters/openai.js.map +1 -1
  18. package/dist/cli/commands/create.d.ts.map +1 -1
  19. package/dist/cli/commands/create.js +25 -5
  20. package/dist/cli/commands/create.js.map +1 -1
  21. package/dist/cli/interactive.d.ts.map +1 -1
  22. package/dist/cli/interactive.js +47 -6
  23. package/dist/cli/interactive.js.map +1 -1
  24. package/dist/generators/all.d.ts +40 -0
  25. package/dist/generators/all.d.ts.map +1 -0
  26. package/dist/generators/all.js +826 -0
  27. package/dist/generators/all.js.map +1 -0
  28. package/dist/generators/fullstack.d.ts +9 -0
  29. package/dist/generators/fullstack.d.ts.map +1 -1
  30. package/dist/generators/fullstack.js.map +1 -1
  31. package/dist/generators/index.d.ts +3 -1
  32. package/dist/generators/index.d.ts.map +1 -1
  33. package/dist/generators/index.js +33 -0
  34. package/dist/generators/index.js.map +1 -1
  35. package/dist/generators/templates/index.d.ts +2 -0
  36. package/dist/generators/templates/index.d.ts.map +1 -1
  37. package/dist/generators/templates/index.js +2 -0
  38. package/dist/generators/templates/index.js.map +1 -1
  39. package/dist/generators/templates/website.d.ts +85 -0
  40. package/dist/generators/templates/website.d.ts.map +1 -0
  41. package/dist/generators/templates/website.js +877 -0
  42. package/dist/generators/templates/website.js.map +1 -0
  43. package/dist/generators/website.d.ts +56 -0
  44. package/dist/generators/website.d.ts.map +1 -0
  45. package/dist/generators/website.js +269 -0
  46. package/dist/generators/website.js.map +1 -0
  47. package/dist/types/consensus.d.ts +8 -3
  48. package/dist/types/consensus.d.ts.map +1 -1
  49. package/dist/types/index.d.ts +2 -2
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/index.js +2 -2
  52. package/dist/types/index.js.map +1 -1
  53. package/dist/types/project.d.ts +115 -1
  54. package/dist/types/project.d.ts.map +1 -1
  55. package/dist/types/project.js +41 -1
  56. package/dist/types/project.js.map +1 -1
  57. package/dist/workflow/consensus.d.ts +2 -1
  58. package/dist/workflow/consensus.d.ts.map +1 -1
  59. package/dist/workflow/consensus.js.map +1 -1
  60. package/dist/workflow/index.d.ts +6 -0
  61. package/dist/workflow/index.d.ts.map +1 -1
  62. package/dist/workflow/index.js +8 -0
  63. package/dist/workflow/index.js.map +1 -1
  64. package/dist/workflow/plan-mode.d.ts +3 -3
  65. package/dist/workflow/plan-mode.d.ts.map +1 -1
  66. package/dist/workflow/plan-mode.js.map +1 -1
  67. package/dist/workflow/plan-parser.d.ts +97 -0
  68. package/dist/workflow/plan-parser.d.ts.map +1 -0
  69. package/dist/workflow/plan-parser.js +235 -0
  70. package/dist/workflow/plan-parser.js.map +1 -0
  71. package/dist/workflow/plan-storage.d.ts +40 -12
  72. package/dist/workflow/plan-storage.d.ts.map +1 -1
  73. package/dist/workflow/plan-storage.js +47 -20
  74. package/dist/workflow/plan-storage.js.map +1 -1
  75. package/dist/workflow/seo-tests.d.ts +43 -0
  76. package/dist/workflow/seo-tests.d.ts.map +1 -0
  77. package/dist/workflow/seo-tests.js +192 -0
  78. package/dist/workflow/seo-tests.js.map +1 -0
  79. package/dist/workflow/separation-guard.d.ts +35 -0
  80. package/dist/workflow/separation-guard.d.ts.map +1 -0
  81. package/dist/workflow/separation-guard.js +154 -0
  82. package/dist/workflow/separation-guard.js.map +1 -0
  83. package/dist/workflow/test-runner.d.ts.map +1 -1
  84. package/dist/workflow/test-runner.js +128 -0
  85. package/dist/workflow/test-runner.js.map +1 -1
  86. package/dist/workflow/workspace-manager.d.ts +31 -20
  87. package/dist/workflow/workspace-manager.d.ts.map +1 -1
  88. package/dist/workflow/workspace-manager.js +38 -9
  89. package/dist/workflow/workspace-manager.js.map +1 -1
  90. package/package.json +1 -1
  91. package/src/adapters/claude.ts +221 -4
  92. package/src/adapters/grok.ts +2 -1
  93. package/src/adapters/index.ts +15 -0
  94. package/src/adapters/openai.ts +2 -2
  95. package/src/cli/commands/create.ts +25 -5
  96. package/src/cli/interactive.ts +47 -6
  97. package/src/generators/all.ts +897 -0
  98. package/src/generators/fullstack.ts +10 -0
  99. package/src/generators/index.ts +54 -0
  100. package/src/generators/templates/index.ts +2 -0
  101. package/src/generators/templates/website.ts +906 -0
  102. package/src/generators/website.ts +350 -0
  103. package/src/types/consensus.ts +9 -3
  104. package/src/types/index.ts +33 -0
  105. package/src/types/project.ts +139 -2
  106. package/src/workflow/consensus.ts +3 -2
  107. package/src/workflow/index.ts +8 -0
  108. package/src/workflow/plan-mode.ts +3 -3
  109. package/src/workflow/plan-parser.ts +317 -0
  110. package/src/workflow/plan-storage.ts +69 -30
  111. package/src/workflow/seo-tests.ts +246 -0
  112. package/src/workflow/separation-guard.ts +200 -0
  113. package/src/workflow/test-runner.ts +149 -0
  114. package/src/workflow/workspace-manager.ts +68 -31
@@ -35,6 +35,16 @@ import {
35
35
  generateFastAPIRequirements,
36
36
  } from './templates/fullstack.js';
37
37
 
38
+ /**
39
+ * Options for fullstack project generation
40
+ */
41
+ export interface FullstackGeneratorOptions {
42
+ skipBackend?: boolean;
43
+ skipFrontend?: boolean;
44
+ strictMode?: boolean;
45
+ includeExamples?: boolean;
46
+ }
47
+
38
48
  /**
39
49
  * Create a directory if it doesn't exist
40
50
  */
@@ -22,6 +22,16 @@ import {
22
22
  validateFullstackProject,
23
23
  getFullstackProjectFiles,
24
24
  } from './fullstack.js';
25
+ import {
26
+ generateWebsiteProject,
27
+ validateWebsiteProject,
28
+ getWebsiteProjectFiles,
29
+ } from './website.js';
30
+ import {
31
+ generateAllProject,
32
+ validateAllProject,
33
+ getAllProjectFiles,
34
+ } from './all.js';
25
35
 
26
36
  // Re-export (explicitly to avoid name conflicts)
27
37
  export {
@@ -45,7 +55,20 @@ export {
45
55
  generateFullstackProject,
46
56
  validateFullstackProject,
47
57
  getFullstackProjectFiles,
58
+ type FullstackGeneratorOptions,
48
59
  } from './fullstack.js';
60
+ export {
61
+ generateWebsiteProject,
62
+ validateWebsiteProject,
63
+ getWebsiteProjectFiles,
64
+ type WebsiteGeneratorOptions,
65
+ } from './website.js';
66
+ export {
67
+ generateAllProject,
68
+ validateAllProject,
69
+ getAllProjectFiles,
70
+ type AllGeneratorOptions,
71
+ } from './all.js';
49
72
  export * from './templates/index.js';
50
73
 
51
74
  /**
@@ -66,6 +89,10 @@ export async function generateProject(
66
89
  return generateTypeScriptProject(spec, outputDir);
67
90
  case 'fullstack':
68
91
  return generateFullstackProject(spec, outputDir);
92
+ case 'website':
93
+ return generateWebsiteProject(spec, outputDir);
94
+ case 'all':
95
+ return generateAllProject(spec, outputDir);
69
96
  default:
70
97
  return {
71
98
  success: false,
@@ -97,6 +124,10 @@ export async function validateProject(
97
124
  return validateTypeScriptProject(projectDir);
98
125
  case 'fullstack':
99
126
  return validateFullstackProject(projectDir);
127
+ case 'website':
128
+ return validateWebsiteProject(projectDir);
129
+ case 'all':
130
+ return validateAllProject(projectDir);
100
131
  default:
101
132
  return {
102
133
  valid: false,
@@ -122,7 +153,14 @@ export async function addModule(
122
153
  case 'python':
123
154
  return addPythonModule(projectDir, moduleName);
124
155
  case 'typescript':
156
+ case 'website':
125
157
  return addTypeScriptModule(projectDir, moduleName);
158
+ case 'fullstack':
159
+ case 'all':
160
+ // For workspace projects, determine which app to add to
161
+ throw new Error(
162
+ 'Use addModule with specific app path for workspace projects: apps/frontend or apps/backend'
163
+ );
126
164
  default:
127
165
  throw new Error(`Unsupported language: ${language}`);
128
166
  }
@@ -143,6 +181,10 @@ export function getProjectFiles(projectName: string, language: OutputLanguage):
143
181
  return getTypeScriptProjectFiles(projectName);
144
182
  case 'fullstack':
145
183
  return getFullstackProjectFiles(projectName);
184
+ case 'website':
185
+ return getWebsiteProjectFiles(projectName);
186
+ case 'all':
187
+ return getAllProjectFiles(projectName);
146
188
  default:
147
189
  return [];
148
190
  }
@@ -162,6 +204,10 @@ export function getTestCommand(language: OutputLanguage): string {
162
204
  return 'npm test';
163
205
  case 'fullstack':
164
206
  return 'cd apps/backend && pytest && cd ../frontend && npm test';
207
+ case 'website':
208
+ return 'npm test';
209
+ case 'all':
210
+ return 'npm run test:all';
165
211
  default:
166
212
  return 'echo "No test command configured"';
167
213
  }
@@ -181,6 +227,10 @@ export function getBuildCommand(language: OutputLanguage): string {
181
227
  return 'npm run build';
182
228
  case 'fullstack':
183
229
  return 'cd apps/backend && pip install -e . && cd ../frontend && npm run build';
230
+ case 'website':
231
+ return 'npm run build';
232
+ case 'all':
233
+ return 'npm run build';
184
234
  default:
185
235
  return 'echo "No build command configured"';
186
236
  }
@@ -200,6 +250,10 @@ export function getLintCommand(language: OutputLanguage): string {
200
250
  return 'npm run lint';
201
251
  case 'fullstack':
202
252
  return 'cd apps/backend && ruff check . && cd ../frontend && npm run lint';
253
+ case 'website':
254
+ return 'npm run lint';
255
+ case 'all':
256
+ return 'npm run lint:all';
203
257
  default:
204
258
  return 'echo "No lint command configured"';
205
259
  }
@@ -4,3 +4,5 @@
4
4
 
5
5
  export * as pythonTemplates from './python.js';
6
6
  export * as typescriptTemplates from './typescript.js';
7
+ export * as fullstackTemplates from './fullstack.js';
8
+ export * as websiteTemplates from './website.js';