popeye-cli 1.0.1 → 1.2.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/.env.example +24 -1
- package/CONTRIBUTING.md +275 -0
- package/OPEN_SOURCE_MANIFESTO.md +172 -0
- package/README.md +832 -123
- package/dist/adapters/claude.d.ts +19 -4
- package/dist/adapters/claude.d.ts.map +1 -1
- package/dist/adapters/claude.js +908 -42
- 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/grok.d.ts +73 -0
- package/dist/adapters/grok.d.ts.map +1 -0
- package/dist/adapters/grok.js +430 -0
- package/dist/adapters/grok.js.map +1 -0
- package/dist/adapters/openai.d.ts +1 -1
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +47 -8
- 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/grok.d.ts +73 -0
- package/dist/auth/grok.d.ts.map +1 -0
- package/dist/auth/grok.js +211 -0
- package/dist/auth/grok.js.map +1 -0
- package/dist/auth/index.d.ts +14 -7
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +41 -6
- 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/commands/auth.d.ts +1 -1
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +79 -8
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +15 -4
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +1494 -114
- package/dist/cli/interactive.js.map +1 -1
- package/dist/config/defaults.d.ts +9 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +19 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +19 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +33 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +47 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +29 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/generators/fullstack.d.ts +32 -0
- package/dist/generators/fullstack.d.ts.map +1 -0
- package/dist/generators/fullstack.js +497 -0
- package/dist/generators/fullstack.js.map +1 -0
- package/dist/generators/index.d.ts +4 -3
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +15 -1
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/python.d.ts +17 -1
- package/dist/generators/python.d.ts.map +1 -1
- package/dist/generators/python.js +34 -20
- package/dist/generators/python.js.map +1 -1
- package/dist/generators/templates/fullstack.d.ts +113 -0
- package/dist/generators/templates/fullstack.d.ts.map +1 -0
- package/dist/generators/templates/fullstack.js +1004 -0
- package/dist/generators/templates/fullstack.js.map +1 -0
- package/dist/generators/typescript.d.ts +19 -1
- package/dist/generators/typescript.d.ts.map +1 -1
- package/dist/generators/typescript.js +37 -20
- 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 +8 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/cli.js.map +1 -1
- package/dist/types/consensus.d.ts +186 -4
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js +35 -3
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/project.d.ts +76 -0
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js +1 -1
- package/dist/types/project.js.map +1 -1
- package/dist/types/workflow.d.ts +217 -16
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +40 -1
- 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 +70 -2
- package/dist/workflow/consensus.d.ts.map +1 -1
- package/dist/workflow/consensus.js +872 -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 +80 -3
- package/dist/workflow/plan-mode.d.ts.map +1 -1
- package/dist/workflow/plan-mode.js +767 -49
- package/dist/workflow/plan-mode.js.map +1 -1
- package/dist/workflow/plan-storage.d.ts +386 -0
- package/dist/workflow/plan-storage.d.ts.map +1 -0
- package/dist/workflow/plan-storage.js +878 -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 +386 -0
- package/dist/workflow/task-workflow.js.map +1 -0
- package/dist/workflow/test-runner.d.ts +9 -0
- package/dist/workflow/test-runner.d.ts.map +1 -1
- package/dist/workflow/test-runner.js +101 -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/dist/workflow/workspace-manager.d.ts +342 -0
- package/dist/workflow/workspace-manager.d.ts.map +1 -0
- package/dist/workflow/workspace-manager.js +733 -0
- package/dist/workflow/workspace-manager.js.map +1 -0
- package/package.json +2 -2
- package/src/adapters/claude.ts +1067 -47
- package/src/adapters/gemini.ts +373 -0
- package/src/adapters/grok.ts +492 -0
- package/src/adapters/openai.ts +48 -9
- package/src/auth/claude.ts +120 -78
- package/src/auth/gemini.ts +207 -0
- package/src/auth/grok.ts +255 -0
- package/src/auth/index.ts +47 -9
- package/src/auth/keychain.ts +95 -28
- package/src/auth/openai.ts +29 -36
- package/src/cli/commands/auth.ts +89 -10
- package/src/cli/commands/create.ts +13 -4
- package/src/cli/interactive.ts +1774 -142
- package/src/config/defaults.ts +19 -2
- package/src/config/index.ts +36 -1
- package/src/config/schema.ts +30 -1
- package/src/generators/fullstack.ts +551 -0
- package/src/generators/index.ts +25 -1
- package/src/generators/python.ts +65 -20
- package/src/generators/templates/fullstack.ts +1047 -0
- package/src/generators/typescript.ts +69 -20
- package/src/state/index.ts +713 -4
- package/src/state/registry.ts +278 -0
- package/src/types/cli.ts +8 -0
- package/src/types/consensus.ts +197 -6
- package/src/types/project.ts +82 -1
- package/src/types/workflow.ts +90 -1
- package/src/workflow/auto-fix.ts +340 -0
- package/src/workflow/consensus.ts +1180 -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 +924 -50
- package/src/workflow/plan-storage.ts +1282 -0
- package/src/workflow/project-verification.ts +471 -0
- package/src/workflow/task-workflow.ts +528 -0
- package/src/workflow/test-runner.ts +120 -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/src/workflow/workspace-manager.ts +912 -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
package/src/generators/python.ts
CHANGED
|
@@ -31,6 +31,22 @@ export interface GenerationResult {
|
|
|
31
31
|
error?: string;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Python generator options for workspace/monorepo support
|
|
36
|
+
*/
|
|
37
|
+
export interface PythonGeneratorOptions {
|
|
38
|
+
/** Base directory for project (defaults to outputDir/projectName) */
|
|
39
|
+
baseDir?: string;
|
|
40
|
+
/** Override auto-derived package name */
|
|
41
|
+
packageName?: string;
|
|
42
|
+
/** Adjust paths for monorepo structure */
|
|
43
|
+
workspaceMode?: boolean;
|
|
44
|
+
/** Skip Docker files (fullstack uses root docker-compose) */
|
|
45
|
+
skipDocker?: boolean;
|
|
46
|
+
/** Skip README (fullstack has root README) */
|
|
47
|
+
skipReadme?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
34
50
|
/**
|
|
35
51
|
* Create a directory if it doesn't exist
|
|
36
52
|
*/
|
|
@@ -57,15 +73,27 @@ function toPythonPackageName(name: string): string {
|
|
|
57
73
|
*
|
|
58
74
|
* @param spec - Project specification
|
|
59
75
|
* @param outputDir - Output directory
|
|
76
|
+
* @param options - Generator options for workspace/monorepo support
|
|
60
77
|
* @returns Generation result
|
|
61
78
|
*/
|
|
62
79
|
export async function generatePythonProject(
|
|
63
80
|
spec: ProjectSpec,
|
|
64
|
-
outputDir: string
|
|
81
|
+
outputDir: string,
|
|
82
|
+
options: PythonGeneratorOptions = {}
|
|
65
83
|
): Promise<GenerationResult> {
|
|
84
|
+
const {
|
|
85
|
+
baseDir,
|
|
86
|
+
packageName: customPackageName,
|
|
87
|
+
workspaceMode = false,
|
|
88
|
+
skipDocker = false,
|
|
89
|
+
skipReadme = false,
|
|
90
|
+
} = options;
|
|
91
|
+
|
|
66
92
|
const projectName = spec.name || 'my-project';
|
|
67
|
-
const packageName = toPythonPackageName(projectName);
|
|
68
|
-
|
|
93
|
+
const packageName = customPackageName || toPythonPackageName(projectName);
|
|
94
|
+
|
|
95
|
+
// In workspace mode with baseDir, use it directly; otherwise create subdirectory
|
|
96
|
+
const projectDir = baseDir || path.join(outputDir, projectName);
|
|
69
97
|
const filesCreated: string[] = [];
|
|
70
98
|
|
|
71
99
|
try {
|
|
@@ -73,7 +101,12 @@ export async function generatePythonProject(
|
|
|
73
101
|
await ensureDir(projectDir);
|
|
74
102
|
await ensureDir(path.join(projectDir, 'src', packageName));
|
|
75
103
|
await ensureDir(path.join(projectDir, 'tests'));
|
|
76
|
-
|
|
104
|
+
|
|
105
|
+
// Only create data/docs dirs in standalone mode
|
|
106
|
+
if (!workspaceMode) {
|
|
107
|
+
await ensureDir(path.join(projectDir, 'data'));
|
|
108
|
+
await ensureDir(path.join(projectDir, 'docs'));
|
|
109
|
+
}
|
|
77
110
|
|
|
78
111
|
// Generate and write files
|
|
79
112
|
const files: Array<{ path: string; content: string }> = [
|
|
@@ -94,22 +127,10 @@ export async function generatePythonProject(
|
|
|
94
127
|
path: path.join(projectDir, '.env.example'),
|
|
95
128
|
content: generateEnvExample(),
|
|
96
129
|
},
|
|
97
|
-
{
|
|
98
|
-
path: path.join(projectDir, 'README.md'),
|
|
99
|
-
content: generateReadme(projectName, spec.idea),
|
|
100
|
-
},
|
|
101
130
|
{
|
|
102
131
|
path: path.join(projectDir, 'Makefile'),
|
|
103
132
|
content: generateMakefile(projectName),
|
|
104
133
|
},
|
|
105
|
-
{
|
|
106
|
-
path: path.join(projectDir, 'Dockerfile'),
|
|
107
|
-
content: generateDockerfile(projectName),
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
path: path.join(projectDir, 'docker-compose.yml'),
|
|
111
|
-
content: generateDockerCompose(projectName),
|
|
112
|
-
},
|
|
113
134
|
|
|
114
135
|
// Source files
|
|
115
136
|
{
|
|
@@ -138,13 +159,37 @@ export async function generatePythonProject(
|
|
|
138
159
|
path: path.join(projectDir, 'tests', 'test_main.py'),
|
|
139
160
|
content: generateTestMain(projectName),
|
|
140
161
|
},
|
|
162
|
+
];
|
|
141
163
|
|
|
142
|
-
|
|
143
|
-
|
|
164
|
+
// Add README if not skipped
|
|
165
|
+
if (!skipReadme) {
|
|
166
|
+
files.push({
|
|
167
|
+
path: path.join(projectDir, 'README.md'),
|
|
168
|
+
content: generateReadme(projectName, spec.idea),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Add Docker files if not skipped
|
|
173
|
+
if (!skipDocker) {
|
|
174
|
+
files.push(
|
|
175
|
+
{
|
|
176
|
+
path: path.join(projectDir, 'Dockerfile'),
|
|
177
|
+
content: generateDockerfile(projectName),
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
path: path.join(projectDir, 'docker-compose.yml'),
|
|
181
|
+
content: generateDockerCompose(projectName),
|
|
182
|
+
}
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Add data placeholder in standalone mode
|
|
187
|
+
if (!workspaceMode) {
|
|
188
|
+
files.push({
|
|
144
189
|
path: path.join(projectDir, 'data', '.gitkeep'),
|
|
145
190
|
content: '',
|
|
146
|
-
}
|
|
147
|
-
|
|
191
|
+
});
|
|
192
|
+
}
|
|
148
193
|
|
|
149
194
|
// Write all files
|
|
150
195
|
for (const file of files) {
|