Cli Swaig Test
swaig-test CLI
Summary: Command-line tool for testing agents and SWAIG functions locally without deploying to production.
Overview
The swaig-test tool loads agent files and allows you to:
- Generate and inspect SWML output
- Test SWAIG functions with arguments
- Simulate serverless environments (Lambda, CGI, Cloud Functions, Azure)
- Debug agent configuration and dynamic behavior
- Test DataMap functions with live webhook calls
- Execute functions with mock call data
Command Syntax
swaig-test <agent_path> [options]
Quick Reference
| Command | Purpose |
|---|---|
swaig-test agent.py | List available tools |
swaig-test agent.py --dump-swml | Generate SWML document |
swaig-test agent.py --list-tools | List all SWAIG functions |
swaig-test agent.py --list-agents | List agents in multi-agent file |
swaig-test agent.py --exec fn --arg val | Execute a function |
swaig-test agent.py --help-examples | Show comprehensive examples |
swaig-test agent.py --help-platforms | Show serverless platform options |
Basic Usage
## Generate SWML document (pretty printed)
swaig-test agent.py --dump-swml
## Generate raw JSON for piping to jq
swaig-test agent.py --dump-swml --raw | jq '.'
## List all SWAIG functions
swaig-test agent.py --list-tools
## Execute a function with CLI-style arguments
swaig-test agent.py --exec search --query "AI agents" --limit 5
## Execute with verbose output
swaig-test agent.py --verbose --exec search --query "test"
Actions
Choose one action per command:
| Action | Description |
|---|---|
--list-agents | List all agents in the file |
--list-tools | List all SWAIG functions in the agent |
--dump-swml | Generate and output SWML document |
--exec FUNCTION | Execute a function with CLI arguments |
| (default) | If no action specified, defaults to --list-tools |
Common Options
| Option | Description |
|---|---|
-v, --verbose | Enable verbose output with debug information |
--raw | Output raw JSON only (for piping to jq) |
--agent-class NAME | Specify agent class for multi-agent files |
--route PATH | Specify agent by route (e.g., /healthcare) |
SWML Generation
Basic Generation
## Pretty-printed SWML
swaig-test agent.py --dump-swml
## Raw JSON for processing
swaig-test agent.py --dump-swml --raw
## Pretty-print with jq
swaig-test agent.py --dump-swml --raw | jq '.'
Extract Specific Fields
## Extract SWAIG functions
swaig-test agent.py --dump-swml --raw | jq '.sections.main[1].ai.SWAIG.functions'
## Extract prompt
swaig-test agent.py --dump-swml --raw | jq '.sections.main[1].ai.prompt'
## Extract languages
swaig-test agent.py --dump-swml --raw | jq '.sections.main[1].ai.languages'
Generate with Fake Call Data
## With comprehensive fake call data (call_id, from, to, etc.)
swaig-test agent.py --dump-swml --fake-full-data
## Customize call configuration
swaig-test agent.py --dump-swml --call-type sip --from-number +15551234567
SWML Generation Options
| Option | Default | Description |
|---|---|---|
--call-type | webrtc | Call type: sip or webrtc |
--call-direction | inbound | Call direction: inbound or outbound |
--call-state | created | Call state value |
--from-number | (none) | Override from/caller number |
--to-extension | (none) | Override to/extension number |
--fake-full-data | false | Use comprehensive fake post_data |
Function Execution
CLI-Style Arguments (Recommended)
## Simple function call
swaig-test agent.py --exec search --query "AI agents"
## Multiple arguments
swaig-test agent.py --exec book_reservation \
--name "John Doe" \
--date "2025-01-20" \
--party_size 4
## With verbose output
swaig-test agent.py --verbose --exec search --query "test"
Type Conversion
Arguments are automatically converted:
| Type | Example | Notes |
|---|---|---|
| String | --name "John Doe" | Quoted or unquoted |
| Integer | --count 5 | Numeric values |
| Float | --threshold 0.75 | Decimal values |
| Boolean | --active true | true/false |
Legacy JSON Syntax
Still supported for backwards compatibility:
swaig-test agent.py search '{"query": "AI agents", "limit": 5}'
Function Execution Options
| Option | Description |
|---|---|
--minimal | Use minimal post_data (function args only) |
--fake-full-data | Use comprehensive fake call data |
--custom-data | JSON string with custom post_data overrides |
Multi-Agent Files
When a file contains multiple agent classes:
## List all agents in file
swaig-test multi_agent.py --list-agents
## Use specific agent by class name
swaig-test multi_agent.py --agent-class SalesAgent --list-tools
swaig-test multi_agent.py --agent-class SalesAgent --dump-swml
## Use specific agent by route
swaig-test multi_agent.py --route /sales --list-tools
swaig-test multi_agent.py --route /support --exec create_ticket --issue "Login problem"
Dynamic Agent Testing
Test agents that configure themselves based on request data:
## Test with query parameters
swaig-test dynamic_agent.py --dump-swml --query-params '{"tier":"premium"}'
## Test with custom headers
swaig-test dynamic_agent.py --dump-swml --header "Authorization=Bearer token123"
swaig-test dynamic_agent.py --dump-swml --header "X-Customer-ID=12345"
## Test with custom request body
swaig-test dynamic_agent.py --dump-swml --method POST --body '{"custom":"data"}'
## Test with user variables
swaig-test dynamic_agent.py --dump-swml --user-vars '{"preferences":{"language":"es"}}'
## Combined dynamic configuration
swaig-test dynamic_agent.py --dump-swml \
--query-params '{"tier":"premium","region":"eu"}' \
--header "X-Customer-ID=12345" \
--user-vars '{"preferences":{"language":"es"}}'
Data Customization Options
| Option | Description |
|---|---|
--user-vars | JSON string for userVariables |
--query-params | JSON string for query parameters |
--header | Add HTTP header (KEY=VALUE format) |
--override | Override specific value (path.to.key=value) |
--override-json | Override with JSON value (path.to.key='{"nested":true}') |
Advanced Data Overrides
## Override specific values
swaig-test agent.py --dump-swml \
--override call.state=answered \
--override call.timeout=60
## Override with JSON values
swaig-test agent.py --dump-swml \
--override-json vars.custom='{"key":"value","nested":{"data":true}}'
## Combine multiple override types
swaig-test agent.py --dump-swml \
--call-type sip \
--user-vars '{"vip":"true"}' \
--header "X-Source=test" \
--override call.project_id=my-project \
--verbose
Serverless Simulation
Test agents in simulated serverless environments:
| Platform | Value | Description |
|---|---|---|
| AWS Lambda | lambda | Simulates Lambda environment |
| CGI | cgi | Simulates CGI deployment |
| Cloud Functions | cloud_function | Simulates Google Cloud Functions |
| Azure Functions | azure_function | Simulates Azure Functions |
AWS Lambda Simulation
## Basic Lambda simulation
swaig-test agent.py --simulate-serverless lambda --dump-swml
## With custom Lambda configuration
swaig-test agent.py --simulate-serverless lambda \
--aws-function-name prod-agent \
--aws-region us-west-2 \
--dump-swml
## With Lambda function URL
swaig-test agent.py --simulate-serverless lambda \
--aws-function-name my-agent \
--aws-function-url https://xxx.lambda-url.us-west-2.on.aws \
--dump-swml
## With API Gateway
swaig-test agent.py --simulate-serverless lambda \
--aws-api-gateway-id abc123 \
--aws-stage prod \
--dump-swml
AWS Lambda Options
| Option | Description |
|---|---|
--aws-function-name | Lambda function name |
--aws-function-url | Lambda function URL |
--aws-region | AWS region |
--aws-api-gateway-id | API Gateway ID for API Gateway URLs |
--aws-stage | API Gateway stage (default: prod) |
CGI Simulation
## Basic CGI (host required)
swaig-test agent.py --simulate-serverless cgi \
--cgi-host example.com \
--dump-swml
## CGI with HTTPS
swaig-test agent.py --simulate-serverless cgi \
--cgi-host example.com \
--cgi-https \
--dump-swml
## CGI with custom script path
swaig-test agent.py --simulate-serverless cgi \
--cgi-host example.com \
--cgi-script-name /cgi-bin/agent.py \
--cgi-path-info /custom/path \
--dump-swml
CGI Options
| Option | Description |
|---|---|
--cgi-host | CGI server hostname (REQUIRED for CGI simulation) |
--cgi-script-name | CGI script name/path |
--cgi-https | Use HTTPS for CGI URLs |
--cgi-path-info | CGI PATH_INFO value |
Google Cloud Functions Simulation
## Basic Cloud Functions
swaig-test agent.py --simulate-serverless cloud_function --dump-swml
## With project configuration
swaig-test agent.py --simulate-serverless cloud_function \
--gcp-project my-project \
--gcp-region us-central1 \
--dump-swml
## With custom function URL
swaig-test agent.py --simulate-serverless cloud_function \
--gcp-function-url https://us-central1-myproject.cloudfunctions.net/agent \
--dump-swml
GCP Options
| Option | Description |
|---|---|
--gcp-project | Google Cloud project ID |
--gcp-function-url | Google Cloud Function URL |
--gcp-region | Google Cloud region |
--gcp-service | Google Cloud service name |
Azure Functions Simulation
## Basic Azure Functions
swaig-test agent.py --simulate-serverless azure_function --dump-swml
## With environment
swaig-test agent.py --simulate-serverless azure_function \
--azure-env production \
--dump-swml
## With custom function URL
swaig-test agent.py --simulate-serverless azure_function \
--azure-function-url https://myapp.azurewebsites.net/api/agent \
--dump-swml
Azure Options
| Option | Description |
|---|---|
--azure-env | Azure Functions environment |
--azure-function-url | Azure Function URL |
Environment Variables
Set environment variables for testing:
## Set individual variables
swaig-test agent.py --simulate-serverless lambda \
--env API_KEY=secret123 \
--env DEBUG=1 \
--exec my_function
## Load from environment file
swaig-test agent.py --simulate-serverless lambda \
--env-file production.env \
--dump-swml
## Combine both
swaig-test agent.py --simulate-serverless lambda \
--env-file .env \
--env API_KEY=override_key \
--dump-swml
DataMap Function Testing
DataMap functions execute their configured webhooks:
## Test DataMap function (makes actual HTTP requests)
swaig-test agent.py --exec get_weather --city "New York"
## With verbose output to see webhook details
swaig-test agent.py --verbose --exec get_weather --city "New York"
Cross-Platform Testing
Compare agent behavior across serverless platforms:
## Test across all platforms
for platform in lambda cgi cloud_function azure_function; do
echo "Testing $platform..."
if [ "$platform" = "cgi" ]; then
swaig-test agent.py --simulate-serverless $platform \
--cgi-host example.com --exec my_function --param value
else
swaig-test agent.py --simulate-serverless $platform \
--exec my_function --param value
fi
done
## Compare webhook URLs across platforms
swaig-test agent.py --simulate-serverless lambda --dump-swml --raw | \
jq '.sections.main[1].ai.SWAIG.functions[].web_hook_url'
swaig-test agent.py --simulate-serverless cgi --cgi-host example.com \
--dump-swml --raw | jq '.sections.main[1].ai.SWAIG.functions[].web_hook_url'
Output Options
| Option | Description |
|---|---|
--raw | Machine-readable JSON output (suppresses logs) |
--verbose | Include debug information and detailed output |
Extended Help
## Show platform-specific serverless options
swaig-test agent.py --help-platforms
## Show comprehensive usage examples
swaig-test agent.py --help-examples
Complete Workflow Examples
Development Workflow
## 1. Inspect generated SWML
swaig-test agent.py --dump-swml --raw | jq '.'
## 2. List available functions
swaig-test agent.py --list-tools
## 3. Test a specific function
swaig-test agent.py --exec search --query "test" --verbose
## 4. Test with fake call data
swaig-test agent.py --exec book_appointment \
--name "John" --date "2025-01-20" \
--fake-full-data --verbose
Serverless Deployment Testing
## Test Lambda configuration
swaig-test agent.py --simulate-serverless lambda \
--aws-function-name my-agent \
--aws-region us-east-1 \
--dump-swml --raw > swml.json
## Verify webhook URLs are correct
cat swml.json | jq '.sections.main[1].ai.SWAIG.functions[].web_hook_url'
## Test function execution in Lambda environment
swaig-test agent.py --simulate-serverless lambda \
--aws-function-name my-agent \
--exec process_order --order_id "12345" --verbose
Multi-Agent Testing
## Discover agents
swaig-test multi_agent.py --list-agents
## Test each agent
swaig-test multi_agent.py --agent-class RouterAgent --dump-swml
swaig-test multi_agent.py --agent-class SalesAgent --list-tools
swaig-test multi_agent.py --agent-class SupportAgent \
--exec create_ticket --issue "Cannot login"
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error (file not found, invalid args, execution error) |
Troubleshooting
| Issue | Solution |
|---|---|
| Agent file not found | Check path is correct |
| Multiple agents found | Use --agent-class or --route to specify |
| Function not found | Use --list-tools to see available functions |
| CGI host required | Add --cgi-host for CGI simulation |
| Invalid JSON | Check --query-params and --body syntax |
| Import errors | Ensure all dependencies are installed |