- 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
6.4 KiB
Input Document Discovery Standards
Purpose: How workflows discover, validate, and select input documents from prior workflows or external sources.
Discovery Patterns
Pattern 1: Prior Workflow Output
Use when: Workflow is part of a sequence (e.g., PRD → Architecture → Epics)
Example: BMM module pipeline - each of these are a workflow with many steps:
brainstorming → research → brief → PRD → UX → architecture → epics → sprint-planning
Each workflow checks for output from prior workflow(s).
Pattern 2: Module Folder Search
Use when: Documents stored in known project location
Example: Manager review workflow searches {project_folder}/employee-notes/
Pattern 3: User-Specified Paths
Use when: User provides document locations
Example: Tax workflow asks for financial statement paths
Pattern 4: Pattern-Based Discovery
Use when: Search by file naming pattern
Example: Find all *-brief.md files in {planning_artifacts}/
Discovery Step Pattern
When: Step 1 (init) or Step 2 (discovery)
Frontmatter:
---
# Input discovery variables
inputDocuments: [] # Populated with discovered docs
requiredInputCount: 1 # Minimum required to proceed
optionalInputCount: 0 # Additional docs user may provide
moduleInputFolder: '{planning_artifacts}' # Where to search
inputFilePatterns: # File patterns to match
- '*-prd.md'
- '*-ux.md'
---
Discovery Logic:
## 1. Check for Known Prior Workflow Outputs
Search in order:
1. {module_output_folder}/[known-prior-workflow-output].md
2. {project_folder}/[standard-locations]/
3. {planning_artifacts}/
4. User-provided paths
## 2. Pattern-Based Search
If no known prior workflow, search by patterns:
- Look for files matching {inputFilePatterns}
- Search in {moduleInputFolder}
- Search in {project_folder}/docs/
## 3. Present Findings to User
"Found these documents that may be relevant:
- [1] prd-my-project.md (created 3 days ago)
- [2] ux-research.md (created 1 week ago)
- [3] competitor-analysis.md
Which would you like to use? You can select multiple, or provide additional paths."
## 4. Confirm and Load
User confirms selection → Load selected documents
Add to {inputDocuments} array in output frontmatter
Required vs Optional Inputs
Required Inputs
Workflow cannot proceed without these.
Example: Architecture workflow requires PRD
## INPUT REQUIREMENT:
This workflow requires a Product Requirements Document to proceed.
Searching for PRD in:
- {bmm_creations_output_folder}/prd-*.md
- {planning_artifacts}/*-prd.md
- {project_folder}/docs/*-prd.md
[If found:]
"Found PRD: prd-my-project.md. Use this?"
[If not found:]
"No PRD found. This workflow requires a PRD to continue.
Please provide the path to your PRD, or run the PRD workflow first."
Optional Inputs
Workflow can proceed without these, but user may include.
Example: UX workflow can use research docs if available
## OPTIONAL INPUTS:
This workflow can incorporate research documents if available.
Searching for research in:
- {bmm_creations_output_folder}/research-*.md
- {project_folder}/research/
[If found:]
"Found these research documents:
- [1] user-interviews.md
- [2] competitive-analysis.md
Include any? (None required to proceed)"
Module Workflow Chaining
For modules with sequential workflows:
Frontmatter in workflow.md:
---
## INPUT FROM PRIOR WORKFLOFS
### Required Inputs:
- {module_output_folder}/prd-{project_name}.md
### Optional Inputs:
- {module_output_folder}/ux-research-{project_name}.md
- {project_folder}/docs/competitor-analysis.md
---
Step 1 discovery:
## 1. Discover Prior Workflow Outputs
Check for required inputs:
1. Look for {module_output_folder}/prd-{project_name}.md
2. If missing → Error: "Please run PRD workflow first"
3. If found → Confirm with user
Check for optional inputs:
1. Search {module_output_folder}/ for research-*.md
2. Search {project_folder}/docs/ for *-analysis.md
3. Present findings to user
4. Add selections to {inputDocuments}
Input Validation
After discovery, validate inputs:
## INPUT VALIDATION:
For each discovered document:
1. Load and read frontmatter
2. Check workflowType field (should match expected)
3. Check completeness (stepsCompleted should be complete)
4. Check date (warn if document is very old)
[If validation fails:]
"Document prd-my-project.md appears incomplete.
Last step: step-06 (of 11)
Recommend completing PRD workflow before proceeding.
Proceed anyway? [Y]es [N]o"
Multiple Input Selection
When user can select multiple documents:
## Document Selection
"Found these relevant documents:
[1] prd-my-project.md (3 days ago) ✓ Recommended
[2] prd-v1.md (2 months ago) ⚠ Older version
[3] ux-research.md (1 week ago)
Enter numbers to include (comma-separated), or 'none' to skip:
> 1, 3
Selected: prd-my-project.md, ux-research.md"
Track in frontmatter:
---
inputDocuments:
- path: '{output_folder}/prd-my-project.md'
type: 'prd'
source: 'prior-workflow'
selected: true
- path: '{output_folder}/ux-research.md'
type: 'research'
source: 'prior-workflow'
selected: true
---
Search Path Variables
Common module variables for input discovery:
| Variable | Purpose |
|---|---|
{module_output_folder} |
Prior workflow outputs |
{planning_artifacts} |
General planning docs |
{project_folder}/docs |
Project documentation |
{product_knowledge} |
Product-specific knowledge |
{user_documents} |
User-provided location |
Discovery Step Template
---
name: 'step-01-init'
description: 'Initialize and discover input documents'
# Input Discovery
inputDocuments: []
requiredInputCount: 1
moduleInputFolder: '{module_output_folder}'
inputFilePatterns:
- '*-prd.md'
---
Validation Checklist
For input discovery:
- Required inputs defined in step frontmatter
- Search paths defined (module variables or patterns)
- User confirmation before using documents
- Validation of document completeness
- Clear error messages when required inputs missing
- Support for multiple document selection
- Optional inputs clearly marked as optional