name: "Stdio Context Management Demo"
version: "1.0.0"
dsl_version: "1.0.0"
limits:
max_stdout_bytes: 524288 max_stderr_bytes: 131072 max_combined_bytes: 655360 truncation_strategy: tail
max_context_bytes: 102400 max_context_tasks: 10
external_storage_threshold: 5242880 external_storage_dir: ".workflow_outputs"
compress_external: true
cleanup_strategy:
type: highest_relevance
keep_count: 15
agents:
data_fetcher:
description: "Fetches large datasets from external sources"
model: "claude-sonnet-4-5"
tools: [WebSearch, WebFetch, Read, Write]
data_processor:
description: "Processes and transforms data"
model: "claude-sonnet-4-5"
tools: [Read, Write, Bash]
analyzer:
description: "Analyzes processed data and generates insights"
model: "claude-sonnet-4-5"
tools: [Read, Write]
reporter:
description: "Creates final reports"
model: "claude-sonnet-4-5"
tools: [Read, Write]
tasks:
fetch_data:
description: "Fetch dataset from external API"
agent: "data_fetcher"
output: "raw_data.json"
limits:
max_stdout_bytes: 2097152 truncation_strategy: both
script:
language: bash
content: |
# Simulate fetching large dataset
echo "Fetching data from API..."
curl -s https://api.example.com/large-dataset > raw_data.json
echo "Downloaded $(wc -l < raw_data.json) records"
clean_data:
description: "Clean and validate the fetched data"
agent: "data_processor"
depends_on: [fetch_data]
output: "clean_data.json"
context:
mode: automatic
min_relevance: 0.8 max_bytes: 50000
script:
language: bash
content: |
# Clean and validate data
python3 scripts/clean_data.py raw_data.json clean_data.json
echo "Cleaned data: $(jq length clean_data.json) valid records"
transform_data:
description: "Transform data into analysis-ready format"
agent: "data_processor"
depends_on: [clean_data]
output: "transformed_data.json"
context:
mode: manual
include_tasks: [clean_data] exclude_tasks: [fetch_data] max_bytes: 30000
script:
language: bash
content: |
python3 scripts/transform.py clean_data.json transformed_data.json
echo "Transformed $(jq length transformed_data.json) records"
analyze_stats:
description: "Perform statistical analysis on the transformed data"
agent: "analyzer"
depends_on: [transform_data]
output: "statistics.json"
script:
language: bash
content: |
python3 scripts/analyze.py transformed_data.json statistics.json
cat statistics.json
detect_patterns:
description: "Detect patterns and anomalies in the data"
agent: "analyzer"
depends_on: [transform_data]
parallel_with: [analyze_stats]
output: "patterns.json"
script:
language: bash
content: |
python3 scripts/detect_patterns.py transformed_data.json patterns.json
echo "Found $(jq '.patterns | length' patterns.json) patterns"
generate_insights:
description: "Generate insights from statistical analysis and patterns"
agent: "analyzer"
depends_on: [analyze_stats, detect_patterns]
output: "insights.md"
context:
mode: automatic
min_relevance: 0.5
max_tasks: 5
create_report:
description: "Create comprehensive final report"
agent: "reporter"
depends_on: [generate_insights]
output: "final_report.md"
context:
mode: none
limits:
max_stdout_bytes: 1048576 truncation_strategy: summary
verify_output:
description: "Verify all outputs were generated correctly"
agent: "data_processor"
depends_on: [create_report]
script:
language: bash
content: |
# Verify all expected files exist
for file in raw_data.json clean_data.json transformed_data.json statistics.json patterns.json insights.md final_report.md; do
if [ -f "$file" ]; then
echo "✓ $file exists ($(du -h $file | cut -f1))"
else
echo "✗ $file missing"
exit 1
fi
done
echo "All outputs verified successfully"
workflows:
main:
description: "Main data processing workflow"
tasks: [fetch_data, clean_data, transform_data, analyze_stats, detect_patterns, generate_insights, create_report, verify_output]
execution_mode: sequential