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
|
@@ -31,6 +31,24 @@ export interface GenerationResult {
|
|
|
31
31
|
error?: string;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* TypeScript generator options for workspace/monorepo support
|
|
36
|
+
*/
|
|
37
|
+
export interface TypeScriptGeneratorOptions {
|
|
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
|
+
/** Generate frontend project (React + Vite + Tailwind) instead of Node.js */
|
|
49
|
+
frontend?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
34
52
|
/**
|
|
35
53
|
* Create a directory if it doesn't exist
|
|
36
54
|
*/
|
|
@@ -50,14 +68,28 @@ async function writeFile(filePath: string, content: string): Promise<void> {
|
|
|
50
68
|
*
|
|
51
69
|
* @param spec - Project specification
|
|
52
70
|
* @param outputDir - Output directory
|
|
71
|
+
* @param options - Generator options for workspace/monorepo support
|
|
53
72
|
* @returns Generation result
|
|
54
73
|
*/
|
|
55
74
|
export async function generateTypeScriptProject(
|
|
56
75
|
spec: ProjectSpec,
|
|
57
|
-
outputDir: string
|
|
76
|
+
outputDir: string,
|
|
77
|
+
options: TypeScriptGeneratorOptions = {}
|
|
58
78
|
): Promise<GenerationResult> {
|
|
79
|
+
const {
|
|
80
|
+
baseDir,
|
|
81
|
+
packageName: customPackageName,
|
|
82
|
+
workspaceMode = false,
|
|
83
|
+
skipDocker = false,
|
|
84
|
+
skipReadme = false,
|
|
85
|
+
// frontend option reserved for future frontend-specific generation
|
|
86
|
+
} = options;
|
|
87
|
+
|
|
59
88
|
const projectName = spec.name || 'my-project';
|
|
60
|
-
const
|
|
89
|
+
const packageJsonName = customPackageName || projectName;
|
|
90
|
+
|
|
91
|
+
// In workspace mode with baseDir, use it directly; otherwise create subdirectory
|
|
92
|
+
const projectDir = baseDir || path.join(outputDir, projectName);
|
|
61
93
|
const filesCreated: string[] = [];
|
|
62
94
|
|
|
63
95
|
try {
|
|
@@ -65,14 +97,19 @@ export async function generateTypeScriptProject(
|
|
|
65
97
|
await ensureDir(projectDir);
|
|
66
98
|
await ensureDir(path.join(projectDir, 'src'));
|
|
67
99
|
await ensureDir(path.join(projectDir, 'tests'));
|
|
68
|
-
|
|
100
|
+
|
|
101
|
+
// Only create data/docs dirs in standalone mode
|
|
102
|
+
if (!workspaceMode) {
|
|
103
|
+
await ensureDir(path.join(projectDir, 'data'));
|
|
104
|
+
await ensureDir(path.join(projectDir, 'docs'));
|
|
105
|
+
}
|
|
69
106
|
|
|
70
107
|
// Generate and write files
|
|
71
108
|
const files: Array<{ path: string; content: string }> = [
|
|
72
109
|
// Root files
|
|
73
110
|
{
|
|
74
111
|
path: path.join(projectDir, 'package.json'),
|
|
75
|
-
content: generatePackageJson(
|
|
112
|
+
content: generatePackageJson(packageJsonName, spec.idea),
|
|
76
113
|
},
|
|
77
114
|
{
|
|
78
115
|
path: path.join(projectDir, 'tsconfig.json'),
|
|
@@ -98,18 +135,6 @@ export async function generateTypeScriptProject(
|
|
|
98
135
|
path: path.join(projectDir, '.env.example'),
|
|
99
136
|
content: generateEnvExample(),
|
|
100
137
|
},
|
|
101
|
-
{
|
|
102
|
-
path: path.join(projectDir, 'README.md'),
|
|
103
|
-
content: generateReadme(projectName, spec.idea),
|
|
104
|
-
},
|
|
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
138
|
|
|
114
139
|
// Source files
|
|
115
140
|
{
|
|
@@ -122,13 +147,37 @@ export async function generateTypeScriptProject(
|
|
|
122
147
|
path: path.join(projectDir, 'tests', 'index.test.ts'),
|
|
123
148
|
content: generateTestFile(projectName),
|
|
124
149
|
},
|
|
150
|
+
];
|
|
125
151
|
|
|
126
|
-
|
|
127
|
-
|
|
152
|
+
// Add README if not skipped
|
|
153
|
+
if (!skipReadme) {
|
|
154
|
+
files.push({
|
|
155
|
+
path: path.join(projectDir, 'README.md'),
|
|
156
|
+
content: generateReadme(projectName, spec.idea),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Add Docker files if not skipped
|
|
161
|
+
if (!skipDocker) {
|
|
162
|
+
files.push(
|
|
163
|
+
{
|
|
164
|
+
path: path.join(projectDir, 'Dockerfile'),
|
|
165
|
+
content: generateDockerfile(projectName),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
path: path.join(projectDir, 'docker-compose.yml'),
|
|
169
|
+
content: generateDockerCompose(projectName),
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Add data placeholder in standalone mode
|
|
175
|
+
if (!workspaceMode) {
|
|
176
|
+
files.push({
|
|
128
177
|
path: path.join(projectDir, 'data', '.gitkeep'),
|
|
129
178
|
content: '',
|
|
130
|
-
}
|
|
131
|
-
|
|
179
|
+
});
|
|
180
|
+
}
|
|
132
181
|
|
|
133
182
|
// Write all files
|
|
134
183
|
for (const file of files) {
|