{"id":32936312,"url":"https://github.com/guyernest/step-functions-agent","last_synced_at":"2026-01-31T08:14:42.831Z","repository":{"id":269211955,"uuid":"906057596","full_name":"guyernest/step-functions-agent","owner":"guyernest","description":"CDK project to build AWS Serverless AI Agent with Lambda and Step Functions.","archived":false,"fork":false,"pushed_at":"2026-01-27T06:37:03.000Z","size":465260,"stargazers_count":33,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-27T07:48:40.318Z","etag":null,"topics":["agents","ai","cdk","lambda","step-functions"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guyernest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-20T04:33:59.000Z","updated_at":"2026-01-27T06:32:09.000Z","dependencies_parsed_at":"2025-01-23T03:19:25.726Z","dependency_job_id":"ea55b254-6fb5-46e0-a192-93af7c9a7b30","html_url":"https://github.com/guyernest/step-functions-agent","commit_stats":null,"previous_names":["guyernest/step-functions-agent"],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/guyernest/step-functions-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyernest%2Fstep-functions-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyernest%2Fstep-functions-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyernest%2Fstep-functions-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyernest%2Fstep-functions-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guyernest","download_url":"https://codeload.github.com/guyernest/step-functions-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyernest%2Fstep-functions-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28863054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"online","status_checked_at":"2026-01-29T02:00:06.714Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","cdk","lambda","step-functions"],"created_at":"2025-11-12T00:01:41.725Z","updated_at":"2026-01-29T05:04:33.620Z","avatar_url":"https://github.com/guyernest.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Step Functions AI Agent Framework\n\n\u003e **Enterprise-Grade Serverless AI Agent Platform**\n\u003e\n\u003e Build production-ready AI agents with complete flexibility in LLM providers and tools, backed by a comprehensive management UI for enterprise operations.\n\n## Overview\n\nThe Step Functions AI Agent Framework consists of two integrated components:\n\n### 1. **AI Agent Runtime** (Lambda + Step Functions)\nA serverless, highly flexible agent execution platform that provides:\n- **Any LLM Provider**: Anthropic Claude, OpenAI GPT, Google Gemini, Amazon Bedrock, xAI Grok, DeepSeek\n- **Any Programming Language**: Build tools in Python, TypeScript, Rust, Go, Java, or any language\n- **Serverless Scale**: Automatic scaling with AWS Step Functions orchestration\n- **Complete Observability**: Full tracing, metrics, and cost tracking built-in\n\n### 2. **Management UI** (AWS Amplify)\nA comprehensive admin interface for enterprise operations:\n- **Agent Management**: Configure agents, assign tools, update LLM models\n- **Tool Registry**: Manage and test tools across all agents\n- **Execution Monitoring**: Real-time execution history with filtering and search\n- **Cost Analytics**: Track usage and costs by agent, model, and time period\n- **Enterprise Security**: IAM-integrated access, secret management, audit logging\n\n## Key Features\n\n### Agent Framework\n- ✅ **Multi-Provider LLM Support** - Switch providers without code changes\n- ✅ **Unified Rust LLM Service** - High-performance, provider-agnostic interface\n- ✅ **Language-Agnostic Tools** - Build tools in any language\n- ✅ **Human-in-the-Loop** - Built-in approval workflows\n- ✅ **Modular Architecture** - Shared infrastructure, reusable tools\n- ✅ **Long Content Support** - Handle extensive documents and conversations\n\n### Management UI\n- 📊 **Execution Dashboard** - Fast, indexed execution history with date/agent filtering\n- 🔧 **Agent Configuration** - Dynamic system prompts, model selection, tool assignment\n- 🧪 **Integrated Testing** - Test agents and tools directly from the UI\n- 📈 **Metrics \u0026 Analytics** - CloudWatch integration, token usage, cost tracking\n- 🔐 **Enterprise Security** - Cognito authentication, IAM permissions, secret manager\n- 🚀 **Real-time Updates** - EventBridge-powered execution tracking\n\n## Architecture\n\n### Component Overview\n\n```mermaid\ngraph TB\n    subgraph UI[\"Management UI (Amplify)\"]\n        Console[Admin Console]\n        ExecutionHistory[Execution History]\n        Analytics[Analytics Dashboard]\n    end\n\n    subgraph Registry[\"Registries (DynamoDB)\"]\n        AgentReg[Agent Registry]\n        ToolReg[Tool Registry]\n        ModelReg[Model Registry]\n    end\n\n    subgraph Runtime[\"Agent Runtime\"]\n        StepFunctions[Step Functions]\n        LLMService[LLM Service]\n        Tools[Tool Lambdas]\n    end\n\n    Console --\u003e AgentReg\n    Console --\u003e ToolReg\n    StepFunctions --\u003e LLMService\n    StepFunctions --\u003e Tools\n    StepFunctions --\u003e AgentReg\n    StepFunctions --\u003e ToolReg\n    ExecutionHistory --\u003e StepFunctions\n```\n\n### Agent Execution Flow\n\n```mermaid\nstateDiagram-v2\n    [*] --\u003e LoadConfig: Start Execution\n    LoadConfig --\u003e LoadTools: Load from Registry\n    LoadTools --\u003e CallLLM: Get Tool Definitions\n    CallLLM --\u003e UpdateMetrics: LLM Response\n    UpdateMetrics --\u003e CheckTools: Record Usage\n    CheckTools --\u003e ExecuteTools: Tools Requested\n    CheckTools --\u003e Success: No Tools Needed\n    ExecuteTools --\u003e CallLLM: Return Results\n    Success --\u003e [*]: Complete\n```\n\n## Quick Start\n\n### Prerequisites\n\n- AWS Account with appropriate permissions\n- Python 3.12+\n- Node.js 18+ (for CDK and Amplify UI)\n- AWS CDK CLI: `npm install -g aws-cdk`\n- UV for Python: `pip install uv`\n\n### Initial Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-org/step-functions-agent.git\ncd step-functions-agent\n\n# Install Python dependencies\nuv pip install -r requirements.txt\n\n# Bootstrap CDK (first time only)\ncdk bootstrap\n\n# Set environment\nexport ENVIRONMENT=prod\n```\n\n### Deploy Core Infrastructure\n\n```bash\n# 1. Deploy shared infrastructure (once per environment)\ncdk deploy SharedInfrastructureStack-prod\ncdk deploy AgentRegistryStack-prod\n\n# 2. Deploy LLM service (choose one)\ncdk deploy SharedUnifiedRustLLMStack-prod  # Recommended: High-performance unified service\n\n# 3. Configure API keys in AWS Secrets Manager\naws secretsmanager create-secret \\\n    --name /ai-agent/llm-secrets/prod \\\n    --secret-string '{\n        \"ANTHROPIC_API_KEY\": \"sk-ant-...\",\n        \"OPENAI_API_KEY\": \"sk-...\",\n        \"GEMINI_API_KEY\": \"...\"\n    }'\n```\n\n### Deploy Management UI\n\n```bash\ncd ui_amplify\n\n# Install dependencies\nnpm install\n\n# Deploy to Amplify (creates hosted UI)\nnpx ampx sandbox  # For development\n# OR\nnpx ampx pipeline-deploy --branch main  # For production\n```\n\nThe UI will be available at your Amplify app URL (e.g., `https://main.xxxx.amplifyapp.com`)\n\n## Building Your First Agent\n\n### 1. Create Agent Stack\n\nCreate a new file `stacks/agents/my_agent_stack.py`:\n\n```python\nfrom aws_cdk import Fn\nfrom stacks.agents.modular_base_agent_unified_llm_stack import ModularBaseAgentUnifiedLLMStack\n\nclass MyAgentStack(ModularBaseAgentUnifiedLLMStack):\n    def __init__(self, scope, construct_id, env_name=\"prod\", **kwargs):\n\n        # Import required tools from registry\n        db_tool_arn = Fn.import_value(f\"DBInterfaceToolLambdaArn-{env_name}\")\n\n        # Configure tools for this agent\n        tool_configs = [\n            {\n                \"tool_name\": \"query_database\",\n                \"lambda_arn\": db_tool_arn,\n                \"requires_activity\": False\n            }\n        ]\n\n        # Define agent behavior\n        system_prompt = \"\"\"You are a data analyst assistant.\n        Help users query and analyze database information.\n        Always explain your findings clearly.\"\"\"\n\n        # Initialize agent with Unified LLM\n        super().__init__(\n            scope, construct_id,\n            agent_name=\"data-analyst\",\n            unified_llm_arn=Fn.import_value(f\"SharedUnifiedRustLLMLambdaArn-{env_name}\"),\n            tool_configs=tool_configs,\n            env_name=env_name,\n            system_prompt=system_prompt,\n            **kwargs\n        )\n```\n\n### 2. Register in app.py\n\nAdd to `app.py`:\n\n```python\nfrom stacks.agents.my_agent_stack import MyAgentStack\n\n# Deploy your agent\nMyAgentStack(app, \"DataAnalystAgentStack-prod\", env_name=\"prod\")\n```\n\n### 3. Deploy\n\n```bash\ncdk deploy DataAnalystAgentStack-prod\n```\n\nThe agent will automatically register in the Agent Registry and appear in the Management UI!\n\n## Building Tools\n\n### Tool Structure\n\n```\nlambda/tools/my-tool/\n├── index.py              # Lambda handler\n├── requirements.txt      # Dependencies\n└── tool_definition.json  # Tool schema for LLM\n```\n\n### Tool Lambda Handler\n\n```python\ndef lambda_handler(event, context):\n    \"\"\"\n    Standard tool interface compatible with all LLM providers\n\n    Args:\n        event: {\n            \"name\": \"tool_name\",\n            \"id\": \"unique_tool_use_id\",\n            \"input\": {\n                # Tool-specific parameters\n            }\n        }\n\n    Returns:\n        {\n            \"type\": \"tool_result\",\n            \"tool_use_id\": event[\"id\"],\n            \"name\": event[\"name\"],\n            \"content\": \"Result as string or JSON\"\n        }\n    \"\"\"\n    tool_input = event[\"input\"]\n\n    # Implement tool logic\n    result = perform_action(tool_input)\n\n    return {\n        \"type\": \"tool_result\",\n        \"tool_use_id\": event[\"id\"],\n        \"name\": event[\"name\"],\n        \"content\": result\n    }\n```\n\n### Tool Definition\n\nCreate `tool_definition.json`:\n\n```json\n{\n  \"name\": \"my_tool\",\n  \"description\": \"Clear description of what the tool does for the LLM\",\n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"parameter1\": {\n        \"type\": \"string\",\n        \"description\": \"Description of parameter1\"\n      },\n      \"parameter2\": {\n        \"type\": \"number\",\n        \"description\": \"Description of parameter2\"\n      }\n    },\n    \"required\": [\"parameter1\"]\n  }\n}\n```\n\n### Create Tool Stack\n\n```python\nfrom aws_cdk import aws_lambda as lambda_, Duration\nfrom constructs import Construct\nfrom .base_tool_stack import BaseToolStack\n\nclass MyToolStack(BaseToolStack):\n    def __init__(self, scope: Construct, construct_id: str, env_name: str = \"prod\", **kwargs):\n        super().__init__(scope, construct_id, env_name=env_name, **kwargs)\n\n        # Create Lambda function\n        tool_lambda = lambda_.Function(\n            self, \"MyToolFunction\",\n            runtime=lambda_.Runtime.PYTHON_3_12,\n            handler=\"index.lambda_handler\",\n            code=lambda_.Code.from_asset(\"lambda/tools/my-tool\"),\n            timeout=Duration.seconds(30),\n            environment={\n                \"LOG_LEVEL\": \"INFO\"\n            }\n        )\n\n        # Register in Tool Registry\n        self.register_tool(\n            tool_name=\"my_tool\",\n            tool_lambda=tool_lambda,\n            tool_definition_path=\"lambda/tools/my-tool/tool_definition.json\"\n        )\n```\n\n### Deploy Tool\n\n```bash\ncdk deploy MyToolStack-prod\n```\n\nThe tool is now available for any agent to use!\n\n## Built-in Tools\n\nThe framework includes production-ready tools you can use immediately:\n\n### Data \u0026 Query Tools\n- **SQL Database Tool** (`DBInterfaceToolStack`) - Query databases, execute SQL, analyze data\n- **GraphQL Tool** (`GraphQLToolStack`) - Query GraphQL APIs with type safety\n- **Web Research Tool** (`WebResearchToolStack`) - Web scraping and research\n\n### Integration Tools\n- **Microsoft Graph Tool** (`MicrosoftGraphToolStack`) - Office 365, Teams, SharePoint integration\n- **Google Maps Tool** (`GoogleMapsToolStack`) - Location services, geocoding, directions\n- **Firecrawl Tool** - Advanced web scraping with AI\n\n### Compute Tools\n- **Code Execution Tool** (`E2BToolStack`) - Safe Python/JavaScript code execution\n- **Batch Processor Tool** - Process large datasets in parallel\n- **Local Agent Tool** - Execute commands on remote machines securely\n\n### Monitoring Tools\n- **CloudWatch Tool** (`CloudWatchToolStack`) - AWS metrics, logs, and alarms\n- **Sagemaker Tool** - ML model deployment and inference\n\nDeploy any tool:\n```bash\ncdk deploy DBInterfaceToolStack-prod\ncdk deploy GoogleMapsToolStack-prod\n```\n\n## Management UI Features\n\n### Execution History\n- **Fast Indexed Search** - DynamoDB-backed execution index for instant queries\n- **Advanced Filtering** - Filter by agent, status, date range (UTC-aware)\n- **Real-time Updates** - EventBridge integration for live execution tracking\n- **Detailed Views** - Full execution trace, token usage, cost breakdown\n\n### Agent Management\n- **Dynamic Configuration** - Update system prompts without redeployment\n- **Model Selection** - Switch LLM providers and models on the fly\n- **Tool Assignment** - Add/remove tools from agents via UI\n- **Version Control** - Track configuration changes over time\n\n### Testing \u0026 Validation\n- **Agent Testing** - Execute test prompts with custom inputs\n- **Tool Testing** - Validate tool functionality independently\n- **Execution Replay** - Re-run failed executions with same inputs\n- **Health Checks** - Automated validation of agent configurations\n\n### Analytics \u0026 Monitoring\n- **Cost Tracking** - Real-time cost estimates per execution\n- **Token Usage** - Input/output token metrics by model\n- **Performance Metrics** - Execution duration, error rates, trends\n- **CloudWatch Integration** - Deep-dive into logs and traces\n\n## Enterprise Features\n\n### Security\n- ✅ **IAM Integration** - Fine-grained access control with AWS IAM\n- ✅ **Cognito Authentication** - Secure user authentication for UI\n- ✅ **Secrets Manager** - Encrypted storage for API keys and credentials\n- ✅ **VPC Support** - Deploy in private subnets with VPC endpoints\n- ✅ **Audit Logging** - Complete audit trail via CloudWatch and CloudTrail\n- ✅ **Resource Tags** - Automatic tagging for compliance and cost allocation\n\n### Observability\n- ✅ **X-Ray Tracing** - End-to-end distributed tracing\n- ✅ **CloudWatch Metrics** - Custom metrics for all operations\n- ✅ **Structured Logging** - JSON logs with correlation IDs\n- ✅ **Execution Index** - Fast searchable execution history\n- ✅ **Cost Attribution** - Track costs by agent, model, and execution\n\n### Reliability\n- ✅ **Automatic Retries** - Built-in retry logic with exponential backoff\n- ✅ **Error Handling** - Graceful degradation and error recovery\n- ✅ **Circuit Breakers** - Protect downstream services\n- ✅ **Rate Limiting** - Prevent API quota exhaustion\n- ✅ **Health Checks** - Automated monitoring and alerting\n\n### Cost Management\n- ✅ **Token Tracking** - Real-time token usage monitoring\n- ✅ **Cost Estimation** - Predict execution costs before running\n- ✅ **Budget Alerts** - CloudWatch alarms for cost thresholds\n- ✅ **Model Optimization** - Automatic model selection for cost/quality trade-offs\n- ✅ **Execution Limits** - Configurable limits per agent\n\n## LLM Providers\n\n### Supported Providers\n\n| Provider | Models | Best For | Pricing |\n|----------|--------|----------|---------|\n| **Anthropic Claude** | Sonnet 4, Opus 3.5 | Complex reasoning, long context | $$$ |\n| **OpenAI** | GPT-4o, GPT-4o-mini | Versatile, code generation | $$$ |\n| **Google Gemini** | 1.5 Pro, Flash | Multimodal, fast responses | $$ |\n| **Amazon Bedrock** | Nova Pro, Nova Lite | AWS native, cost-effective | $$ |\n| **xAI** | Grok 2, Grok 2 mini | Latest capabilities | $$ |\n| **DeepSeek** | DeepSeek V3 | Specialized tasks | $ |\n\n### Provider Configuration\n\nAll providers are configured through the Unified Rust LLM Service or individual provider Lambdas. API keys are stored in AWS Secrets Manager.\n\nUpdate API keys:\n```bash\naws secretsmanager update-secret \\\n    --secret-id /ai-agent/llm-secrets/prod \\\n    --secret-string '{\n        \"ANTHROPIC_API_KEY\": \"sk-ant-new-key\",\n        \"OPENAI_API_KEY\": \"sk-new-key\"\n    }'\n```\n\n### Dynamic Model Selection\n\nChange models via Management UI or agent configuration:\n\n```python\n# In agent stack\nself.llm_provider = \"anthropic\"\nself.llm_model = \"claude-sonnet-4-20250514\"\n\n# Or via UI: Agent Management \u003e Select Agent \u003e Update Model\n```\n\n## Deployment Patterns\n\n### Multi-Environment Strategy\n\n```bash\n# Development environment\nexport ENVIRONMENT=dev\ncdk deploy SharedInfrastructureStack-dev\ncdk deploy MyAgentStack-dev\n\n# Production environment\nexport ENVIRONMENT=prod\ncdk deploy SharedInfrastructureStack-prod\ncdk deploy MyAgentStack-prod\n```\n\n### Recommended Deployment Order\n\n1. **Core Infrastructure** (once per environment)\n   ```bash\n   cdk deploy SharedInfrastructureStack-prod\n   cdk deploy AgentRegistryStack-prod\n   ```\n\n2. **LLM Service** (choose based on needs)\n   ```bash\n   # High-performance unified service (recommended)\n   cdk deploy SharedUnifiedRustLLMStack-prod\n\n   # OR traditional multi-provider\n   cdk deploy SharedLLMStack-prod\n   ```\n\n3. **Tools** (deploy only what you need)\n   ```bash\n   cdk deploy DBInterfaceToolStack-prod\n   cdk deploy GoogleMapsToolStack-prod\n   cdk deploy WebResearchToolStack-prod\n   ```\n\n4. **Agents** (your custom agents)\n   ```bash\n   cdk deploy MyAgentStack-prod\n   ```\n\n5. **Management UI** (Amplify)\n   ```bash\n   cd ui_amplify\n   npx ampx pipeline-deploy --branch main\n   ```\n\n## Monitoring \u0026 Operations\n\n### CloudWatch Dashboards\n\nAccess pre-built dashboards:\n- **Execution Overview** - All agent executions, success rates, duration\n- **Cost Analysis** - Token usage and estimated costs by model\n- **Error Tracking** - Failed executions, error patterns, retry metrics\n\n### Example Queries\n\n```sql\n-- Cost analysis by agent\nfields @timestamp, agent_name, model, input_tokens, output_tokens\n| stats sum(input_tokens * 0.003 / 1000) as input_cost,\n        sum(output_tokens * 0.015 / 1000) as output_cost\n  by agent_name, model\n\n-- Execution performance\nfields @timestamp, agent_name, duration\n| stats avg(duration) as avg_duration,\n        max(duration) as max_duration,\n        count() as total_executions\n  by agent_name\n```\n\n### Alerts\n\nConfigure CloudWatch Alarms:\n- High error rate (\u003e5% failures)\n- Slow executions (\u003e30s duration)\n- High costs (\u003e$100/day)\n- Token limit warnings\n\n## Documentation\n\n### Getting Started\n- [Deployment Guide](docs/DEPLOYMENT_GUIDE.md) - Complete deployment walkthrough\n- [Quick Start Tutorial](docs/QUICK_START.md) - Build your first agent in 10 minutes\n\n### Development Guides\n- [Agent Development](docs/AGENT_DEVELOPMENT.md) - Creating custom agents\n- [Tool Development](docs/TOOL_DEVELOPMENT.md) - Building new tools\n- [Testing Guide](docs/TESTING_GUIDE.md) - Testing strategies\n\n### Advanced Topics\n- [Modular Architecture](docs/MODULAR_ARCHITECTURE.md) - System design patterns\n- [Long Content Support](docs/LONG_CONTENT_FEATURE.md) - Handling large documents\n- [Human Approval Workflows](docs/HUMAN_APPROVAL.md) - Adding approval steps\n- [Activity Testing](docs/ACTIVITY_TESTING_GUIDE.md) - Testing remote activities\n\n### Operations\n- [Monitoring Guide](docs/MONITORING.md) - Observability setup\n- [Security Best Practices](docs/SECURITY.md) - Security hardening\n- [Cost Optimization](docs/COST_OPTIMIZATION.md) - Reducing operational costs\n- [Troubleshooting](docs/TROUBLESHOOTING.md) - Common issues and solutions\n\n### Management UI\n- [UI User Guide](ui_amplify/README.md) - Using the admin interface\n- [Execution Index](ui_amplify/EXECUTION_INDEX_SUMMARY.md) - Fast execution queries\n- [Analytics Dashboard](ui_amplify/docs/ANALYTICS.md) - Using metrics and analytics\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n### Development Setup\n\n```bash\n# Create virtual environment\nuv venv\nsource .venv/bin/activate\n\n# Install dev dependencies\nuv pip install -r requirements-dev.txt\n\n# Run tests\npytest\n\n# Format code\nblack .\nruff check .\n```\n\n### UI Development\n\n```bash\ncd ui_amplify\n\n# Install dependencies\nnpm install\n\n# Run local development server\nnpm run dev\n\n# Run tests\nnpm test\n```\n\n## Project Structure\n\n```\nstep-functions-agent/\n├── app.py                      # CDK app entry point\n├── stacks/\n│   ├── agents/                 # Agent stack definitions\n│   ├── tools/                  # Tool stack definitions\n│   ├── shared_llm/             # LLM service stacks\n│   └── infrastructure/         # Core infrastructure\n├── lambda/\n│   ├── tools/                  # Tool Lambda functions\n│   │   ├── db-interface/\n│   │   ├── google-maps/\n│   │   └── web-research/\n│   └── unified_llm/            # Unified LLM service (Rust)\n├── ui_amplify/                 # Management UI (Amplify Gen 2)\n│   ├── amplify/                # Backend configuration\n│   ├── src/                    # React frontend\n│   └── scripts/                # Utility scripts\n└── docs/                       # Documentation\n```\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/your-org/step-functions-agent/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/your-org/step-functions-agent/discussions)\n- **Documentation**: [docs.your-project.com](https://docs.your-project.com)\n\n## License\n\nThis project is licensed under the MIT License - see [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- AWS Step Functions team for serverless orchestration\n- Anthropic, OpenAI, Google, Amazon, xAI, and DeepSeek for LLM APIs\n- AWS Amplify team for the Gen 2 framework\n- Open-source community for tools and libraries\n\n---\n\n**Built with ❤️ using AWS CDK, Step Functions, and Amplify**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyernest%2Fstep-functions-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguyernest%2Fstep-functions-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyernest%2Fstep-functions-agent/lists"}