13 KiB
13 KiB
Context-Aware Task Execution
Intelligent task selection that chooses lightweight vs comprehensive approaches based on story complexity, issue severity, and context indicators.
Context Assessment Framework
1. Environment-Adaptive Story Complexity Analysis (50-100 tokens)
# Auto-initialize environment detection if needed
if [ -z "$BMAD_PRIMARY_LANGUAGE" ]; then
Read tool: bmad-core/tasks/auto-language-init.md
fi
if [ -z "$USE_IDE_TOOLS" ]; then
Read tool: bmad-core/tasks/lightweight-ide-detection.md
fi
# Rapid story complexity assessment for task routing using environment-appropriate tools
assess_story_complexity() {
local STORY_FILE="$1"
echo "📊 Environment-Adaptive Complexity Analysis:"
echo "Environment: $DETECTED_IDE | Language: $BMAD_PRIMARY_LANGUAGE"
# Count complexity indicators using environment-appropriate methods
if [ "$USE_IDE_TOOLS" = "true" ]; then
# Use native IDE tools for pattern analysis
echo "Using native IDE tools for complexity assessment"
# Would use Grep tool with appropriate patterns for task detection
# Would use Read tool for story content analysis
fi
# Universal complexity analysis (works in all environments)
TASK_COUNT=$(grep -c "^\s*- \[ \]" "$STORY_FILE" || echo 0)
SUBTASK_COUNT=$(grep -c "^\s*- \[ \]" "$STORY_FILE" | xargs -I {} expr {} - $TASK_COUNT || echo 0)
FILE_COUNT=$(grep -A 20 "## File List" "$STORY_FILE" | grep -c "^\s*[-*]" || echo 0)
# Language-specific component patterns from auto-detection
COMPONENT_PATTERNS=$(echo "$BMAD_COMPONENT_PATTERNS" | tr ',' '|')
COMPONENT_COUNT=$(grep -A 10 "## Story" "$STORY_FILE" | grep -c -E "$COMPONENT_PATTERNS" || echo 0)
# Look for complexity keywords
COMPLEXITY_KEYWORDS=$(grep -c -i "refactor\|migrate\|restructure\|architectural\|integration\|complex" "$STORY_FILE" || echo 0)
# Calculate complexity score
COMPLEXITY_SCORE=0
if [ $TASK_COUNT -gt 8 ]; then COMPLEXITY_SCORE=$((COMPLEXITY_SCORE + 25)); fi
if [ $FILE_COUNT -gt 10 ]; then COMPLEXITY_SCORE=$((COMPLEXITY_SCORE + 20)); fi
if [ $COMPONENT_COUNT -gt 5 ]; then COMPLEXITY_SCORE=$((COMPLEXITY_SCORE + 15)); fi
if [ $COMPLEXITY_KEYWORDS -gt 2 ]; then COMPLEXITY_SCORE=$((COMPLEXITY_SCORE + 20)); fi
echo "📊 Story Complexity Assessment:"
echo "Tasks: $TASK_COUNT | Files: $FILE_COUNT | Components: $COMPONENT_COUNT"
echo "Complexity Score: $COMPLEXITY_SCORE/100"
if [ $COMPLEXITY_SCORE -lt 30 ]; then
echo "🟢 SIMPLE - Use lightweight tasks"
return 1
elif [ $COMPLEXITY_SCORE -lt 60 ]; then
echo "🟡 MODERATE - Use smart/targeted tasks"
return 2
else
echo "🔴 COMPLEX - Use comprehensive tasks"
return 3
fi
}
2. Environment-Adaptive Issue Severity Detection (50-100 tokens)
# Auto-initialize environment detection if needed
if [ -z "$BMAD_SIMULATION_PATTERNS" ]; then
Read tool: bmad-core/tasks/auto-language-init.md
fi
# Quick severity assessment for appropriate response using language-specific patterns
assess_issue_severity() {
local ISSUE_DESCRIPTION="$1"
echo "🔍 Environment-Adaptive Severity Assessment:"
echo "Language: $BMAD_PRIMARY_LANGUAGE | Environment: $DETECTED_IDE"
# Use language-specific severity patterns from auto-detection
CRITICAL_PATTERNS="build.*fail|crash|exception|error.*count.*[1-9][0-9]|security|production"
HIGH_PATTERNS="interface.*mismatch|architecture.*violation|regression|performance"
MEDIUM_PATTERNS="$(echo "$BMAD_SIMULATION_PATTERNS" | tr ',' '|')|missing.*test|code.*quality"
LOW_PATTERNS="formatting|documentation|naming|style"
if echo "$ISSUE_DESCRIPTION" | grep -qi "$CRITICAL_PATTERNS"; then
echo "🚨 CRITICAL - Use comprehensive analysis"
return 4
elif echo "$ISSUE_DESCRIPTION" | grep -qi "$HIGH_PATTERNS"; then
echo "🔴 HIGH - Use smart analysis with escalation"
return 3
elif echo "$ISSUE_DESCRIPTION" | grep -qi "$MEDIUM_PATTERNS"; then
echo "🟡 MEDIUM - Use targeted approach"
return 2
else
echo "🟢 LOW - Use lightweight fixes"
return 1
fi
}
Smart Task Routing
3. Environment-Adaptive Intelligent Task Selection (100-150 tokens)
# Auto-initialize environment detection if needed
if [ -z "$DETECTED_IDE" ]; then
Read tool: bmad-core/tasks/lightweight-ide-detection.md
fi
# Route to optimal task variant based on context using environment-appropriate methods
route_to_optimal_task() {
local TASK_TYPE="$1"
local STORY_FILE="$2"
local CONTEXT_INFO="$3"
echo "🎯 Environment-Adaptive Task Routing:"
echo "Environment: $DETECTED_IDE | Target Task: $TASK_TYPE"
# Assess context using environment-aware analysis
assess_story_complexity "$STORY_FILE"
STORY_COMPLEXITY=$?
assess_issue_severity "$CONTEXT_INFO"
ISSUE_SEVERITY=$?
# Determine optimal task variant
case "$TASK_TYPE" in
"reality-audit")
if [ $STORY_COMPLEXITY -eq 1 ] && [ $ISSUE_SEVERITY -le 2 ]; then
echo "🚀 Using lightweight-reality-audit.md (500 tokens vs 3000+)"
Read tool: bmad-core/tasks/lightweight-reality-audit.md
else
echo "🔍 Using reality-audit-comprehensive.md (3000+ tokens)"
Read tool: bmad-core/tasks/reality-audit-comprehensive.md
fi
;;
"build-context")
if [ $ISSUE_SEVERITY -le 2 ]; then
echo "🎯 Using smart-build-context.md (300-800 tokens vs 2000+)"
Read tool: bmad-core/tasks/smart-build-context.md
else
echo "🔍 Using build-context-analysis.md (2000+ tokens)"
Read tool: bmad-core/tasks/build-context-analysis.md
fi
;;
"story-audit")
# Check if incremental cache exists
if [ -f "tmp/story-code-mapping.json" ] && [ $STORY_COMPLEXITY -le 2 ]; then
echo "📋 Using incremental-story-mapping.md (50-200 tokens vs 2000+)"
Read tool: bmad-core/tasks/incremental-story-mapping.md
else
echo "🔍 Using story-to-code-audit.md (2000+ tokens)"
Read tool: bmad-core/tasks/story-to-code-audit.md
fi
;;
"remediation")
if [ $ISSUE_SEVERITY -le 2 ] && [ $STORY_COMPLEXITY -le 2 ]; then
echo "🚀 Using tiered-remediation.md (300-800 tokens vs 1800+)"
Read tool: bmad-core/tasks/tiered-remediation.md
else
echo "🔧 Using create-remediation-story.md (1800+ tokens)"
Read tool: bmad-core/tasks/create-remediation-story.md
fi
;;
esac
}
Context Caching System
4. Environment-Adaptive Context Cache Management (50-100 tokens)
# Auto-initialize environment detection if needed
if [ -z "$DETECTED_IDE" ]; then
Read tool: bmad-core/tasks/lightweight-ide-detection.md
fi
# Cache context assessments to avoid re-analysis with environment context
manage_context_cache() {
local STORY_FILE="$1"
local STORY_ID=$(basename "$STORY_FILE" .story.md)
local CACHE_FILE="tmp/context-cache.json"
echo "💾 Environment-Adaptive Cache Management:"
echo "Environment: $DETECTED_IDE | Language: $BMAD_PRIMARY_LANGUAGE"
# Check for existing assessment
if [ -f "$CACHE_FILE" ]; then
CACHED_COMPLEXITY=$(jq -r ".stories[\"$STORY_ID\"].complexity // \"unknown\"" "$CACHE_FILE")
CACHE_AGE=$(jq -r ".stories[\"$STORY_ID\"].last_updated // \"1970-01-01\"" "$CACHE_FILE")
# Use cache if less than 1 hour old
if [ "$CACHED_COMPLEXITY" != "unknown" ] && [ "$(date -d "$CACHE_AGE" +%s)" -gt "$(date -d '1 hour ago' +%s)" ]; then
echo "📋 Using cached complexity assessment: $CACHED_COMPLEXITY"
echo "$CACHED_COMPLEXITY"
return 0
fi
fi
# Perform fresh assessment and cache
assess_story_complexity "$STORY_FILE"
COMPLEXITY_RESULT=$?
# Update cache with environment context
mkdir -p tmp
if [ ! -f "$CACHE_FILE" ]; then
echo '{"stories": {}, "environment_info": {}}' > "$CACHE_FILE"
fi
jq --arg id "$STORY_ID" \
--arg complexity "$COMPLEXITY_RESULT" \
--arg updated "$(date -Iseconds)" \
--arg env "$DETECTED_IDE" \
--arg lang "$BMAD_PRIMARY_LANGUAGE" \
'.stories[$id] = {
"complexity": $complexity,
"last_updated": $updated,
"environment": $env,
"language": $lang
} | .environment_info = {
"last_detected_ide": $env,
"last_detected_language": $lang,
"cache_updated": $updated
}' \
"$CACHE_FILE" > tmp/context-temp.json && mv tmp/context-temp.json "$CACHE_FILE"
return $COMPLEXITY_RESULT
}
Agent Integration
5. Smart Command Wrappers
# Enhanced agent commands that use context-aware routing
# Dev Agent Commands
*smart-reality-audit() {
route_to_optimal_task "reality-audit" "$1" "$2"
}
*smart-build-context() {
route_to_optimal_task "build-context" "$1" "$2"
}
# QA Agent Commands
*smart-story-audit() {
route_to_optimal_task "story-audit" "$1" "$2"
}
*smart-remediation() {
route_to_optimal_task "remediation" "$1" "$2"
}
6. Environment-Adaptive Automatic Context Detection
# Auto-initialize environment detection if needed
if [ -z "$BMAD_BUILD_COMMAND" ]; then
Read tool: bmad-core/tasks/auto-language-init.md
fi
if [ -z "$USE_IDE_TOOLS" ]; then
Read tool: bmad-core/tasks/lightweight-ide-detection.md
fi
# Auto-detect context from current development state using environment-appropriate methods
auto_detect_context() {
local STORY_FILE="$1"
echo "🔍 Environment-Adaptive Context Detection:"
echo "Environment: $DETECTED_IDE | Language: $BMAD_PRIMARY_LANGUAGE"
# Recent build status using detected build command
BUILD_STATUS="unknown"
if [ -n "$BMAD_BUILD_COMMAND" ]; then
if [ "$USE_IDE_TOOLS" = "true" ]; then
echo "Using native IDE integration for build status"
# Would use Bash tool with clear description for build command
fi
# Universal build check (works in all environments)
if $BMAD_BUILD_COMMAND --help >/dev/null 2>&1; then
if $BMAD_BUILD_COMMAND >/dev/null 2>&1; then
BUILD_STATUS="passing"
else
BUILD_STATUS="failing"
fi
fi
fi
# Git status for change complexity using environment-appropriate methods
if [ "$USE_IDE_TOOLS" = "true" ]; then
echo "Using native IDE integration for git analysis"
# Would use appropriate IDE-specific git tools
fi
# Universal git analysis (works in all environments)
GIT_CHANGES=$(git status --porcelain 2>/dev/null | wc -l || echo 0)
RECENT_COMMITS=$(git log --oneline --since="1 day ago" 2>/dev/null | wc -l || echo 0)
# Generate context summary with environment information
CONTEXT_SUMMARY="env:$DETECTED_IDE,lang:$BMAD_PRIMARY_LANGUAGE,build:$BUILD_STATUS,changes:$GIT_CHANGES,commits:$RECENT_COMMITS"
echo "🔍 Auto-detected context: $CONTEXT_SUMMARY"
echo "Environment-adaptive context detection completed"
echo "$CONTEXT_SUMMARY"
}
Token Savings Analysis
Optimized Task Selection
| Context | Old Approach | New Approach | Savings |
|---|---|---|---|
| Simple Story + Low Issues | 3,000 tokens | 500 tokens | 83% |
| Simple Story + Medium Issues | 3,000 tokens | 800 tokens | 73% |
| Complex Story + High Issues | 3,000 tokens | 3,000 tokens | 0% (appropriate) |
| Mixed Complexity (Typical) | 3,000 tokens | 1,200 tokens | 60% |
Expected Daily Savings
Typical Development Day:
- Simple contexts (50%): 5 × 500 = 2,500 tokens (vs 15,000)
- Moderate contexts (30%): 3 × 1,200 = 3,600 tokens (vs 9,000)
- Complex contexts (20%): 2 × 3,000 = 6,000 tokens (vs 6,000)
Total: 12,100 tokens vs 30,000 tokens = 60% savings
Integration Points
Dev Agent Enhancement
enhanced_commands:
- "*smart-develop-story" # Context-aware story development
- "*smart-reality-audit" # Adaptive quality auditing
- "*smart-build-context" # Intelligent build analysis
QA Agent Enhancement
enhanced_commands:
- "*smart-story-audit" # Adaptive story-code analysis
- "*smart-remediation" # Tiered remediation approach
- "*smart-validation" # Context-aware validation
Success Criteria
- Context assessment (50-100 tokens per story)
- Smart task routing based on complexity and severity
- 60-80% token savings for routine operations
- Maintains comprehensive analysis for complex scenarios
- Context caching to avoid repeated assessments
- Integration with all major BMAD tasks
This provides the intelligent orchestration layer that ensures optimal resource usage while maintaining quality standards across all complexity levels!