popeye-cli 1.5.0 → 1.7.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/CHANGELOG.md +54 -0
- package/README.md +184 -31
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +54 -4
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/interactive.d.ts +29 -0
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +90 -7
- 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 +36 -316
- package/dist/generators/all.js.map +1 -1
- package/dist/generators/doc-parser.d.ts +18 -3
- package/dist/generators/doc-parser.d.ts.map +1 -1
- package/dist/generators/doc-parser.js +81 -10
- package/dist/generators/doc-parser.js.map +1 -1
- package/dist/generators/frontend-design-analyzer.d.ts +30 -0
- package/dist/generators/frontend-design-analyzer.d.ts.map +1 -0
- package/dist/generators/frontend-design-analyzer.js +208 -0
- package/dist/generators/frontend-design-analyzer.js.map +1 -0
- package/dist/generators/shared-packages.d.ts +45 -0
- package/dist/generators/shared-packages.d.ts.map +1 -0
- package/dist/generators/shared-packages.js +456 -0
- package/dist/generators/shared-packages.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.map +1 -1
- package/dist/generators/templates/website-components.js +36 -11
- package/dist/generators/templates/website-components.js.map +1 -1
- package/dist/generators/templates/website-config.d.ts +15 -1
- package/dist/generators/templates/website-config.d.ts.map +1 -1
- package/dist/generators/templates/website-config.js +155 -13
- package/dist/generators/templates/website-config.js.map +1 -1
- package/dist/generators/templates/website-landing.d.ts +24 -0
- package/dist/generators/templates/website-landing.d.ts.map +1 -0
- package/dist/generators/templates/website-landing.js +276 -0
- package/dist/generators/templates/website-landing.js.map +1 -0
- package/dist/generators/templates/website-layout.d.ts +42 -0
- package/dist/generators/templates/website-layout.d.ts.map +1 -0
- package/dist/generators/templates/website-layout.js +408 -0
- package/dist/generators/templates/website-layout.js.map +1 -0
- package/dist/generators/templates/website-pricing.d.ts +11 -0
- package/dist/generators/templates/website-pricing.d.ts.map +1 -0
- package/dist/generators/templates/website-pricing.js +313 -0
- package/dist/generators/templates/website-pricing.js.map +1 -0
- package/dist/generators/templates/website-sections.d.ts +102 -0
- package/dist/generators/templates/website-sections.d.ts.map +1 -0
- package/dist/generators/templates/website-sections.js +444 -0
- package/dist/generators/templates/website-sections.js.map +1 -0
- package/dist/generators/templates/website.d.ts +10 -50
- package/dist/generators/templates/website.d.ts.map +1 -1
- package/dist/generators/templates/website.js +12 -788
- package/dist/generators/templates/website.js.map +1 -1
- package/dist/generators/website-content-scanner.d.ts +37 -0
- package/dist/generators/website-content-scanner.d.ts.map +1 -0
- package/dist/generators/website-content-scanner.js +165 -0
- package/dist/generators/website-content-scanner.js.map +1 -0
- package/dist/generators/website-context.d.ts +38 -2
- package/dist/generators/website-context.d.ts.map +1 -1
- package/dist/generators/website-context.js +179 -19
- package/dist/generators/website-context.js.map +1 -1
- package/dist/generators/website-debug.d.ts +68 -0
- package/dist/generators/website-debug.d.ts.map +1 -0
- package/dist/generators/website-debug.js +93 -0
- package/dist/generators/website-debug.js.map +1 -0
- package/dist/generators/website.d.ts +2 -0
- package/dist/generators/website.d.ts.map +1 -1
- package/dist/generators/website.js +66 -4
- package/dist/generators/website.js.map +1 -1
- package/dist/generators/workspace-root.d.ts +27 -0
- package/dist/generators/workspace-root.d.ts.map +1 -0
- package/dist/generators/workspace-root.js +100 -0
- package/dist/generators/workspace-root.js.map +1 -0
- package/dist/state/index.d.ts +8 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +11 -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/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/tester.d.ts +138 -0
- package/dist/types/tester.d.ts.map +1 -0
- package/dist/types/tester.js +110 -0
- package/dist/types/tester.js.map +1 -0
- package/dist/types/workflow.d.ts +151 -0
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +14 -0
- package/dist/types/workflow.js.map +1 -1
- package/dist/upgrade/handlers.d.ts +15 -0
- package/dist/upgrade/handlers.d.ts.map +1 -1
- package/dist/upgrade/handlers.js +52 -0
- package/dist/upgrade/handlers.js.map +1 -1
- package/dist/workflow/auto-fix-bundler.d.ts +37 -0
- package/dist/workflow/auto-fix-bundler.d.ts.map +1 -0
- package/dist/workflow/auto-fix-bundler.js +320 -0
- package/dist/workflow/auto-fix-bundler.js.map +1 -0
- package/dist/workflow/auto-fix.d.ts.map +1 -1
- package/dist/workflow/auto-fix.js +10 -3
- package/dist/workflow/auto-fix.js.map +1 -1
- package/dist/workflow/execution-mode.js +2 -2
- package/dist/workflow/execution-mode.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +13 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/overview.d.ts.map +1 -1
- package/dist/workflow/overview.js +4 -0
- package/dist/workflow/overview.js.map +1 -1
- package/dist/workflow/plan-mode.d.ts +4 -3
- package/dist/workflow/plan-mode.d.ts.map +1 -1
- package/dist/workflow/plan-mode.js +69 -5
- package/dist/workflow/plan-mode.js.map +1 -1
- package/dist/workflow/task-workflow.d.ts +5 -0
- package/dist/workflow/task-workflow.d.ts.map +1 -1
- package/dist/workflow/task-workflow.js +172 -6
- package/dist/workflow/task-workflow.js.map +1 -1
- package/dist/workflow/tester.d.ts +120 -0
- package/dist/workflow/tester.d.ts.map +1 -0
- package/dist/workflow/tester.js +589 -0
- package/dist/workflow/tester.js.map +1 -0
- package/dist/workflow/website-strategy.d.ts +9 -0
- package/dist/workflow/website-strategy.d.ts.map +1 -1
- package/dist/workflow/website-strategy.js +73 -1
- package/dist/workflow/website-strategy.js.map +1 -1
- package/dist/workflow/website-updater.d.ts.map +1 -1
- package/dist/workflow/website-updater.js +15 -4
- package/dist/workflow/website-updater.js.map +1 -1
- 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/cli/commands/create.ts +58 -4
- package/src/cli/interactive.ts +96 -7
- package/src/generators/all.ts +44 -332
- package/src/generators/doc-parser.ts +87 -10
- package/src/generators/frontend-design-analyzer.ts +261 -0
- package/src/generators/shared-packages.ts +500 -0
- package/src/generators/templates/index.ts +4 -0
- package/src/generators/templates/website-components.ts +36 -11
- package/src/generators/templates/website-config.ts +166 -13
- package/src/generators/templates/website-landing.ts +331 -0
- package/src/generators/templates/website-layout.ts +443 -0
- package/src/generators/templates/website-pricing.ts +330 -0
- package/src/generators/templates/website-sections.ts +541 -0
- package/src/generators/templates/website.ts +38 -851
- package/src/generators/website-content-scanner.ts +208 -0
- package/src/generators/website-context.ts +248 -20
- package/src/generators/website-debug.ts +130 -0
- package/src/generators/website.ts +71 -3
- package/src/generators/workspace-root.ts +113 -0
- package/src/state/index.ts +15 -0
- package/src/types/consensus.ts +3 -0
- package/src/types/index.ts +21 -0
- package/src/types/tester.ts +136 -0
- package/src/types/workflow.ts +32 -0
- package/src/upgrade/handlers.ts +65 -0
- package/src/workflow/auto-fix-bundler.ts +392 -0
- package/src/workflow/auto-fix.ts +11 -3
- package/src/workflow/execution-mode.ts +2 -2
- package/src/workflow/index.ts +13 -0
- package/src/workflow/overview.ts +6 -0
- package/src/workflow/plan-mode.ts +81 -7
- package/src/workflow/task-workflow.ts +227 -5
- package/src/workflow/tester.ts +723 -0
- package/src/workflow/website-strategy.ts +75 -1
- package/src/workflow/website-updater.ts +17 -6
- package/src/workflow/workflow-logger.ts +2 -0
- package/tests/cli/project-naming.test.ts +136 -0
- package/tests/generators/doc-parser.test.ts +121 -0
- package/tests/generators/frontend-design-analyzer.test.ts +90 -0
- package/tests/generators/quality-gate.test.ts +183 -0
- package/tests/generators/shared-packages.test.ts +83 -0
- package/tests/generators/website-components.test.ts +1 -1
- package/tests/generators/website-config.test.ts +84 -0
- package/tests/generators/website-content-scanner.test.ts +181 -0
- package/tests/generators/website-context.test.ts +109 -0
- package/tests/generators/website-debug.test.ts +77 -0
- package/tests/generators/website-landing.test.ts +188 -0
- package/tests/generators/website-pricing.test.ts +98 -0
- package/tests/generators/website-sections.test.ts +245 -0
- package/tests/generators/workspace-root.test.ts +105 -0
- package/tests/types/tester.test.ts +174 -0
- package/tests/upgrade/handlers.test.ts +162 -0
- package/tests/workflow/auto-fix-bundler.test.ts +242 -0
- package/tests/workflow/plan-mode.test.ts +111 -1
- package/tests/workflow/tester.test.ts +401 -0
- package/tests/workflow/website-strategy.test.ts +55 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Popeye CLI are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.6.0] - 2026-02-17
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Dual-Mode Website Validation** - `validateWebsiteContext()` (soft/non-throwing) and `validateWebsiteContextOrThrow()` (hard). All 4 website entry points now validate context quality (was 1 of 4). Returns `ValidationResult` with `passed`, `issues`, `warnings`, and `contentScore` (0-100).
|
|
9
|
+
- **Post-Generation Content Scanner** - `scanGeneratedContent()` scans generated `.tsx`/`.ts` files for placeholder fingerprints: TODO comments, default taglines, generic descriptions, default pricing tiers ($29/mo, Starter/Pro/Enterprise), default "How It Works" steps, lorem ipsum. Integrated into website generator (non-blocking warnings).
|
|
10
|
+
- **Workspace Root Detection** - `workspace-root.ts` detects monorepo roots via `.popeye/`, `package.json` workspaces, `pnpm-workspace.yaml`, `turbo.json`. Doc discovery and brand asset scanning now traverse workspace boundaries.
|
|
11
|
+
- **Shared Packages Module** - Extracted `generateDesignTokensPackage()` and `generateUiPackage()` from `all.ts` into `shared-packages.ts`. Brand-specific color scale generation (hex to HSL to 10-stop scale).
|
|
12
|
+
- **Frontend Design Analyzer** - `analyzeFrontendDesign()` extracts colors, fonts, and component library info from `apps/frontend/` CSS vars, Tailwind config, and package.json.
|
|
13
|
+
- **Bundler Error Auto-Fix** - `auto-fix-bundler.ts` handles CSS/PostCSS/Tailwind/webpack errors that the TypeScript-only parser misses. Discovers related config files, sends to Claude for fix.
|
|
14
|
+
- **CWD-Aware Project Naming** - `generateProjectName()` now checks docs first, then CWD basename, then idea text. Skips generic dir names (Projects, Desktop, tmp).
|
|
15
|
+
- **Project Brief Generation** - `generateProjectBrief()` creates `PROJECT_BRIEF.md` in `.popeye/` with product name, tagline, color, and source doc paths.
|
|
16
|
+
- **`[WEB]` App Tag Support** - Plan parser recognizes `[WEB]` tags on tasks, maps to `website` app target, counted in `webTasks` stat.
|
|
17
|
+
- **Website Debug Tracing** - `POPEYE_DEBUG_WEBSITE=1` env var enables detailed pipeline trace showing doc discovery, brand assets, template values, and validation results.
|
|
18
|
+
- **Strategy Context Packing** - `packProductContext()` with priority-based doc packing (spec > pricing > brand > features) and 16K budget.
|
|
19
|
+
- `skipValidation` option on `WebsiteGeneratorOptions` as escape hatch for scaffold-only use.
|
|
20
|
+
- `sourceDocPaths` field on `ProjectState` for doc awareness across sessions.
|
|
21
|
+
- `strategyError` field on `ProjectState` for strategy failure visibility.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- **Critical**: Website generation pipeline produced generic/broken output (TODO placeholders, wrong product names, default $29/mo pricing). Root cause: validation existed but was bypassed by 3 of 4 entry points. Now all entry points validate.
|
|
25
|
+
- **Critical**: Upgrade pipeline (`/upgrade fullstack -> all`) generated website with TODO placeholders. `buildUpgradeContentContext()` now builds full content context from user docs, brand assets, and strategy.
|
|
26
|
+
- **Critical**: `extractProductName()` returned directory names instead of product names. Now uses 5-step priority chain (docs heading > spec heading > spec label > package.json > undefined).
|
|
27
|
+
- **Critical**: `extractPricing()` matched design doc sections ("Plan-Based Color Usage") as pricing tiers. Now uses strict price validation and `Pricing` keyword only.
|
|
28
|
+
- `readProjectDocs` maxLength increased from 6K to 25K with per-file 8K cap. Brand/color docs sorted first to prevent truncation.
|
|
29
|
+
- `extractFeatures()` removed `enforce` keyword (matched "Enforcement Colors" in design docs), tightened `feature` to require plural or prefix.
|
|
30
|
+
- `extractTagline()` now prefers tagline from heading matching product name exactly (avoids wrong doc in multi-doc concatenation).
|
|
31
|
+
- `extractDescription()` prefers "What Is [Product]?" over generic "What is a [thing]?" sections.
|
|
32
|
+
- Logo copy path mismatch: `public/logo{ext}` corrected to `public/brand/logo{ext}` per `BrandAssetsContract`.
|
|
33
|
+
- Logo path in Header component: strips `public/` prefix for Next.js serving.
|
|
34
|
+
- Auto-fix false success: first attempt with zero parsed errors now returns `success: false` instead of `success: true`.
|
|
35
|
+
- `parseTypeScriptErrors` now supports both tsc and bundler output formats, strips ANSI codes, deduplicates.
|
|
36
|
+
- Plan parser: `[FE]`/`[BE]`/`[WEB]`/`[INT]` tags no longer block task name extraction by `isActionableTask()`.
|
|
37
|
+
- Tailwind config: brand color scale generated from hex instead of defaulting to sky-blue.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
- `validateWebsiteContextOrThrow()` now delegates to `validateWebsiteContext()` internally.
|
|
41
|
+
- `all.ts` website context building: validates with soft mode, logs warnings without blocking.
|
|
42
|
+
- `website-updater.ts`: reports quality issues via `onProgress` callback.
|
|
43
|
+
- `upgrade/handlers.ts`: `buildUpgradeContentContext()` includes validation warnings in return value.
|
|
44
|
+
- Website template files split into focused modules: `website-landing.ts`, `website-pricing.ts`, `website-layout.ts`, `website-sections.ts`.
|
|
45
|
+
|
|
46
|
+
## [1.5.0] - 2026-02-13
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
- **Strategy-First Website Generation** - AI-powered marketing strategy generation with ICP analysis, positioning, messaging, SEO strategy, site architecture, conversion strategy, and competitive context.
|
|
50
|
+
- **Reviewer Persona Switching** - `reviewerPersona` field in ConsensusConfig for marketing-specific consensus review.
|
|
51
|
+
- **Website Components** - Header (logo/text fallback, nav, CTA, mobile menu), Footer (multi-column, brand), Navigation config.
|
|
52
|
+
- **SEO Infrastructure** - JsonLd component, enhanced sitemap/robots, 404/500 error pages, web manifest, meta helper.
|
|
53
|
+
- **Lead Capture System** - API route with webhook/resend/postmark support, contact form, env examples.
|
|
54
|
+
- **Brand Assets Contract** - `BrandAssetsContract` interface and `resolveBrandAssets()` for deterministic logo/favicon placement.
|
|
55
|
+
- **Website Strategy Caching** - SHA-256 hash-based staleness detection, store/load with metadata.
|
|
56
|
+
- `'website-strategy'` workflow stage.
|
|
57
|
+
- `websiteStrategy` and `storeWebsiteStrategyPath()` in project state.
|
|
58
|
+
|
|
5
59
|
## [1.4.0] - 2026-02-08
|
|
6
60
|
|
|
7
61
|
### Added
|
package/README.md
CHANGED
|
@@ -18,12 +18,15 @@ Popeye is an autonomous software development agent that takes a simple project i
|
|
|
18
18
|
1. **Understands** your idea and expands it into a detailed specification
|
|
19
19
|
2. **Designs** the UI automatically based on the project context
|
|
20
20
|
3. **Strategizes** (website projects) by generating a marketing strategy with ICP, positioning, SEO, and conversion goals
|
|
21
|
-
4. **
|
|
22
|
-
5. **
|
|
23
|
-
6. **
|
|
24
|
-
7. **
|
|
25
|
-
8. **
|
|
26
|
-
9. **
|
|
21
|
+
4. **Validates context** (website projects) by checking content quality before generation and warning about missing docs, default pricing, or placeholder content
|
|
22
|
+
5. **Plans** a complete development roadmap with milestones and tasks
|
|
23
|
+
6. **Validates** the plan through AI consensus (multiple AI systems must agree)
|
|
24
|
+
7. **Implements** each task autonomously, writing production-quality code
|
|
25
|
+
8. **QA Gates** each task through an independent Tester that plans tests, reviews results, and issues PASS/FAIL verdicts
|
|
26
|
+
9. **Scans** generated website files for placeholder fingerprints (TODO comments, lorem ipsum, default tiers) and reports quality warnings
|
|
27
|
+
10. **Styles** the application with a professional design system and component library
|
|
28
|
+
11. **Tests** the implementation and fixes issues automatically with Tester-driven fix plans
|
|
29
|
+
12. **Delivers** a complete, working project with polished UI
|
|
27
30
|
|
|
28
31
|
## How It Works
|
|
29
32
|
|
|
@@ -59,12 +62,16 @@ Popeye is an autonomous software development agent that takes a simple project i
|
|
|
59
62
|
│ │ │
|
|
60
63
|
│ ▼ │
|
|
61
64
|
│ ┌────────────────────────────────────────────┐ │
|
|
62
|
-
│ │ EXECUTION MODE
|
|
65
|
+
│ │ EXECUTION MODE (7-Phase Task Workflow) │ │
|
|
63
66
|
│ │ For each task: │ │
|
|
64
|
-
│ │ 1.
|
|
65
|
-
│ │ 2.
|
|
66
|
-
│ │ 3.
|
|
67
|
-
│ │ 4.
|
|
67
|
+
│ │ 1. Coder creates implementation plan │ │
|
|
68
|
+
│ │ 2. Code plan consensus (95%+) │ │
|
|
69
|
+
│ │ 3. Tester creates test plan (QA) │ │
|
|
70
|
+
│ │ 4. Test plan consensus (90%+) │ │
|
|
71
|
+
│ │ 5. Claude implements code │ │
|
|
72
|
+
│ │ 6. Tests run automatically │ │
|
|
73
|
+
│ │ 7. Tester reviews results (QA verdict) │ │
|
|
74
|
+
│ │ Fix issues via Tester fix plans │ │
|
|
68
75
|
│ └────────────────────────────────────────────┘ │
|
|
69
76
|
│ │ │
|
|
70
77
|
│ ▼ │
|
|
@@ -105,7 +112,7 @@ Popeye uses multiple AI systems that must agree before implementation begins:
|
|
|
105
112
|
- **Google Gemini** (optional): Can be configured as reviewer or arbitrator when consensus gets stuck
|
|
106
113
|
- **xAI Grok** (optional): Can be configured as reviewer or arbitrator as an alternative to Gemini
|
|
107
114
|
|
|
108
|
-
Plans are iteratively refined until systems reach **95%+ consensus**, ensuring well-thought-out implementations. When consensus cannot be reached, an arbitrator (configurable) makes the final decision.
|
|
115
|
+
Plans are iteratively refined until systems reach **95%+ consensus**, ensuring well-thought-out implementations. Test plans go through a separate consensus round at a configurable threshold (default **90%+**). When consensus cannot be reached, an arbitrator (configurable) makes the final decision.
|
|
109
116
|
|
|
110
117
|
---
|
|
111
118
|
|
|
@@ -119,7 +126,7 @@ Instead of a single "genius" model, Popeye operates as a **virtual AI developmen
|
|
|
119
126
|
|
|
120
127
|
Every decision is recorded. Every disagreement is traceable. Nothing happens silently.
|
|
121
128
|
|
|
122
|
-
### The
|
|
129
|
+
### The Four Roles
|
|
123
130
|
|
|
124
131
|
#### 1. Planner & Builder (The Implementer)
|
|
125
132
|
|
|
@@ -160,16 +167,38 @@ The Arbitrator:
|
|
|
160
167
|
Think of this role as:
|
|
161
168
|
> *A tech lead making the call after a heated design review.*
|
|
162
169
|
|
|
170
|
+
#### 4. Tester (The QA Gate)
|
|
171
|
+
|
|
172
|
+
This role is the **independent quality authority**. It does not implement code -- it validates it.
|
|
173
|
+
|
|
174
|
+
It:
|
|
175
|
+
- designs structured test plans with acceptance criteria and risk focus areas
|
|
176
|
+
- discovers project test infrastructure (package.json scripts, pytest, Makefile targets)
|
|
177
|
+
- reviews test execution results against the approved test plan
|
|
178
|
+
- issues a verdict: PASS, PASS_WITH_NOTES, or FAIL
|
|
179
|
+
- creates fix plans with root cause analysis when tests fail
|
|
180
|
+
- documents all test plans and reviews in `docs/qa/`
|
|
181
|
+
|
|
182
|
+
Think of this role as:
|
|
183
|
+
> *A dedicated QA engineer who cannot be overridden by the developer.*
|
|
184
|
+
|
|
185
|
+
The Tester is provider-agnostic and uses whichever AI provider is configured. Its test plans go through their own consensus round (default threshold: 90%). ONLY the Tester decides whether code passes quality gates -- the coder cannot bypass or override a FAIL verdict.
|
|
186
|
+
|
|
163
187
|
### How the Loop Works
|
|
164
188
|
|
|
165
189
|
```
|
|
166
190
|
1. You describe your idea
|
|
167
|
-
2. Planner generates a spec and implementation
|
|
168
|
-
3. Reviewer audits the plan
|
|
169
|
-
4. If the Reviewer approves →
|
|
170
|
-
5.
|
|
171
|
-
6. If
|
|
172
|
-
7.
|
|
191
|
+
2. Planner generates a spec and implementation plan
|
|
192
|
+
3. Reviewer audits the code plan (95%+ consensus)
|
|
193
|
+
4. If the Reviewer approves → Tester designs a test plan
|
|
194
|
+
5. Reviewer audits the test plan (90%+ consensus)
|
|
195
|
+
6. If the Reviewer objects → feedback is sent back for revision
|
|
196
|
+
7. If disagreement persists → Arbitrator decides
|
|
197
|
+
8. Planner implements the code
|
|
198
|
+
9. Tests run automatically
|
|
199
|
+
10. Tester reviews results and issues PASS/FAIL verdict
|
|
200
|
+
11. If FAIL → Tester creates fix plan → coder fixes → retest
|
|
201
|
+
12. Final decisions are applied and logged
|
|
173
202
|
```
|
|
174
203
|
|
|
175
204
|
No silent overrides. No "AI magic happened here".
|
|
@@ -360,12 +389,21 @@ Popeye provides real-time feedback:
|
|
|
360
389
|
[Website Strategy] Generating website strategy via AI...
|
|
361
390
|
[Website Strategy] Validating strategy schema...
|
|
362
391
|
[Website Strategy] Strategy cached to .popeye/website-strategy.json
|
|
392
|
+
[Validation] Website context score: 85/100
|
|
393
|
+
[Validation] Warning: No tagline extracted from docs. Footer and meta tags will use generic defaults.
|
|
363
394
|
[Consensus] Review round 1: 78% agreement (Marketing Strategist persona)
|
|
364
395
|
[Consensus] Addressing concerns...
|
|
365
396
|
[Consensus] Review round 2: 92% agreement
|
|
366
397
|
[Consensus] Review round 3: 97% agreement - APPROVED
|
|
367
398
|
[Execute] Milestone 1: Project Setup
|
|
368
|
-
[Execute] Task 1.1:
|
|
399
|
+
[Execute] Task 1.1: Code plan created
|
|
400
|
+
[Consensus] Code plan consensus: 96% - APPROVED
|
|
401
|
+
[QA] Tester designing test plan...
|
|
402
|
+
[Consensus] Test plan consensus: 92% - APPROVED
|
|
403
|
+
[Execute] Task 1.1: Implementing...
|
|
404
|
+
[QA] Running tests... 12 passed, 0 failed
|
|
405
|
+
[QA] Tester verdict: PASS
|
|
406
|
+
[Execute] Task 1.1: DONE
|
|
369
407
|
[Execute] Task 1.2: Configure dependencies... DONE
|
|
370
408
|
[Execute] Milestone 2: Core Implementation
|
|
371
409
|
...
|
|
@@ -373,20 +411,23 @@ Popeye provides real-time feedback:
|
|
|
373
411
|
[UI Setup] Installing UI component dependencies...
|
|
374
412
|
[UI Setup] Setting up theme and styles...
|
|
375
413
|
[UI Setup] UI setup complete: 5 components installed
|
|
414
|
+
[Content Scan] Scanned 14 files, score: 95/100
|
|
415
|
+
[Content Scan] Warning: src/app/pricing/page.tsx - Default pricing amount ($29/mo)
|
|
376
416
|
[Complete] Project built successfully!
|
|
377
417
|
```
|
|
378
418
|
|
|
379
|
-
**Note:** The `[Website Strategy]` steps appear only for `website` and `all` project types. The marketing strategist persona for consensus review is also specific to website projects.
|
|
419
|
+
**Note:** The `[Website Strategy]`, `[Validation]`, and `[Content Scan]` steps appear only for `website` and `all` project types. The marketing strategist persona for consensus review is also specific to website projects. Validation warnings are informational and do not block generation (except in direct `website.ts` generation, where blocking issues cause an error). The `[QA]` steps appear when QA is enabled (`qaEnabled: true`, the default for new projects). Existing projects without `qaEnabled` skip QA phases automatically.
|
|
380
420
|
|
|
381
421
|
## Features
|
|
382
422
|
|
|
383
423
|
### Core Features
|
|
384
424
|
|
|
385
425
|
- **Fully Autonomous**: Runs from idea to complete project without manual intervention
|
|
386
|
-
- **Dual-AI Consensus**:
|
|
426
|
+
- **Dual-AI Consensus**: Both code plans and test plans validated by multiple AI systems before execution
|
|
387
427
|
- **Multi-Language Support**: Generate projects in Python, TypeScript, Fullstack (React + FastAPI), Website, or ALL (React + FastAPI + Website)
|
|
388
|
-
- **
|
|
389
|
-
- **
|
|
428
|
+
- **Independent QA Tester**: A dedicated Tester persona plans tests, reviews results, and issues PASS/FAIL verdicts that the coder cannot override
|
|
429
|
+
- **Automatic Testing**: Tests are generated and run for each implementation, gated by QA review
|
|
430
|
+
- **Error Recovery**: Failed tests trigger Tester-authored fix plans with root cause analysis (up to 3 retries)
|
|
390
431
|
- **Auto-Generated README**: At project completion, generates a comprehensive README with:
|
|
391
432
|
- Project description and features
|
|
392
433
|
- Prerequisites and installation instructions
|
|
@@ -477,6 +518,41 @@ Popeye automatically discovers brand assets (logos, favicons, color schemes) fro
|
|
|
477
518
|
- Primary brand color is extracted from design docs or CSS variables
|
|
478
519
|
- The `BrandAssetsContract` interface ensures consistent logo placement across Header, manifest, and metadata
|
|
479
520
|
|
|
521
|
+
#### Dual-Mode Website Context Validation
|
|
522
|
+
|
|
523
|
+
Website generation includes a two-layer quality system that prevents generic, placeholder-filled websites:
|
|
524
|
+
|
|
525
|
+
**Pre-Generation Validation** checks the content context before any code is written. It operates in two modes:
|
|
526
|
+
|
|
527
|
+
| Mode | Function | Behavior | Used By |
|
|
528
|
+
|------|----------|----------|---------|
|
|
529
|
+
| **Hard (throwing)** | `validateWebsiteContextOrThrow()` | Throws an error and blocks generation | `website.ts` (direct generation) |
|
|
530
|
+
| **Soft (non-throwing)** | `validateWebsiteContext()` | Returns `ValidationResult` with issues/warnings, logs but does not block | `all.ts`, `website-updater.ts`, `upgrade/handlers.ts` |
|
|
531
|
+
|
|
532
|
+
The `ValidationResult` includes:
|
|
533
|
+
- `passed` -- whether the context has no blocking issues
|
|
534
|
+
- `issues` -- blocking problems (suspicious product name, missing docs, no features, missing strategy)
|
|
535
|
+
- `warnings` -- non-blocking concerns (default pricing tiers, missing tagline/description/brand color)
|
|
536
|
+
- `contentScore` -- 0-100 quality score, deducted for each default or missing piece
|
|
537
|
+
|
|
538
|
+
Checks include: suspicious product name detection (e.g., `my-app`), missing documentation, zero features extracted, missing strategy, brand/color doc parsing failures, default pricing fingerprint detection (Starter/Pro/Enterprise at $0/$29/Custom), and missing tagline/description/brand color.
|
|
539
|
+
|
|
540
|
+
**Post-Generation Content Scanner** (`website-content-scanner.ts`) scans the generated `.tsx`/`.ts` files for known placeholder fingerprints after code has been written:
|
|
541
|
+
|
|
542
|
+
| Pattern | Severity | Description |
|
|
543
|
+
|---------|----------|-------------|
|
|
544
|
+
| TODO comments | error | `// TODO`, `/* TODO */`, `{/* TODO */}` |
|
|
545
|
+
| Lorem ipsum | error | Placeholder text left in templates |
|
|
546
|
+
| Default tagline | warning | "Build something amazing" |
|
|
547
|
+
| Generic description | warning | "Your modern web application" |
|
|
548
|
+
| Default pricing | warning | `$29/mo` amounts in generated files |
|
|
549
|
+
| Default pricing tiers | warning | Starter/Pro/Enterprise tier names together |
|
|
550
|
+
| Default How It Works | warning | Sign Up/Configure/Deploy steps together |
|
|
551
|
+
|
|
552
|
+
The scanner returns a `ScanResult` with all issues, the number of files scanned, and a 0-100 quality score. Issues are logged as warnings so developers can review and fix placeholder content.
|
|
553
|
+
|
|
554
|
+
Both layers work together: pre-generation validation catches missing inputs, while post-generation scanning catches placeholder content that slipped through into the generated code. The `skipValidation` option in `generateWebsiteProject()` provides an escape hatch for edge cases.
|
|
555
|
+
|
|
480
556
|
#### Reviewer Persona Switching
|
|
481
557
|
|
|
482
558
|
For website projects, the consensus reviewer automatically switches to a **Senior Product Marketing Strategist** persona instead of the default technical reviewer. This ensures the plan is evaluated for marketing effectiveness, conversion optimization, and SEO quality rather than purely technical criteria. The `reviewerPersona` field in `ConsensusConfig` controls this behavior and is threaded through all adapter implementations (OpenAI, Gemini, Grok).
|
|
@@ -566,6 +642,73 @@ The consensus system tracks approval separately for each app target:
|
|
|
566
642
|
- 15-minute timeout with automatic arbitration
|
|
567
643
|
- Per-iteration timing logs for debugging
|
|
568
644
|
|
|
645
|
+
### QA Tester Skill
|
|
646
|
+
|
|
647
|
+
Popeye includes a dedicated **Tester (QA) persona** that operates independently from the coder. The Tester is responsible for test quality and cannot be bypassed or overridden.
|
|
648
|
+
|
|
649
|
+
#### 7-Phase Task Workflow
|
|
650
|
+
|
|
651
|
+
When QA is enabled, each task goes through an expanded workflow:
|
|
652
|
+
|
|
653
|
+
```
|
|
654
|
+
1. Coder Plan - AI creates a detailed implementation plan
|
|
655
|
+
2. Code Consensus - Reviewer validates the code plan (95%+ threshold)
|
|
656
|
+
3. Test Plan - Tester designs a structured test plan with acceptance criteria
|
|
657
|
+
4. Test Consensus - Reviewer validates the test plan (90%+ threshold, configurable)
|
|
658
|
+
5. Implement - Claude implements the code according to the approved plan
|
|
659
|
+
6. Run Tests - Test commands execute automatically
|
|
660
|
+
7. QA Review - Tester reviews results and issues PASS/FAIL/PASS_WITH_NOTES verdict
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
If the Tester issues a **FAIL** verdict, it creates a fix plan with root cause analysis that guides the coder's fix implementation. The cycle repeats until the Tester approves.
|
|
664
|
+
|
|
665
|
+
#### Test Plan Structure
|
|
666
|
+
|
|
667
|
+
The Tester produces structured test plans containing:
|
|
668
|
+
|
|
669
|
+
| Field | Description |
|
|
670
|
+
|-------|-------------|
|
|
671
|
+
| **summary** | What risks the test plan targets |
|
|
672
|
+
| **scope** | Components covered (frontend, backend, db, infra) |
|
|
673
|
+
| **testMatrix** | Test cases with ID, category, acceptance criteria, priority |
|
|
674
|
+
| **commands** | Exact shell commands with cwd, purpose, and required flag |
|
|
675
|
+
| **riskFocus** | Top 3-7 risks being tested |
|
|
676
|
+
| **minimumVerification** | Always includes build check, lint check, and smoke test |
|
|
677
|
+
|
|
678
|
+
#### Test Infrastructure Discovery
|
|
679
|
+
|
|
680
|
+
The Tester automatically discovers available test commands by inspecting:
|
|
681
|
+
- `package.json` scripts (test, lint, build, typecheck)
|
|
682
|
+
- `pyproject.toml` (pytest, ruff, mypy)
|
|
683
|
+
- `Makefile` targets (test, lint, build)
|
|
684
|
+
|
|
685
|
+
Language-specific defaults are used as fallbacks when no configuration is found.
|
|
686
|
+
|
|
687
|
+
#### QA Documentation
|
|
688
|
+
|
|
689
|
+
All QA artifacts are persisted for auditability:
|
|
690
|
+
- **Test Plans**: `docs/qa/test-plans/milestone_N_task_N.md`
|
|
691
|
+
- **Test Reviews**: `docs/qa/test-runs/milestone_N_task_N.md`
|
|
692
|
+
|
|
693
|
+
Each document includes metadata (consensus score, iterations, timestamps) and the full plan or review content.
|
|
694
|
+
|
|
695
|
+
#### QA Opt-in Behavior
|
|
696
|
+
|
|
697
|
+
| Project Type | qaEnabled |
|
|
698
|
+
|-------------|-----------|
|
|
699
|
+
| New projects | `true` (default) |
|
|
700
|
+
| Existing projects (pre-QA) | `undefined` (QA phases skipped) |
|
|
701
|
+
| Manually disabled | `false` (QA phases skipped) |
|
|
702
|
+
|
|
703
|
+
The `qaEnabled` field in `ProjectState` controls whether the 7-phase workflow is used. When QA is disabled, tasks use the original 4-phase flow (Plan -> Consensus -> Implement -> Test).
|
|
704
|
+
|
|
705
|
+
#### Configurable Thresholds
|
|
706
|
+
|
|
707
|
+
| Parameter | Default | Description |
|
|
708
|
+
|-----------|---------|-------------|
|
|
709
|
+
| `consensus.threshold` | 95 | Code plan consensus threshold |
|
|
710
|
+
| `consensus.testPlanThreshold` | 90 | Test plan consensus threshold (lower to avoid over-engineering test plans) |
|
|
711
|
+
|
|
569
712
|
### Observability Features
|
|
570
713
|
|
|
571
714
|
- **Workflow Logging**: Detailed logs written to `docs/WORKFLOW_LOG.md`
|
|
@@ -858,7 +1001,8 @@ Create `popeye.config.yaml` in your project or `~/.popeye/config.yaml` globally:
|
|
|
858
1001
|
```yaml
|
|
859
1002
|
# Consensus settings
|
|
860
1003
|
consensus:
|
|
861
|
-
threshold: 95 # Minimum agreement percentage
|
|
1004
|
+
threshold: 95 # Minimum agreement percentage (code plans)
|
|
1005
|
+
test_plan_threshold: 90 # Minimum agreement percentage (test plans, lower to avoid over-engineering)
|
|
862
1006
|
max_iterations: 10 # Max revision rounds
|
|
863
1007
|
reviewer: openai # Primary reviewer (openai, gemini, or grok)
|
|
864
1008
|
arbitrator: gemini # Arbitrator when stuck (openai, gemini, grok, or off)
|
|
@@ -942,7 +1086,10 @@ my-project/
|
|
|
942
1086
|
│ └── conftest.py
|
|
943
1087
|
├── docs/
|
|
944
1088
|
│ ├── PLAN.md # Development plan
|
|
945
|
-
│
|
|
1089
|
+
│ ├── WORKFLOW_LOG.md # Execution log
|
|
1090
|
+
│ └── qa/ # QA documentation (when qaEnabled)
|
|
1091
|
+
│ ├── test-plans/ # Approved test plans per task
|
|
1092
|
+
│ └── test-runs/ # Test review verdicts per task
|
|
946
1093
|
├── pyproject.toml
|
|
947
1094
|
├── requirements.txt
|
|
948
1095
|
├── README.md
|
|
@@ -1031,6 +1178,9 @@ my-project/
|
|
|
1031
1178
|
├── docs/
|
|
1032
1179
|
│ ├── PLAN.md # Development plan with [FE], [BE], [INT] tags
|
|
1033
1180
|
│ ├── WORKFLOW_LOG.md
|
|
1181
|
+
│ ├── qa/ # QA documentation (when qaEnabled)
|
|
1182
|
+
│ │ ├── test-plans/ # Approved test plans per task
|
|
1183
|
+
│ │ └── test-runs/ # Test review verdicts per task
|
|
1034
1184
|
│ └── plans/ # Consensus documentation (fullstack/all projects)
|
|
1035
1185
|
│ ├── master/
|
|
1036
1186
|
│ │ ├── plan.md
|
|
@@ -1303,7 +1453,8 @@ src/
|
|
|
1303
1453
|
│ ├── typescript.ts # TypeScript scaffolding
|
|
1304
1454
|
│ ├── fullstack.ts # Fullstack scaffolding (React + FastAPI)
|
|
1305
1455
|
│ ├── website.ts # Website scaffolding (Next.js, strategy-aware)
|
|
1306
|
-
│ ├── website-context.ts # Doc discovery, brand assets, content context
|
|
1456
|
+
│ ├── website-context.ts # Doc discovery, brand assets, content context, dual-mode validation
|
|
1457
|
+
│ ├── website-content-scanner.ts # Post-generation placeholder fingerprint scanner
|
|
1307
1458
|
│ ├── doc-parser.ts # Product doc parsing (name, tagline, features, pricing, color)
|
|
1308
1459
|
│ ├── all.ts # ALL project scaffolding (exports 5 generator functions)
|
|
1309
1460
|
│ └── templates/ # File templates
|
|
@@ -1329,9 +1480,10 @@ src/
|
|
|
1329
1480
|
│ ├── plan-mode.ts # Planning phase (strategy generation, monorepo-aware)
|
|
1330
1481
|
│ ├── execution-mode.ts # Execution phase
|
|
1331
1482
|
│ ├── milestone-workflow.ts
|
|
1332
|
-
│ ├── task-workflow.ts #
|
|
1483
|
+
│ ├── task-workflow.ts # 7-phase task workflow with QA gate
|
|
1484
|
+
│ ├── tester.ts # QA skill: test planning, review, fix plans (provider-agnostic)
|
|
1333
1485
|
│ ├── test-runner.ts # Test execution
|
|
1334
|
-
│ ├── workflow-logger.ts # Persistent logging (
|
|
1486
|
+
│ ├── workflow-logger.ts # Persistent logging (test-planning, test-review stages)
|
|
1335
1487
|
│ ├── plan-storage.ts # Consensus docs storage (per-app feedback)
|
|
1336
1488
|
│ ├── workspace-manager.ts # Multi-app workspace management
|
|
1337
1489
|
│ ├── website-strategy.ts # AI strategy generation, caching, staleness detection
|
|
@@ -1346,8 +1498,9 @@ src/
|
|
|
1346
1498
|
│ └── auto-fix.ts # Automatic error fixing (enhanced ENOENT tracking)
|
|
1347
1499
|
└── types/ # TypeScript types
|
|
1348
1500
|
├── project.ts # OutputLanguage, isWorkspace(), flexible OpenAIModelSchema
|
|
1349
|
-
├── workflow.ts # ProjectStateSchema (
|
|
1350
|
-
├── consensus.ts # GeminiModelSchema, GrokModelSchema, reviewerPersona
|
|
1501
|
+
├── workflow.ts # ProjectStateSchema (qaEnabled, qa* task fields)
|
|
1502
|
+
├── consensus.ts # GeminiModelSchema, GrokModelSchema, reviewerPersona, testPlanThreshold
|
|
1503
|
+
├── tester.ts # TestVerdict, TestPlanOutput, TestRunReview, TestFixPlan
|
|
1351
1504
|
└── website-strategy.ts # WebsiteStrategyDocument, BrandAssetsContract, DesignTokens
|
|
1352
1505
|
```
|
|
1353
1506
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAgO7C"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import path from 'node:path';
|
|
7
|
+
import { promises as fs } from 'node:fs';
|
|
7
8
|
import { ProjectSpecSchema } from '../../types/project.js';
|
|
8
9
|
import { requireAuth } from '../../auth/index.js';
|
|
9
10
|
import { runWorkflow } from '../../workflow/index.js';
|
|
@@ -58,8 +59,8 @@ export function createCreateCommand() {
|
|
|
58
59
|
process.exit(1);
|
|
59
60
|
}
|
|
60
61
|
// Generate project name from idea if not provided
|
|
61
|
-
const projectName = options.name || generateProjectName(idea);
|
|
62
62
|
const outputDir = path.resolve(options.output);
|
|
63
|
+
const projectName = options.name || await generateProjectName(idea, outputDir);
|
|
63
64
|
const projectDir = path.join(outputDir, projectName);
|
|
64
65
|
const threshold = parseInt(options.threshold, 10);
|
|
65
66
|
const maxIterations = parseInt(options.maxIterations, 10);
|
|
@@ -188,10 +189,59 @@ export function createCreateCommand() {
|
|
|
188
189
|
return create;
|
|
189
190
|
}
|
|
190
191
|
/**
|
|
191
|
-
*
|
|
192
|
+
* Directories that are too generic to use as project names
|
|
192
193
|
*/
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
const GENERIC_DIR_NAMES = new Set([
|
|
195
|
+
'home', 'desktop', 'documents', 'downloads', 'projects', 'project',
|
|
196
|
+
'repos', 'code', 'dev', 'workspace', 'workspaces', 'src', 'tmp',
|
|
197
|
+
'temp', 'users', 'user', 'root', 'var', 'opt',
|
|
198
|
+
]);
|
|
199
|
+
/**
|
|
200
|
+
* Generate a project name, preferring CWD-derived names over prompt text.
|
|
201
|
+
*
|
|
202
|
+
* Priority: docs in CWD -> CWD basename -> idea text extraction
|
|
203
|
+
*
|
|
204
|
+
* @param idea - The user's project idea text
|
|
205
|
+
* @param cwd - Optional directory for context-aware naming
|
|
206
|
+
* @returns A kebab-case project name
|
|
207
|
+
*/
|
|
208
|
+
async function generateProjectName(idea, cwd) {
|
|
209
|
+
const toKebab = (name) => name
|
|
210
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
211
|
+
.toLowerCase()
|
|
212
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
213
|
+
.replace(/-+/g, '-')
|
|
214
|
+
.replace(/^-|-$/g, '');
|
|
215
|
+
if (cwd) {
|
|
216
|
+
// Check for doc-derived name
|
|
217
|
+
try {
|
|
218
|
+
const entries = await fs.readdir(cwd, { withFileTypes: true });
|
|
219
|
+
const mdFiles = entries
|
|
220
|
+
.filter(e => e.isFile() && e.name.endsWith('.md') && !e.name.toLowerCase().startsWith('readme'))
|
|
221
|
+
.map(e => path.join(cwd, e.name));
|
|
222
|
+
for (const mdFile of mdFiles) {
|
|
223
|
+
try {
|
|
224
|
+
const content = await fs.readFile(mdFile, 'utf-8');
|
|
225
|
+
const headingMatch = content.match(/^#\s+([A-Z][a-zA-Z0-9]+)/m);
|
|
226
|
+
if (headingMatch && headingMatch[1] && headingMatch[1].length >= 3 && headingMatch[1].length <= 30) {
|
|
227
|
+
return toKebab(headingMatch[1]);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// Skip unreadable files
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
// Directory not readable
|
|
237
|
+
}
|
|
238
|
+
// Check CWD basename
|
|
239
|
+
const dirName = path.basename(cwd);
|
|
240
|
+
if (dirName.length >= 3 && !GENERIC_DIR_NAMES.has(dirName.toLowerCase())) {
|
|
241
|
+
return toKebab(dirName);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Fallback: extract from idea text
|
|
195
245
|
return idea
|
|
196
246
|
.toLowerCase()
|
|
197
247
|
.replace(/[^a-z0-9\s]/g, '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,35 @@
|
|
|
2
2
|
* Interactive mode
|
|
3
3
|
* Claude Code-style interface for Popeye CLI
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Try to extract a product name from .md files in a directory.
|
|
7
|
+
* Looks for top-level headings (# ProductName) in markdown files.
|
|
8
|
+
*
|
|
9
|
+
* @param dir - Directory to scan for .md files
|
|
10
|
+
* @returns Product name if found, null otherwise
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractNameFromDocs(dir: string): Promise<string | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Generate a meaningful project name from an idea, with CWD-aware logic.
|
|
15
|
+
*
|
|
16
|
+
* Priority chain:
|
|
17
|
+
* 1. If CWD contains .md docs with a "# ProductName" heading, use that
|
|
18
|
+
* 2. If CWD basename is a meaningful name (not generic), use it
|
|
19
|
+
* 3. Fall back to extracting a name from the idea text
|
|
20
|
+
*
|
|
21
|
+
* @param idea - The user's project idea text
|
|
22
|
+
* @param cwd - Optional current working directory for context-aware naming
|
|
23
|
+
* @returns A kebab-case project name
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateProjectName(idea: string, cwd?: string): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Extract a project name from the idea text alone.
|
|
28
|
+
* This is the original generateProjectName logic, used as a fallback.
|
|
29
|
+
*
|
|
30
|
+
* @param idea - The user's project idea text
|
|
31
|
+
* @returns A kebab-case project name
|
|
32
|
+
*/
|
|
33
|
+
export declare function generateProjectNameFromIdea(idea: string): string;
|
|
5
34
|
/**
|
|
6
35
|
* Start interactive mode with auto-authentication
|
|
7
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8tEH;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2B7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BrF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4EhE;AAiVD;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4E1D"}
|