popeye-cli 1.4.7 → 1.5.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 +222 -63
- package/dist/adapters/gemini.d.ts +1 -0
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +9 -4
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/grok.d.ts +1 -0
- package/dist/adapters/grok.d.ts.map +1 -1
- package/dist/adapters/grok.js +9 -4
- package/dist/adapters/grok.js.map +1 -1
- package/dist/adapters/openai.d.ts +1 -1
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +35 -9
- package/dist/adapters/openai.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +42 -0
- package/dist/cli/interactive.js.map +1 -1
- package/dist/generators/all.d.ts +4 -1
- package/dist/generators/all.d.ts.map +1 -1
- package/dist/generators/all.js +2 -1
- package/dist/generators/all.js.map +1 -1
- package/dist/generators/doc-parser.d.ts +49 -0
- package/dist/generators/doc-parser.d.ts.map +1 -0
- package/dist/generators/doc-parser.js +336 -0
- package/dist/generators/doc-parser.js.map +1 -0
- package/dist/generators/templates/index.d.ts +4 -0
- package/dist/generators/templates/index.d.ts.map +1 -1
- package/dist/generators/templates/index.js +4 -0
- package/dist/generators/templates/index.js.map +1 -1
- package/dist/generators/templates/website-components.d.ts +33 -0
- package/dist/generators/templates/website-components.d.ts.map +1 -0
- package/dist/generators/templates/website-components.js +278 -0
- package/dist/generators/templates/website-components.js.map +1 -0
- package/dist/generators/templates/website-config.d.ts +41 -0
- package/dist/generators/templates/website-config.d.ts.map +1 -0
- package/dist/generators/templates/website-config.js +283 -0
- package/dist/generators/templates/website-config.js.map +1 -0
- package/dist/generators/templates/website-conversion.d.ts +27 -0
- package/dist/generators/templates/website-conversion.d.ts.map +1 -0
- package/dist/generators/templates/website-conversion.js +326 -0
- package/dist/generators/templates/website-conversion.js.map +1 -0
- package/dist/generators/templates/website-seo.d.ts +76 -0
- package/dist/generators/templates/website-seo.d.ts.map +1 -0
- package/dist/generators/templates/website-seo.js +326 -0
- package/dist/generators/templates/website-seo.js.map +1 -0
- package/dist/generators/templates/website.d.ts +14 -47
- package/dist/generators/templates/website.d.ts.map +1 -1
- package/dist/generators/templates/website.js +412 -499
- package/dist/generators/templates/website.js.map +1 -1
- package/dist/generators/website-context.d.ts +83 -0
- package/dist/generators/website-context.d.ts.map +1 -0
- package/dist/generators/website-context.js +190 -0
- package/dist/generators/website-context.js.map +1 -0
- package/dist/generators/website.d.ts +3 -0
- package/dist/generators/website.d.ts.map +1 -1
- package/dist/generators/website.js +73 -10
- package/dist/generators/website.js.map +1 -1
- package/dist/state/index.d.ts +27 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +30 -0
- package/dist/state/index.js.map +1 -1
- package/dist/types/consensus.d.ts +3 -0
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js +1 -0
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/website-strategy.d.ts +263 -0
- package/dist/types/website-strategy.d.ts.map +1 -0
- package/dist/types/website-strategy.js +105 -0
- package/dist/types/website-strategy.js.map +1 -0
- package/dist/types/workflow.d.ts +15 -0
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +6 -0
- package/dist/types/workflow.js.map +1 -1
- package/dist/workflow/consensus.d.ts.map +1 -1
- package/dist/workflow/consensus.js +2 -0
- package/dist/workflow/consensus.js.map +1 -1
- package/dist/workflow/execution-mode.d.ts.map +1 -1
- package/dist/workflow/execution-mode.js +18 -0
- package/dist/workflow/execution-mode.js.map +1 -1
- package/dist/workflow/index.d.ts +3 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +25 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/overview.d.ts +89 -0
- package/dist/workflow/overview.d.ts.map +1 -0
- package/dist/workflow/overview.js +354 -0
- package/dist/workflow/overview.js.map +1 -0
- package/dist/workflow/plan-mode.d.ts +2 -1
- package/dist/workflow/plan-mode.d.ts.map +1 -1
- package/dist/workflow/plan-mode.js +83 -5
- package/dist/workflow/plan-mode.js.map +1 -1
- package/dist/workflow/website-strategy.d.ts +70 -0
- package/dist/workflow/website-strategy.d.ts.map +1 -0
- package/dist/workflow/website-strategy.js +238 -0
- package/dist/workflow/website-strategy.js.map +1 -0
- package/dist/workflow/website-updater.d.ts +17 -0
- package/dist/workflow/website-updater.d.ts.map +1 -0
- package/dist/workflow/website-updater.js +105 -0
- package/dist/workflow/website-updater.js.map +1 -0
- package/dist/workflow/workflow-logger.d.ts +1 -1
- package/dist/workflow/workflow-logger.d.ts.map +1 -1
- package/dist/workflow/workflow-logger.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters/gemini.ts +10 -4
- package/src/adapters/grok.ts +10 -4
- package/src/adapters/openai.ts +38 -6
- package/src/cli/interactive.ts +47 -0
- package/src/generators/all.ts +6 -1
- package/src/generators/doc-parser.ts +372 -0
- package/src/generators/templates/index.ts +4 -0
- package/src/generators/templates/website-components.ts +305 -0
- package/src/generators/templates/website-config.ts +291 -0
- package/src/generators/templates/website-conversion.ts +341 -0
- package/src/generators/templates/website-seo.ts +370 -0
- package/src/generators/templates/website.ts +451 -505
- package/src/generators/website-context.ts +265 -0
- package/src/generators/website.ts +109 -19
- package/src/state/index.ts +42 -0
- package/src/types/consensus.ts +3 -0
- package/src/types/website-strategy.ts +243 -0
- package/src/types/workflow.ts +15 -0
- package/src/workflow/consensus.ts +2 -0
- package/src/workflow/execution-mode.ts +21 -0
- package/src/workflow/index.ts +25 -0
- package/src/workflow/overview.ts +469 -0
- package/src/workflow/plan-mode.ts +115 -4
- package/src/workflow/website-strategy.ts +305 -0
- package/src/workflow/website-updater.ts +131 -0
- package/src/workflow/workflow-logger.ts +1 -0
- package/tests/adapters/persona-switching.test.ts +63 -0
- package/tests/generators/website-components.test.ts +159 -0
- package/tests/generators/website-context.test.ts +222 -0
- package/tests/generators/website-seo-quality.test.ts +246 -0
- package/tests/workflow/overview.test.ts +392 -0
- package/tests/workflow/website-strategy.test.ts +191 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Website content updater
|
|
3
|
+
* Refreshes website template content after plan mode succeeds,
|
|
4
|
+
* using the expanded specification and discovered user docs
|
|
5
|
+
*/
|
|
6
|
+
import { promises as fs } from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { isWorkspace } from '../types/project.js';
|
|
9
|
+
import { buildWebsiteContext } from '../generators/website-context.js';
|
|
10
|
+
import { generateWebsiteLandingPage, generateWebsitePricingPage, generateWebsiteLayout, generateWebsiteGlobalsCss, } from '../generators/templates/website.js';
|
|
11
|
+
import { generateWebsiteHeader, generateWebsiteFooter, } from '../generators/templates/website-components.js';
|
|
12
|
+
import { loadWebsiteStrategy } from './website-strategy.js';
|
|
13
|
+
/**
|
|
14
|
+
* Update website content files with project context after plan mode
|
|
15
|
+
*
|
|
16
|
+
* @param projectDir - The project directory
|
|
17
|
+
* @param state - Current project state (with specification, userDocs, brandContext)
|
|
18
|
+
* @param language - Project language type
|
|
19
|
+
* @param onProgress - Optional progress callback
|
|
20
|
+
*/
|
|
21
|
+
export async function updateWebsiteContent(projectDir, state, language, onProgress) {
|
|
22
|
+
// Determine website directory based on project type
|
|
23
|
+
const websiteDir = isWorkspace(language)
|
|
24
|
+
? path.join(projectDir, 'apps', 'website')
|
|
25
|
+
: projectDir;
|
|
26
|
+
// Check if website directory exists
|
|
27
|
+
try {
|
|
28
|
+
await fs.access(websiteDir);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
onProgress?.('Website directory not found, skipping content update');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Build content context from user docs and specification
|
|
35
|
+
const parentDir = path.dirname(projectDir);
|
|
36
|
+
const context = await buildWebsiteContext(parentDir, state.name, state.specification);
|
|
37
|
+
// Apply brand context from state if available
|
|
38
|
+
if (state.brandContext?.primaryColor) {
|
|
39
|
+
context.brand = {
|
|
40
|
+
...context.brand,
|
|
41
|
+
primaryColor: state.brandContext.primaryColor,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (state.brandContext?.logoPath) {
|
|
45
|
+
context.brand = {
|
|
46
|
+
...context.brand,
|
|
47
|
+
logoPath: state.brandContext.logoPath,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Load website strategy if available
|
|
51
|
+
const strategyData = await loadWebsiteStrategy(projectDir);
|
|
52
|
+
if (strategyData) {
|
|
53
|
+
context.strategy = strategyData.strategy;
|
|
54
|
+
onProgress?.('Loaded website strategy for content update');
|
|
55
|
+
}
|
|
56
|
+
onProgress?.('Updating website content with project context...');
|
|
57
|
+
// Re-generate content files
|
|
58
|
+
const updates = [
|
|
59
|
+
{
|
|
60
|
+
path: path.join(websiteDir, 'src', 'app', 'page.tsx'),
|
|
61
|
+
content: generateWebsiteLandingPage(state.name, context),
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
path: path.join(websiteDir, 'src', 'app', 'pricing', 'page.tsx'),
|
|
65
|
+
content: generateWebsitePricingPage(state.name, context),
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
path: path.join(websiteDir, 'src', 'app', 'layout.tsx'),
|
|
69
|
+
content: generateWebsiteLayout(state.name, context),
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
path: path.join(websiteDir, 'src', 'app', 'globals.css'),
|
|
73
|
+
content: generateWebsiteGlobalsCss(context),
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
path: path.join(websiteDir, 'src', 'components', 'Header.tsx'),
|
|
77
|
+
content: generateWebsiteHeader(state.name, context, context.strategy),
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
path: path.join(websiteDir, 'src', 'components', 'Footer.tsx'),
|
|
81
|
+
content: generateWebsiteFooter(state.name, context, context.strategy),
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
for (const update of updates) {
|
|
85
|
+
try {
|
|
86
|
+
await fs.writeFile(update.path, update.content, 'utf-8');
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Non-blocking: individual file update failures should not stop the workflow
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Copy logo to public/ if brand context has one
|
|
93
|
+
if (context.brand?.logoPath) {
|
|
94
|
+
try {
|
|
95
|
+
const logoExt = path.extname(context.brand.logoPath);
|
|
96
|
+
const destPath = path.join(websiteDir, 'public', `logo${logoExt}`);
|
|
97
|
+
await fs.copyFile(context.brand.logoPath, destPath);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Non-blocking
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onProgress?.('Website content updated with project context');
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=website-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"website-updater.js","sourceRoot":"","sources":["../../src/workflow/website-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export type LogLevel = 'info' | 'warn' | 'error' | 'success' | 'debug';
|
|
|
20
20
|
/**
|
|
21
21
|
* Workflow stages for categorization
|
|
22
22
|
*/
|
|
23
|
-
export type WorkflowStage = 'init' | 'plan-generation' | 'plan-parsing' | 'consensus' | 'arbitration' | 'execution' | 'task' | 'milestone' | 'testing' | 'verification' | 'ui-design' | 'ui-setup' | 'completion';
|
|
23
|
+
export type WorkflowStage = 'init' | 'plan-generation' | 'plan-parsing' | 'consensus' | 'arbitration' | 'execution' | 'task' | 'milestone' | 'testing' | 'verification' | 'ui-design' | 'ui-setup' | 'website-strategy' | 'completion';
|
|
24
24
|
/**
|
|
25
25
|
* Workflow logger class that persists logs to the project's docs folder
|
|
26
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-logger.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-logger.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-logger.js","sourceRoot":"","sources":["../../src/workflow/workflow-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-logger.js","sourceRoot":"","sources":["../../src/workflow/workflow-logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/adapters/gemini.ts
CHANGED
|
@@ -45,18 +45,19 @@ export async function createClient(): Promise<GoogleGenerativeAI> {
|
|
|
45
45
|
export async function requestConsensus(
|
|
46
46
|
plan: string,
|
|
47
47
|
context: string,
|
|
48
|
-
config: { model?: GeminiModel; temperature?: number; maxTokens?: number } = {}
|
|
48
|
+
config: { model?: GeminiModel; temperature?: number; maxTokens?: number; reviewerPersona?: string } = {}
|
|
49
49
|
): Promise<ConsensusResult> {
|
|
50
50
|
const {
|
|
51
51
|
model = DEFAULT_GEMINI_CONFIG.model,
|
|
52
52
|
temperature = DEFAULT_GEMINI_CONFIG.temperature,
|
|
53
53
|
maxTokens = DEFAULT_GEMINI_CONFIG.maxTokens,
|
|
54
|
+
reviewerPersona,
|
|
54
55
|
} = config;
|
|
55
56
|
|
|
56
57
|
const client = await createClient();
|
|
57
58
|
const generativeModel = client.getGenerativeModel({ model });
|
|
58
59
|
|
|
59
|
-
const prompt = buildConsensusPrompt(plan, context);
|
|
60
|
+
const prompt = buildConsensusPrompt(plan, context, reviewerPersona);
|
|
60
61
|
|
|
61
62
|
try {
|
|
62
63
|
const result = await generativeModel.generateContent({
|
|
@@ -116,9 +117,14 @@ export async function requestArbitration(
|
|
|
116
117
|
|
|
117
118
|
/**
|
|
118
119
|
* Build the consensus review prompt
|
|
120
|
+
*
|
|
121
|
+
* @param plan - The plan to review
|
|
122
|
+
* @param context - Project context
|
|
123
|
+
* @param persona - Optional custom reviewer persona
|
|
119
124
|
*/
|
|
120
|
-
function buildConsensusPrompt(plan: string, context: string): string {
|
|
121
|
-
|
|
125
|
+
function buildConsensusPrompt(plan: string, context: string, persona?: string): string {
|
|
126
|
+
const reviewerRole = persona || 'a senior software architect';
|
|
127
|
+
return `You are ${reviewerRole} reviewing a development plan.
|
|
122
128
|
Analyze the following plan for completeness, correctness, and feasibility.
|
|
123
129
|
|
|
124
130
|
PROJECT CONTEXT:
|
package/src/adapters/grok.ts
CHANGED
|
@@ -47,16 +47,17 @@ export async function createClient(): Promise<OpenAI> {
|
|
|
47
47
|
export async function requestConsensus(
|
|
48
48
|
plan: string,
|
|
49
49
|
context: string,
|
|
50
|
-
config: { model?: string; temperature?: number; maxTokens?: number } = {}
|
|
50
|
+
config: { model?: string; temperature?: number; maxTokens?: number; reviewerPersona?: string } = {}
|
|
51
51
|
): Promise<ConsensusResult> {
|
|
52
52
|
const {
|
|
53
53
|
model = DEFAULT_GROK_CONFIG.model,
|
|
54
54
|
temperature = DEFAULT_GROK_CONFIG.temperature,
|
|
55
55
|
maxTokens = DEFAULT_GROK_CONFIG.maxTokens,
|
|
56
|
+
reviewerPersona,
|
|
56
57
|
} = config;
|
|
57
58
|
|
|
58
59
|
const client = await createClient();
|
|
59
|
-
const prompt = buildConsensusPrompt(plan, context);
|
|
60
|
+
const prompt = buildConsensusPrompt(plan, context, reviewerPersona);
|
|
60
61
|
|
|
61
62
|
try {
|
|
62
63
|
const completion = await client.chat.completions.create({
|
|
@@ -116,9 +117,14 @@ export async function requestArbitration(
|
|
|
116
117
|
|
|
117
118
|
/**
|
|
118
119
|
* Build the consensus review prompt
|
|
120
|
+
*
|
|
121
|
+
* @param plan - The plan to review
|
|
122
|
+
* @param context - Project context
|
|
123
|
+
* @param persona - Optional custom reviewer persona
|
|
119
124
|
*/
|
|
120
|
-
function buildConsensusPrompt(plan: string, context: string): string {
|
|
121
|
-
|
|
125
|
+
function buildConsensusPrompt(plan: string, context: string, persona?: string): string {
|
|
126
|
+
const reviewerRole = persona || 'a senior software architect';
|
|
127
|
+
return `You are ${reviewerRole} reviewing a development plan.
|
|
122
128
|
Analyze the following plan for completeness, correctness, and feasibility.
|
|
123
129
|
|
|
124
130
|
PROJECT CONTEXT:
|
package/src/adapters/openai.ts
CHANGED
|
@@ -43,7 +43,7 @@ export async function requestConsensus(
|
|
|
43
43
|
const client = await createClient();
|
|
44
44
|
|
|
45
45
|
// Build the consensus review prompt (matches spec section 11.1)
|
|
46
|
-
const prompt = buildConsensusPrompt(plan, context);
|
|
46
|
+
const prompt = buildConsensusPrompt(plan, context, config.reviewerPersona);
|
|
47
47
|
|
|
48
48
|
try {
|
|
49
49
|
const completion = await client.chat.completions.create({
|
|
@@ -68,9 +68,14 @@ export async function requestConsensus(
|
|
|
68
68
|
/**
|
|
69
69
|
* Build the consensus review prompt
|
|
70
70
|
* Follows spec section 11.1 format
|
|
71
|
+
*
|
|
72
|
+
* @param plan - The plan to review
|
|
73
|
+
* @param context - Project context
|
|
74
|
+
* @param persona - Optional custom reviewer persona (defaults to senior software architect)
|
|
71
75
|
*/
|
|
72
|
-
function buildConsensusPrompt(plan: string, context: string): string {
|
|
73
|
-
|
|
76
|
+
function buildConsensusPrompt(plan: string, context: string, persona?: string): string {
|
|
77
|
+
const reviewerRole = persona || 'a senior software architect';
|
|
78
|
+
return `You are ${reviewerRole} reviewing a development plan.
|
|
74
79
|
Analyze the following plan for completeness, correctness, and feasibility.
|
|
75
80
|
|
|
76
81
|
PROJECT CONTEXT:
|
|
@@ -256,17 +261,28 @@ export async function listAvailableModels(): Promise<string[]> {
|
|
|
256
261
|
*/
|
|
257
262
|
export async function expandIdea(
|
|
258
263
|
idea: string,
|
|
259
|
-
language: OutputLanguage
|
|
264
|
+
language: OutputLanguage,
|
|
265
|
+
userDocs?: string
|
|
260
266
|
): Promise<string> {
|
|
261
267
|
const client = await createClient();
|
|
262
268
|
|
|
269
|
+
const isWebsiteProject = language === 'website' || language === 'all';
|
|
270
|
+
|
|
263
271
|
const languageDesc = language === 'fullstack'
|
|
264
272
|
? 'React (TypeScript) frontend with FastAPI (Python) backend'
|
|
273
|
+
: language === 'website'
|
|
274
|
+
? 'Next.js (TypeScript) marketing website'
|
|
275
|
+
: language === 'all'
|
|
276
|
+
? 'React frontend + FastAPI backend + Next.js marketing website'
|
|
265
277
|
: language === 'python'
|
|
266
278
|
? 'Python'
|
|
267
279
|
: 'TypeScript';
|
|
268
280
|
|
|
269
|
-
const
|
|
281
|
+
const personaRole = isWebsiteProject
|
|
282
|
+
? 'a Senior Product Marketing Strategist and Fullstack Web Architect'
|
|
283
|
+
: 'a senior software architect';
|
|
284
|
+
|
|
285
|
+
let prompt = `You are ${personaRole}. A user wants to build a project with the following idea:
|
|
270
286
|
|
|
271
287
|
"${idea}"
|
|
272
288
|
|
|
@@ -285,10 +301,26 @@ Expand this into a complete software specification including:
|
|
|
285
301
|
5. **API Specification** (if applicable): Key endpoints and their purposes
|
|
286
302
|
6. **Data Models**: Key entities and their relationships
|
|
287
303
|
7. **Non-Functional Requirements**: Performance, security, scalability considerations
|
|
288
|
-
8. **Deployment**: Docker configuration and deployment approach
|
|
304
|
+
8. **Deployment**: Docker configuration and deployment approach`;
|
|
305
|
+
|
|
306
|
+
// Add website-specific sections for website projects
|
|
307
|
+
if (isWebsiteProject) {
|
|
308
|
+
prompt += `
|
|
309
|
+
9. **Ideal Customer Profile (ICP)**: Primary persona, pain points, goals, objections
|
|
310
|
+
10. **SEO Strategy**: Primary keywords, long-tail keywords, content themes
|
|
311
|
+
11. **Conversion Funnel**: Primary CTA, secondary CTA, trust signals, lead capture mechanism
|
|
312
|
+
12. **Site Map**: All pages with their purpose and conversion goal
|
|
313
|
+
13. **Competitive Positioning**: Category, key differentiators vs alternatives`;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
prompt += `
|
|
289
317
|
|
|
290
318
|
Be specific and actionable. The specification should be detailed enough that a developer could implement it without further clarification.`;
|
|
291
319
|
|
|
320
|
+
if (userDocs) {
|
|
321
|
+
prompt += `\n\nThe user has provided the following project documentation that describes their product:\n\n${userDocs.slice(0, 4000)}\n\nUse this documentation to create an accurate, detailed specification that reflects the actual product described. Do not invent features or pricing not mentioned in the docs.`;
|
|
322
|
+
}
|
|
323
|
+
|
|
292
324
|
const completion = await client.chat.completions.create({
|
|
293
325
|
model: 'gpt-4o',
|
|
294
326
|
messages: [{ role: 'user', content: prompt }],
|
package/src/cli/interactive.ts
CHANGED
|
@@ -843,6 +843,7 @@ function showHelp(): void {
|
|
|
843
843
|
['/upgrade [target]', 'Upgrade project type (e.g., fullstack -> all)'],
|
|
844
844
|
['/new <idea>', 'Force start a new project (skips existing check)'],
|
|
845
845
|
['/resume', 'Resume interrupted project'],
|
|
846
|
+
['/overview [fix]', 'Project review with analysis; fix to auto-discover docs'],
|
|
846
847
|
['/clear', 'Clear screen'],
|
|
847
848
|
['/exit', 'Exit Popeye'],
|
|
848
849
|
];
|
|
@@ -997,6 +998,10 @@ async function handleInput(input: string, state: SessionState): Promise<boolean>
|
|
|
997
998
|
await handleUpgrade(state, args);
|
|
998
999
|
break;
|
|
999
1000
|
|
|
1001
|
+
case '/overview':
|
|
1002
|
+
await handleOverview(state, args);
|
|
1003
|
+
break;
|
|
1004
|
+
|
|
1000
1005
|
case '/new':
|
|
1001
1006
|
// Force start a new project even if existing projects found
|
|
1002
1007
|
if (args.length === 0) {
|
|
@@ -1050,6 +1055,48 @@ async function handleStatus(state: SessionState): Promise<void> {
|
|
|
1050
1055
|
console.log(summary);
|
|
1051
1056
|
}
|
|
1052
1057
|
|
|
1058
|
+
/**
|
|
1059
|
+
* Handle /overview command - full project plan and milestone review
|
|
1060
|
+
*/
|
|
1061
|
+
async function handleOverview(state: SessionState, args: string[] = []): Promise<void> {
|
|
1062
|
+
if (!state.projectDir) {
|
|
1063
|
+
printInfo('No active project. Start or resume a project first.');
|
|
1064
|
+
return;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
const subcommand = args[0]?.toLowerCase();
|
|
1068
|
+
|
|
1069
|
+
try {
|
|
1070
|
+
if (subcommand === 'fix') {
|
|
1071
|
+
// Run fix mode: re-discover docs, find brand assets, update website content
|
|
1072
|
+
const { fixOverviewIssues, generateOverview, formatOverview } = await import('../workflow/overview.js');
|
|
1073
|
+
|
|
1074
|
+
printInfo('Running overview fix...');
|
|
1075
|
+
const fixResult = await fixOverviewIssues(state.projectDir, (msg) => {
|
|
1076
|
+
printInfo(msg);
|
|
1077
|
+
});
|
|
1078
|
+
|
|
1079
|
+
// Show fix results
|
|
1080
|
+
console.log('');
|
|
1081
|
+
for (const msg of fixResult.messages) {
|
|
1082
|
+
printInfo(msg);
|
|
1083
|
+
}
|
|
1084
|
+
console.log('');
|
|
1085
|
+
|
|
1086
|
+
// Show updated overview after fix
|
|
1087
|
+
const overview = await generateOverview(state.projectDir);
|
|
1088
|
+
console.log(formatOverview(overview));
|
|
1089
|
+
} else {
|
|
1090
|
+
// Display-only mode: show overview with analysis
|
|
1091
|
+
const { generateOverview, formatOverview } = await import('../workflow/overview.js');
|
|
1092
|
+
const overview = await generateOverview(state.projectDir);
|
|
1093
|
+
console.log(formatOverview(overview));
|
|
1094
|
+
}
|
|
1095
|
+
} catch (error) {
|
|
1096
|
+
printInfo(`Could not generate overview: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1053
1100
|
/**
|
|
1054
1101
|
* Handle /config command
|
|
1055
1102
|
*/
|
package/src/generators/all.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type { ProjectSpec, WorkspaceConfig } from '../types/project.js';
|
|
|
9
9
|
import type { GenerationResult } from './python.js';
|
|
10
10
|
import { generateFullstackProject } from './fullstack.js';
|
|
11
11
|
import { generateWebsiteProject } from './website.js';
|
|
12
|
+
import type { WebsiteContentContext } from './website-context.js';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Options for all project generation
|
|
@@ -17,6 +18,8 @@ export interface AllGeneratorOptions {
|
|
|
17
18
|
skipWebsite?: boolean;
|
|
18
19
|
skipSharedPackages?: boolean;
|
|
19
20
|
includeExamples?: boolean;
|
|
21
|
+
/** Content context from user docs for populating website templates */
|
|
22
|
+
contentContext?: WebsiteContentContext;
|
|
20
23
|
}
|
|
21
24
|
|
|
22
25
|
/**
|
|
@@ -692,7 +695,8 @@ CardContent.displayName = 'CardContent';
|
|
|
692
695
|
*/
|
|
693
696
|
export async function generateAllProject(
|
|
694
697
|
spec: ProjectSpec,
|
|
695
|
-
outputDir: string
|
|
698
|
+
outputDir: string,
|
|
699
|
+
options: AllGeneratorOptions = {}
|
|
696
700
|
): Promise<GenerationResult> {
|
|
697
701
|
const projectName = spec.name || 'my-project';
|
|
698
702
|
const projectDir = path.join(outputDir, projectName);
|
|
@@ -720,6 +724,7 @@ export async function generateAllProject(
|
|
|
720
724
|
workspaceMode: true,
|
|
721
725
|
skipDocker: false, // Website needs its own Dockerfile
|
|
722
726
|
skipReadme: false,
|
|
727
|
+
contentContext: options.contentContext,
|
|
723
728
|
});
|
|
724
729
|
if (!websiteResult.success) {
|
|
725
730
|
return {
|