fix: ChatBubble crash and DeepSeek API compatibility
- Fix ChatBubble to handle non-string content with String() wrapper - Fix API route to use generateText for non-streaming requests - Add @ai-sdk/openai-compatible for non-OpenAI providers (DeepSeek, etc.) - Use Chat Completions API instead of Responses API for compatible providers - Update ChatBubble tests and fix component exports to kebab-case - Remove stale PascalCase ChatBubble.tsx file
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
---
|
||||
name: 'step-02-frontmatter-validation'
|
||||
description: 'Validate frontmatter compliance across all step files'
|
||||
|
||||
nextStepFile: './step-02b-path-violations.md'
|
||||
targetWorkflowPath: '{workflow_folder_path}'
|
||||
validationReportFile: '{workflow_folder_path}/validation-report-{datetime}.md'
|
||||
frontmatterStandards: '../data/frontmatter-standards.md'
|
||||
---
|
||||
|
||||
# Validation Step 2: Frontmatter Validation
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To validate that EVERY step file's frontmatter follows the frontmatter standards - correct variables, proper relative paths, NO unused variables.
|
||||
|
||||
## MANDATORY EXECUTION RULES (READ FIRST):
|
||||
|
||||
### Universal Rules:
|
||||
|
||||
- 🛑 DO NOT BE LAZY - VALIDATE EVERY FILE'S FRONTMATTER
|
||||
- 📖 CRITICAL: Read the complete step file before taking any action
|
||||
- 🔄 CRITICAL: When loading next step, ensure entire file is read
|
||||
- ✅ Validation does NOT stop for user input - auto-proceed through all validation steps
|
||||
- ⚙️ If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
|
||||
|
||||
### Step-Specific Rules:
|
||||
|
||||
- 🎯 Validate EVERY step file's frontmatter using subprocess optimization - each file in its own subprocess
|
||||
- 🚫 DO NOT skip any files or checks - DO NOT BE LAZY
|
||||
- 💬 Subprocess must either update validation report directly OR return structured findings to parent for aggregation
|
||||
- 🚪 This is validation - systematic and thorough using per-file deep analysis (Pattern 2)
|
||||
|
||||
## EXECUTION PROTOCOLS:
|
||||
|
||||
- 🎯 Load frontmatter standards first, then validate each file in its own subprocess for deep analysis
|
||||
- 💾 Subprocesses must either update validation report OR return findings for parent aggregation
|
||||
- 📖 Aggregate all findings into validation report before loading next step
|
||||
- 🚫 DO NOT halt for user input - validation runs to completion
|
||||
|
||||
## CONTEXT BOUNDARIES:
|
||||
|
||||
- All step files in the workflow must be validated
|
||||
- Load {frontmatterStandards} for validation criteria
|
||||
- Check for: unused variables, non-relative paths, missing required fields, forbidden patterns
|
||||
|
||||
## MANDATORY SEQUENCE
|
||||
|
||||
**CRITICAL:** Follow this sequence exactly. Do not skip or shortcut.
|
||||
|
||||
### 1. Load Frontmatter Standards
|
||||
|
||||
Load {frontmatterStandards} to understand validation criteria.
|
||||
|
||||
**Key Rules:**
|
||||
1. Only variables USED in the step may be in frontmatter
|
||||
2. All file references MUST use `{variable}` format
|
||||
3. Paths within workflow folder MUST be relative - NO `workflow_path` allowed
|
||||
|
||||
**Forbidden Patterns:**
|
||||
- `workflow_path: '...'` - use relative paths instead
|
||||
- `thisStepFile: '...'` - remove unless actually referenced in body
|
||||
- `workflowFile: '...'` - remove unless actually referenced in body
|
||||
- `./...` - use `./step-XX.md`
|
||||
- `{workflow_path}/templates/...` - use `../template.md`
|
||||
|
||||
### 2. Validate EVERY Step File - Systematic Algorithm with Subprocess Optimization
|
||||
|
||||
**DO NOT BE LAZY - For EACH step file, launch a subprocess that:**
|
||||
|
||||
1. Loads that file
|
||||
2. Loads {frontmatterStandards} to understand validation criteria
|
||||
3. Performs all frontmatter validation checks on that file (extract variables, check usage, validate paths)
|
||||
4. **EITHER** updates the validation report directly with its findings
|
||||
5. **OR** returns structured findings to parent for aggregation
|
||||
|
||||
**SUBPROCESS ANALYSIS PATTERN:**
|
||||
|
||||
For each file, the subprocess performs the following deep analysis:
|
||||
|
||||
#### Step 2.1: Extract Frontmatter Variables
|
||||
|
||||
```python
|
||||
# Algorithm to extract variables from frontmatter:
|
||||
1. Find content between first `---` and second `---`
|
||||
2. For each line, extract key before `:`
|
||||
3. Skip `name`, `description`, and comment lines starting with `#`
|
||||
4. Collect all variable names
|
||||
```
|
||||
|
||||
Example frontmatter:
|
||||
```yaml
|
||||
---
|
||||
# File References
|
||||
nextStepFile: './step-02-vision.md'
|
||||
outputFile: '{planning_artifacts}/product-brief-{{project_name}}.md'
|
||||
workflow_path: '{project-root}/...' # ❌ FORBIDDEN
|
||||
thisStepFile: './step-01-init.md' # ❌ Likely unused
|
||||
---
|
||||
```
|
||||
|
||||
Variables extracted: `nextStepFile`, `outputFile`, `workflow_path`, `thisStepFile`
|
||||
|
||||
#### Step 2.2: Check Each Variable Is Used
|
||||
|
||||
```python
|
||||
# Algorithm to check variable usage:
|
||||
for each variable in extracted_variables:
|
||||
search_body = "{variableName}" # with curly braces
|
||||
if search_body NOT found in step body (after frontmatter):
|
||||
MARK_AS_UNUSED(variable)
|
||||
```
|
||||
|
||||
**Example:**
|
||||
- Variable `nextStepFile`: Search body for `{nextStepFile}` → Found in line 166 ✅
|
||||
- Variable `thisStepFile`: Search body for `{thisStepFile}` → Not found ❌ VIOLATION
|
||||
|
||||
#### Step 2.3: Check Path Formats
|
||||
|
||||
For each variable containing a file path:
|
||||
|
||||
```python
|
||||
# Algorithm to validate paths:
|
||||
if path contains "{workflow_path}":
|
||||
MARK_AS_VIOLATION("workflow_path is forbidden - use relative paths")
|
||||
|
||||
if path is to another step file:
|
||||
if not path.startswith("./step-"):
|
||||
MARK_AS_VIOLATION("Step-to-step paths must be ./filename.md")
|
||||
|
||||
if path is to parent folder template:
|
||||
if not path.startswith("../"):
|
||||
MARK_AS_VIOLATION("Parent folder paths must be ../filename.md")
|
||||
|
||||
if path contains "{project-root}" and is internal workflow reference:
|
||||
MARK_AS_VIOLATION("Internal paths must be relative, not project-root")
|
||||
```
|
||||
|
||||
**RETURN FORMAT:**
|
||||
|
||||
Subprocess returns file name, frontmatter compliance status, unused variables found, path violations, and overall status (PASS/FAIL). Include specific variable names and violation details for documentation.
|
||||
|
||||
Check ALL files systematically. Return findings for compilation and appendage to validation report.
|
||||
|
||||
### 3. Aggregate Findings and Document Results
|
||||
|
||||
Document frontmatter validation results in the validation report showing:
|
||||
- Which files were checked
|
||||
- Frontmatter compliance status for each file
|
||||
- Unused variables found in each file
|
||||
- Path violations detected
|
||||
- Overall pass/fail status for each file
|
||||
|
||||
### 4. List All Violations
|
||||
|
||||
Document all violations found in the validation report, including:
|
||||
- Specific files with violations
|
||||
- Unused variable names and why they're unused
|
||||
- Forbidden patterns detected with explanation
|
||||
- Path format violations with details
|
||||
- Files that passed all checks
|
||||
|
||||
### 5. Append to Report
|
||||
|
||||
Update {validationReportFile} - replace "## Frontmatter Validation *Pending...*" with actual findings.
|
||||
|
||||
### 6. Save Report and Auto-Proceed
|
||||
|
||||
**CRITICAL:** Save the validation report BEFORE loading next step.
|
||||
|
||||
Then immediately load, read entire file, then execute {nextStepFile}.
|
||||
|
||||
**Display:**
|
||||
"**Frontmatter validation complete.** Proceeding to Menu Handling Validation..."
|
||||
|
||||
---
|
||||
|
||||
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
||||
|
||||
### ✅ SUCCESS:
|
||||
|
||||
- EVERY step file validated using subprocess optimization (Pattern 2: per-file deep analysis)
|
||||
- Each subprocess validates frontmatter, checks variable usage, validates paths
|
||||
- Structured findings returned to parent OR report updated directly by subprocesses
|
||||
- All violations documented with specific variable names
|
||||
- Findings aggregated into validation report
|
||||
- Report saved before proceeding
|
||||
- Next validation step loaded
|
||||
|
||||
### ❌ SYSTEM FAILURE:
|
||||
|
||||
- Not validating every file using subprocess optimization
|
||||
- Not systematically checking each variable for usage in subprocess
|
||||
- Missing forbidden pattern detection
|
||||
- Not documenting violations with specific details
|
||||
- Not returning structured findings OR updating report from subprocess
|
||||
- Not saving report before proceeding
|
||||
|
||||
**Master Rule:** Validation is systematic and thorough using subprocess optimization. DO NOT BE LAZY. For EACH file, launch a subprocess that validates frontmatter, checks variable usage, validates paths, and returns findings. Auto-proceed through all validation steps.
|
||||
Reference in New Issue
Block a user