Showing preview only (6,674K chars total). Download the full file or copy to clipboard to get everything.
Repository: aws/bedrock-agentcore-starter-toolkit
Branch: main
Commit: 2d3cb0d99add
Files: 522
Total size: 6.2 MB
Directory structure:
gitextract_olk65dvn/
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ └── bug_report.md
│ ├── branch-protection.json
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── deploy-docs.yml
│ ├── integration_testing.yml
│ ├── pr-automerge.yml
│ ├── release.yml
│ ├── security-scanning.yml
│ ├── security.yml
│ ├── slack-issue-notification.yml
│ ├── slack-open-prs-notification.yml
│ ├── test-pypi-release.yml
│ └── test.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .python-version
├── CHANGELOG.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── SECURITY.md
├── buildspec-lambda-package.yml
├── documentation/
│ ├── .gitignore
│ ├── README.md
│ ├── docs/
│ │ ├── api-reference/
│ │ │ ├── cli.md
│ │ │ ├── identity.md
│ │ │ ├── memory.md
│ │ │ ├── runtime.md
│ │ │ └── tools.md
│ │ ├── examples/
│ │ │ ├── README.md
│ │ │ ├── agentcore-quickstart-example.md
│ │ │ ├── async-processing.md
│ │ │ ├── gateway-integration.md
│ │ │ ├── infrastructure-as-code/
│ │ │ │ ├── cloudformation/
│ │ │ │ │ ├── basic-runtime/
│ │ │ │ │ │ ├── basic-cfn-deploy-readme.md
│ │ │ │ │ │ ├── basic-cfn-template.md
│ │ │ │ │ │ └── basic-deploy-bash-script.md
│ │ │ │ │ ├── end-to-end-weather-agent/
│ │ │ │ │ │ ├── cloudformation-deploy-with-tools-and-memory-bash-script.md
│ │ │ │ │ │ ├── cloudformation-deploy-with-tools-and-memory-readme.md
│ │ │ │ │ │ └── cloudformation-deploy-with-tools-and-memory-template.md
│ │ │ │ │ ├── mcp-server-runtime/
│ │ │ │ │ │ ├── cloudfomation-deploy-with-mcp-tool-bash-script.md
│ │ │ │ │ │ ├── cloudformation-deploy-with-mcp-tool-readme.md
│ │ │ │ │ │ └── cloudformation-deploy-with-mcp-tool-template.md
│ │ │ │ │ └── multi-agent-runtime/
│ │ │ │ │ ├── cloudformation-multi-agent-deploy-bash-script.md
│ │ │ │ │ ├── cloudformation-multi-agent-deploy-readme.md
│ │ │ │ │ └── cloudformation-multi-agent-template.md
│ │ │ │ └── terraform/
│ │ │ │ ├── basic-runtime/
│ │ │ │ │ ├── basic-terraform-deploy-readme.md
│ │ │ │ │ └── basic-terraform-deploy-sample.md
│ │ │ │ ├── end-to-end-weather-agent/
│ │ │ │ │ ├── weather-agent-terraform-deploy-readme.md
│ │ │ │ │ └── weather-agent-terraform-deploy-sample.md
│ │ │ │ ├── mcp-server-agentcore-runtime/
│ │ │ │ │ ├── mcp-server-terraform-deploy-readme.md
│ │ │ │ │ └── mcp-server-terraform-deploy-sample.md
│ │ │ │ └── multi-agent-runtime/
│ │ │ │ ├── multi-agent-terraform-deploy-readme.md
│ │ │ │ └── multi-agent-terraform-deploy-sample.md
│ │ │ ├── integrations/
│ │ │ │ └── agentic-frameworks/
│ │ │ │ ├── adk/
│ │ │ │ │ ├── adk-agent-readme.md
│ │ │ │ │ └── adk-agent.md
│ │ │ │ ├── autogen/
│ │ │ │ │ ├── autogen-agent-readme.md
│ │ │ │ │ └── autogen-agent.md
│ │ │ │ ├── claude-sdk/
│ │ │ │ │ ├── claude-agent-readme.md
│ │ │ │ │ └── claude-agent.md
│ │ │ │ ├── langgraph/
│ │ │ │ │ ├── langgraph-agent-readme.md
│ │ │ │ │ └── langgraph-agent.md
│ │ │ │ ├── llamaindex/
│ │ │ │ │ ├── llama-agent-readme.md
│ │ │ │ │ └── llama-agent.md
│ │ │ │ ├── openai/
│ │ │ │ │ ├── openai-agent-basic-example.md
│ │ │ │ │ ├── openai-agent-handoff-example.md
│ │ │ │ │ └── openai-agent-readme.md
│ │ │ │ ├── pydanticai/
│ │ │ │ │ └── pydanticai-agent.md
│ │ │ │ └── strands/
│ │ │ │ ├── strands-agent-basic-example.md
│ │ │ │ ├── strands-agent-openai-identity-example.md
│ │ │ │ └── strands-agent-streaming-example.md
│ │ │ ├── memory_gateway_agent.md
│ │ │ ├── observability/
│ │ │ │ └── dynatrace/
│ │ │ │ ├── observability-agent-and-dynatrace-init.md
│ │ │ │ ├── observability-basic-agent.md
│ │ │ │ └── observability-dynatrace.md
│ │ │ ├── policy-integration.md
│ │ │ ├── runtime-framework-agents.md
│ │ │ ├── semantic_search.md
│ │ │ └── session-management.md
│ │ ├── index.md
│ │ ├── mcp/
│ │ │ └── agentcore_runtime_deployment.md
│ │ ├── stylesheets/
│ │ │ └── extra.css
│ │ └── user-guide/
│ │ ├── builtin-tools/
│ │ │ ├── quickstart-browser.md
│ │ │ └── quickstart-code-interpreter.md
│ │ ├── create/
│ │ │ └── quickstart.md
│ │ ├── dev/
│ │ │ └── quickstart.md
│ │ ├── evaluation/
│ │ │ └── quickstart.md
│ │ ├── gateway/
│ │ │ └── quickstart.md
│ │ ├── identity/
│ │ │ ├── quickstart-aws-jwt.md
│ │ │ ├── quickstart-with-cli.md
│ │ │ └── quickstart.md
│ │ ├── import-agent/
│ │ │ ├── configuration.md
│ │ │ ├── design.md
│ │ │ ├── overview.md
│ │ │ └── quickstart.md
│ │ ├── memory/
│ │ │ └── quickstart.md
│ │ ├── observability/
│ │ │ └── quickstart.md
│ │ ├── policy/
│ │ │ ├── overview.md
│ │ │ └── quickstart.md
│ │ ├── runtime/
│ │ │ ├── a2a.md
│ │ │ ├── async.md
│ │ │ ├── notebook.md
│ │ │ ├── overview.md
│ │ │ ├── permissions.md
│ │ │ └── quickstart.md
│ │ └── security/
│ │ ├── agentcore-vpc.md
│ │ ├── security-vpc-condition.md
│ │ └── vpc-interface-endpoints.md
│ ├── mkdocs.yaml
│ └── overrides/
│ └── main.html
├── pyproject.toml
├── scripts/
│ ├── bump-version.py
│ ├── prepare-release.py
│ ├── setup-branch-protection.sh
│ └── validate-release.py
├── src/
│ └── bedrock_agentcore_starter_toolkit/
│ ├── __init__.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ ├── cli_ui.py
│ │ ├── common.py
│ │ ├── create/
│ │ │ ├── __init__.py
│ │ │ ├── commands.py
│ │ │ ├── import_agent/
│ │ │ │ ├── README.md
│ │ │ │ ├── __init__.py
│ │ │ │ ├── agent_info.py
│ │ │ │ └── commands.py
│ │ │ └── prompt_util.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── gateway/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── identity/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── memory/
│ │ │ ├── __init__.py
│ │ │ ├── browser.py
│ │ │ └── commands.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ └── runtime/
│ │ ├── __init__.py
│ │ ├── _configure_impl.py
│ │ ├── commands.py
│ │ ├── configuration_manager.py
│ │ └── dev_command.py
│ ├── create/
│ │ ├── __init__.py
│ │ ├── baseline_feature.py
│ │ ├── configure/
│ │ │ ├── __init__.py
│ │ │ └── resolve.py
│ │ ├── constants.py
│ │ ├── features/
│ │ │ ├── __init__.py
│ │ │ ├── autogen/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── base_feature.py
│ │ │ ├── cdk/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── common/
│ │ │ │ │ ├── .gitignore.j2
│ │ │ │ │ ├── .npmignore.j2
│ │ │ │ │ ├── README.j2
│ │ │ │ │ ├── cdk.json.j2
│ │ │ │ │ ├── jest.config.js.j2
│ │ │ │ │ ├── package.json.j2
│ │ │ │ │ └── tsconfig.json.j2
│ │ │ │ └── monorepo/
│ │ │ │ ├── bin/
│ │ │ │ │ └── cdk.ts.j2
│ │ │ │ └── lib/
│ │ │ │ ├── stacks/
│ │ │ │ │ ├── agentcore-stack.ts.j2
│ │ │ │ │ ├── docker-image-stack.ts.j2
│ │ │ │ │ └── index.ts.j2
│ │ │ │ ├── test/
│ │ │ │ │ └── cdk.test.ts.j2
│ │ │ │ └── types.ts.j2
│ │ │ ├── crewai/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── googleadk/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ └── gemini/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── langchain_langgraph/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── openaiagents/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── strands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ └── terraform/
│ │ │ ├── __init__.py
│ │ │ ├── feature.py
│ │ │ └── templates/
│ │ │ └── monorepo/
│ │ │ ├── bedrock_agentcore.tf.j2
│ │ │ ├── main.tf.j2
│ │ │ ├── terraform.tfvars.j2
│ │ │ └── variables.tf.j2
│ │ ├── generate.py
│ │ ├── progress/
│ │ │ ├── __init__.py
│ │ │ └── progress_sink.py
│ │ ├── templates/
│ │ │ ├── monorepo/
│ │ │ │ ├── .gitignore.j2
│ │ │ │ ├── README.md.j2
│ │ │ │ ├── mcp/
│ │ │ │ │ └── lambda/
│ │ │ │ │ ├── handler.py.j2
│ │ │ │ │ └── requirements.txt.j2
│ │ │ │ ├── pyproject.toml.j2
│ │ │ │ ├── src/
│ │ │ │ │ └── main.py.j2
│ │ │ │ └── test/
│ │ │ │ ├── __init__.py.j2
│ │ │ │ └── test_main.py.j2
│ │ │ └── runtime_only/
│ │ │ ├── .gitignore.j2
│ │ │ ├── README.md.j2
│ │ │ ├── pyproject.toml.j2
│ │ │ ├── src/
│ │ │ │ └── main.py.j2
│ │ │ └── test/
│ │ │ ├── __init__.py.j2
│ │ │ └── test_main.py.j2
│ │ ├── types.py
│ │ └── util/
│ │ ├── __init__.py
│ │ ├── console_print.py
│ │ ├── create_agentcore_yaml.py
│ │ ├── dotenv.py
│ │ └── subprocess.py
│ ├── notebook/
│ │ ├── __init__.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ └── client.py
│ │ ├── memory/
│ │ │ ├── __init__.py
│ │ │ └── memory.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ └── observability.py
│ │ └── runtime/
│ │ ├── __init__.py
│ │ └── bedrock_agentcore.py
│ ├── operations/
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ ├── control_plane_client.py
│ │ │ ├── create_role.py
│ │ │ ├── data_plane_client.py
│ │ │ ├── evaluator_processor.py
│ │ │ ├── formatters.py
│ │ │ ├── models.py
│ │ │ ├── on_demand_processor.py
│ │ │ └── online_processor.py
│ │ ├── gateway/
│ │ │ ├── __init__.py
│ │ │ ├── client.py
│ │ │ ├── constants.py
│ │ │ ├── create_lambda.py
│ │ │ ├── create_role.py
│ │ │ └── exceptions.py
│ │ ├── identity/
│ │ │ ├── __init__.py
│ │ │ ├── helpers.py
│ │ │ └── oauth2_callback_server.py
│ │ ├── memory/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── constants.py
│ │ │ ├── manager.py
│ │ │ ├── memory_formatters.py
│ │ │ ├── memory_visualizer.py
│ │ │ ├── models/
│ │ │ │ ├── DictWrapper.py
│ │ │ │ ├── Memory.py
│ │ │ │ ├── MemoryStrategy.py
│ │ │ │ ├── MemorySummary.py
│ │ │ │ ├── __init__.py
│ │ │ │ └── strategies/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base.py
│ │ │ │ ├── custom.py
│ │ │ │ ├── self_managed.py
│ │ │ │ ├── semantic.py
│ │ │ │ ├── summary.py
│ │ │ │ └── user_preference.py
│ │ │ └── strategy_validator.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ ├── builders.py
│ │ │ ├── client.py
│ │ │ ├── delivery.py
│ │ │ ├── formatters.py
│ │ │ ├── message_parser.py
│ │ │ ├── query_builder.py
│ │ │ ├── telemetry.py
│ │ │ ├── trace_processor.py
│ │ │ └── trace_visualizer.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ ├── client.py
│ │ │ ├── constants.py
│ │ │ └── exceptions.py
│ │ └── runtime/
│ │ ├── __init__.py
│ │ ├── configure.py
│ │ ├── create_role.py
│ │ ├── destroy.py
│ │ ├── exceptions.py
│ │ ├── invoke.py
│ │ ├── launch.py
│ │ ├── models.py
│ │ ├── status.py
│ │ ├── stop_session.py
│ │ └── vpc_validation.py
│ ├── services/
│ │ ├── __init__.py
│ │ ├── codebuild.py
│ │ ├── ecr.py
│ │ ├── import_agent/
│ │ │ ├── __init__.py
│ │ │ ├── assets/
│ │ │ │ ├── memory_manager_template.py
│ │ │ │ ├── requirements_langchain.j2
│ │ │ │ ├── requirements_strands.j2
│ │ │ │ └── template_fixtures_merged.json
│ │ │ ├── scripts/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_bedrock_translate.py
│ │ │ │ ├── bedrock_to_langchain.py
│ │ │ │ └── bedrock_to_strands.py
│ │ │ └── utils.py
│ │ ├── runtime.py
│ │ ├── s3.py
│ │ └── xray.py
│ └── utils/
│ ├── aws.py
│ ├── endpoints.py
│ ├── lambda_utils.py
│ ├── logging_config.py
│ ├── paths.py
│ ├── python_env.py
│ ├── runtime/
│ │ ├── __init__.py
│ │ ├── agentcore_identity.py
│ │ ├── config.py
│ │ ├── container.py
│ │ ├── create.py
│ │ ├── create_with_iam_eventual_consistency.py
│ │ ├── entrypoint.py
│ │ ├── logs.py
│ │ ├── package.py
│ │ ├── policy_template.py
│ │ ├── schema.py
│ │ └── templates/
│ │ ├── Dockerfile.j2
│ │ ├── Dockerfile.node.j2
│ │ ├── dockerignore.node.template
│ │ ├── dockerignore.template
│ │ ├── execution_role_policy.json.j2
│ │ └── execution_role_trust_policy.json.j2
│ └── server_addresses.py
├── tests/
│ ├── __init__.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── gateway/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── identity/
│ │ │ ├── __init__.py
│ │ │ └── test_identity.py
│ │ ├── memory/
│ │ │ ├── __init__.py
│ │ │ ├── test_browser.py
│ │ │ └── test_commands.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── runtime/
│ │ │ ├── __init__.py
│ │ │ ├── test_commands.py
│ │ │ ├── test_configuration_manager.py
│ │ │ ├── test_configure_impl.py
│ │ │ ├── test_dev_command.py
│ │ │ └── test_dev_command_additions.py
│ │ ├── test_cli_ui.py
│ │ └── test_common.py
│ ├── client/
│ │ ├── __init__.py
│ │ ├── test_evaluation_client.py
│ │ ├── test_memory.py
│ │ └── test_observability.py
│ ├── conftest.py
│ ├── conftest_mock.py
│ ├── create/
│ │ ├── __init__.py
│ │ ├── __snapshots__/
│ │ │ ├── test_monorepo_snapshots.ambr
│ │ │ ├── test_monorepo_snapshots_with_config.ambr
│ │ │ └── test_runtime_snapshots.ambr
│ │ ├── features/
│ │ │ ├── test_iac_features.py
│ │ │ └── test_sdk_features.py
│ │ ├── fixtures/
│ │ │ └── scenarios/
│ │ │ ├── scenario_0/
│ │ │ │ └── .bedrock_agentcore.yaml
│ │ │ └── scenario_1/
│ │ │ └── .bedrock_agentcore.yaml
│ │ ├── test_baseline_feature.py
│ │ ├── test_constants.py
│ │ ├── test_generate.py
│ │ ├── test_helper/
│ │ │ ├── __init__.py
│ │ │ ├── create_scenarios.py
│ │ │ ├── run_create_with_config.py
│ │ │ └── syrupy_util.py
│ │ ├── test_memory.py
│ │ ├── test_monorepo_snapshots.py
│ │ ├── test_monorepo_snapshots_with_config.py
│ │ ├── test_resolve.py
│ │ ├── test_runtime_snapshots.py
│ │ ├── test_util_dotenv.py
│ │ ├── test_util_subprocess.py
│ │ └── test_util_yaml.py
│ ├── fixtures/
│ │ ├── project_config_multiple.yaml
│ │ └── project_config_single.yaml
│ ├── notebook/
│ │ └── runtime/
│ │ ├── test_bedrock_agentcore.py
│ │ └── test_bedrock_agentcore_code_zip.py
│ ├── operations/
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ ├── test_control_plane_client.py
│ │ │ ├── test_create_role.py
│ │ │ ├── test_data_plane_client.py
│ │ │ ├── test_evaluator_processor.py
│ │ │ ├── test_models.py
│ │ │ ├── test_on_demand_processor.py
│ │ │ └── test_online_processor.py
│ │ ├── gateway/
│ │ │ ├── test_gateway_client.py
│ │ │ ├── test_gateway_client_init.py
│ │ │ └── test_gateway_create_role.py
│ │ ├── identity/
│ │ │ ├── test_helpers.py
│ │ │ └── test_oauth2_callback_server.py
│ │ ├── memory/
│ │ │ ├── test_formatters.py
│ │ │ ├── test_manager.py
│ │ │ ├── test_strategy_types.py
│ │ │ ├── test_strategy_validator.py
│ │ │ └── test_visualizer.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ ├── conftest.py
│ │ │ ├── fixtures/
│ │ │ │ ├── raw_otel_langchain_runtime_logs.json
│ │ │ │ ├── raw_otel_langchain_spans.json
│ │ │ │ ├── raw_otel_langchain_tool_runtime_logs.json
│ │ │ │ ├── raw_otel_strands_bedrock_runtime_logs.json
│ │ │ │ ├── raw_otel_strands_bedrock_spans.json
│ │ │ │ ├── raw_otel_strands_openai_runtime_logs.json
│ │ │ │ └── raw_otel_strands_openai_spans.json
│ │ │ ├── test_builders.py
│ │ │ ├── test_client.py
│ │ │ ├── test_e2e_observability.py
│ │ │ ├── test_formatters.py
│ │ │ ├── test_message_parser.py
│ │ │ ├── test_observability_delivery.py
│ │ │ ├── test_query_builder.py
│ │ │ ├── test_trace_processor.py
│ │ │ └── test_trace_visualizer.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ └── test_policy_client.py
│ │ └── runtime/
│ │ ├── test_configure.py
│ │ ├── test_create_role.py
│ │ ├── test_destroy.py
│ │ ├── test_invoke.py
│ │ ├── test_launch.py
│ │ ├── test_status.py
│ │ ├── test_stopsession.py
│ │ └── test_vpc_validation.py
│ ├── services/
│ │ ├── import_agent/
│ │ │ ├── data/
│ │ │ │ ├── bedrock_config.json
│ │ │ │ ├── bedrock_config_multi_agent.json
│ │ │ │ └── bedrock_config_no_schema.json
│ │ │ └── test_import_agent.py
│ │ ├── test_codebuild.py
│ │ ├── test_ecr.py
│ │ ├── test_runtime.py
│ │ ├── test_runtime_conflict_error.py
│ │ ├── test_s3.py
│ │ └── test_xray.py
│ └── utils/
│ ├── runtime/
│ │ ├── test_agentcore_identity.py
│ │ ├── test_config.py
│ │ ├── test_container.py
│ │ ├── test_create.py
│ │ ├── test_entrypoint.py
│ │ ├── test_package.py
│ │ ├── test_policy_template.py
│ │ └── test_schema.py
│ ├── test_aws.py
│ ├── test_endpoints.py
│ ├── test_lambda_utils.py
│ └── test_logging_config.py
└── tests_integ/
├── __init__.py
├── cli/
│ ├── __init__.py
│ ├── identity/
│ │ ├── __init__.py
│ │ ├── test_identity_aws_jwt.py
│ │ ├── test_identity_flow.py
│ │ └── test_identity_m2m.py
│ └── runtime/
│ ├── __init__.py
│ ├── base_test.py
│ └── test_simple_agent.py
├── gateway/
│ ├── README.md
│ ├── gateway_quickstart.ipynb
│ ├── test_cognito_token.py
│ ├── test_create_gateway_role.py
│ ├── test_egress_auth.py
│ └── test_gateway_cognito.py
├── identity/
│ └── access_token_3LO.py
├── memory/
│ ├── memory-manager.ipynb
│ └── test_create_memory.py
├── notebook/
│ ├── evaluation_inegration_test_.ipynb
│ ├── memory_integration_test.ipynb
│ ├── observability_integration_test.ipynb
│ └── test_notebook_runtime.py
├── observability/
│ └── test_observability_delivery_integration.py
├── policy/
│ └── test_policy_gateway_integration.py
├── strands_agent/
│ ├── __init__.py
│ └── agent.py
├── tools/
│ ├── __init__.py
│ ├── my_mcp_client.py
│ ├── my_mcp_client_remote.py
│ ├── my_mcp_server.py
│ └── setup_cognito.sh
└── utils/
└── config.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/CODEOWNERS
================================================
# Code ownership for automatic PR review assignments
# Default owners for everything in the repo
* @aws/bedrock-agentcore-team
# Python source code
/src/ @aws/bedrock-agentcore-team
# Tests
/tests/ @aws/bedrock-agentcore-team
/tests_integ/ @aws/bedrock-agentcore-team
# Documentation
/documentation/ @aws/bedrock-agentcore-team
*.md @aws/bedrock-agentcore-team
# Configuration files
pyproject.toml @aws/bedrock-agentcore-team
.pre-commit-config.yaml @aws/bedrock-agentcore-team
*.yaml @aws/bedrock-agentcore-team
*.yml @aws/bedrock-agentcore-team
# GitHub configuration
/.github/ @aws/bedrock-agentcore-team
# Security-sensitive files
SECURITY.md @aws/bedrock-agentcore-team
/.github/workflows/*security*.yml @aws/bedrock-agentcore-team
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: '[BUG] '
labels: 'bug'
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Install package with '...'
2. Run command '....'
3. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Error Output**
```
Paste any error messages or stack traces here
```
**Environment:**
- OS: [e.g. Ubuntu 22.04, macOS 13.0, Windows 11]
- Python version: [e.g. 3.10.5]
- Package version: [e.g. 0.1.0]
- Installation method: [pip, conda, from source]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/branch-protection.json
================================================
{
"main": {
"required_status_checks": {
"strict": true,
"contexts": [
"Test Suite / Python 3.10",
"Test Suite / Python 3.11",
"Test Suite / Python 3.12",
"Test Suite / Python 3.13",
"TruffleHog Secret Scan",
"Bandit Security Scan"
]
},
"enforce_admins": false,
"required_pull_request_reviews": {
"dismissal_restrictions": {
"users": [],
"teams": ["bedrock-agentcore-team"]
},
"dismiss_stale_reviews": true,
"require_code_owner_reviews": true,
"required_approving_review_count": 1,
"require_last_push_approval": true
},
"restrictions": {
"users": [],
"teams": ["bedrock-agentcore-team"],
"apps": []
},
"allow_force_pushes": false,
"allow_deletions": false,
"block_creations": false,
"required_conversation_resolution": true,
"lock_branch": false,
"allow_fork_syncing": false
}
}
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
# Python dependencies
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "America/Los_Angeles"
open-pull-requests-limit: 5
reviewers:
- "aws/bedrock-agentcore-team"
assignees:
- "aws/bedrock-agentcore-team"
labels:
- "dependencies"
- "python"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
groups:
development-dependencies:
dependency-type: "development"
patterns:
- "pytest*"
- "mypy*"
- "ruff*"
- "pre-commit*"
production-dependencies:
dependency-type: "production"
exclude-patterns:
- "pytest*"
- "mypy*"
- "ruff*"
- "pre-commit*"
ignore:
# Don't update internal boto wheels
- dependency-name: "boto3"
- dependency-name: "botocore"
- dependency-name: "bedrock-agentcore"
# For staging, also ignore the staging SDK
- dependency-name: "bedrock-agentcore-sdk-staging-py"
# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "America/Los_Angeles"
open-pull-requests-limit: 3
reviewers:
- "aws/bedrock-agentcore-team"
assignees:
- "aws/bedrock-agentcore-team"
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
include: "scope"
================================================
FILE: .github/pull_request_template.md
================================================
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Code refactoring
## Testing
- [ ] Unit tests pass locally
- [ ] Integration tests pass (if applicable)
- [ ] Test coverage remains above 80%
- [ ] Manual testing completed
## Checklist
- [ ] My code follows the project's style guidelines (ruff/pre-commit)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published
## Security Checklist
- [ ] No hardcoded secrets or credentials
- [ ] No new security warnings from bandit
- [ ] Dependencies are from trusted sources
- [ ] No sensitive data logged
## Breaking Changes
List any breaking changes and migration instructions:
N/A
## Additional Notes
Add any additional notes or context about the PR here.
================================================
FILE: .github/workflows/deploy-docs.yml
================================================
name: Deploy Documentation
on:
push:
branches:
- main
paths:
- 'documentation/**'
- '.github/workflows/deploy-docs.yml'
workflow_dispatch: # Allows manual triggering
permissions:
contents: write
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # Fetch all history for proper versioning
- name: Checkout SDK repository
uses: actions/checkout@v5
with:
repository: aws/bedrock-agentcore-sdk-python
path: bedrock-agentcore-sdk-python
fetch-depth: 1
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Create virtual environment and install dependencies
run: |
uv venv
source .venv/bin/activate
uv pip install mkdocs-material mkdocstrings-python pymdown-extensions
uv pip install mike mkdocs-macros-plugin mkdocs-llmstxt mkdocs-include-markdown-plugin
# Install the SDK package from PyPI
uv pip install bedrock-agentcore
# Install the toolkit package in development mode
uv pip install -e .
- name: Setup Git for mike versioning
run: |
git config --global user.name "github-actions"
git config --global user.email "github-actions@github.com"
- name: Deploy documentation
working-directory: ./documentation
run: |
source ../.venv/bin/activate
mkdocs gh-deploy --force
================================================
FILE: .github/workflows/integration_testing.yml
================================================
name: Secure Integration test
on:
push:
branches: [ main ]
tags:
- 'v*'
pull_request_target: # Changed from pull_request
branches: [ main ]
types: [opened, synchronize, reopened]
permissions:
contents: read
jobs:
authorization-check:
permissions: read-all
runs-on: ubuntu-latest
outputs:
approval-env: ${{ steps.collab-check.outputs.result }}
should-run: ${{ steps.safety-check.outputs.result }}
steps:
- name: Checkout base branch for safety check
uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.base.sha }}
- name: Safety Check - Prevent Workflow Modification Attacks
id: safety-check
uses: actions/github-script@v7
with:
result-encoding: string
script: |
if (!context.payload.pull_request) {
console.log('Not a pull request, proceeding');
return 'true';
}
// Get list of changed files
const { data: files } = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
});
// Check if any workflow files or sensitive files are modified
const dangerousPatterns = [
/^\.github\/workflows\//,
/^\.github\/actions\//,
/conftest\.py$/,
/pytest\.ini$/,
/^tests\/conftest_mock\.py$/,
];
const dangerousFiles = files.filter(file =>
dangerousPatterns.some(pattern => pattern.test(file.filename))
);
if (dangerousFiles.length > 0) {
console.log('⚠️ SECURITY: PR modifies sensitive files:');
dangerousFiles.forEach(f => console.log(` - ${f.filename}`));
console.log('Manual review required before running integration tests');
return 'false';
}
console.log('✓ Safety check passed - no sensitive files modified');
return 'true';
- name: Collaborator Check
uses: actions/github-script@v7
id: collab-check
with:
result-encoding: string
script: |
try {
let username;
if (context.payload.pull_request) {
username = context.payload.pull_request.user.login;
} else {
username = context.actor;
console.log(`No pull request context found, checking permissions for actor: ${username}`);
}
const permissionResponse = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: username,
});
const permission = permissionResponse.data.permission;
const hasWriteAccess = ['write', 'admin'].includes(permission);
if (!hasWriteAccess) {
console.log(`User ${username} does not have write access to the repository (permission: ${permission})`);
return "manual-approval"
} else {
console.log(`Verified ${username} has write access. Auto Approving PR Checks.`)
return "auto-approve"
}
} catch (error) {
console.log(`${username} does not have write access. Requiring Manual Approval to run PR Checks.`)
return "manual-approval"
}
check-access-and-checkout:
runs-on: ubuntu-latest
needs: authorization-check
if: needs.authorization-check.outputs.should-run == 'true'
environment: ${{ needs.authorization-check.outputs.approval-env }}
permissions:
id-token: write
pull-requests: read
contents: read
steps:
- name: Configure Credentials
uses: aws-actions/configure-aws-credentials@v5
with:
role-to-assume: ${{ secrets.AGENTCORE_INTEG_TEST_ROLE }}
aws-region: us-west-2
mask-aws-account-id: true
- name: Checkout PR head commit
uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.head.sha }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install -e .
pip install --no-cache-dir pytest click
- name: Run integration tests
env:
AWS_REGION: us-west-2
AGENTCORE_TEST_ROLE: AgentExecutionRole
id: tests
timeout-minutes: 10
run: |
pytest tests_integ/cli -s --log-cli-level=INFO
safety-gate:
runs-on: ubuntu-latest
needs: authorization-check
if: needs.authorization-check.outputs.should-run == 'false'
permissions: {}
steps:
- name: Security Block
run: |
echo "🚨 SECURITY BLOCK: This PR modifies sensitive files"
echo ""
echo "The following types of files trigger manual review:"
echo " - Workflow files (.github/workflows/)"
echo " - Action files (.github/actions/)"
echo " - Test setup files (conftest.py, pytest.ini)"
echo ""
echo "⚠️ Integration tests will NOT run automatically"
echo "👀 A maintainer must review the changes and manually trigger tests"
echo ""
echo "This is a security measure to prevent:"
echo " - Workflow modification attacks"
echo " - Secret exfiltration"
echo " - Test manipulation"
exit 1
================================================
FILE: .github/workflows/pr-automerge.yml
================================================
name: PR Auto-merge
on:
pull_request_review:
types: [submitted]
permissions:
contents: write
pull-requests: write
jobs:
auto-merge:
name: Auto-merge Release PRs
runs-on: ubuntu-latest
# Only run when PR is approved and it's a release PR
if: |
github.event.review.state == 'approved' &&
github.event.pull_request.user.login == 'github-actions[bot]' &&
startsWith(github.event.pull_request.head.ref, 'release/') &&
github.event.pull_request.base.ref == 'main'
steps:
- name: Check CI status
id: ci-status
uses: actions/github-script@v7
with:
script: |
const { data: checkRuns } = await github.rest.checks.listForRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: context.payload.pull_request.head.sha
});
// Include ALL required checks
const requiredChecks = [
'Lint and Format',
'Test Python 3.10',
'Test Python 3.11',
'Test Python 3.12',
'Test Python 3.13',
'Build Package'
];
const allPassed = requiredChecks.every(checkName => {
const check = checkRuns.check_runs.find(run => run.name === checkName);
return check && check.conclusion === 'success';
});
console.log(`All required checks passed: ${allPassed}`);
return allPassed;
- name: Auto-merge PR
if: steps.ci-status.outputs.result == 'true'
uses: actions/github-script@v7
with:
script: |
await github.rest.pulls.merge({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
merge_method: 'squash',
commit_title: `Release v${context.payload.pull_request.head.ref.split('/')[1]}`,
commit_message: 'Auto-merged by release workflow'
});
console.log('✓ PR auto-merged successfully');
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
workflow_dispatch:
inputs:
bump_type:
description: 'Version bump type (only patch allowed)'
required: true
type: choice
options:
- patch
- pre
sdk_version:
description: 'SDK version to depend on (optional)'
required: false
type: string
wait_for_sdk:
description: 'Wait for SDK version on PyPI'
required: false
type: boolean
default: false
changelog:
description: 'Custom changelog entry (optional)'
required: false
type: string
permissions:
contents: write
pull-requests: write
id-token: write
jobs:
prepare-release:
name: Prepare Release
runs-on: ubuntu-latest
outputs:
version: ${{ steps.bump.outputs.version }}
pr_created: ${{ steps.create-pr.outputs.pull-request-number }}
steps:
- name: Block minor and major releases
if: ${{ github.event.inputs.bump_type == 'minor' || github.event.inputs.bump_type == 'major' }}
run: |
echo "::error::Minor and major releases are blocked. Only patch and pre releases are allowed."
exit 1
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Create virtual environment
run: uv venv
- name: Install dependencies
run: |
source .venv/bin/activate
uv pip install requests # Needed for SDK version checking
- name: Configure git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Get current version
id: current
run: |
VERSION=$(grep -m1 -oP '^version = "\K[^"]+' pyproject.toml)
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Current version: $VERSION"
- name: Bump version
id: bump
run: |
source .venv/bin/activate
# Make script executable
chmod +x scripts/bump-version.py
# Build command with all options
CMD="python scripts/bump-version.py ${{ github.event.inputs.bump_type }}"
# Add SDK update if specified
if [ -n "${{ github.event.inputs.sdk_version }}" ]; then
CMD="$CMD --update-sdk ${{ github.event.inputs.sdk_version }}"
if [ "${{ github.event.inputs.wait_for_sdk }}" = "true" ]; then
CMD="$CMD --wait-for-sdk"
fi
fi
# Add changelog if specified
if [ -n "${{ github.event.inputs.changelog }}" ]; then
CMD="$CMD --changelog \"${{ github.event.inputs.changelog }}\""
fi
# Run version bump
echo "Running: $CMD"
eval $CMD
# Update lockfile after all changes
uv lock --no-progress
# Get new version
NEW_VERSION=$(grep -m1 -oP '^version = "\K[^"]+' pyproject.toml)
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "New version: $NEW_VERSION"
- name: Create release branch
run: |
BRANCH_NAME="release/v${{ steps.bump.outputs.version }}"
# Clean up any existing branch from previous attempts
if git ls-remote --exit-code --heads origin $BRANCH_NAME; then
echo "⚠️ Branch $BRANCH_NAME already exists. Deleting it first..."
git push origin --delete $BRANCH_NAME
fi
# Clean up local branch if exists
if git show-ref --verify --quiet refs/heads/$BRANCH_NAME; then
git branch -D $BRANCH_NAME
fi
# Create fresh branch
git checkout -b $BRANCH_NAME
# Add all changes
git add -A
# Commit with co-author
git commit -m "chore: bump version to ${{ steps.bump.outputs.version }}
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
# Push the branch
git push origin $BRANCH_NAME
# Verify the version was committed
COMMITTED_VERSION=$(git show HEAD:pyproject.toml | grep -m1 -oP '^version = "\K[^"]+')
if [ "$COMMITTED_VERSION" != "${{ steps.bump.outputs.version }}" ]; then
echo "❌ ERROR: Version not committed correctly!"
exit 1
fi
- name: Create Pull Request
id: create-pr
env:
GH_TOKEN: ${{ github.token }}
run: |
BRANCH_NAME="release/v${{ steps.bump.outputs.version }}"
# Create PR using GitHub CLI
PR_URL=$(gh pr create \
--base main \
--head $BRANCH_NAME \
--title "Release v${{ steps.bump.outputs.version }}" \
--body "## 🚀 Release v${{ steps.bump.outputs.version }}
This PR was automatically created by the release workflow.
### Changes
- Version bumped from ${{ steps.current.outputs.version }} to ${{ steps.bump.outputs.version }}
- Updated CHANGELOG.md
- Updated uv.lock
${{ github.event.inputs.sdk_version && format('- Updated SDK dependency to >={0}', github.event.inputs.sdk_version) || '' }}
### Pre-release Checklist
- [ ] Review CHANGELOG.md entries
- [ ] Verify version numbers are correct
- [ ] All tests passing
- [ ] Documentation updated (if needed)
${{ github.event.inputs.sdk_version && '- [ ] Verify SDK version is available on PyPI' || '' }}
### Release Process
1. Approve and merge this PR
2. The release workflow will automatically:
- Build and test the package
- Publish to PyPI
- Create a GitHub release
- Tag the release
---
*Triggered by @${{ github.actor }}*")
# Extract PR number from URL
PR_NUMBER=$(echo "$PR_URL" | grep -oP '\d+$')
echo "pull-request-number=$PR_NUMBER" >> $GITHUB_OUTPUT
test:
name: Test
needs: prepare-release
runs-on: ubuntu-latest
if: needs.prepare-release.result == 'success'
outputs:
version: ${{ needs.prepare-release.outputs.version }}
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v5
with:
ref: release/v${{ needs.prepare-release.outputs.version }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Create virtual environment
run: uv venv
- name: Install dependencies
run: |
source .venv/bin/activate
uv sync --dev
- name: Run tests
run: |
source .venv/bin/activate
pytest tests/ --cov=src --cov-report=xml --cov-fail-under=80 \
-k "not test_launch_help_text_updated"
build:
name: Build Distribution
needs: prepare-release
runs-on: ubuntu-latest
if: needs.prepare-release.result == 'success'
steps:
- uses: actions/checkout@v5
with:
ref: release/v${{ needs.prepare-release.outputs.version }}
- name: Verify version before build
run: |
EXPECTED_VERSION="${{ needs.prepare-release.outputs.version }}"
ACTUAL_VERSION=$(grep -m1 -oP '^version = "\K[^"]+' pyproject.toml)
echo "Expected version: $EXPECTED_VERSION"
echo "Actual version: $ACTUAL_VERSION"
if [ "$ACTUAL_VERSION" != "$EXPECTED_VERSION" ]; then
echo "❌ ERROR: Version mismatch!"
echo "Expected $EXPECTED_VERSION but found $ACTUAL_VERSION"
exit 1
fi
echo "✓ Version verified: $ACTUAL_VERSION"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Build package
run: |
uv build
ls -la dist/
if ! ls dist/*-${{ needs.prepare-release.outputs.version }}-*.whl; then
echo "❌ ERROR: Built package has wrong version!"
exit 1
fi
# Check with twine using tool run
uv tool run twine check dist/*
# Show package contents
echo "=== Package contents ==="
python -m zipfile -l dist/*.whl | head -20
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
publish-pypi:
name: Publish to PyPI
needs: [test, build]
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/project/bedrock-agentcore-starter-toolkit/
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Download artifacts
uses: actions/download-artifact@v5
with:
name: dist
path: dist/
- name: Get version
id: version
run: |
VERSION=$(ls dist/*.whl | sed -n 's/.*-\([0-9.]*\)-.*/\1/p')
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
- name: Wait for PyPI availability
run: |
VERSION="${{ steps.version.outputs.version }}"
echo "Waiting for package to be available on PyPI..."
for i in {1..10}; do
if pip index versions bedrock-agentcore-starter-toolkit | grep -q "$VERSION"; then
echo "✓ Package version $VERSION is now available on PyPI"
break
fi
echo "Attempt $i/10: Package not yet available, waiting 30s..."
sleep 30
done
- name: Create and push tag
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git tag -a v${{ steps.version.outputs.version }} \
-m "Release v${{ steps.version.outputs.version }}"
git push origin v${{ steps.version.outputs.version }}
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.version.outputs.version }}
name: Bedrock AgentCore Starter Toolkit v${{ steps.version.outputs.version }}
files: dist/*
generate_release_notes: true
body: |
## Installation
```bash
pip install bedrock-agentcore-starter-toolkit==${{ steps.version.outputs.version }}
```
## What's Changed
See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/v${{ steps.version.outputs.version }}/CHANGELOG.md) for details.
${{ github.event.inputs.sdk_version && format('### SDK Dependency\nThis release requires `bedrock-agentcore>={0}`', github.event.inputs.sdk_version) || '' }}
summary:
name: Release Summary
needs: publish-pypi
runs-on: ubuntu-latest
if: always()
steps:
- name: Summary
run: |
echo "## Release Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ "${{ needs.publish-pypi.result }}" == "success" ]; then
echo "✅ **PyPI Release Successful**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Package published to: https://pypi.org/project/bedrock-agentcore-starter-toolkit/" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "To install:" >> $GITHUB_STEP_SUMMARY
echo '```bash' >> $GITHUB_STEP_SUMMARY
echo "pip install bedrock-agentcore-starter-toolkit" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
else
echo "❌ **Release Failed**" >> $GITHUB_STEP_SUMMARY
echo "Check the workflow logs for details." >> $GITHUB_STEP_SUMMARY
fi
================================================
FILE: .github/workflows/security-scanning.yml
================================================
name: Security Scanning
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 12 * * 1' # Weekly on Monday
permissions:
contents: read
security-events: write
jobs:
bandit:
name: Bandit Security Scan
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Create virtual environment
run: uv venv
- name: Install Bandit
run: |
source .venv/bin/activate
uv pip install bandit[toml]
- name: Run Bandit
run: |
source .venv/bin/activate
bandit -r src/ -f json -o bandit-results.json || true
- name: Upload Bandit results
uses: actions/upload-artifact@v4
if: always()
with:
name: bandit-results
path: bandit-results.json
safety:
name: Safety Dependency Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Create virtual environment
run: uv venv
- name: Install safety
run: |
source .venv/bin/activate
uv pip install safety
- name: Generate requirements
run: |
source .venv/bin/activate
uv pip compile pyproject.toml -o requirements.txt || echo "Failed to compile requirements"
- name: Run safety check
run: |
source .venv/bin/activate
safety check -r requirements.txt --json > safety-results.json || true
- name: Upload safety results
uses: actions/upload-artifact@v4
if: always()
with:
name: safety-results
path: safety-results.json
trufflehog:
name: TruffleHog Secret Scan
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: TruffleHog OSS
uses: trufflesecurity/trufflehog@v3.90.6
with:
path: ./
base: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
head: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
extra_args: --debug --only-verified
================================================
FILE: .github/workflows/security.yml
================================================
name: Security Scanning
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 12 * * 1' # Weekly on Monday
permissions:
contents: read
security-events: write
jobs:
bandit:
name: Bandit Security Scan
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Bandit
run: |
python -m pip install --upgrade pip
pip install bandit[toml]
- name: Run Bandit
run: |
bandit -r src/ -f json -o bandit-results.json
- name: Upload Bandit results
uses: actions/upload-artifact@v4
if: always()
with:
name: bandit-results
path: bandit-results.json
safety:
name: Safety Dependency Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install safety
run: |
python -m pip install --upgrade pip
pip install safety
- name: Create requirements without private deps
run: |
# Extract dependencies excluding private ones
python - << 'SCRIPT'
import re
with open('pyproject.toml', 'r') as f:
content = f.read()
# Extract dependencies section
deps_match = re.search(r'dependencies = \[(.*?)\]', content, re.DOTALL)
if deps_match:
deps = deps_match.group(1)
# Remove private dependencies
deps = re.sub(r'"boto3[^"]*",?\s*\n?', '', deps)
deps = re.sub(r'"botocore[^"]*",?\s*\n?', '', deps)
deps = re.sub(r'"bedrock-agentcore[^"]*",?\s*\n?', '', deps)
# Extract package names
packages = re.findall(r'"([^"]+)"', deps)
with open('requirements-public.txt', 'w') as f:
f.write('\n'.join(packages))
SCRIPT
- name: Run safety check
run: |
safety check -r requirements-public.txt --json > safety-results.json || echo "Safety check completed"
- name: Upload safety results
uses: actions/upload-artifact@v4
if: always()
with:
name: safety-results
path: safety-results.json
trufflehog:
name: TruffleHog Secret Scan
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: TruffleHog OSS
uses: trufflesecurity/trufflehog@v3.90.6
with:
path: ./
base: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
head: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
extra_args: --debug --only-verified
================================================
FILE: .github/workflows/slack-issue-notification.yml
================================================
name: Slack Issue Notification
on:
issues:
types: [opened]
permissions: {}
jobs:
notify-slack:
runs-on: ubuntu-latest
steps:
- name: Send issue details to Slack
uses: slackapi/slack-github-action@v2.0.0
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
webhook-type: webhook-trigger
payload: |
issue_title: "${{ github.event.issue.title }}"
issue_number: "${{ github.event.issue.number }}"
issue_url: "${{ github.event.issue.html_url }}"
issue_author: "${{ github.event.issue.user.login }}"
issue_body: ${{ toJSON(github.event.issue.body) }}
repository: "${{ github.repository }}"
created_at: "${{ github.event.issue.created_at }}"
================================================
FILE: .github/workflows/slack-open-prs-notification.yml
================================================
name: Slack Open PRs Notification
on:
schedule:
- cron: '0 13 * * *' # 8:00 AM EST (13:00 UTC)
workflow_dispatch:
permissions:
pull-requests: read
jobs:
notify-slack:
runs-on: ubuntu-latest
steps:
- name: Get open PRs
id: open-prs
uses: actions/github-script@v7
with:
script: |
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
});
const count = prs.length;
// Format each PR with plain text and bare URL (Slack auto-links URLs)
const prList = prs.map(pr =>
`• #${pr.number} - ${pr.title} (by ${pr.user.login})\n ${pr.html_url}`
).join('\n');
core.setOutput('count', count);
// Use GITHUB_OUTPUT delimiter for multiline support
const fs = require('fs');
fs.appendFileSync(
process.env.GITHUB_OUTPUT,
`pr_list<<PRLIST_EOF\n${prList}\nPRLIST_EOF\n`
);
- name: Send open PRs summary to Slack
uses: slackapi/slack-github-action@v2.0.0
with:
webhook: ${{ secrets.SLACK_OPEN_PRS_WEBHOOK_URL }}
webhook-type: webhook-trigger
payload: |
pr_count: "${{ steps.open-prs.outputs.count }}"
pr_list: ${{ toJSON(steps.open-prs.outputs.pr_list) }}
repository: "${{ github.repository }}"
repository_url: "https://github.com/${{ github.repository }}/pulls"
================================================
FILE: .github/workflows/test-pypi-release.yml
================================================
name: Test PyPI Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release (e.g., 0.1.0b1)'
required: true
type: string
default: '0.1.0b1'
permissions:
contents: read
id-token: write # For trusted publishing (optional)
jobs:
build-and-publish:
name: Build and Publish to Test PyPI
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/bedrock-agentcore-starter-toolkit
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install build tools
run: |
python -m pip install --upgrade pip
pip install build twine toml
- name: Update version
run: |
VERSION="${{ github.event.inputs.version }}"
sed -i "s/version = \".*\"/version = \"$VERSION\"/" pyproject.toml
echo "Updated to version $VERSION"
- name: Clean pyproject.toml for release
run: |
python << 'EOF'
import re
with open('pyproject.toml', 'r') as f:
content = f.read()
# Remove [tool.uv.sources]
content = re.sub(r'\[tool\.uv\.sources\].*?(?=\[|$)', '', content, flags=re.DOTALL)
# Clean up extra newlines
content = re.sub(r'\n{3,}', '\n\n', content)
with open('pyproject.toml', 'w') as f:
f.write(content)
print("✓ Removed tool.uv.sources for Test PyPI")
EOF
- name: Build package
run: python -m build
- name: Check package
run: |
twine check dist/*
echo "=== Package contents ==="
python -m zipfile -l dist/*.whl | head -20
echo "=== Checking for wheelhouse ==="
python -m zipfile -l dist/*.whl | grep wheelhouse && exit 1 || echo "✓ No wheelhouse"
- name: Publish to Test PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
run: |
twine upload --repository testpypi dist/*
- name: Create installation instructions
run: |
VERSION="${{ github.event.inputs.version }}"
echo "# Test PyPI Release Successful! 🎉" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Version \`$VERSION\` has been published to Test PyPI." >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Installation Instructions" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "1. First install private dependencies:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo "pip install ./wheelhouse/*.whl" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "2. Install from Test PyPI:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo "pip install -i https://test.pypi.org/simple/ bedrock-agentcore-starter-toolkit==$VERSION" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
================================================
FILE: .github/workflows/test.yml
================================================
name: Test
on:
pull_request:
branches: [ main ]
push:
branches: [ main ]
permissions:
contents: read
checks: write
pull-requests: write
jobs:
lint:
name: Lint and Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Create virtual environment
run: uv venv
- name: Install dependencies
run: uv sync --dev
- name: Run pre-commit
run: uv run pre-commit run --all-files
test:
name: Test Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false # Important: don't stop on first failure
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Create virtual environment
run: uv venv
- name: Install dependencies
run: uv sync --dev
- name: Run tests with coverage
run: |
uv run pytest tests/ --cov=src --cov-report=xml --cov-report=term --cov-fail-under=80 \
-k "not test_launch_help_text_updated"
- name: Upload coverage to Codecov
if: matrix.python-version == '3.10'
uses: codecov/codecov-action@v5
with:
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
build:
name: Build Package
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Build package
run: uv build
- name: Check package
run: uv tool run twine check dist/*
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
================================================
FILE: .gitignore
================================================
build
__pycache__*
.coverage*
.env
.venv
.mypy_cache
.pytest_cache
.ruff_cache
*.bak
.vscode
dist
.dockerignore
.bedrock_agentcore.yaml
.bedrock_agentcore/
.ipynb_checkpoints
Dockerfile
*.iml
requirements.txt
.DS_Store
documentation/site
documentation/.cache
.agentcore.yaml
output*/
.serena/
specs/
.claude/
.specify/
coverage.json
CLAUDE.md
mise.toml
.idea/
!tests/create/fixtures/scenarios/
!tests/create/fixtures/scenarios/**
.kiro/
================================================
FILE: .pre-commit-config.yaml
================================================
repos:
# ========================================
# PRE-COMMIT STAGE (Fast, Auto-fixing)
# Runs on every commit
# ========================================
# uv lock file management
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.7.13
hooks:
- id: uv-lock
stages: [pre-commit]
# Code formatting and linting (FAST + AUTO-FIX)
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.0
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
stages: [pre-commit]
- id: ruff-format
stages: [pre-commit]
# Basic file hygiene (FAST + AUTO-FIX)
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
exclude: ^tests/create/__snapshots__/.*\.ambr$
stages: [pre-commit]
- id: end-of-file-fixer
stages: [pre-commit]
- id: check-toml
stages: [pre-commit]
- id: check-json
stages: [pre-commit]
- id: check-yaml
exclude: ^documentation/mkdocs\.yaml$
stages: [pre-commit]
- id: check-merge-conflict
stages: [pre-commit]
- id: check-added-large-files
args: ['--maxkb=1000']
stages: [pre-commit]
- id: debug-statements
stages: [pre-commit]
# ========================================
# PRE-PUSH STAGE (Heavier checks)
# Runs before push
# ========================================
# Security scanning
- repo: https://github.com/PyCQA/bandit
rev: '1.7.9'
hooks:
- id: bandit
args: ['-r', 'src/', '-ll']
pass_filenames: false
types: [python]
stages: [pre-push]
# Full test suite with coverage (same as you had before)
- repo: local
hooks:
- id: pytest-cov
name: pytest with coverage
entry: uv run pytest
language: system
types: [python]
pass_filenames: false
always_run: true
stages: [pre-push] # Moved from pre-commit to pre-push
args: [
--cov=src,
--cov-report=term-missing,
--cov-report=html,
--cov-branch,
--cov-precision=2,
tests/
]
# ========================================
# Configuration
# ========================================
default_language_version:
python: python3.10
ci:
autofix_commit_msg: |
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
autofix_prs: true
autoupdate_branch: ''
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
autoupdate_schedule: weekly
skip: []
submodules: false
default_install_hook_types: [pre-commit, pre-push]
default_stages: [pre-commit]
================================================
FILE: .python-version
================================================
3.10
================================================
FILE: CHANGELOG.md
================================================
# Changelog
## [0.3.7] - 2026-05-05
### Changes
- feat: add deprecation banner recommending AgentCore CLI (#507) (#508) (#510) (c7c836d)
- fix: log Transaction Search PENDING status + add missing traces delivery in direct-code-deploy (#506) (419c267)
- fix: update download instructions to include correct npm package (#505) (8231e3f)
- chore: bump version to 0.3.6 (#504) (0f350f2)
## [0.3.6] - 2026-04-22
### Changes
- fix: modify execution role naming and disallow codebuild for govcloud (#503) (af69275)
- chore: bump version to 0.3.5 (#501) (f4d318b)
## [0.3.5] - 2026-04-10
### Changes
- fix: update IAM trust policies (#500) (9b5bd36)
- chore: bump version to 0.3.4 (#495) (4b9387f)
## [0.3.4] - 2026-03-30
### Changes
- chore: modify execution role templates to support multiple partitions (#485) (2d5dbff)
- fix: block minor and major releases, allow only patch (#494) (87aeae6)
- feat: added GT support to Evaluations (#493) (d879b87)
- docs: change banner color to warning yellow/amber (#491) (00a8fef)
- fix: remove broken CDK basic-runtime doc includes (#490) (8a2c4d6)
- docs: recommend AgentCore CLI for new projects (#489) (0fbfa95)
- feat(create): add --memory flag for non-interactive mode (#484) (56af283)
- Add CRT extra to botocore dependency (#465) (c7e38e2)
- chore: bump version to 0.3.3 (#481) (1d53aad)
## [0.3.3] - 2026-03-11
### Changes
- feat: add AG-UI protocol support to starter toolkit (#480) (d40c0cf)
- Fix memoryStrategyId field name in modifyMemoryStrategies payload (#479) (88f8317)
- Add boto3 and botocore to generated project deps for Bedrock provider (#478) (fcad8de)
- Fix --ecr with repository name only causing empty repositoryName (#477) (07b3107)
- Fix duplicate ECR Repository text in configuration success pane (#476) (75515fc)
- Fix hardcoded shebang paths in packaged dependency scripts (#475) (f7f1cd9)
- Add daily Slack notification for open PRs (#473) (a9062d3)
- chore: bump version to 0.3.2 (#470) (703006f)
## [0.3.2] - 2026-03-04
### Changes
- Improve error messages for auth failures during invoke (#469) (9762551)
- chore: bump version to 0.3.1 (#467) (dccdb42)
## [0.3.1] - 2026-03-03
### Changes
- Policy in AgentCore GA (#466) (0aecfb6)
- chore: bump version to 0.3.0 (#459) (9cfc3b2)
## [0.3.0] - 2026-02-17
### Changes
- Add missing comma in @requires_access_token parameters (#458) (260d94f)
- feat(memory): add interactive TUI browser for exploring memory content (#451) (10bb727)
- fix: format long line and fix broken integ test (#455) (a71ab6f)
- Update README to remove subtitle and add note (#454) (074456a)
- updated quick start instructions (#306) (f3eedb8)
- chore: bump version to 0.2.10 (#450) (2fe9d84)
## [0.2.10] - 2026-02-03
### Changes
- fix: export Memory class from package root (#449) (819193a)
- fix: pass session_id to dev server in invoke --dev mode (#448) (01808f8)
- Add trailing slash to namespace strings (#440) (3b4eafb)
- fix: bump minimum typer version to 0.19.0 (#421) (6cff769)
- fix: add UTF-8 encoding to template file writes for Windows compatibility (#443) (563bfa3)
- fix: Retrieval Config in Strands Templates (#446) (4fec9b7)
- chore: bump version to 0.2.9 (#445) (195109a)
## [0.2.9] - 2026-02-02
### Changes
- Fix/cdk template memory and permissions (#444) (ca6b95c)
- fix: escape special characters in Slack notification payload (#441) (782b7d2)
- fix(configure): infer language from entrypoint extension before packa… (#439) (057a17e)
- feat: add Slack notification workflow for new issues (#437) (1be8f12)
- chore: bump version to 0.2.8 (#435) (f727b3d)
## [0.2.8] - 2026-01-23
### Changes
- feat(memory): add memory visualization CLI commands (#434) (7c23ffd)
- fix(typescript): exclude node_modules from S3 upload and simplify Dockerfile (#433) (777e61e)
- chore: bump version to 0.2.7 (#432) (ed5a870)
## [0.2.7] - 2026-01-20
### Changes
- feat(runtime): Add TypeScript/Node.js container deployment support for Runtime (#429) (4260dc5)
- fix: update 'agentcore launch' to 'agentcore deploy' in Next Steps messages (#424) (b65a330)
- chore: bump version to 0.2.6 (#425) (11855b7)
## [0.2.6] - 2026-01-13
### Changes
- fix: agent version isolation - use unique image tags instead of :latest (#422) (efda1bc)
- Policy docs: enhance llms.txt policy headings with comprehensive descriptions (#419) (ab10f84)
- MCP Server docs add terraform and evaluation quickstart to mcp (#418) (679b83f)
- chore: bump version to 0.2.5 (#408) (165496e)
## [0.2.5] - 2025-12-13
### Changes
- fix: preserve file permissions in deployment zip (#407) (1ede0f4)
- chore: bump version to 0.2.4 (#405) (cf174b7)
## [0.2.4] - 2025-12-10
### Changes
- fix: resolve double-encoded execution policy causing MalformedPolicyDocument (#403) (#404) (d2eb189)
- chore: bump version to 0.2.3 (#401) (d64b571)
## [0.2.3] - 2025-12-09
### Changes
- feat: Printing localhost and local network addresses for local dev commands (#400) (1defa9b)
- fix: container building doesn't work when dependencies are in a subdirectory (#399) (0f13f6e)
- fix: Scoping down policy statements (#394) (e548fc7)
- chore: bump version to 0.2.2 (#393) (4280c41)
## [0.2.2] - 2025-12-04
### Changes
- feat(identity): Add AWS JWT federation support for M2M auth (#382) (2b492c6)
- docs: add WebSocket bi-directional streaming to runtime overview (#392) (b8fa78c)
- Add require aws creds decorator to policy cli commands (#391) (cd3758b)
- add aws docs link in quickstart guides for Runtime, Identity, Policy, Observability, Memory (#389) (52cf2ed)
- chore: bump version to 0.2.1 (#390) (c4d573e)
## [0.2.1] - 2025-12-02
### Changes
- fix: catch the expired creds exception and throw it using the method in utils (#388) (9826b08)
- re:Invent 2025 Feature Launch: AgentCore Policy Engine, Evals and Identity Custom Claims (#387) (70e3078)
- fix: Fail early if deployment package size exceeds 250MB (#386) (916f81d)
- fix: agent_config.name bug when running configure after create with production template mode (#384) (824316c)
- docs: update middleware integration in Runtime Overview (#381) (48968f4)
- fix: add missing basic template README. Also fix erroneous print statment in IAC path (#377) (63970da)
- feat: CLI UX improvements (#380) (da80cf5)
- chore: bump version to 0.2.0 (#376) (31a37ff)
## [0.2.0] - 2025-11-27
### Changes
- nit: spellcheck changes (#375) (ab82659)
- fix: remove unused imports; fix documentation pages (#374) (b6628a7)
- feat: change 'launch' command to 'deploy' command with backwards compatibility (#370) (4d66714)
- Update readme copy (#373) (7e7f089)
- Auto-enable CloudWatch observability (#372) (f46e8e8)
- feat: implement agentcore create command. Related updates are made to… (#364) (ec1ce0f)
- docs: update async processing documentation to use manual task management (#371) (e47a5a0)
- feat: add multi-platform ARM64 support for dependency packaging (9932a85)
- update transaction search enablement instructions (#367) (b802d79)
- chore(doc): add memory and gateway to cli documentation (#363) (06c3282)
- feat: Add comprehensive observability CLI for agent telemetry (#360) (86c2390)
- chore: bump version to 0.1.34 (#355) (76dda3a)
## [0.1.34] - 2025-11-19
### Changes
- docs: add identity CLI quickstart and fix claude SDK path (#353) (1415eb3)
- feat: Add Memory/Gateway CLI support (#338) (70c4dee)
- feat: add Identity CLI commands for managing OAuth authentication and external service access (#332) (1dcc546)
- Add AWS Marketplace subscription permissions to execution role (#349) (0707685)
- chore: bump version to 0.1.33 (#347) (bc978cc)
## [0.1.33] - 2025-11-15
### Changes
- Update aws-opentelemetry-distro version in Dockerfile (#346) (d878ff8)
- chore: bump version to 0.1.32 (#335) (65e7ff2)
## [0.1.32] - 2025-11-06
### Changes
- Minor bug fix: Plumb --region command through into ConfigurationManager (#333) (8c2aee5)
- fix: Remove ExpectedBucketOwner parameter from create_bucket method (0c57292)
- ci: add Python version matrix testing to PRs (#329) (9714c81)
- chore: bump version to 0.1.31 (#328) (120639b)
## [0.1.31] - 2025-11-04
### Changes
- fix: Use itertools.cycle for time.time() mock to fix Python 3.12 compatibility (#327) (b180c33)
- chore: bump version to 0.1.30 (#326) (00778cd)
- feat: Add user-agent header 'agentcore-st/{version}' to runtime invocations (#325) (cdd5189)
- chore: bump version to 0.1.29 (#324) (faf2108)
- Update Direct Code Deploy message to clarify Python-only support (#323) (44b9b7a)
- fix: Multiple UI/UX improvements (#321) (47e25b2)
- docs: Remove duplicate --non-interactive option in CLI reference (#319) (f0a33a9)
- feat: Add code_zip deployment to the starter toolkit (#317) (3de907a)
- Update the Identity user guide with the latest OAuth2 3LO callback guidance (#292) (b989aab)
- chore: bump version to 0.1.28 (#315) (d4b6b37)
## [0.1.30] - 2025-11-04
### Changes
- feat: Add user-agent header 'agentcore-st/{version}' to runtime invocations (#325) (cdd5189)
- chore: bump version to 0.1.29 (#324) (faf2108)
- Update Direct Code Deploy message to clarify Python-only support (#323) (44b9b7a)
- fix: Multiple UI/UX improvements (#321) (47e25b2)
- docs: Remove duplicate --non-interactive option in CLI reference (#319) (f0a33a9)
- feat: Add code_zip deployment to the starter toolkit (#317) (3de907a)
- Update the Identity user guide with the latest OAuth2 3LO callback guidance (#292) (b989aab)
- chore: bump version to 0.1.28 (#315) (d4b6b37)
## [0.1.29] - 2025-11-04
### Changes
- Update Direct Code Deploy message to clarify Python-only support (#323) (44b9b7a)
- fix: Multiple UI/UX improvements (#321) (47e25b2)
- docs: Remove duplicate --non-interactive option in CLI reference (#319) (f0a33a9)
- feat: Add code_zip deployment to the starter toolkit (#317) (3de907a)
- Update the Identity user guide with the latest OAuth2 3LO callback guidance (#292) (b989aab)
- chore: bump version to 0.1.28 (#315) (d4b6b37)
## [0.1.28] - 2025-10-31
### Changes
- fix: prevent incorrect entrypoint inference when multiple candidates exist (#313) (c011ebf)
- docs: update quickstart example for agentcore-strands CI integration (#311) (ba056fb)
- fix: correct workflow output reference for external PR tests (#307) (a6d0bc1)
- chore: bump version to 0.1.27 (#309) (a501bcf)
## [0.1.27] - 2025-10-29
### Changes
- feat: Add destroy() method to Runtime notebook interface with comprehensive tests (#305) (c158d9c)
- Chore/workflow improvements (#301) (196500a)
- feat: Add VPC networking support for AgentCore Runtime (#294) (787f2c6)
- docs: update quickstart links to AWS documentation. test: fix memory test and improve commands coverage (#303) (d07fa8d)
- feat: add skip memory option in interactive configure flow (#298) (f9455bf)
- feat: Add runtime session lifecycle management with stop-session command (#287) (fb82e37)
- feat: adding strongly typed Self Managed strategy model (#300) (4806fe2)
- added ref to install jq (#296) (9855cb7)
- docs: update latest docs/samples from sampes repo (#297) (f61191a)
- docs: Add a2a and vpc documentation on agentcore (#288) (d76fcc1)
- chore: bump version to 0.1.26 (#291) (9dcf58e)
## [0.1.26] - 2025-10-17
### Changes
- Add direct dependency on Starlette as it is used in the OAuth2 callback local server (#290) (288e443)
- Implement 3LO Server on localhost:8081 to handle generating OAuth2 tokens (#282) (f2d33a5)
- fix(deps): restrict pydantic to versions below 2.41.3 (#280) (ec7880e)
- docs: enhance quickstart guides with improved structure and troubleshooting (#279) (19203e9)
- chore: bump version to 0.1.25 (#278) (57f1d40)
## [0.1.25] - 2025-10-13
### Changes
- docs: remove preview verbiage following Bedrock AgentCore GA release (#277) (232f172)
- chore: Add InvokeAgentRuntimeForUser permissions (#275) (9c8a50e)
- chore: bump version to 0.1.24 (#276) (316fc02)
## [0.1.24] - 2025-10-13
### Changes
- chore: remove workload access permissions from runtime execution policy (#274) (0f5ca36)
- docs: Add non-admin user permissions to quickstart (#271) (4599529)
- chore: bump version to 0.1.23 (#272) (598b292)
## [0.1.23] - 2025-10-11
### Changes
- feat: Improve multi-agent entrypoint handling (#270) (bf24fca)
- improve memory lifecycle management (#253) (500d4f4)
- Update agentcore-quickstart-example.md (#269) (4b659b8)
- docs: streamline quickstart guide language and formatting (#268) (a269d39)
- docs: improve quickstart prerequisites and region handling (#266) (c1644df)
- chore: bump version to 0.1.22 (#263) (77bf849)
## [0.1.22] - 2025-10-09
### Changes
- Enhanced configuration management with source_path support and improved build workflow (#262) (949abae)
- feat: add request_header support for runtime config (#260) (e811f4f)
- fix: add non-interactive flag to integration tests (#261) (c99b5ee)
- Support vpc (#221) (8a9c3b4)
- chore: bump version to 0.1.21 (#259) (3e787bd)
## [0.1.21] - 2025-10-08
### Changes
- add a2a protocol notebook support (#258) (e656d63)
- Release v0.1.20 (#257) (1de8828)
## [0.1.20] - 2025-10-08
### Changes
- feat: Add A2A protocol support to AgentCore Runtime toolkit (#255) (84c9456)
- Fix documentation examples display (#254) (c699e4c)
- docs: improvements to quickstart (#247) (3ee881b)
## [0.1.19] - 2025-10-03
### Changes
- updates gateway created lambda to python 3.13 (#196) (c5e5642)
- Add explicit user creation config for Cognito pools (#218) (432898e)
- Labs (#245) (579d086)
- chore: bump version to 0.1.18 (#246) (c8d6c29)
## [0.1.18] - 2025-10-02
### Changes
- fix: add non_interactive parameter for notebooks and fix code style issues (#244) (03953bb)
- chore: bump version to 0.1.17 (#243) (99945c7)
## [0.1.17] - 2025-10-01
### Changes
- chore: sync main with PyPI version 0.1.16 (#242) (c414fe5)
- fix: initialize ConfigurationManager with non_interactive flag (#240) (3b92653)
- Add cleanup section and fix documentation links (#239) (cba1169)
## [0.1.16] - 2025-10-01
### Changes
- Update memory quickstart by @mikewrighton in #234
- chore: make doc titles more meaningful by @theumbrella1 in #229
- fix: don't fail validation for empty namespaces by @jona62 in #235
## [0.1.15] - 2025-10-01
### Changes
- Fixed test stability issues (#232) (ad5625d)
- chore: Add README for MemoryManager (#231) (b9fa36d)
- feat: Add automatic memory provisioning to Bedrock AgentCore CLI (#204) (d58b61c)
- Add required permission to retrieve OAuth2 Credential Provider client secret (#228) (6721d12)
- feat: Add validation to check to get_or_create_memory to provide a truly idempotent experience (#227) (29bab2e)
- fix: allow optional strategies on create memory (#225) (db5f2e0)
- Update Identity quickstart guide with a few corrections (#222) (6ea350f)
- feature: typed strategies and encryption_key_arn support on create_memory (#219) (7c726ce)
- Update quickstart with working example (#217) (1246704)
- feat: Add boto3.session to MemoryManager constructor (#211) (a838187)
- fix: Install mkdocs-llmstxt in deploy-docs act (#215) (80581c2)
- Release v0.1.14 (#214) (2d98f61)
## [0.1.14] - 2025-09-25
### Changes
- Fix: Runtime configure function now sets CodeBuild execution role from --code_build_execution_role parameter (#184) (7d7dffd)
- docs: Generate llm.txt via mkdocs-llmstxt (#213) (6459979)
- fix: llm.txt typo (#210) (f48ae5e)
- docs: Add llm.txt and file on runtime deployment (#202) (90dac4b)
- fix: correct pyproject.toml installation in subdirectories (#207) (ea01c65)
## [0.1.13] - 2025-09-24
### Changes
- Fix linter errors and ran formatter (#203) (64656b6)
- fix: add S3 bucket ownership verification (#194) (225dd86)
- quick start doc updates (#199) (3e9b930)
- Add ability to invoke runtime with custom headers (#200) (ba337db)
- revert dockerfile optimization (#198) (3285377)
- Added request header allowlist configuration support (#197) (7a7c65f)
- feat: change create_or_get_memory to get_or_create_memory to do the lookup before the create (#195) (ef22d20)
- Remove TestPyPI publishing step from release workflow (#186) (887e23b)
- feat: Initial commit for Memory manager (#169) (e067386)
## [0.1.12] - 2025-09-18
### Changes
- docs: address feedback and improve Runtime/Gateway documentation (#163) (a422708)
- chore: bump version to 0.1.11 (#180) (4e94d63)
## [0.1.11] - 2025-09-18
### Dependencies
- Updated to bedrock-agentcore SDK v0.1.4
## [0.1.10] - 2025-09-08
### Changes
- chore/improve invoke (#153) (824b22c)
- feat: add agentcore destroy command (#100) (0611649)
- chore: bump version to 0.1.9 (#152) (6e65256)
## [0.1.9] - 2025-09-07
### Changes
- fix: resolve regex escape sequence warnings (#151) (70d7381)
- feat(gateway): handle existing policies gracefully in _attach_policy (#140) (f372b99)
- chore: bump version to 0.1.8 (#150) (1421e48)
### Dependencies
- Updated to bedrock-agentcore SDK v0.1.3
## [0.1.8] - 2025-09-02
### Changes
- chore/cb latency optimization (#146) (3523bfa)
- chore(deps): update mkdocstrings-python requirement (#133) (8b8afb5)
- Release vv0.1.7 (b473e38)
## [0.1.7] - 2025-08-28
- Enhanced execution role permissions - Added relevant permissions for Runtime, Memory and Identity services to auto-created execution role (#132)
- Windows compatibility fix - Resolved file handle issue on Windows systems by properly closing NameTemporaryFile, fixing deployment failures with "process cannot access the file" errors (#106)
- Corrected managed policy name from AmazonBedrockAgentCoreFullAccess to BedrockAgentCoreFullAccess (#124)
- S3 permissions - Added missing S3 permissions documentation for bucket creation and lifecycle configuration (#124)
- Fixed IaC reference - Corrected typo in Infrastructure as Code reference (#124)
- Other documentation enhancements for clarity and completeness
## [0.1.6] - 2025-08-11
Updated SDK dependency to >=0.1.2 for improved thread pool handling and concurrency fixes
### Dependencies
- Updated to bedrock-agentcore SDK v0.1.2
## [0.1.5] - 2025-08-08
### Changes
- ci(deps): bump trufflesecurity/trufflehog from 3.82.3 to 3.90.3 (#99) (c055722)
- ci(deps): bump astral-sh/setup-uv from 3 to 6 (#80) (8f70a8c)
- increase botocore timeout (#108) (db90f00)
- bump the default otel dependency (#107) (4fd8429)
- bump version to 0.1.4 (#105) (a21ecfb)
## [0.1.4] - 2025-08-06
Added a utility to import from Bedrock Agents -> Bedrock AgentCore. Developers can generate and deploy a Langchain/Strands + AgentCore agent from a selected Bedrock Agent. The output agent leverages AgentCore primitives such as Gateway, Observability, Memory, and Code Interpreter. Added documentation on usage and design of this utility. This utility does not introduce any breaking changes. It is aimed towards Bedrock Agents customers who want to try a code-first, extensible approach with AgentCore.
## [0.1.3] - 2025-08-01
### BREAKING CHANGES
- **CodeBuild is now the default launch method** - The `--codebuild` flag is no longer needed
- To use local Docker builds, you must now explicitly use `--local-build` flag
- This change improves the default user experience by building ARM64 containers in the cloud without requiring local Docker
### Added
- **Streaming invoke support re-enabled** - Restored streaming functionality for real-time agent responses
- **Extended request timeout** - Increased invoke request timeout from default to 900 seconds (15 minutes) to support long-running agent operations
### Changed
- **Default launch behavior** - CodeBuild is now the default (`use_codebuild=True`)
- Users no longer need Docker installed locally for standard deployments
- Automatic ARM64 container builds in AWS CodeBuild
- Use `agentcore launch` for cloud builds (default)
- Use `agentcore launch --local-build` for local Docker builds
### Improved
- **Enhanced CLI help text** - Clearer descriptions guide users toward recommended options
- **Better error messages** - Actionable recommendations for common issues
- **Conflict handling** - Enhanced exception messages now suggest using `--auto-update-on-conflict` flag
## [0.1.2] - 2025-07-23
### Fixed
- **S3 bucket creation in us-east-1 region** - Fixed CodeBuild S3 bucket creation failure
- Removed unsupported `LocationConstraint` parameter for us-east-1 region
- us-east-1 is the default S3 region and does not accept LocationConstraint
- CodeBuild feature now works correctly in all AWS regions including IAD
### Dependencies
- Updated to use bedrock-agentcore SDK v0.1.1
## [0.1.1] - 2025-07-22
### Added
- **Multi-platform Docker build support via AWS CodeBuild** (#1)
- New `--codebuild` flag for `agentcore launch` command enables ARM64 container builds
- Complete `CodeBuildService` class with ARM64-optimized build pipeline
- Automated infrastructure provisioning (S3 buckets, IAM roles, CodeBuild projects)
- ARM64-optimized buildspec with Docker BuildKit caching and parallel push operations
- Smart source management with .dockerignore pattern support and S3 lifecycle policies
- Real-time build monitoring with detailed phase tracking
- Support for `aws/codebuild/amazonlinux2-aarch64-standard:3.0` image
- ECR caching strategy for faster ARM64 builds
- **Automatic IAM execution role creation** (#2)
- Auto-creation of IAM execution roles for Bedrock AgentCore Runtime
- Policy templates for execution role and trust policy
- Detailed logging and progress tracking during role creation
- Informative error messages for common IAM scenarios
- Eliminates need for manual IAM role creation before deployment
- **Auto-update on conflict for agent deployments** (#3)
- New `--auto-update-on-conflict` flag for `agentcore launch` command
- Automatically updates existing agents instead of failing with conflict errors
- Available in both CLI and notebook interfaces
- Streamlines iterative development and deployment workflows
### Changed
- Enhanced `agentcore launch` command to support both local Docker and CodeBuild workflows
- Improved error handling patterns throughout the codebase
- Updated AWS SDK exception handling to use standard `ClientError` patterns instead of service-specific exceptions
### Fixed
- Fixed AWS IAM exception handling by replacing problematic service-specific exceptions with standard `ClientError` patterns
- Resolved pre-commit hook compliance issues with proper code formatting
### Improved
- Added 90%+ test coverage with 20+ new comprehensive test cases
- Enhanced error handling with proper AWS SDK patterns
- Improved build reliability and monitoring capabilities
- Better user experience with one-command ARM64 deployment
## [0.1.0] - 2025-07-16
### Added
- Initial release of Bedrock AgentCore Starter Toolkit
- CLI toolkit for deploying AI agents to Amazon Bedrock AgentCore
- Zero infrastructure management with built-in gateway and memory integrations
- Support for popular frameworks (Strands, LangGraph, CrewAI, custom agents)
- Core CLI commands: `configure`, `launch`, `invoke`, `status`
- Local testing capabilities with `--local` flag
- Integration with Bedrock AgentCore SDK
- Basic Docker containerization support
- Comprehensive documentation and examples
================================================
FILE: CODE-OF-CONDUCT.md
================================================
# Code of Conduct
This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to a positive environment:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior:
* The use of sexualized language or imagery and unwelcome sexual attention
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information without explicit permission
* Other conduct which could reasonably be considered inappropriate
## Our Responsibilities
Project maintainers are responsible for clarifying and enforcing standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at opensource-codeofconduct@amazon.com. All complaints will be reviewed and investigated promptly and fairly.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
For the full Amazon Open Source Code of Conduct, see https://aws.github.io/code-of-conduct.
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Bedrock AgentCore CLI Starter Toolkit
👋 Welcome! We're glad you're interested in the Bedrock AgentCore CLI Starter Toolkit.
## 🔒 Code Contribution Policy
**This repository is maintained exclusively by the AWS Bedrock AgentCore team and is not currently accepting external pull requests.**
While we appreciate your interest in contributing code, we maintain this policy to:
- Ensure code quality and security standards
- Maintain consistency with internal AWS development practices
- Align with our product roadmap and architecture decisions
- Comply with AWS security and compliance requirements
## How You Can Help
Although we don't accept code contributions, your feedback is invaluable! Here's how you can help improve the CLI Starter Toolkit:
### Report Bugs
Found something that doesn't work as expected? Please [open an issue](https://github.com/aws/bedrock-agentcore-starter-toolkit/issues/new?template=bug_report.md) with:
- A clear description of the problem
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details (OS, Python version, SDK version)
- Relevant code snippets and error messages
### Request Features
Have an idea for a new feature? Please [open a feature request](https://github.com/aws/bedrock-agentcore-starter-toolkit/issues/new?template=feature_request.md) with:
- Description of the problem you're trying to solve
- Proposed solution or feature
- Use cases and examples
- Any alternative solutions you've considered
### Improve Documentation
Spot an error or unclear explanation in our docs? Please [open a documentation issue](https://github.com/aws/bedrock-agentcore-starter-toolkit/issues/new?template=documentation.md) with:
- Link to the documentation page
- Description of the issue or improvement
- Suggested changes (if applicable)
### Share Examples
Created something cool with the CLI Starter Toolkit? While we can't accept code PRs, we'd love to hear about your use cases:
- Open a "Show and Tell" discussion in our [Discussions forum](https://github.com/aws/bedrock-agentcore-starter-toolkit/discussions)
- Share your experience and learnings
- Help other users with questions
## Issue Guidelines
When creating an issue:
1. **Search first**: Check if a similar issue already exists
2. **Use templates**: Select the appropriate issue template
3. **Be specific**: Provide as much detail as possible
4. **Stay on topic**: Keep discussions focused on the issue
5. **Be respectful**: Follow our Code of Conduct
## Security Issues
For security vulnerabilities, please **DO NOT** open a public issue. Instead:
- Email: aws-security@amazon.com
- Or use GitHub's private security advisory feature
See our [Security Policy](SECURITY.md) for more details.
## Questions and Discussions
- For questions about using the CLI Starter Toolkit, please use [GitHub Discussions](https://github.com/aws/bedrock-agentcore-starter-toolkit/discussions)
- For AWS Bedrock service questions, visit [AWS re:Post](https://repost.aws/)
- For urgent AWS support, use your [AWS Support](https://aws.amazon.com/support/) plan
## Development Setup (For AWS Team Members)
### About Package Management
This project uses [`uv`](https://docs.astral.sh/uv/) for dependency management, providing:
- ⚡ 10-100x faster package installation than pip
- 🔒 Lockfile support for reproducible builds
- 📦 Built-in virtual environment management
- 🎯 PEP 517 compliant builds
The repository includes:
- `pyproject.toml` - Project metadata and dependencies
- `uv.lock` - Locked dependency versions for reproducibility
### Initial Setup
```bash
# Clone and create virtual environment with dependencies
git clone https://github.com/aws/bedrock-agentcore-starter-toolkit.git
cd bedrock-agentcore-starter-toolkit
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv sync
# Install pre-commit hooks (one-time)
pre-commit install
```
That's it! You're ready to develop.
### Daily Development Workflow
Pre-commit hooks will now run automatically:
```bash
# Make your changes
vim src/bedrock_agentcore_starter_toolkit/cli/commands.py
# Commit (hooks run automatically)
git commit -m "feat: add new command"
# ↑ Formatting and linting run here (~10-20 seconds)
# Push (tests run automatically)
git push origin my-branch
# ↑ Security scanning and tests run here (~2-5 minutes)
```
### What the Hooks Check
**On every commit** (~10-20 seconds):
- ✅ Code formatting (auto-fixes with ruff)
- ✅ Import sorting (auto-fixes)
- ✅ Linting (with ruff)
- ✅ File hygiene (trailing whitespace, etc.)
**Before every push** (~2-5 minutes):
- ✅ Security scanning (bandit)
- ✅ Full test suite with coverage
### Skipping Hooks (WIP Commits)
For work-in-progress commits, you can skip checks:
```bash
git commit --no-verify -m "wip: incomplete work"
```
**Please run all checks before opening a PR!**
### Running Checks Manually
```bash
# Run all pre-commit checks
pre-commit run --all-files
# Run only pre-commit stage (fast)
pre-commit run --hook-stage pre-commit --all-files
# Run only pre-push stage (includes tests)
pre-commit run --hook-stage pre-push --all-files
# Run tests manually
uv run pytest tests/ --cov=src
# Run the CLI
uv run agentcore --help
# Add new dependencies
uv add requests
# Add development dependencies
uv add --dev pytest-mock
```
### Updating snapshots
`agentcore create` has snapshot tests to keep track of generated outputs. If you make a change that affects the template output, the test will fail.
The expectation is to run `uv run pytest tests/create --snapshot-update`
That will update the snapshot with the new output. The purpose of this system is to see the diff to the templates in commit/PR diff.
## Code of Conduct
This project adheres to the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). By participating, you're expected to uphold this code.
## Governance
This project is governed by the AWS Bedrock AgentCore team. Decisions about the project's direction, features, and releases are made internally by AWS.
## License
By engaging with this project, you agree that your contributions (issues, discussions, etc.) are submitted under the [Apache 2.0 License](LICENSE).
## 🙏 Thank You
Even though we can't accept code contributions at this time, your feedback, bug reports, and feature requests help us make the Bedrock AgentCore CLI Starter Toolkit better for everyone. We truly appreciate your involvement and support!
---
**Note**: This policy may change in the future. If we open the repository to external contributions, we'll update this document and announce the change.
================================================
FILE: LICENSE.txt
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NOTICE.txt
================================================
Bedrock AgentCore CLI Starter Toolkit
Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
This product includes software developed by Amazon.com, Inc. (https://www.amazon.com/).
**********************
THIRD PARTY COMPONENTS
**********************
This software includes the following third-party software/licensing:
================================================================================
1. boto3
================================================================================
Copyright 2013-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
================================================================================
2. botocore
================================================================================
Copyright 2012-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
================================================================================
3. typer
================================================================================
The MIT License (MIT)
Copyright (c) 2019 Sebastián Ramírez
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
================================================================================
4. rich
================================================================================
The MIT License (MIT)
Copyright (c) 2020 Will McGugan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
================================================================================
5. pydantic
================================================================================
The MIT License (MIT)
Copyright (c) 2017 to present Pydantic Services Inc. and individual contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
================================================================================
6. httpx
================================================================================
Copyright © 2019, to present Encode OSS Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
================================================================================
7. jinja2
================================================================================
Copyright 2007 Pallets
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
================================================================================
8. PyYAML
================================================================================
Copyright (c) 2017-2021 Ingy döt Net
Copyright (c) 2006-2016 Kirill Simonov
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
================================================================================
9. urllib3
================================================================================
MIT License
Copyright (c) 2008-2020 Andrey Petrov and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
================================================================================
10. requests
================================================================================
Copyright 2019 Kenneth Reitz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
================================================================================
11. uvicorn
================================================================================
Copyright © 2017-present, Encode OSS Ltd. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
================================================================================
For the full text of licenses, please see the individual LICENSE files
in the source distribution or visit the project homepages.
================================================
FILE: README.md
================================================
<div align="center">
<h1>
Bedrock AgentCore Starter Toolkit
</h1>
<div align="center">
<a href="https://github.com/aws/bedrock-agentcore-starter-toolkit/graphs/commit-activity"><img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/aws/bedrock-agentcore-starter-toolkit"/></a>
<a href="https://github.com/aws/bedrock-agentcore-starter-toolkit/issues"><img alt="GitHub open issues" src="https://img.shields.io/github/issues/aws/bedrock-agentcore-starter-toolkit"/></a>
<a href="https://github.com/aws/bedrock-agentcore-starter-toolkit/pulls"><img alt="GitHub open pull requests" src="https://img.shields.io/github/issues-pr/aws/bedrock-agentcore-starter-toolkit"/></a>
<a href="https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/main/LICENSE.txt"><img alt="License" src="https://img.shields.io/github/license/aws/bedrock-agentcore-starter-toolkit"/></a>
<a href="https://pypi.org/project/bedrock-agentcore-starter-toolkit"><img alt="PyPI version" src="https://img.shields.io/pypi/v/bedrock-agentcore-starter-toolkit"/></a>
<a href="https://python.org"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/bedrock-agentcore-starter-toolkit"/></a>
</div>
<p>
<a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html">Documentation</a>
◆ <a href="https://github.com/awslabs/amazon-bedrock-agentcore-samples">Samples</a>
◆ <a href="https://discord.gg/bedrockagentcore-preview">Discord</a>
◆ <a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-agentcore-control.html">Boto3 Python SDK</a>
◆ <a href="https://github.com/aws/bedrock-agentcore-sdk-python">Runtime Python SDK</a>
◆ <a href="https://github.com/aws/bedrock-agentcore-starter-toolkit">Starter Toolkit</a>
</p>
</div>
<br/>
> **⚠️ Recommendation: Use the AgentCore CLI for new projects**
>
> The **[AgentCore CLI (`@aws/agentcore`)](https://github.com/aws/agentcore-cli)** is now the recommended way to create, develop, and deploy AI agents on Amazon Bedrock AgentCore. It supports a broader set of frameworks (Strands, LangGraph, LangChain, Google ADK, OpenAI Agents, and BYO), provides local development with hot reload, built-in evaluations, gateway management, and more.
>
> **For new projects**, install the AgentCore CLI:
> ```bash
> npm install -g @aws/agentcore
> ```
>
> **Migrating from this toolkit?** See the [Migration Guide](https://github.com/awslabs/amazon-bedrock-agentcore-samples/blob/main/MIGRATION.md) for step-by-step instructions, and the [AgentCore CLI documentation](https://github.com/aws/agentcore-cli/tree/main/docs) for:
> - [Commands reference](https://github.com/aws/agentcore-cli/blob/main/docs/commands.md) — create, deploy, dev, invoke, add, remove, logs, traces, evals
> - [Supported frameworks](https://github.com/aws/agentcore-cli/blob/main/docs/frameworks.md) — Strands, LangGraph, LangChain, Google ADK, OpenAI Agents, BYO, and import from existing projects
> - [Configuration guide](https://github.com/aws/agentcore-cli/blob/main/docs/configuration.md) — agentcore.json, mcp.json, environment setup
> - [Local development](https://github.com/aws/agentcore-cli/blob/main/docs/local-development.md) — hot reload dev server
> - [Memory](https://github.com/aws/agentcore-cli/blob/main/docs/memory.md), [Gateway](https://github.com/aws/agentcore-cli/blob/main/docs/gateway.md), [Evaluations](https://github.com/aws/agentcore-cli/blob/main/docs/evals.md)
> - [IAM permissions](https://github.com/aws/agentcore-cli/blob/main/docs/PERMISSIONS.md)
>
> This starter toolkit remains available for existing Python-based workflows but is no longer the recommended starting point.
## Overview
Amazon Bedrock AgentCore enables you to deploy and operate highly effective agents securely, at scale using any framework and model. With Amazon Bedrock AgentCore, developers can accelerate AI agents into production with the scale, reliability, and security, critical to real-world deployment. AgentCore provides tools and capabilities to make agents more effective and capable, purpose-built infrastructure to securely scale agents, and controls to operate trustworthy agents. Amazon Bedrock AgentCore services are composable and work with popular open-source frameworks and any model, so you don’t have to choose between open-source flexibility and enterprise-grade security and reliability.
Amazon Bedrock AgentCore includes the following modular Services that you can use together or independently:
## 🚀 Jump Into AgentCore
> **New projects should use the [AgentCore CLI](https://github.com/aws/agentcore-cli):** `npm install -g @aws/agentcore`
If you prefer a Python-based workflow, you can still get started with this toolkit using `agentcore create`.
Pick your favorite Agent SDK framework and model provider like Strands with Amazon Bedrock. You'll get a brand new project ready to be deployed onto AgentCore.
**[Create Quick Start (Starter Toolkit)](https://aws.github.io/bedrock-agentcore-starter-toolkit/user-guide/create/quickstart.html)** · **[Create Quick Start (AgentCore CLI)](https://github.com/aws/agentcore-cli/blob/main/docs/commands.md)**
## 🛠️ Amazon Bedrock AgentCore Runtime
AgentCore Runtime is a secure, serverless runtime purpose-built for deploying and scaling dynamic AI agents and tools using any open-source framework including LangGraph, CrewAI, and Strands Agents, any protocol, and any model. Runtime was built to work for agentic workloads with industry-leading extended runtime support, fast cold starts, true session isolation, built-in identity, and support for multi-modal payloads. Developers can focus on innovation while Amazon Bedrock AgentCore Runtime handles infrastructure and security -- accelerating time-to-market
**[Runtime Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-get-started-toolkit.html)**
## 🧠 Amazon Bedrock AgentCore Memory
AgentCore Memory makes it easy for developers to build context aware agents by eliminating complex memory infrastructure management while providing full control over what the AI agent remembers. Memory provides industry-leading accuracy along with support for both short-term memory for multi-turn conversations and long-term memory that can be shared across agents and sessions.
**[Memory Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-get-started.html)**
## 🔗 Amazon Bedrock AgentCore Gateway
Amazon Bedrock AgentCore Gateway acts as a managed Model Context Protocol (MCP) server that converts APIs and Lambda functions into MCP tools that agents can use. Gateway manages the complexity of OAuth ingress authorization and secure egress credential exchange, making standing up remote MCP servers easier and more secure. Gateway also offers composition and built-in semantic search over tools, enabling developers to scale their agents to use hundreds or thousands of tools.
**[Gateway Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-quick-start.html)**
## 💻 Amazon Bedrock AgentCore Code Interpreter
AgentCore Code Interpreter tool enables agents to securely execute code in isolated sandbox environments. It offers advanced configuration support and seamless integration with popular frameworks. Developers can build powerful agents for complex workflows and data analysis while meeting enterprise security requirements.
**[Code Interpreter Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/code-interpreter-getting-started.html)**
## 🌐 Amazon Bedrock AgentCore Browser
AgentCore Browser tool provides a fast, secure, cloud-based browser runtime to enable AI agents to interact with websites at scale. It provides enterprise-grade security, comprehensive observability features, and automatically scales— all without infrastructure management overhead.
**[Browser Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/browser-onboarding.html)**
## 📊 Amazon Bedrock AgentCore Observability
AgentCore Observability helps developers trace, debug, and monitor agent performance in production through unified operational dashboards. With support for OpenTelemetry compatible telemetry and detailed visualizations of each step of the agent workflow, AgentCore enables developers to easily gain visibility into agent behavior and maintain quality standards at scale.
**[Observability Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-get-started.html)**
## 🎯 Amazon Bedrock AgentCore Evaluation
AgentCore Evaluation enables developers to assess and improve agent quality through built-in and custom evaluators. With support for on-demand evaluation and continuous monitoring via online evaluation, developers can measure agent performance metrics like helpfulness, correctness, and goal success rates. Evaluation integrates seamlessly with observability to provide actionable insights for maintaining and improving agent quality at scale.
**[Evaluation Documentation](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/evaluations.html)** • **[Quick Start](https://aws.github.io/bedrock-agentcore-starter-toolkit/user-guide/evaluation/quickstart.html)**
## 🔐 Amazon Bedrock AgentCore Identity
AgentCore Identity provides a secure, scalable agent identity and access management capability accelerating AI agent development. It is compatible with existing identity providers, eliminating needs for user migration or rebuilding authentication flows. AgentCore Identity's helps to minimize consent fatigue with a secure token vault and allows you to build streamlined AI agent experiences. Just-enough access and secure permission delegation allow agents to securely access AWS resources and third-party tools and services.
**[Identity Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/identity-getting-started-cognito.html)**
## 🛡️ Amazon Bedrock AgentCore Policy
Policy in AgentCore gives you real time, deterministic control over agent's actions through AgentCore Gateway, ensuring agents stay within defined boundaries and business rules without slowing them down. Easily express fine-grained rules using natural language description or author them directly using Cedar - AWS's open-source policy language - giving you complete control over who can perform which actions under what conditions.
**[Policy Quick Start](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy-getting-started.html)**
## 🔐 Import Amazon Bedrock Agents to Bedrock AgentCore
AgentCore Import-Agent enables seamless migration of existing Amazon Bedrock Agents to LangChain/LangGraph or Strands frameworks while automatically integrating AgentCore primitives like Memory, Code Interpreter, and Gateway. Developers can migrate agents in minutes with full feature parity and deploy directly to AgentCore Runtime for serverless operation.
**[Import Agent Quick Start](https://aws.github.io/bedrock-agentcore-starter-toolkit/user-guide/import-agent/quickstart.html)**
## Installation
### Recommended: AgentCore CLI
```bash
npm install -g @aws/agentcore
```
See the [AgentCore CLI README](https://github.com/aws/agentcore-cli) and [docs](https://github.com/aws/agentcore-cli/tree/main/docs) for full usage.
### Starter Toolkit (Python)
If you prefer a Python-based workflow:
```bash
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create the virtual environment (requires python 3.10) and activate it
uv venv --python 3.10
source .venv/bin/activate
# Install using uv (recommended)
uv pip install bedrock-agentcore-starter-toolkit
# Or alternatively with pip
pip install bedrock-agentcore-starter-toolkit
```
## 📝 License & Contributing
- **License:** Apache 2.0 - see [LICENSE.txt](LICENSE.txt)
- **Contributing:** See [CONTRIBUTING.md](CONTRIBUTING.md)
- **Security:** Report vulnerabilities via [SECURITY.md](SECURITY.md)
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Reporting Security Issues
At AWS, we take security seriously. We appreciate your efforts to responsibly disclose your findings and will make every effort to acknowledge your contributions.
To report a security issue, please use one of the following methods:
### Option 1: Report through AWS Security
Please report security issues to AWS Security via:
- **Email**: [aws-security@amazon.com](mailto:aws-security@amazon.com)
- **Web**: [AWS Vulnerability Reporting](https://aws.amazon.com/security/vulnerability-reporting/)
### Option 2: Create a Private Security Advisory
For non-critical issues, you may also use GitHub's private security advisory feature:
1. Go to the Security tab of this repository
2. Click on "Report a vulnerability"
3. Fill out the form with details about the vulnerability
## What to Include in Your Report
Please include the following information to help us better understand the nature and scope of the issue:
- **Type of issue** (e.g., buffer overflow, SQL injection, cross-site scripting, credential exposure, etc.)
- **Full paths of source file(s) related to the issue**
- **Location of the affected source code** (tag/branch/commit or direct URL)
- **Any special configuration required to reproduce the issue**
- **Step-by-step instructions to reproduce the issue**
- **Proof-of-concept or exploit code** (if possible)
- **Impact of the issue**, including how an attacker might exploit it
- **Any potential mitigations you've identified**
## Response Timeline
We will acknowledge receipt of your vulnerability report within **3 business days** and send a more detailed response within **7 business days** indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement.
## Supported Versions
We provide security updates for the following versions:
| Version | Supported |
| ------- | ------------------ |
| Latest release | ✅ |
| Previous minor release | ✅ |
| Older versions | ❌ |
## Security Best Practices
When using the Bedrock AgentCore CLI Starter Toolkit:
### 1. **Credential Management**
- Never hardcode AWS credentials in your code
- Use AWS IAM roles and instance profiles when possible
- Rotate credentials regularly
- Use AWS Secrets Manager or Parameter Store for sensitive configuration
### 2. **OAuth Token Security**
- Store OAuth tokens securely using appropriate secret management services
- Never log or expose OAuth tokens
- Implement token rotation where supported
- Use short-lived tokens when possible
### 3. **Container Security**
- Keep base images updated with security patches
- Scan container images for vulnerabilities before deployment
- Use minimal base images to reduce attack surface
- Never store secrets in container images
### 4. **IAM Best Practices**
- Follow the principle of least privilege for execution roles
- Use session tags for fine-grained access control
- Regularly audit and review IAM permissions
- Use service control policies (SCPs) where applicable
### 5. **Network Security**
- Use VPC endpoints when available
- Implement proper security group rules
- Enable VPC Flow Logs for monitoring
- Use TLS 1.2 or higher for all communications
## Vulnerability Disclosure Policy
- Security vulnerabilities will be disclosed via GitHub Security Advisories
- We will provide credit to security researchers who responsibly disclose vulnerabilities (unless they prefer to remain anonymous)
- We request a 90-day disclosure timeline to allow for patching and distribution
## Security Updates
Security updates will be released as:
- **Critical**: Immediate patch release
- **High**: Within 30 days
- **Medium**: Within 60 days
- **Low**: Next regular release cycle
Subscribe to our security announcements by watching this repository and enabling security alerts.
## Additional Resources
- [AWS Security Center](https://aws.amazon.com/security/)
- [AWS Well-Architected Security Pillar](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html)
- [Bedrock Security Best Practices](https://docs.aws.amazon.com/bedrock/latest/userguide/security.html)
---
**Note**: This repository is maintained by AWS and is not currently accepting external code contributions. Please report issues through the channels described above.
================================================
FILE: buildspec-lambda-package.yml
================================================
version: 0.2
phases:
pre_build:
commands:
- echo "Lambda compute build starting (no Docker)..."
- start=$(date +%s)
- echo "Setting up Python environment..."
- python3 -m venv /tmp/venv
- source /tmp/venv/bin/activate
- pip install --upgrade pip
build:
commands:
- echo "Installing dependencies..."
- pip install -e . --target /tmp/layer
- echo "Creating deployment package..."
- cd /tmp/layer
- zip -r /tmp/deployment.zip .
- cd $CODEBUILD_SRC_DIR
- zip -r /tmp/deployment.zip . -x "*.git*" -x "*__pycache__*"
- echo "Package size: $(du -h /tmp/deployment.zip)"
post_build:
commands:
- end=$(date +%s)
- echo "Build completed in $((end - start)) seconds"
- echo "Uploading to S3..."
- aws s3 cp /tmp/deployment.zip s3://bedrock-agentcore-codebuild-sources-309149493152-us-west-2/test_siwabhi_9_6_3/lambda-deployment.zip
- echo "Lambda package ready (no container needed)"
================================================
FILE: documentation/.gitignore
================================================
.cache
site
.DS_Store
================================================
FILE: documentation/README.md
================================================
This repository contains the documentation for the Bedrock AgentCore SDK, primitives for building and running AI agents. The documentation is built using [MkDocs](https://www.mkdocs.org/) and provides guides, examples, and API references.
## Local Development
### Prerequisites
- Python 3.10+
### Setup and Installation
```bash
uv pip install mkdocs
```
### Building and Previewing
To generate the static site:
```bash
mkdocs build
```
This will create the site in the `site` directory.
To run a local development server:
```bash
mkdocs serve
```
This will start a server at http://127.0.0.1:8000/ for previewing the documentation.
================================================
FILE: documentation/docs/api-reference/cli.md
================================================
# CLI
Command-line interface for BedrockAgentCore Starter Toolkit.
The `agentcore` CLI provides commands for configuring, launching, managing agents, and working with gateways.
## Runtime Commands
### Configure
Configure agents and runtime environments.
```bash
agentcore configure [OPTIONS]
```
Options:
- `--entrypoint, -e TEXT`: Python file of agent
- `--name, -n TEXT`: Agent name (defaults to Python file name)
- `--execution-role, -er TEXT`: IAM execution role ARN
- `--code-build-execution-role, -cber TEXT`: CodeBuild execution role ARN (uses execution-role if not provided)
- `--ecr, -ecr TEXT`: ECR repository name (use “auto” for automatic creation)
- `--container-runtime, -ctr TEXT`: Container runtime (for container deployment only)
- `--deployment-type, -dt TEXT`: Deployment type (direct_code_deploy or container, default: direct_code_deploy)
- `--runtime, -rt TEXT`: Python runtime version for direct_code_deploy (PYTHON_3_10, PYTHON_3_11, PYTHON_3_12, PYTHON_3_13)
- `--requirements-file, -rf TEXT`: Path to requirements file of agent
- `--disable-otel, -do`: Disable OpenTelemetry
- `--disable-memory, -dm`: Disable memory (skip memory setup entirely)
- `--authorizer-config, -ac TEXT`: OAuth authorizer configuration as JSON string
- `--request-header-allowlist, -rha TEXT`: Comma-separated list of allowed request headers
- `--vpc`: Enable VPC networking mode (requires --subnets and --security-groups)
- `--subnets TEXT`: Comma-separated list of subnet IDs (required with --vpc)
- `--security-groups TEXT`: Comma-separated list of security group IDs (required with --vpc)
- `--idle-timeout, -it INTEGER`: Seconds before idle session terminates (60-28800, default: 900)
- `--max-lifetime, -ml INTEGER`: Maximum instance lifetime in seconds (60-28800, default: 28800)
- `--verbose, -v`: Enable verbose output
- `--region, -r TEXT`: AWS region
- `--protocol, -p TEXT`: Agent server protocol (HTTP or MCP or A2A)
- `--non-interactive, -ni`: Skip prompts; use defaults unless overridden
- `--vpc`: Enable VPC networking mode for secure access to private resources
- `--subnets TEXT`: Comma-separated list of subnet IDs (required when --vpc is enabled)
- `--security-groups TEXT`: Comma-separated list of security group IDs (required when --vpc is enabled)
Subcommands:
- `list`: List configured agents
- `set-default`: Set default agent
**Memory Configuration:**
Memory is **opt-in** by default. To enable memory:
```bash
# Interactive mode - prompts for memory setup
agentcore configure --entrypoint agent.py
# Options during prompt:
# - Use existing memory (select by number)
# - Create new memory (press Enter, then choose STM only or STM+LTM)
# - Skip memory setup (type 's')
# Explicitly disable memory
agentcore configure --entrypoint agent.py --disable-memory
# Non-interactive mode (uses STM only by default)
agentcore configure --entrypoint agent.py --non-interactive
```
**Memory Modes:**
- **NO_MEMORY** (default): No memory resources created
- **STM_ONLY**: Short-term memory (30-day retention, stores conversations within sessions)
- **STM_AND_LTM**: Short-term + Long-term memory (extracts preferences, facts, and summaries across sessions)
**Region Configuration:**
```bash
# Use specific region
agentcore configure -e agent.py --region us-east-1
# Region precedence:
# 1. --region flag
# 2. AWS_DEFAULT_REGION environment variable
# 3. AWS CLI configured region
```
**VPC Networking:**
When enabled, agents run within your VPC for secure access to private resources:
- **Requirements:**
- All subnets must be in the same VPC
- Subnets must be in supported Availability Zones
- Security groups must allow required egress traffic
- Automatically creates `AWSServiceRoleForBedrockAgentCoreNetwork` service-linked role if needed
- **Validation:**
- Validates subnets belong to the same VPC
- Checks subnet availability zones are supported
- Verifies security groups exist and are properly configured
- **Network Immutability:**
- VPC configuration cannot be changed after initial deployment
- To modify network settings, create a new agent configuration
**Lifecycle Configuration:**
Session lifecycle management controls when runtime sessions automatically terminate:
- **Idle Timeout**: Terminates session after specified seconds of inactivity (60-28800 seconds)
- **Max Lifetime**: Terminates session after maximum runtime regardless of activity (60-28800 seconds)
- Validation ensures `max-lifetime >= idle-timeout`
```bash
# Configure with lifecycle settings
agentcore configure --entrypoint agent.py \
--idle-timeout 1800 \ # 30 minutes idle before termination
--max-lifetime 7200 # 2 hours max regardless of activity
```
### Deploy
Deploy agents to AWS or run locally.
```bash
agentcore deploy [OPTIONS]
```
Options:
- `--agent, -a TEXT`: Agent name
- `--local, -l`: Build and run locally (requires Docker/Finch/Podman)
- `--local-build, -lb`: Build locally and deploy to cloud (requires Docker/Finch/Podman)
- `--image-tag, -t TEXT`: Custom image tag for version isolation (default: auto-generated timestamp YYYYMMDD-HHMMSS-mmm)
- `--auto-update-on-conflict, -auc`: Automatically update existing agent instead of failing
- `--env, -env TEXT`: Environment variables for agent (format: KEY=VALUE)
**Deployment Modes:**
```bash
# CodeBuild (default) - Cloud build, no Docker required
agentcore deploy
# Local mode - Build and run locally
agentcore deploy --local
# Local build mode - Build locally, deploy to cloud
agentcore deploy --local-build
# Deploy with custom image tag for version control
agentcore deploy --image-tag v1.2.3
# Deploy with semantic versioning
agentcore deploy --image-tag $(git describe --tags --always)
```
**Image Versioning:**
Each deployment automatically gets a unique immutable image tag for version isolation:
- Default: Auto-generated timestamp (e.g., `20260109-094500-123`)
- Custom: Use `--image-tag` for semantic versioning or build numbers
- Ensures previous agent versions continue using their original images
**Memory Provisioning:**
During deploy, if memory is enabled:
- Memory resources are created and provisioned
- Deploy waits for memory to become ACTIVE before proceeding
- STM provisioning: ~30-90 seconds
- LTM provisioning: ~120-180 seconds
- Progress updates displayed during wait
### Invoke
Invoke deployed agents.
```bash
agentcore invoke [PAYLOAD] [OPTIONS]
```
Arguments:
- `PAYLOAD`: JSON payload to send
Options:
- `--agent, -a TEXT`: Agent name
- `--session-id, -s TEXT`: Session ID
- `--bearer-token, -bt TEXT`: Bearer token for OAuth authentication
- `--local, -l`: Send request to a running local agent (works with both direct_code_deploy and container deployments)
- `--user-id, -u TEXT`: User ID for authorization flows
- `--headers TEXT`: Custom headers (format: ‘Header1:value,Header2:value2’)
**Custom Headers:**
Headers will be auto-prefixed with `X-Amzn-Bedrock-AgentCore-Runtime-Custom-` if not already present:
```bash
# These are equivalent:
agentcore invoke '{"prompt": "test"}' --headers "Actor-Id:user123"
agentcore invoke '{"prompt": "test"}' --headers "X-Amzn-Bedrock-AgentCore-Runtime-Custom-Actor-Id:user123"
```
**Example Output:**
- Session and Request IDs displayed in panel header
- CloudWatch log commands ready to copy
- GenAI Observability Dashboard link (when OTEL enabled)
- Proper UTF-8 character rendering
- Clean response formatting without raw data structures
Example output:
```
╭────────── agent_name ──────────╮
│ Session: abc-123 │
│ Request ID: req-456 │
│ ARN: arn:aws:bedrock... │
│ Logs: aws logs tail ... --follow│
│ GenAI Dashboard: https://... │
╰─────────────────────────────────╯
Response:
Your formatted response here
```
### Status
Get Bedrock AgentCore status including config and runtime details, and VPC configuration.
```bash
agentcore status [OPTIONS]
```
Options:
- `--agent, -a TEXT`: Agent name
- `--verbose, -v`: Verbose JSON output of config, agent, and endpoint status
**Status Display:**
Shows comprehensive agent information including:
- Agent deployment status
- Memory configuration and status (Disabled/CREATING/ACTIVE)
- Endpoint readiness
- VPC networking configuration (when enabled):
- VPC ID
- Subnet IDs and Availability Zones
- Security Group IDs
- Network mode indicator
- CloudWatch log paths
- GenAI Observability Dashboard link (when OTEL enabled)
### Destroy
Destroy Bedrock AgentCore resources.
```bash
agentcore destroy [OPTIONS]
```
Options:
- `--agent, -a TEXT`: Agent name
- `--dry-run`: Show what would be destroyed without actually destroying
- `--force`: Skip confirmation prompts
- `--delete-ecr-repo`: Also delete the ECR repository after removing images
**Destroyed Resources:**
- AgentCore endpoint
- AgentCore agent runtime
- ECR images
- CodeBuild project
- IAM execution role (if not used by other agents)
- Memory resources (if created by toolkit)
- Agent deployment configuration
```bash
# Preview what would be destroyed
agentcore destroy --dry-run
# Destroy with confirmation
agentcore destroy --agent my-agent
# Destroy without confirmation
agentcore destroy --agent my-agent --force
# Destroy and delete ECR repository
agentcore destroy --agent my-agent --delete-ecr-repo
```
### Stop Session
Terminate active runtime sessions to free resources and reduce costs.
```bash
agentcore stop-session [OPTIONS]
```
**Session Tracking:**
The CLI automatically tracks the runtime session ID from the last `agentcore invoke` command. This allows you to stop sessions without manually specifying the session ID.
**Examples:**
```bash
# Stop the last invoked session (tracked automatically)
agentcore stop-session
# Stop a specific session by ID
agentcore stop-session --session-id abc123xyz
# Stop session for specific agent
agentcore stop-session --agent my-agent --session-id abc123xyz
```
Options:
- `--session-id, -s TEXT`: Specific session ID to stop (optional)
- `--agent, -a TEXT`: Agent name
## Identity Commands
Manage AgentCore Identity resources for authentication with external services.
AgentCore supports two authentication methods for agents to access external services:
| Method | Use Case | Secrets Required |
|--------|----------|------------------|
| **OAuth 2.0** | User-delegated access (USER_FEDERATION) or M2M with OAuth providers | Yes (client secret) |
| **AWS JWT** | M2M with services that accept OIDC tokens | No |
### Setup AWS JWT
Enable AWS IAM Outbound Web Identity Federation for secretless M2M authentication.
```bash
agentcore identity setup-aws-jwt [OPTIONS]
```
Options:
- `--audience, -a TEXT`: Audience URL for the JWT - the external service that will validate the token (required)
- `--signing-algorithm, -s TEXT`: Signing algorithm: ES384 (recommended) or RS256 (default: ES384)
- `--duration, -d INTEGER`: Default token duration in seconds, 60-3600 (default: 300)
- `--region, -r TEXT`: AWS region (defaults to configured region)
**What it does:**
1. Enables AWS IAM Outbound Web Identity Federation for your account (one-time, idempotent)
2. Stores the audience configuration in `.bedrock_agentcore.yaml`
3. Returns the issuer URL to configure in your external service
**Examples:**
```bash
# Set up AWS JWT for an external API
agentcore identity setup-aws-jwt --audience https://api.example.com
# Add another audience (run command again)
agentcore identity setup-aws-jwt --audience https://api2.example.com
# Use RS256 algorithm for compatibility with legacy services
agentcore identity setup-aws-jwt --audience https://legacy-api.example.com --signing-algorithm RS256
# Custom token duration (10 minutes)
agentcore identity setup-aws-jwt --audience https://api.example.com --duration 600
```
**Output:**
```
╭─────────────────────────────────────────────────────────────────╮
│ ✅ Success │
│ │
│ AWS JWT Federation Configured │
│ │
│ Issuer URL: https://abc123-def456.tokens.sts.global.api.aws │
│ Audiences: https://api.example.com │
│ Algorithm: ES384 │
│ Duration: 300s │
│ │
│ Next Steps: │
│ 1. Configure your external service to trust this issuer URL │
│ 2. Run agentcore launch to deploy (IAM permissions auto-added) │
│ 3. Use @requires_iam_access_token(audience=[...]) in your agent │
╰─────────────────────────────────────────────────────────────────╯
```
**External Service Configuration:**
After running this command, configure your external service to:
1. Trust the issuer URL displayed in the output
2. Validate the audience claim matches your configured audience
3. Fetch the JWKS from `{issuer_url}/.well-known/jwks.json`
### List AWS JWT
Display the current AWS JWT federation configuration.
```bash
agentcore identity list-aws-jwt
```
**Example Output:**
```
╭──────────────────────────────────────────────────────────────────╮
│ AWS JWT Federation Configuration │
├─────────────────────┬────────────────────────────────────────────┤
│ Property │ Value │
├─────────────────────┼────────────────────────────────────────────┤
│ Enabled │ ✅ Yes │
│ Issuer URL │ https://abc123-def456.tokens.sts.global... │
│ Signing Algorithm │ ES384 │
│ Duration (seconds) │ 300 │
│ Audiences │ https://api.example.com │
│ │ https://api2.example.com │
╰─────────────────────┴────────────────────────────────────────────╯
```
### Setup Cognito
Create Cognito user pools for Identity authentication.
```bash
agentcore identity setup-cognito [OPTIONS]
```
Options:
- `--region, -r TEXT`: AWS region (defaults to configured region)
- `--auth-flow TEXT`: OAuth flow type - ‘user’ (USER_FEDERATION) or ‘m2m’ (M2M). Default: ‘user’
**Auth Flow Types:**
- `user` (default): USER_FEDERATION flow requiring user login and consent
- Creates user pool with hosted UI
- Generates test user credentials
- For agents that act on behalf of users
- `m2m`: M2M flow for machine-to-machine
- Creates user pool with resource server and scopes
- No user accounts needed
- For agents that authenticate as themselves
**What it creates:**
**1. Cognito Agent User Pool**: Manages user authentication to your agent
- **Purpose**: Authenticates users TO your agent
- **Flow**: User → Cognito → JWT → Agent Runtime
- **Contains**: User directory for agent access
- **Environment prefix**: `RUNTIME_*`
**2. Cognito Resource User Pool**: Enables agent to access external resources
- **Purpose**: Agent authenticates TO external services (GitHub, Google, etc.)
- **Flow**: Agent → Identity → External Service
- **Contains**: OAuth client credentials
- **Environment prefix**: `IDENTITY_*`
**Output:**
- Displays Runtime and Identity pool configurations (passwords hidden)
- Saves to `.agentcore_identity_cognito_{flow}.json` (flow-specific JSON)
- Saves to `.agentcore_identity_{flow}.env` (flow-specific environment variables)
- Provides copy-paste commands using actual values
**Security:**
- .env files have owner-only permissions (chmod 600)
- Passwords and secrets not echoed to terminal
- Flow-specific files prevent conflicts when using both flows
**Examples:**
```bash
# Create pools for user consent flow (default)
agentcore identity setup-cognito
# Create pools for machine-to-machine flow
agentcore identity setup-cognito --auth-flow m2m
# Load environment variables (bash/zsh)
export $(grep -v '^#' .agentcore_identity_user.env | xargs)
# or for m2m:
export $(grep -v '^#' .agentcore_identity_m2m.env | xargs)
# In Python
from dotenv import load_dotenv
load_dotenv('.agentcore_identity_user.env')
```
### Create Credential Provider
Create an OAuth 2.0 credential provider for external service authentication.
```bash
agentcore identity create-credential-provider [OPTIONS]
```
Options:
- `--name TEXT`: Provider name (required)
- `--type TEXT`: Provider type: cognito, github, google, salesforce (required)
- `--client-id TEXT`: OAuth 2.0 client ID (required)
- `--client-secret TEXT`: OAuth 2.0 client secret (required)
- `--discovery-url TEXT`: OIDC discovery URL (required for cognito)
- `--cognito-pool-id TEXT`: Cognito User Pool ID (optional, for auto-updating callback URLs)
- `--region TEXT`: AWS region (defaults to configured region)
**Provider Types:**
- `cognito`: Amazon Cognito User Pools
- `github`: GitHub OAuth
- `google`: Google OAuth
- `salesforce`: Salesforce OAuth
**Discovery URL Format:**
Must be the complete OIDC discovery URL including `.well-known/openid-configuration`:
```bash
# Cognito format
https://cognito-idp.us-west-2.amazonaws.com/us-west-2_xxxxx/.well-known/openid-configuration
```
**Automatic Configuration:**
- Creates the credential provider in AgentCore Identity
- Adds provider configuration to `.bedrock_agentcore.yaml`
- IAM permissions added automatically during `agentcore deploy`
**Note:** After creating a provider, you must register the returned `callbackUrl` in your OAuth provider’s settings (except for Cognito, which is auto-configured with `--cognito-pool-id`).
**Examples:**
```bash
# Using environment variables from setup-cognito
agentcore identity create-credential-provider \
--name MyServiceProvider \
--type cognito \
--client-id $IDENTITY_CLIENT_ID \
--client-secret $IDENTITY_CLIENT_SECRET \
--discovery-url $IDENTITY_DISCOVERY_URL \
--cognito-pool-id $IDENTITY_POOL_ID
# GitHub provider
agentcore identity create-credential-provider \
--name MyGitHub \
--type github \
--client-id "github_client_id" \
--client-secret "github_client_secret"
# IMPORTANT: Register the callback URL from the response
# in your GitHub OAuth app settings
```
### Create Workload Identity
Create a workload identity for agent-to-Identity service authentication.
```bash
agentcore identity create-workload-identity [OPTIONS]
```
Options:
- `--name TEXT`: Workload identity name (auto-generated if not provided)
- `--region TEXT`: AWS region (defaults to configured region)
**Example:**
```bash
agentcore identity create-workload-identity --name my-workload
```
### Get Cognito Inbound Token
Generate a JWT bearer token from Cognito for Runtime inbound authentication.
Automatically loads credentials from environment variables. Explicit parameters override environment variables.
```bash
agentcore identity get-cognito-inbound-token [OPTIONS]
```
Options:
- `--auth-flow TEXT`: OAuth flow type - ‘user’ (USER_FEDERATION, default) or ‘m2m’ (M2M)
- `--pool-id TEXT`: Cognito User Pool ID (auto-loads from RUNTIME_POOL_ID)
- `--client-id TEXT`: Cognito App Client ID (auto-loads from RUNTIME_CLIENT_ID)
- `--client-secret TEXT`: Client secret (auto-loads from RUNTIME_CLIENT_SECRET, required for m2m)
- `--username TEXT`: Username (auto-loads from RUNTIME_USERNAME, required for user flow)
- `--password TEXT`: Password (auto-loads from RUNTIME_PASSWORD, required for user flow)
- `--region TEXT`: AWS region
**Examples:**
```bash
# Auto-load from environment (user flow - simplest)
export $(grep -v '^#' .agentcore_identity_user.env | xargs)
TOKEN=$(agentcore identity get-cognito-inbound-token)
# Auto-load from environment (m2m flow)
export $(grep -v '^#' .agentcore_identity_m2m.env | xargs)
TOKEN=$(agentcore identity get-cognito-inbound-token --auth-flow m2m)
# Explicit parameters (overrides env)
TOKEN=$(agentcore identity get-cognito-inbound-token \
--pool-id us-west-2_xxx --client-id abc123 \
--username user --password pass)
# Use token with agent
agentcore invoke '{"prompt": "test"}' --bearer-token "$TOKEN"
```
### Cleanup Identity Resources
Remove all Identity resources for an agent.
```bash
agentcore identity cleanup [OPTIONS]
```
Options:
- `--agent, -a TEXT`: Agent name
- `--force, -f`: Skip confirmation prompts
**Deleted Resources:**
- Credential providers
- Workload identities
- Cognito user pools (if created by setup-cognito)
- IAM inline policies (AgentCoreIdentityAccess)
- Configuration files (.agentcore_identity_*)
**Example:**
```bash
# Clean up with confirmation
agentcore identity cleanup --agent my-agent
# Clean up without prompts
agentcore identity cleanup --agent my-agent --force
```
## Identity Example Usage
### AWS JWT Federation Workflow
For M2M authentication with external services that support OIDC tokens (no secrets required):
```bash
# 1. Configure agent
agentcore configure --entrypoint agent.py --name my-agent --disable-memory
# 2. Set up AWS JWT federation
agentcore identity setup-aws-jwt --audience https://api.example.com
# 3. Deploy agent (IAM permissions added automatically)
agentcore launch
# 4. Invoke agent
agentcore invoke '{"prompt": "Call the external API"}'
```
**Agent Code:**
```python
from strands import Agent, tool
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from bedrock_agentcore.identity.auth import requires_iam_access_token
app = BedrockAgentCoreApp()
@tool
@requires_iam_access_token(
audience=["https://api.example.com"],
)
def call_external_api(query: str, *, access_token: str) -> str:
"""Call external API with AWS IAM JWT authentication."""
import requests
response = requests.get(
"https://api.example.com/data",
headers={"Authorization": f"Bearer {access_token}"},
params={"q": query},
)
return response.text
@app.entrypoint
async def invoke(payload, context):
agent = Agent(model="us.anthropic.claude-sonnet-4-5-20250929-v1:0", tools=[call_external_api])
response = await agent.invoke_async(payload.get("prompt", ""))
return {"response": str(response.message)}
```
### OAuth Identity Setup Workflow
```bash
# 1. Create Cognito pools
agentcore identity setup-cognito
# 2. Load environment variables
export $(grep -v '^#' .agentcore_identity_user.env | xargs)
# 3. Configure agent with JWT auth
agentcore configure \
-e agent.py \
--name my-agent \
--authorizer-config '{
"customJWTAuthorizer": {
"discoveryUrl": "'$RUNTIME_DISCOVERY_URL'",
"allowedClients": ["'$RUNTIME_CLIENT_ID'"]
}
}' \
--disable-memory
# 4. Create credential provider
agentcore identity create-credential-provider \
--name MyServiceProvider \
--type cognito \
--client-id $IDENTITY_CLIENT_ID \
--client-secret $IDENTITY_CLIENT_SECRET \
--discovery-url $IDENTITY_DISCOVERY_URL \
--cognito-pool-id $IDENTITY_POOL_ID
# 5. Create workload identity
agentcore identity create-workload-identity \
--name my-agent-workload
# 6. Deploy agent
agentcore deploy
# 7. Get bearer token for Runtime auth
TOKEN=$(agentcore identity get-cognito-inbound-token)
# 8. Invoke with JWT authentication
agentcore invoke '{"prompt": "Call external service"}' \
--bearer-token "$TOKEN" \
--session-id "demo_session_$(uuidgen | tr -d '-')"
# 9. Cleanup when done
agentcore identity cleanup --agent my-agent --force
```
## Memory Commands
Manage AgentCore Memory resources:
```bash
agentcore memory [COMMAND]
```
### Create Memory
```bash
agentcore memory create NAME [OPTIONS]
```
Arguments:
- `NAME`: Name for the memory resource (required)
Options:
- `--region, -r TEXT`: AWS region (defaults to session region)
- `--description, -d TEXT`: Description for the memory
- `--event-expiry-days, -e INTEGER`: Event retention in days (defaults to 90)
- `--strategies, -s TEXT`: JSON string of memory strategies (e.g., '[{"semanticMemoryStrategy": {"name": "Facts"}}]')
- `--role-arn TEXT`: IAM role ARN for memory execution
- `--encryption-key-arn TEXT`: KMS key ARN for encryption
- `--wait/--no-wait`: Wait for memory to become ACTIVE (defaults to True)
- `--max-wait INTEGER`: Maximum wait time in seconds (defaults to 300)
**Examples:**
```bash
# Create basic memory (STM only)
agentcore memory create my_agent_memory
# Create with LTM strategies
agentcore memory create my_memory --strategies '[{"semanticMemoryStrategy": {"name": "Facts"}}]' --wait
```
### Get Memory
```bash
agentcore memory get MEMORY_ID [OPTIONS]
```
Arguments:
- `MEMORY_ID`: Memory resource ID (required)
Options:
- `--region, -r TEXT`: AWS region
**Example:**
```bash
agentcore memory get my_memory_abc123
```
### List Memories
```bash
agentcore memory list [OPTIONS]
```
Options:
- `--region, -r TEXT`: AWS region
- `--max-results, -n INTEGER`: Maximum number of results (defaults to 100)
**Example:**
```bash
agentcore memory list
```
### Delete Memory
```bash
agentcore memory delete MEMORY_ID [OPTIONS]
```
Arguments:
- `MEMORY_ID`: Memory resource ID to delete (required)
Options:
- `--region, -r TEXT`: AWS region
- `--wait`: Wait for deletion to complete
- `--max-wait INTEGER`: Maximum wait time in seconds (defaults to 300)
**Example:**
```bash
agentcore memory delete my_memory_abc123 --wait
```
### Memory Status
```bash
agentcore memory status MEMORY_ID [OPTIONS]
```
Arguments:
- `MEMORY_ID`: Memory resource ID (required)
Options:
- `--region, -r TEXT`: AWS region
**Example:**
```bash
agentcore memory status mem_123
```
## Gateway Commands
Access gateway subcommands:
```bash
agentcore gateway [COMMAND]
```
### Create MCP Gateway
```bash
agentcore gateway create-mcp-gateway [OPTIONS]
```
Options:
- `--region TEXT`: Region to use (defaults to us-west-2)
- `--name TEXT`: Name of the gateway (defaults to TestGateway)
- `--role-arn TEXT`: Role ARN to use (creates one if none provided)
- `--authorizer-config TEXT`: Serialized authorizer config
- `--enable-semantic-search, -sem`: Whether to enable search tool (defaults to True)
### Create MCP Gateway Target
```bash
agentcore gateway create-mcp-gateway-target [OPTIONS]
```
Options:
- `--gateway-arn TEXT`: ARN of the created gateway (required)
- `--gateway-url TEXT`: URL of the created gateway (required)
- `--role-arn TEXT`: Role ARN of the created gateway (required)
- `--region TEXT`: Region to use (defaults to us-west-2)
- `--name TEXT`: Name of the target (defaults to TestGatewayTarget)
- `--target-type TEXT`: Type of target: lambda, openApiSchema, mcpServer, or smithyModel (defaults to lambda)
- `--target-payload TEXT`: Specification of the target (required for openApiSchema)
- `--credentials TEXT`: Credentials for calling this target (API key or OAuth2)
### Delete MCP Gateway
```bash
agentcore gateway delete-mcp-gateway [OPTIONS]
```
Options:
- `--region TEXT`: Region to use (defaults to us-west-2)
- `--id TEXT`: Gateway ID to delete
- `--name TEXT`: Gateway name to delete
- `--arn TEXT`: Gateway ARN to delete
- `--force`: Delete all targets before deleting the gateway
**Note:** The gateway must have zero targets before deletion, unless `--force` is used. You can specify the gateway by ID, ARN, or name.
### Delete MCP Gateway Target
```bash
agentcore gateway delete-mcp-gateway-target [OPTIONS]
```
Options:
- `--region TEXT`: Region to use (defaults to us-west-2)
- `--id TEXT`: Gateway ID
- `--name TEXT`: Gateway name
- `--arn TEXT`: Gateway ARN
- `--target-id TEXT`: Target ID to delete
- `--target-name TEXT`: Target name to delete
**Note:** You can specify the gateway by ID, ARN, or name. You can specify the target by ID or name.
### List MCP Gateways
```bash
agentcore gateway list-mcp-gateways [OPTIONS]
```
Options:
- `--region TEXT`: Region to use
- `--name TEXT`: Filter by gateway name
- `--max-results, -m INTEGER`: Maximum number of results (1-1000, defaults to 50)
### Get MCP Gateway
```bash
agentcore gateway get-mcp-gateway [OPTIONS]
```
Options:
- `--region TEXT`: Region to use
- `--id TEXT`: Gateway ID
- `--name TEXT`: Gateway name
- `--arn TEXT`: Gateway ARN
**Note:** You can specify the gateway by ID, ARN, or name.
### List MCP Gateway Targets
```bash
agentcore gateway list-mcp-gateway-targets [OPTIONS]
```
Options:
- `--region TEXT`: Region to use
- `--id TEXT`: Gateway ID
- `--name TEXT`: Gateway name
- `--arn TEXT`: Gateway ARN
- `--max-results, -m INTEGER`: Maximum number of results (1-1000, defaults to 50)
**Note:** You can specify the gateway by ID, ARN, or name.
### Get MCP Gateway Target
```bash
agentcore gateway get-mcp-gateway-target [OPTIONS]
```
Options:
- `--region TEXT`: Region to use
- `--id TEXT`: Gateway ID
- `--name TEXT`: Gateway name
- `--arn TEXT`: Gateway ARN
- `--target-id TEXT`: Target ID
- `--target-name TEXT`: Target name
**Note:** You can specify the gateway by ID, ARN, or name. You can specify the target by ID or name.
### Update Gateway
Update gateway configuration including description and policy engine.
**Note:** Gateway names cannot be updated after creation (AWS API limitation).
```bash
agentcore gateway update-gateway [OPTIONS]
```
Options:
- `--region TEXT`: AWS region to use (defaults to us-west-2)
- `--id TEXT`: Gateway ID to update
- `--arn TEXT`: Gateway ARN to update
- `--description TEXT`: New gateway description
- `--policy-engine-arn TEXT`: Policy engine ARN to attach
- `--policy-engine-mode TEXT`: Policy engine mode (LOG_ONLY or ENFORCE)
**Note:** You can specify the gateway by ID or ARN. To attach or update a policy engine, use the `--policy-engine-arn` and `--policy-engine-mode` options with the `update-gateway` command.
## Policy Commands
Manage AgentCore Policy resources for governance and authorization.
Access policy subcommands:
```bash
agentcore policy [COMMAND]
```
### Create Policy Engine
Create a new policy engine to manage Cedar policies.
```bash
agentcore policy create-policy-engine [OPTIONS]
```
Options:
- `--name, -n TEXT`: Name of the policy engine (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--description, -d TEXT`: Policy engine description (optional)
**Example:**
```bash
agentcore policy create-policy-engine \
--name "RefundPolicyEngine" \
--description "Policy engine to regulate refund operations"
```
### Get Policy Engine
Get details of a policy engine.
```bash
agentcore policy get-policy-engine [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
**Example:**
```bash
agentcore policy get-policy-engine --policy-engine-id "testPolicyEngine-abc123"
```
### Update Policy Engine
Update a policy engine's properties.
```bash
agentcore policy update-policy-engine [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--description, -d TEXT`: Updated description (optional)
**Example:**
```bash
agentcore policy update-policy-engine \
--policy-engine-id "testPolicyEngine-abc123" \
--description "Updated policy engine description"
```
### List Policy Engines
List all policy engines in the region.
```bash
agentcore policy list-policy-engines [OPTIONS]
```
Options:
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--max-results INTEGER`: Maximum number of results (optional)
- `--next-token TEXT`: Token for pagination (optional)
**Example:**
```bash
agentcore policy list-policy-engines --max-results 50
```
### Delete Policy Engine
Delete a policy engine.
```bash
agentcore policy delete-policy-engine [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
**Example:**
```bash
agentcore policy delete-policy-engine --policy-engine-id "testPolicyEngine-abc123"
```
### Create Policy
Create a new Cedar policy in a policy engine.
```bash
agentcore policy create-policy [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--name, -n TEXT`: Policy name (required)
- `--definition, -def TEXT`: Policy definition JSON (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--description, -d TEXT`: Policy description (optional)
- `--validation-mode TEXT`: Validation mode - FAIL_ON_ANY_FINDINGS or IGNORE_ALL_FINDINGS (optional)
**Policy Definition Format:**
The definition must be a JSON string containing Cedar policy statements. Cedar policies require resource constraints and do not support glob-style wildcards:
```json
{
"cedar": {
"statement": "permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway\") when { context.input.amount < 1000 };"
}
}
```
**Action Name Format:**
Action names follow the pattern `TargetName___tool_name` (triple underscore):
- Format: `AgentCore::Action::"<TargetName>___<tool_name>"`
- Example: `AgentCore::Action::"RefundTarget___process_refund"`
- The target name and tool name are separated by **three underscores** (`___`)
**Resource Constraints:**
Cedar policies must specify a specific Gateway ARN:
- **Specific Gateway:** `resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:region:account:gateway/id"`
❌ **Invalid:** `permit(principal, action, resource);` - Unconstrained wildcard resources are not allowed
**Important Note on Numeric Comparisons:**
When using numeric comparisons in Cedar conditions, the JSON Schema type matters:
- **`"type": "integer"`** (maps to Cedar Long) → Use direct comparison operators: `<`, `>`, `<=`, `>=`, `==`
```cedar
context.input.amount < 1000
```
- **`"type": "number"`** (maps to Cedar Decimal) → Use comparison methods: `.lessThan()`, `.greaterThan()`, `.lessThanOrEqual()`, `.greaterThanOrEqual()`
```cedar
context.input.amount.lessThan(decimal("1000.00"))
```
For simplicity, use `"type": "integer"` for whole number amounts (like dollar amounts) to enable direct comparison operators.
**Tip: Use `.contains()` for Multiple Value Checks:**
Instead of chaining multiple OR conditions, use `.contains()` with a set:
```cedar
// ❌ Verbose
context.input.region == "US" || context.input.region == "CA" || context.input.region == "UK"
// ✅ Cleaner
["US", "CA", "UK"].contains(context.input.region)
```
**Example:**
```bash
agentcore policy create-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--name "refund_limit_policy" \
--description "Allow refunds under \$1000" \
--definition '{"cedar":{"statement":"permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway\") when { context.input.amount < 1000 };"}}'
```
### Get Policy
Get details of a specific policy.
```bash
agentcore policy get-policy [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--policy-id, -p TEXT`: Policy ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
**Example:**
```bash
agentcore policy get-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--policy-id "policy-xyz789"
```
### Update Policy
Update an existing policy's definition.
```bash
agentcore policy update-policy [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--policy-id, -p TEXT`: Policy ID (required)
- `--definition, -def TEXT`: Updated policy definition JSON (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--description, -d TEXT`: Updated description (optional)
- `--validation-mode TEXT`: Validation mode (optional)
**Example:**
```bash
agentcore policy update-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--policy-id "policy-xyz789" \
--definition '{"cedar":{"statement":"permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway\") when { context.input.amount < 500 };"}}' \
--description "Updated to \$500 limit"
```
### List Policies
List policies in a policy engine.
```bash
agentcore policy list-policies [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--target-resource-scope TEXT`: Filter by resource ARN (optional)
- `--max-results INTEGER`: Maximum number of results (optional)
- `--next-token TEXT`: Token for pagination (optional)
**Example:**
```bash
# List all policies
agentcore policy list-policies --policy-engine-id "testPolicyEngine-abc123"
# Filter by resource
agentcore policy list-policies \
--policy-engine-id "testPolicyEngine-abc123" \
--target-resource-scope "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway"
```
### Delete Policy
Delete a policy from a policy engine.
```bash
agentcore policy delete-policy [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--policy-id, -p TEXT`: Policy ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
**Example:**
```bash
agentcore policy delete-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--policy-id "policy-xyz789"
```
### Start Policy Generation
Policy generation requires a policy engine and gateway. Create the engine first to manage policies, then generate Cedar statements from natural language that target your gateway resource.
Generate Cedar policies from natural language descriptions.
```bash
agentcore policy start-policy-generation [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--name, -n TEXT`: Generation name (required) - Must match pattern `^[A-Za-z][A-Za-z0-9_]*$` (letters, numbers, underscores only; must start with a letter)
- `--resource-arn TEXT`: Gateway ARN that the generated policies will target (required)
- `--content, -c TEXT`: Natural language policy description (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
**Note:** Policy generation typically completes within 30 seconds.
**Name Validation:**
- ✅ Valid: `refund_policy`, `MyPolicy123`, `policy_v1`
- ❌ Invalid: `refund-policy` (hyphens not allowed), `123policy` (must start with letter), `my.policy` (dots not allowed)
**Workflow:**
After starting generation, poll the generation status until complete, then list the generated policy assets.
**Example:**
```bash
# 0. Create policy engine (one-time setup)
agentcore policy create-policy-engine \
--name "RefundPolicyEngine" \
--region us-west-2
# 1. Start policy generation (note: use underscores, not hyphens in name)
agentcore policy start-policy-generation \
--policy-engine-id "RefundEngine-a1b2c3d4e5" \
--name "refund_limit_gen" \
--resource-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/gw-abc123" \
--content "Allow refunds under $1000" \
--region us-west-2
```
Output:
```
✓ Policy generation initiated!
Generation ID: refund_limit_gen-x9y8z7w6v5
Status: GENERATING
Name: refund_limit_gen
Use 'get-policy-generation' to check progress
ARN: arn:aws:bedrock-agentcore:us-west-2:123456789012:policy-engine/RefundEngine-a1b2c3d4e5/policy-generation/refund-limit-gen-x9y8z7w6v5
```
```bash
# 2. Poll generation status (repeat until status is GENERATED)
agentcore policy get-policy-generation \
--policy-engine-id "RefundEngine-a1b2c3d4e5" \
--generation-id "refund_limit_gen-x9y8z7w6v5" \
--region us-west-2
```
Output when complete:
```
Policy Generation Details:
Generation ID: refund_limit_gen-x9y8z7w6v5
Name: refund_limit_gen
Status: GENERATED
ARN: arn:aws:bedrock-agentcore:us-west-2:123456789012:policy-engine/RefundEngine-a1b2c3d4e5/policy-generation/refund-limit-gen-x9y8z7w6v5
Created: 2025-03-15T10:30:00Z
Updated: 2025-03-15T10:30:22Z
```
```bash
# 3. List generated policy assets
agentcore policy list-policy-generation-assets \
--policy-engine-id "RefundEngine-a1b2c3d4e5" \
--generation-id "refund_limit_gen-x9y8z7w6v5" \
--region us-west-2
```
Output:
```json
{
"policyGenerationAssets": [
{
"policyGenerationAssetId": "asset-m1n2o3p4q5",
"definition": {
"cedar": {
"statement": "permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/gw-abc123\") when { context.input.amount < 1000 };"
}
},
"rawTextFragment": "Allow refunds under $1000",
"findings": [
{
"type": "VALID",
"description": "Policy is syntactically valid"
}
]
}
]
}
```
You can now create a policy using the generated Cedar statement from the `definition.cedar.statement` field.
### Get Policy Generation
Get the status and details of a policy generation.
```bash
agentcore policy get-policy-generation [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--generation-id, -g TEXT`: Generation ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
**Example:**
```bash
agentcore policy get-policy-generation \
--policy-engine-id "testPolicyEngine-abc123" \
--generation-id "gen-abc123"
```
### List Policy Generation Assets
List the generated policies from a policy generation.
```bash
agentcore policy list-policy-generation-assets [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--generation-id, -g TEXT`: Generation ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--max-results INTEGER`: Maximum number of results (optional)
- `--next-token TEXT`: Token for pagination (optional)
**Example:**
```bash
agentcore policy list-policy-generation-assets \
--policy-engine-id "testPolicyEngine-abc123" \
--generation-id "gen-abc123"
```
### List Policy Generations
List all policy generations in a policy engine.
```bash
agentcore policy list-policy-generations [OPTIONS]
```
Options:
- `--policy-engine-id, -e TEXT`: Policy engine ID (required)
- `--region, -r TEXT`: AWS region (defaults to us-east-1)
- `--max-results INTEGER`: Maximum number of results (optional)
- `--next-token TEXT`: Token for pagination (optional)
**Example:**
```bash
agentcore policy list-policy-generations \
--policy-engine-id "testPolicyEngine-abc123" \
--max-results 20
```
## Example Usage
### Configure an Agent
```bash
# Interactive configuration with memory prompts
agentcore configure --entrypoint agent_example.py
# Configure without memory
agentcore configure --entrypoint agent_example.py --disable-memory
# Configure with execution role
agentcore configure --entrypoint agent_example.py --execution-role arn:aws:iam::123456789012:role/MyRole
# Configure with VPC networking
agentcore configure \
--entrypoint agent_example.py \
--vpc \
--subnets subnet-0abc123,subnet-0def456 \
--security-groups sg-0xyz789
# Configure with VPC and custom execution role
agentcore configure \
--entrypoint agent_example.py \
--execution-role arn:aws:iam::123456789012:role/MyAgentRole \
--vpc \
--subnets subnet-0abc123,subnet-0def456,subnet-0ghi789 \
--security-groups sg-0xyz789,sg-0uvw012
# Non-interactive with defaults
agentcore configure --entrypoint agent_example.py --non-interactive
# Configure with lifecycle management
agentcore configure --entrypoint agent_example.py \
--idle-timeout 1800 \
--max-lifetime 7200
# Configure with all options
agentcore configure --entrypoint agent_example.py \
--execution-role arn:aws:iam::123456789012:role/MyRole \
--idle-timeout 1800 \
--max-lifetime 7200 \
--region us-east-1
# List configured agents
agentcore configure list
# Set default agent
agentcore configure set-default my_agent
```
### Deploy and Run Agents
```bash
# Deploy to AWS (default - uses CodeBuild)
agentcore deploy
# Run locally
agentcore deploy --local
# Build locally, deploy to cloud
agentcore deploy --local-build
# Deploy with environment variables
agentcore deploy --env API_KEY=abc123 --env DEBUG=true
# Auto-update if agent exists
agentcore deploy --auto-update-on-conflict
```
### Invoke Agents
```bash
# Basic invocation
agentcore invoke '{"prompt": "Hello world!"}'
# Invoke with session ID
agentcore invoke '{"prompt": "Continue our conversation"}' --session-id abc123
# Invoke with OAuth authentication
agentcore invoke '{"prompt": "Secure request"}' --bearer-token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# Invoke with custom headers
agentcore invoke '{"prompt": "Test"}' --headers "Actor-Id:user123,Trace-Id:abc"
# Invoke local agent
agentcore invoke '{"prompt": "Test locally"}' --local
```
### Check Status
```bash
# Get status of default agent
agentcore status
# Get status of specific agent
agentcore status --agent my-agent
# Verbose output with full JSON
agentcore status --verbose
```
### Destroy Resources
```bash
# Preview destruction
agentcore destroy --dry-run
# Destroy with confirmation
agentcore destroy
# Destroy specific agent without confirmation
agentcore destroy --agent my-agent --force
```
### Gateway Operations
```bash
# Create MCP Gateway
agentcore gateway create-mcp-gateway --name MyGateway
# Create MCP Gateway Target
agentcore gateway create-mcp-gateway-target \
--gateway-arn arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/abcdef \
--gateway-url https://gateway-url.us-west-2.amazonaws.com \
--role-arn arn:aws:iam::123456789012:role/GatewayRole
# List all gateways
agentcore gateway list-mcp-gateways
# Get gateway details
agentcore gateway get-mcp-gateway --name MyGateway
# List gateway targets
agentcore gateway list-mcp-gateway-targets --name MyGateway
# Get target details
agentcore gateway get-mcp-gateway-target --name MyGateway --target-name MyTarget
# Delete a target
agentcore gateway delete-mcp-gateway-target --name MyGateway --target-name MyTarget
# Delete a gateway (must have no targets)
agentcore gateway delete-mcp-gateway --name MyGateway
# Delete a gateway and all its targets
agentcore gateway delete-mcp-gateway --name MyGateway --force
```
### Memory Operations
```bash
# Create memory with STM only
agentcore memory create my_agent_memory
# Create memory with LTM strategies
agentcore memory create my_memory \
--strategies '[{"semanticMemoryStrategy": {"name": "Facts"}}]' \
--description "Agent memory for customer service" \
--event-expiry-days 90 \
--wait
# List all memories
agentcore memory list
# Get memory details
agentcore memory get my_memory_abc123
# Check memory status
agentcore memory status my_memory_abc123
# Delete memory
agentcore memory delete my_memory_abc123 --wait
```
### Policy Operations
```bash
# Create a policy engine
agentcore policy create-policy-engine \
--name "RefundPolicyEngine" \
--description "Policy engine to regulate refund operations" \
--region us-west-2
# List all policy engines
agentcore policy list-policy-engines --region us-west-2
# Get policy engine details
agentcore policy get-policy-engine \
--policy-engine-id "testPolicyEngine-abc123" \
--region us-west-2
# Create a Cedar policy
agentcore policy create-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--name "refund_limit_policy" \
--description "Allow refunds under $1000" \
--definition '{"cedar":{"statement":"permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway\") when { context.input.amount < 1000 };"}}' \
--region us-west-2
# List policies in engine
agentcore policy list-policies \
--policy-engine-id "testPolicyEngine-abc123" \
--region us-west-2
# Get policy details
agentcore policy get-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--policy-id "policy-xyz789" \
--region us-west-2
# Update policy with new limit
agentcore policy update-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--policy-id "policy-xyz789" \
--definition '{"cedar":{"statement":"permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway\") when { context.input.amount < 500 };"}}' \
--description "Updated to $500 limit" \
--region us-west-2
# Generate policy from natural language (use underscores in name)
agentcore policy start-policy-generation \
--policy-engine-id "testPolicyEngine-abc123" \
--name "refund_policy_generation" \
--resource-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway" \
--content "Allow refunds for amounts less than $1000" \
--region us-west-2
# Check generation status
agentcore policy get-policy-generation \
--policy-engine-id "testPolicyEngine-abc123" \
--generation-id "gen-abc123" \
--region us-west-2
# List generated policy assets
agentcore policy list-policy-generation-assets \
--policy-engine-id "testPolicyEngine-abc123" \
--generation-id "gen-abc123" \
--region us-west-2
# List all policy generations
agentcore policy list-policy-generations \
--policy-engine-id "testPolicyEngine-abc123" \
--region us-west-2
# Delete a policy
agentcore policy delete-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--policy-id "policy-xyz789" \
--region us-west-2
# Delete policy engine
agentcore policy delete-policy-engine \
--policy-engine-id "testPolicyEngine-abc123" \
--region us-west-2
```
### Complete Policy Workflow with Gateway
```bash
# 1. Create gateway
agentcore gateway create-mcp-gateway \
--name "RefundGateway" \
--region us-west-2
# 2. Add Lambda target to gateway
agentcore gateway create-mcp-gateway-target \
--gateway-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/abc123" \
--gateway-url "https://gateway.us-west-2.amazonaws.com" \
--role-arn "arn:aws:iam::123456789012:role/GatewayRole" \
--name "RefundTarget" \
--target-type lambda \
--region us-west-2
# 3. Create policy engine
agentcore policy create-policy-engine \
--name "RefundPolicyEngine" \
--description "Governance for refund operations" \
--region us-west-2
# 4. Generate policy from natural language
agentcore policy start-policy-generation \
--policy-engine-id "testPolicyEngine-abc123" \
--name "refund_policy_gen" \
--resource-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/abc123" \
--content "Allow refunds under \$1000" \
--region us-west-2
# 5. Wait and check generation (poll until GENERATED, typically ~20-30 seconds)
agentcore policy get-policy-generation \
--policy-engine-id "testPolicyEngine-abc123" \
--generation-id "refund_policy_gen-xyz789" \
--region us-west-2
# 6. Review generated policies
agentcore policy list-policy-generation-assets \
--policy-engine-id "testPolicyEngine-abc123" \
--generation-id "refund_policy_gen-xyz789" \
--region us-west-2
# 7. Create policy from generated asset (or use your own)
agentcore policy create-policy \
--policy-engine-id "testPolicyEngine-abc123" \
--name "refund_limit_policy" \
--description "Allow refunds under \$1000" \
--definition '{"cedar":{"statement":"permit(principal, action == AgentCore::Action::\"RefundTarget___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/abc123\") when { context.input.amount < 1000 };"}}' \
--region us-west-2
# 8. Policies are now enforced at gateway runtime
# Test via agent invocation with gateway
```
### Importing from Bedrock Agents
```bash
# Interactive Mode
agentcore import-agent
# For Automation
agentcore import-agent \
--region us-east-1 \
--agent-id ABCD1234 \
--agent-alias-id TSTALIASID \
--target-platform strands \
--output-dir ./my-agent \
--deploy-runtime \
--run-option runtime
# AgentCore Primitive Opt-out
agentcore import-agent --disable-gateway --disable-memory --disable-code-interpreter --disable-observability
```
## Memory Best Practices
### Agent Code Pattern
When using memory in agent code, conditionally create memory configuration:
```python
import os
from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig
from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager
MEMORY_ID = os.getenv("BEDROCK_AGENTCORE_MEMORY_ID")
REGION = os.getenv("AWS_REGION")
@app.entrypoint
def invoke(payload, context):
# Only create memory config if MEMORY_ID exists
session_manager = None
if MEMORY_ID:
memory_config = AgentCoreMemoryConfig(
memory_id=MEMORY_ID,
session_id=context.session_id,
actor_id=context.actor_id
)
session_manager = AgentCoreMemorySessionManager(memory_config, REGION)
agent = Agent(
model="...",
session_manager=session_manager, # None when memory disabled
...
)
```
================================================
FILE: documentation/docs/api-reference/identity.md
================================================
# Identity
Memory management for Bedrock AgentCore SDK.
## Service client
::: bedrock_agentcore.services.identity
options:
heading_level: 3
## Decorators
::: bedrock_agentcore.identity
options:
heading_level: 3
================================================
FILE: documentation/docs/api-reference/memory.md
================================================
# Memory
Memory management for Bedrock AgentCore SDK.
::: bedrock_agentcore.memory
================================================
FILE: documentation/docs/api-reference/runtime.md
================================================
# Runtime
Runtime management and application context for Bedrock AgentCore.
::: bedrock_agentcore.runtime
================================================
FILE: documentation/docs/api-reference/tools.md
================================================
# Tools
Tools and utilities for Bedrock AgentCore SDK including browser and code interpreter tools.
::: bedrock_agentcore.tools.code_interpreter_client
::: bedrock_agentcore.tools.browser_client
================================================
FILE: documentation/docs/examples/README.md
================================================
# Examples
These simple examples demonstrate key Amazon Bedrock AgentCore concepts and patterns. Each example focuses on a specific capability, making it easy to understand and adapt for your own agents. For more comprehensive examples and production-ready samples, explore the [Amazon Bedrock AgentCore Samples](https://github.com/awslabs/amazon-bedrock-agentcore-samples/) repository.
================================================
FILE: documentation/docs/examples/agentcore-quickstart-example.md
================================================
# AgentCore Quickstart
## Introduction
Build and deploy a production-ready AI agent in minutes with runtime hosting, memory, secure code execution, and observability. This guide shows how to use [AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html), [Memory](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory.html), [Code Interpreter](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/code-interpreter-tool.html), and [Observability](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability.html).
For Gateway and Identity features, see the [Gateway quickstart](https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/main/documentation/docs/user-guide/gateway/quickstart.md) and [Identity quickstart](https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/main/documentation/docs/user-guide/identity/quickstart.md).
## Prerequisites
Before you start, make sure you have:
- **AWS permissions**: AWS root users or users with privileged roles (such as the AdministratorAccess role) can skip this step. Others need to attach the [starter toolkit policy](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-permissions.html#runtime-permissions-starter-toolkit) and [AmazonBedrockAgentCoreFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html) managed policy.
- **AWS CLI version 2.0 or later**: Configure the AWS CLI using `aws configure`. For more information, see the [AWS Command Line Interface User Guide for Version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
- **Python 3.10 or newer**
> **Important: Ensure AWS Region Consistency**
>
> Ensure the following are all configured to use the **same AWS region**:
>
> - Your `aws configure` default region
> - The region where you've enabled Bedrock model access
> - All resources created during deployment will use this region
### Install the AgentCore starter toolkit
Install the AgentCore starter toolkit:
```bash
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install required packages (version 0.1.21 or later)
pip install "bedrock-agentcore-starter-toolkit>=0.1.21" strands-agents strands-agents-tools boto3
```
## Step 1: Create the agent
Create `agentcore_starter_strands.py`:
```python
"""
Strands Agent sample with AgentCore
"""
import os
from strands import Agent
from strands_tools.code_interpreter import AgentCoreCodeInterpreter
from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig, RetrievalConfig
from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager
from bedrock_agentcore.runtime import BedrockAgentCoreApp
app = BedrockAgentCoreApp()
MEMORY_ID = os.getenv("BEDROCK_AGENTCORE_MEMORY_ID")
REGION = os.getenv("AWS_REGION")
MODEL_ID = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
@app.entrypoint
def invoke(payload, context):
actor_id = "quickstart-user"
# Get runtime session ID for isolation
session_id = getattr(context, 'session_id', None)
# Configure memory if available
session_manager = None
if MEMORY_ID:
memory_config = AgentCoreMemoryConfig(
memory_id=MEMORY_ID,
session_id=session_id or 'default',
actor_id=actor_id,
retrieval_config={
f"/users/{actor_id}/facts": RetrievalConfig(top_k=3, relevance_score=0.5),
f"/users/{actor_id}/preferences": RetrievalConfig(top_k=3, relevance_score=0.5)
}
)
session_manager = AgentCoreMemorySessionManager(memory_config, REGION)
# Create Code Interpreter with runtime session binding
code_interpreter = AgentCoreCodeInterpreter(
region=REGION,
session_name=session_id,
auto_create=True
)
agent = Agent(
model=MODEL_ID,
session_manager=session_manager,
system_prompt="""You are a helpful assistant with code execution capabilities. Use tools when appropriate.
Response format when using code:
1. Brief explanation of your approach
2. Code block showing the executed code
3. Results and analysis
""",
tools=[code_interpreter.code_interpreter]
)
result = agent(payload.get("prompt", ""))
return {"response": result.message.get('content', [{}])[0].get('text', str(result))}
if __name__ == "__main__":
app.run()
```
Create `requirements.txt`:
```text
strands-agents
bedrock-agentcore
strands-agents-tools
```
## Step 2: Configure and deploy the agent
In this step, you'll use the AgentCore CLI to configure and deploy your agent.
### Configure the agent
Configure the agent with memory and execution settings:
**For this tutorial**: When prompted for the execution role, press Enter to auto-create a new role with all required permissions for the Runtime, Memory, Code Interpreter, and Observability features. When prompted for long-term memory, type **yes**.
> **Note**
>
> If the memory configuration prompts do not appear during `agentcore configure`, refer to the [Troubleshooting](#troubleshooting) section (Memory configuration not appearing) for instructions on how to check whether the correct toolkit version is installed.
```bash
agentcore configure -e agentcore_starter_strands.py
#Interactive prompts you'll see:
# 1. Execution Role: Press Enter to auto-create or provide existing role ARN/name
# 2. ECR Repository: Press Enter to auto-create or provide existing ECR URI
# 3. Requirements File: Confirm the detected requirements.txt file or specify a different path
# 4. OAuth Configuration: Configure OAuth authorizer? (yes/no) - Type `no` for this tutorial
# 5. Request Header Allowlist: Configure request header allowlist? (yes/no) - Type `no` for this tutorial
# 6. Memory Configuration:
# - If existing memories found: Choose from list or press Enter to create new
# - If creating new: Press Enter to create new memory
# - Enable long-term memory extraction? (yes/no) - Type `yes` for this tutorial
#. - Type 's' to skip memory setup
```
### Deploy to AgentCore
Launch your agent to the AgentCore runtime environment:
```bash
agentcore deploy
# This performs:
# 1. Memory resource provisioning (STM + LTM strategies)
# 2. Docker container build with dependencies
# 3. ECR repository push
# 4. AgentCore Runtime deployment with X-Ray tracing enabled
# 5. CloudWatch Transaction Search configuration (automatic)
# 6. Endpoint activation with trace collection
```
**Expected output:**
During Deploy, you'll see memory creation progress with elapsed time indicators. Memory provisioning may take around 2-5 minutes to activate:
```text
Creating memory resource for agent: agentcore_starter_strands
⏳ Creating memory resource (this may take 30-180 seconds)...
Created memory: agentcore_starter_strands_mem-abc123
Waiting for memory agentcore_starter_strands_mem-abc123 to return to ACTIVE state...
⏳ Memory: CREATING (61s elapsed)
⏳ Memory: CREATING (92s elapsed)
⏳ Memory: CREATING (123s elapsed)
✅ Memory is ACTIVE (took 159s)
✅ Memory created and active: agentcore_starter_strands_mem-abc123
Observability is enabled, configuring Transaction Search...
✅ Transaction Search configured: resource_policy, trace_destination, indexing_rule
🔍 GenAI Observability Dashboard:
https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#gen-ai-observability/agent-core
✅ Container deployed to Bedrock AgentCore
Agent ARN: arn:aws:bedrock-agentcore:us-west-2:123456789:runtime/agentcore_starter_strands-xyz
```
If the deployment encounters errors or behaves unexpectedly, check your configuration:
```bash
cat .bedrock_agentcore.yaml # Review deployed configuration
agentcore status # Verify resource provisioning status
```
Refer to the [Troubleshooting](#troubleshooting) section if you see any issues.
## Step 3: Monitor Deployment
Check the agent's deployment status:
```bash
agentcore status
# Shows:
# Memory ID: agentcore_starter_strands_mem-abc123
# Memory Type: STM+LTM (3 strategies) (when active with strategies)
# Memory Type: STM only (if configured without LTM)
# Observability: Enabled
```
## Step 4: Test Memory and Code Interpreter
In this section, you'll test your agent's memory capabilities and code execution features.
### Test Short-Term Memory (STM)
Test short-term memory within a single session:
```bash
# Store information (session IDs must be 33+ characters)
agentcore invoke '{"prompt": "Remember that my favorite agent platform is AgentCore"}'
# Retrieve within same session
agentcore invoke '{"prompt": "What is my favorite agent platform?"}'
# Expected response:
# "Your favorite agent platform is AgentCore."
```
### Test long-term memory – cross-session persistence
Long-term memory (LTM) lets information persist across different sessions. This requires waiting for long-term memory to be extracted before starting a new session.
Test long-term memory by starting a session:
```bash
# Session 1: Store facts
agentcore invoke '{"prompt": "My email is user@example.com and I am an AgentCore user"}'
```
After invoking the agent, AgentCore runs in the background to perform an extraction. Wait for the extraction to finish. This typically takes 10-30 seconds. If you do not see any facts, wait a few more seconds.
Start another session:
```bash
sleep 20
# Session 2: Different runtime session retrieves the facts extracted from initial session
SESSION_ID=$(python -c "import uuid; print(uuid.uuid4())")
agentcore invoke '{"prompt": "Tell me about myself?"}' --session-id $SESSION_ID
# Expected response:
# "Your email address is user@example.com."
# "You appear to be a user of AgentCore, which seems to be your favorite agent platform."
```
### Test Code Interpreter
Test AgentCore Code Interpreter:
```bash
# Store data
agentcore invoke '{"prompt": "My dataset has values: 23, 45, 67, 89, 12, 34, 56."}'
# Create visualization
agentcore invoke '{"prompt": "Create a text-based bar chart visualization showing the distribution of values in my dataset with proper labels"}'
# Expected: Agent generates matplotlib code to create a bar chart
```
## Step 5: View Traces and Logs
In this section, you'll use observability features to monitor your agent's performance.
### Access the Amazon CloudWatch dashboard
Navigate to the GenAI Observability dashboard to view end-to-end request traces including agent execution tracking, memory retrieval operations, code interpreter executions, agent reasoning steps, and latency breakdown by component. The dashboard provides a service map view showing agent runtime connections to Memory and Code Interpreter services with request flow visualization and latency metrics, as well as detailed X-Ray traces for debugging and performance analysis.
```bash
# Get the dashboard URL from status
agentcore status
# Navigate to the URL shown, or go directly to:
# https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#gen-ai-observability/agent-core
# Note: Replace the Region
```
### View AgentCore Runtime logs
Access detailed AgentCore Runtime logs for debugging and monitoring:
```bash
# The correct log paths are shown in the invoke or status output
agentcore status
# You'll see log paths like:
# aws logs tail /aws/bedrock-agentcore/runtimes/AGENT_ID-DEFAULT --log-stream-name-prefix "YYYY/MM/DD/[runtime-logs]" --follow
# Copy this command from the output to view logs
# For example:
aws logs tail /aws/bedrock-agentcore/runtimes/AGENT_ID-DEFAULT --log-stream-name-prefix "YYYY/MM/DD/[runtime-logs]" --follow
# For recent logs, use the --since option as shown in the output:
aws logs tail /aws/bedrock-agentcore/runtimes/AGENT_ID-DEFAULT --log-stream-name-prefix "YYYY/MM/DD/[runtime-logs]" --since 1h
```
## Clean up
Remove all resources created during this tutorial:
```bash
agentcore destroy
# Removes:
# - AgentCore Runtime endpoint and agent
# - AgentCore Memory resources (short- and long-term memory)
# - Amazon ECR repository and images
# - IAM roles (if auto-created)
# - CloudWatch log groups (optional)
```
## Troubleshooting
<details>
<summary><strong>Memory Configuration Not Appearing</strong></summary>
**"Memory option not showing during `agentcore configure`":**
This typically occurs when using an outdated version of the starter toolkit. Ensure you have version 0.1.21 or later installed:
```bash
# Step 1: Verify current state
which python # Should show .venv/bin/python
which agentcore # Currently showing global path
# Step 2: Deactivate and reactivate venv to reset PATH
deactivate
source .venv/bin/activate
# Step 3: Check if that fixed it
which agentcore
# If NOW showing .venv/bin/agentcore -> RESOLVED, skip to Step 7
# If STILL showing global path -> continue to Step 4
# Step 4: Force local venv to take precedence in PATH
export PATH="$(pwd)/.venv/bin:$PATH"
# Step 5: Check again
which agentcore
# If NOW showing .venv/bin/agentcore -> RESOLVED, skip to Step 7
# If STILL showing global path -> continue to Step 6
# Step 6: Reinstall in local venv with forced precedence
pip install --force-reinstall --no-cache-dir "bedrock-agentcore-starter-toolkit>=0.1.21"
# Step 7: Final verification
which agentcore # Must show: /path/to/your-project/.venv/bin/agentcore
pip show bedrock-agentcore-starter-toolkit # Verify version >= 0.1.21
agentcore --version # Double check it's working
# Step 8: Try configure again
agentcore configure -e agentcore_starter_strands.py
#If Step 6 still doesn't work, the nuclear option:
cd ..
mkdir fresh-agentcore-project && cd fresh-agentcore-project
python3 -m venv .venv
source .venv/bin/activate
pip install --no-cache-dir "bedrock-agentcore-starter-toolkit>=0.1.21" strands-agents boto3
# Copy your agent code here, then reconfigure
```
**Additional checks:**
- Ensure you're running `agentcore configure` from within the activated virtual environment
- If using an IDE (VSCode, PyCharm), restart the IDE after reinstalling
- Verify no system-wide agentcore installation conflicts: `pip list | grep bedrock-agentcore`
</details>
<details>
<summary><strong>Region Misconfiguration</strong></summary>
**If you need to change your region configuration:**
1. Clean up resources in the incorrect region:
```bash
agentcore destroy
# This removes:
# - Runtime endpoint and agent
# - Memory resources (STM + LTM)
# - ECR repository and images
# - IAM roles (if auto-created)
# - CloudWatch log groups (optional)
```
2. Verify your AWS CLI is configured for the correct region:
```bash
aws configure get region
# Or reconfigure for the correct region:
aws configure set region <your-desired-region>
```
3. Ensure Bedrock model access is enabled in the target region (AWS Console → Bedrock → Model access)
4. Copy your agent code and requirements.txt to the new folder, then return to **Step 2: Configure and Deploy**
</details>
<details>
<summary><strong>Memory Issues</strong></summary>
**Cross-session memory not working:**
- Verify LTM is active (not "provisioning")
- Wait 15-30 seconds after storing facts for extraction
- Check extraction logs for completion
</details>
<details>
<summary><strong>Observability Issues</strong></summary>
**No traces appearing:**
- Verify observability was enabled during `agentcore configure`
- Check IAM permissions include CloudWatch and X-Ray access
- Wait 30-60 seconds for traces to appear in CloudWatch
- Traces are viewable at: AWS Console → CloudWatch → Service Map or X-Ray → Traces
**Missing memory logs:**
- Check log group exists: `/aws/vendedlogs/bedrock-agentcore/memory/APPLICATION_LOGS/<memory-id>`
- Verify IAM role has CloudWatch Logs permissions
</details>
---
## Summary
You've deployed a production agent with:
- **Runtime** for managed container orchestration
- **Memory** with STM for immediate context and LTM for cross-session persistence
- **Code Interpreter** for secure Python execution with data visualization capabilities
- **AWS X-Ray Tracing** automatically configured for distributed tracing
- **CloudWatch Integration** for logs and metrics with Transaction Search enabled
All services are automatically instrumented with X-Ray tracing, providing complete visibility into agent behavior, memory operations, and tool executions through the CloudWatch dashboard.
================================================
FILE: documentation/docs/examples/async-processing.md
================================================
# Async Processing
This example demonstrates how to use Bedrock AgentCore's manual task management for automatic health status tracking during long-running operations.
## Overview
Bedrock AgentCore provides automatic ping status management based on tracked async tasks:
- **Automatic Health Reporting**: Ping status automatically reflects system busyness
- **Manual Task Tracking**: Use `add_async_task` and `complete_async_task` for explicit control
- **Flexible Integration**: Works with any async pattern (threading, asyncio, etc.)
## Key Concepts
- `Healthy`: System ready for new work
- `HealthyBusy`: System busy with async tasks
## Simple Agent Example
```python
#!/usr/bin/env python3
"""
Simple agent demonstrating manual task management with threading.
"""
import time
import threading
from datetime import datetime
from bedrock_agentcore.runtime import BedrockAgentCoreApp
app = BedrockAgentCoreApp()
def process_data(data_id: str, task_id: int):
"""Process data synchronously in background thread."""
print(f"[{datetime.now()}] Processing data: {data_id}")
# Simulate processing work
time.sleep(30) # Long-running task
print(f"[{datetime.now()}] Completed processing: {data_id}")
# Mark task as complete
app.complete_async_task(task_id)
return f"Processed {data_id}"
def cleanup_task(task_id: int):
"""Cleanup task running in background thread."""
print(f"[{datetime.now()}] Starting cleanup...")
time.sleep(10)
print(f"[{datetime.now()}] Cleanup completed")
# Mark task as complete
app.complete_async_task(task_id)
return "Cleanup done"
@app.entrypoint
def handler(event):
"""Main handler - starts background tasks with manual tracking."""
action = event.get("action", "info")
if action == "process":
data_id = event.get("data_id", "default_data")
# Start tracking the task (status becomes HealthyBusy)
task_id = app.add_async_task("data_processing", {"data_id": data_id})
# Start the task in background thread
threading.Thread(
target=process_data,
args=(data_id, task_id),
daemon=True
).start()
return {
"message": f"Started processing {data_id}",
"task_id": task_id,
"status": "processing"
}
elif action == "cleanup":
# Start tracking cleanup task
task_id = app.add_async_task("cleanup", {})
# Start cleanup in background thread
threading.Thread(
target=cleanup_task,
args=(task_id,),
daemon=True
).start()
return {
"message": "Started cleanup",
"task_id": task_id
}
elif action == "status":
# Get current status
task_info = app.get_async_task_info()
current_status = app.get_current_ping_status()
return {
"ping_status": current_status.value,
"active_tasks": task_info["active_count"],
"running_jobs": task_info["running_jobs"]
}
else:
return {
"message": "Simple BedrockAgentCore Agent",
"available_actions": ["process", "cleanup", "status"],
"usage": "Send {'action': 'process', 'data_id': 'my_data'}"
}
if __name__ == "__main__":
print("Starting simple BedrockAgentCore agent...")
print("The agent will automatically report 'HealthyBusy' when processing tasks")
app.run()
```
## How It Works
1. **Register the task** with `app.add_async_task(name, metadata)` - Returns a task_id
2. **Start background work** in a thread, passing the task_id
3. **Complete the task** with `app.complete_async_task(task_id)` when done
4. **Status updates automatically**:
- `Healthy` when no tracked tasks are running
- `HealthyBusy` when any tracked tasks are active
## Usage Examples
```bash
# Check current ping status
curl http://localhost:8080/ping
# Start processing (status will become HealthyBusy)
curl -X POST http://localhost:8080/invocations \
-H "Content-Type: application/json" \
-d '{"action": "process", "data_id": "sample_data"}'
# Check status while processing
curl -X POST http://localhost:8080/invocations \
-H "Content-Type: application/json" \
-d '{"action": "status"}'
# Run cleanup task
curl -X POST http://localhost:8080/invocations \
-H "Content-Type: application/json" \
-d '{"action": "cleanup"}'
```
## Key Benefits
1. **Automatic Status Tracking**: Ping status updates automatically based on tracked tasks
2. **Cost Control**: Status prevents new work assignment when busy
3. **Flexible Integration**: Works with threading, asyncio, or any background processing
4. **Explicit Control**: You decide when to start and stop tracking tasks
5. **Task Metadata**: Associate custom metadata with each task for debugging
This manual task management pattern provides automatic health monitoring with full control over task lifecycle.
================================================
FILE: documentation/docs/examples/gateway-integration.md
================================================
# Gateway Integration Examples
## Lambda Function as MCP Tool
```python
from bedrock_agentcore.gateway import GatewayClient
import json
client = GatewayClient(region_name='us-west-2')
# Define Lambda tools with detailed schemas
lambda_config = {
"arn": "arn:aws:lambda:us-west-2:123:function:DataProcessor",
"tools": [
{
"name": "process_data",
"description": "Process user data in JSON or CSV format",
"inputSchema": {
"type": "object",
"properties": {
"data": {"type": "string"},
"format": {"type": "string"} # Note: enum not supported, document in description
},
"required": ["data", "format"]
}
},
{
"name": "validate_data",
"description": "Validate data structure",
"inputSchema": {
"type": "object",
"properties": {
"data": {"type": "string"}
},
"required": ["data"]
}
}
]
}
# Create Gateway with semantic search enabled
cognito = client.create_oauth_authorizer_with_cognito("data-processor")
gateway = client.setup_gateway(
gateway_name="data-processor",
target_source=json.dumps(lambda_config),
execution_role_arn="arn:aws:iam::123:role/ExecutionRole",
authorizer_config=cognito['authorizer_config'],
target_type='lambda',
enable_semantic_search=True,
description="Data processing gateway with validation tools"
)
print(f"Gateway created: {gateway.get_mcp_url()}")
```
## OpenAPI Integration
### From S3
```python
gateway = client.setup_gateway(
gateway_name="my-api",
target_source="s3://my-bucket/api-spec.json",
execution_role_arn=role_arn,
authorizer_config=cognito['authorizer_config'],
target_type='openapi'
)
```
### Inline OpenAPI Specification
```python
openapi_spec = {
"openapi": "3.0.0",
"info": {"title": "User API", "version": "1.0.0"},
"servers": [{"url": "https://api.example.com"}],
"paths": {
"/users": {
"get": {
"operationId": "listUsers",
"summary": "List all users",
"responses": {"200": {"description": "User list"}}
}
},
"/users/{id}": {
"get": {
"operationId": "getUser",
"summary": "Get user by ID",
"parameters": [{
"name": "id",
"in": "path",
"required": True,
"schema": {"type": "string"}
}],
"responses": {"200": {"description": "User found"}}
}
}
}
}
gateway = client.setup_gateway(
gateway_name="user-api",
target_source=json.dumps(openapi_spec),
execution_role_arn=role_arn,
authorizer_config=cognito['authorizer_config'],
target_type='openapi'
)
```
### YAML OpenAPI (from file)
```python
import yaml
# Load YAML OpenAPI spec
with open('openapi.yaml', 'r') as f:
yaml_content = f.read()
openapi_spec = yaml.safe_load(yaml_content)
# Convert to JSON string for inline use
gateway = client.setup_gateway(
gateway_name="yaml-api",
target_source=json.dumps(openapi_spec),
execution_role_arn=role_arn,
authorizer_config=cognito['authorizer_config'],
target_type='openapi'
)
# Or use S3 (YAML files work directly)
gateway = client.setup_gateway(
gateway_name="yaml-api",
target_source="s3://my-bucket/openapi.yaml",
execution_role_arn=role_arn,
authorizer_config=cognito['authorizer_config'],
target_type='openapi'
)
```
## OAuth Token Management
When integrating Gateway with any agent framework, you'll need to handle OAuth tokens properly:
```python
import os
from datetime import datetime, timedelta
import httpx
import asyncio
class GatewayTokenManager:
"""Manages OAuth tokens with automatic refresh"""
def __init__(self, client_id, client_secret, token_endpoint, scope):
self.client_id = client_id
self.client_secret = client_secret
self.token_endpoint = token_endpoint
self.scope = scope
self._token = None
self._expires_at = None
async def get_token(self):
"""Get valid token, refreshing if needed"""
if self._token and self._expires_at > datetime.now():
return self._token
# Fetch new token
async with httpx.AsyncClient() as client:
response = await client.post(
self.token_endpoint,
data={
'grant_type': 'client_credentials',
'client_id': self.client_id,
'client_secret': self.client_sec
gitextract_olk65dvn/
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ └── bug_report.md
│ ├── branch-protection.json
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── deploy-docs.yml
│ ├── integration_testing.yml
│ ├── pr-automerge.yml
│ ├── release.yml
│ ├── security-scanning.yml
│ ├── security.yml
│ ├── slack-issue-notification.yml
│ ├── slack-open-prs-notification.yml
│ ├── test-pypi-release.yml
│ └── test.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .python-version
├── CHANGELOG.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── SECURITY.md
├── buildspec-lambda-package.yml
├── documentation/
│ ├── .gitignore
│ ├── README.md
│ ├── docs/
│ │ ├── api-reference/
│ │ │ ├── cli.md
│ │ │ ├── identity.md
│ │ │ ├── memory.md
│ │ │ ├── runtime.md
│ │ │ └── tools.md
│ │ ├── examples/
│ │ │ ├── README.md
│ │ │ ├── agentcore-quickstart-example.md
│ │ │ ├── async-processing.md
│ │ │ ├── gateway-integration.md
│ │ │ ├── infrastructure-as-code/
│ │ │ │ ├── cloudformation/
│ │ │ │ │ ├── basic-runtime/
│ │ │ │ │ │ ├── basic-cfn-deploy-readme.md
│ │ │ │ │ │ ├── basic-cfn-template.md
│ │ │ │ │ │ └── basic-deploy-bash-script.md
│ │ │ │ │ ├── end-to-end-weather-agent/
│ │ │ │ │ │ ├── cloudformation-deploy-with-tools-and-memory-bash-script.md
│ │ │ │ │ │ ├── cloudformation-deploy-with-tools-and-memory-readme.md
│ │ │ │ │ │ └── cloudformation-deploy-with-tools-and-memory-template.md
│ │ │ │ │ ├── mcp-server-runtime/
│ │ │ │ │ │ ├── cloudfomation-deploy-with-mcp-tool-bash-script.md
│ │ │ │ │ │ ├── cloudformation-deploy-with-mcp-tool-readme.md
│ │ │ │ │ │ └── cloudformation-deploy-with-mcp-tool-template.md
│ │ │ │ │ └── multi-agent-runtime/
│ │ │ │ │ ├── cloudformation-multi-agent-deploy-bash-script.md
│ │ │ │ │ ├── cloudformation-multi-agent-deploy-readme.md
│ │ │ │ │ └── cloudformation-multi-agent-template.md
│ │ │ │ └── terraform/
│ │ │ │ ├── basic-runtime/
│ │ │ │ │ ├── basic-terraform-deploy-readme.md
│ │ │ │ │ └── basic-terraform-deploy-sample.md
│ │ │ │ ├── end-to-end-weather-agent/
│ │ │ │ │ ├── weather-agent-terraform-deploy-readme.md
│ │ │ │ │ └── weather-agent-terraform-deploy-sample.md
│ │ │ │ ├── mcp-server-agentcore-runtime/
│ │ │ │ │ ├── mcp-server-terraform-deploy-readme.md
│ │ │ │ │ └── mcp-server-terraform-deploy-sample.md
│ │ │ │ └── multi-agent-runtime/
│ │ │ │ ├── multi-agent-terraform-deploy-readme.md
│ │ │ │ └── multi-agent-terraform-deploy-sample.md
│ │ │ ├── integrations/
│ │ │ │ └── agentic-frameworks/
│ │ │ │ ├── adk/
│ │ │ │ │ ├── adk-agent-readme.md
│ │ │ │ │ └── adk-agent.md
│ │ │ │ ├── autogen/
│ │ │ │ │ ├── autogen-agent-readme.md
│ │ │ │ │ └── autogen-agent.md
│ │ │ │ ├── claude-sdk/
│ │ │ │ │ ├── claude-agent-readme.md
│ │ │ │ │ └── claude-agent.md
│ │ │ │ ├── langgraph/
│ │ │ │ │ ├── langgraph-agent-readme.md
│ │ │ │ │ └── langgraph-agent.md
│ │ │ │ ├── llamaindex/
│ │ │ │ │ ├── llama-agent-readme.md
│ │ │ │ │ └── llama-agent.md
│ │ │ │ ├── openai/
│ │ │ │ │ ├── openai-agent-basic-example.md
│ │ │ │ │ ├── openai-agent-handoff-example.md
│ │ │ │ │ └── openai-agent-readme.md
│ │ │ │ ├── pydanticai/
│ │ │ │ │ └── pydanticai-agent.md
│ │ │ │ └── strands/
│ │ │ │ ├── strands-agent-basic-example.md
│ │ │ │ ├── strands-agent-openai-identity-example.md
│ │ │ │ └── strands-agent-streaming-example.md
│ │ │ ├── memory_gateway_agent.md
│ │ │ ├── observability/
│ │ │ │ └── dynatrace/
│ │ │ │ ├── observability-agent-and-dynatrace-init.md
│ │ │ │ ├── observability-basic-agent.md
│ │ │ │ └── observability-dynatrace.md
│ │ │ ├── policy-integration.md
│ │ │ ├── runtime-framework-agents.md
│ │ │ ├── semantic_search.md
│ │ │ └── session-management.md
│ │ ├── index.md
│ │ ├── mcp/
│ │ │ └── agentcore_runtime_deployment.md
│ │ ├── stylesheets/
│ │ │ └── extra.css
│ │ └── user-guide/
│ │ ├── builtin-tools/
│ │ │ ├── quickstart-browser.md
│ │ │ └── quickstart-code-interpreter.md
│ │ ├── create/
│ │ │ └── quickstart.md
│ │ ├── dev/
│ │ │ └── quickstart.md
│ │ ├── evaluation/
│ │ │ └── quickstart.md
│ │ ├── gateway/
│ │ │ └── quickstart.md
│ │ ├── identity/
│ │ │ ├── quickstart-aws-jwt.md
│ │ │ ├── quickstart-with-cli.md
│ │ │ └── quickstart.md
│ │ ├── import-agent/
│ │ │ ├── configuration.md
│ │ │ ├── design.md
│ │ │ ├── overview.md
│ │ │ └── quickstart.md
│ │ ├── memory/
│ │ │ └── quickstart.md
│ │ ├── observability/
│ │ │ └── quickstart.md
│ │ ├── policy/
│ │ │ ├── overview.md
│ │ │ └── quickstart.md
│ │ ├── runtime/
│ │ │ ├── a2a.md
│ │ │ ├── async.md
│ │ │ ├── notebook.md
│ │ │ ├── overview.md
│ │ │ ├── permissions.md
│ │ │ └── quickstart.md
│ │ └── security/
│ │ ├── agentcore-vpc.md
│ │ ├── security-vpc-condition.md
│ │ └── vpc-interface-endpoints.md
│ ├── mkdocs.yaml
│ └── overrides/
│ └── main.html
├── pyproject.toml
├── scripts/
│ ├── bump-version.py
│ ├── prepare-release.py
│ ├── setup-branch-protection.sh
│ └── validate-release.py
├── src/
│ └── bedrock_agentcore_starter_toolkit/
│ ├── __init__.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ ├── cli_ui.py
│ │ ├── common.py
│ │ ├── create/
│ │ │ ├── __init__.py
│ │ │ ├── commands.py
│ │ │ ├── import_agent/
│ │ │ │ ├── README.md
│ │ │ │ ├── __init__.py
│ │ │ │ ├── agent_info.py
│ │ │ │ └── commands.py
│ │ │ └── prompt_util.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── gateway/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── identity/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── memory/
│ │ │ ├── __init__.py
│ │ │ ├── browser.py
│ │ │ └── commands.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ └── runtime/
│ │ ├── __init__.py
│ │ ├── _configure_impl.py
│ │ ├── commands.py
│ │ ├── configuration_manager.py
│ │ └── dev_command.py
│ ├── create/
│ │ ├── __init__.py
│ │ ├── baseline_feature.py
│ │ ├── configure/
│ │ │ ├── __init__.py
│ │ │ └── resolve.py
│ │ ├── constants.py
│ │ ├── features/
│ │ │ ├── __init__.py
│ │ │ ├── autogen/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── base_feature.py
│ │ │ ├── cdk/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── common/
│ │ │ │ │ ├── .gitignore.j2
│ │ │ │ │ ├── .npmignore.j2
│ │ │ │ │ ├── README.j2
│ │ │ │ │ ├── cdk.json.j2
│ │ │ │ │ ├── jest.config.js.j2
│ │ │ │ │ ├── package.json.j2
│ │ │ │ │ └── tsconfig.json.j2
│ │ │ │ └── monorepo/
│ │ │ │ ├── bin/
│ │ │ │ │ └── cdk.ts.j2
│ │ │ │ └── lib/
│ │ │ │ ├── stacks/
│ │ │ │ │ ├── agentcore-stack.ts.j2
│ │ │ │ │ ├── docker-image-stack.ts.j2
│ │ │ │ │ └── index.ts.j2
│ │ │ │ ├── test/
│ │ │ │ │ └── cdk.test.ts.j2
│ │ │ │ └── types.ts.j2
│ │ │ ├── crewai/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── googleadk/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ └── gemini/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── langchain_langgraph/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── openaiagents/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ ├── strands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── feature.py
│ │ │ │ └── templates/
│ │ │ │ ├── model_provider/
│ │ │ │ │ ├── anthropic/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── bedrock/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ ├── gemini/
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── load.py.j2
│ │ │ │ │ └── openai/
│ │ │ │ │ └── model/
│ │ │ │ │ └── load.py.j2
│ │ │ │ ├── monorepo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── main.py.j2
│ │ │ │ │ └── mcp_client/
│ │ │ │ │ └── client.py.j2
│ │ │ │ └── runtime_only/
│ │ │ │ └── common/
│ │ │ │ ├── main.py.j2
│ │ │ │ └── mcp_client/
│ │ │ │ └── client.py.j2
│ │ │ └── terraform/
│ │ │ ├── __init__.py
│ │ │ ├── feature.py
│ │ │ └── templates/
│ │ │ └── monorepo/
│ │ │ ├── bedrock_agentcore.tf.j2
│ │ │ ├── main.tf.j2
│ │ │ ├── terraform.tfvars.j2
│ │ │ └── variables.tf.j2
│ │ ├── generate.py
│ │ ├── progress/
│ │ │ ├── __init__.py
│ │ │ └── progress_sink.py
│ │ ├── templates/
│ │ │ ├── monorepo/
│ │ │ │ ├── .gitignore.j2
│ │ │ │ ├── README.md.j2
│ │ │ │ ├── mcp/
│ │ │ │ │ └── lambda/
│ │ │ │ │ ├── handler.py.j2
│ │ │ │ │ └── requirements.txt.j2
│ │ │ │ ├── pyproject.toml.j2
│ │ │ │ ├── src/
│ │ │ │ │ └── main.py.j2
│ │ │ │ └── test/
│ │ │ │ ├── __init__.py.j2
│ │ │ │ └── test_main.py.j2
│ │ │ └── runtime_only/
│ │ │ ├── .gitignore.j2
│ │ │ ├── README.md.j2
│ │ │ ├── pyproject.toml.j2
│ │ │ ├── src/
│ │ │ │ └── main.py.j2
│ │ │ └── test/
│ │ │ ├── __init__.py.j2
│ │ │ └── test_main.py.j2
│ │ ├── types.py
│ │ └── util/
│ │ ├── __init__.py
│ │ ├── console_print.py
│ │ ├── create_agentcore_yaml.py
│ │ ├── dotenv.py
│ │ └── subprocess.py
│ ├── notebook/
│ │ ├── __init__.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ └── client.py
│ │ ├── memory/
│ │ │ ├── __init__.py
│ │ │ └── memory.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ └── observability.py
│ │ └── runtime/
│ │ ├── __init__.py
│ │ └── bedrock_agentcore.py
│ ├── operations/
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ ├── control_plane_client.py
│ │ │ ├── create_role.py
│ │ │ ├── data_plane_client.py
│ │ │ ├── evaluator_processor.py
│ │ │ ├── formatters.py
│ │ │ ├── models.py
│ │ │ ├── on_demand_processor.py
│ │ │ └── online_processor.py
│ │ ├── gateway/
│ │ │ ├── __init__.py
│ │ │ ├── client.py
│ │ │ ├── constants.py
│ │ │ ├── create_lambda.py
│ │ │ ├── create_role.py
│ │ │ └── exceptions.py
│ │ ├── identity/
│ │ │ ├── __init__.py
│ │ │ ├── helpers.py
│ │ │ └── oauth2_callback_server.py
│ │ ├── memory/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── constants.py
│ │ │ ├── manager.py
│ │ │ ├── memory_formatters.py
│ │ │ ├── memory_visualizer.py
│ │ │ ├── models/
│ │ │ │ ├── DictWrapper.py
│ │ │ │ ├── Memory.py
│ │ │ │ ├── MemoryStrategy.py
│ │ │ │ ├── MemorySummary.py
│ │ │ │ ├── __init__.py
│ │ │ │ └── strategies/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base.py
│ │ │ │ ├── custom.py
│ │ │ │ ├── self_managed.py
│ │ │ │ ├── semantic.py
│ │ │ │ ├── summary.py
│ │ │ │ └── user_preference.py
│ │ │ └── strategy_validator.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ ├── builders.py
│ │ │ ├── client.py
│ │ │ ├── delivery.py
│ │ │ ├── formatters.py
│ │ │ ├── message_parser.py
│ │ │ ├── query_builder.py
│ │ │ ├── telemetry.py
│ │ │ ├── trace_processor.py
│ │ │ └── trace_visualizer.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ ├── client.py
│ │ │ ├── constants.py
│ │ │ └── exceptions.py
│ │ └── runtime/
│ │ ├── __init__.py
│ │ ├── configure.py
│ │ ├── create_role.py
│ │ ├── destroy.py
│ │ ├── exceptions.py
│ │ ├── invoke.py
│ │ ├── launch.py
│ │ ├── models.py
│ │ ├── status.py
│ │ ├── stop_session.py
│ │ └── vpc_validation.py
│ ├── services/
│ │ ├── __init__.py
│ │ ├── codebuild.py
│ │ ├── ecr.py
│ │ ├── import_agent/
│ │ │ ├── __init__.py
│ │ │ ├── assets/
│ │ │ │ ├── memory_manager_template.py
│ │ │ │ ├── requirements_langchain.j2
│ │ │ │ ├── requirements_strands.j2
│ │ │ │ └── template_fixtures_merged.json
│ │ │ ├── scripts/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_bedrock_translate.py
│ │ │ │ ├── bedrock_to_langchain.py
│ │ │ │ └── bedrock_to_strands.py
│ │ │ └── utils.py
│ │ ├── runtime.py
│ │ ├── s3.py
│ │ └── xray.py
│ └── utils/
│ ├── aws.py
│ ├── endpoints.py
│ ├── lambda_utils.py
│ ├── logging_config.py
│ ├── paths.py
│ ├── python_env.py
│ ├── runtime/
│ │ ├── __init__.py
│ │ ├── agentcore_identity.py
│ │ ├── config.py
│ │ ├── container.py
│ │ ├── create.py
│ │ ├── create_with_iam_eventual_consistency.py
│ │ ├── entrypoint.py
│ │ ├── logs.py
│ │ ├── package.py
│ │ ├── policy_template.py
│ │ ├── schema.py
│ │ └── templates/
│ │ ├── Dockerfile.j2
│ │ ├── Dockerfile.node.j2
│ │ ├── dockerignore.node.template
│ │ ├── dockerignore.template
│ │ ├── execution_role_policy.json.j2
│ │ └── execution_role_trust_policy.json.j2
│ └── server_addresses.py
├── tests/
│ ├── __init__.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── gateway/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── identity/
│ │ │ ├── __init__.py
│ │ │ └── test_identity.py
│ │ ├── memory/
│ │ │ ├── __init__.py
│ │ │ ├── test_browser.py
│ │ │ └── test_commands.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ └── test_commands.py
│ │ ├── runtime/
│ │ │ ├── __init__.py
│ │ │ ├── test_commands.py
│ │ │ ├── test_configuration_manager.py
│ │ │ ├── test_configure_impl.py
│ │ │ ├── test_dev_command.py
│ │ │ └── test_dev_command_additions.py
│ │ ├── test_cli_ui.py
│ │ └── test_common.py
│ ├── client/
│ │ ├── __init__.py
│ │ ├── test_evaluation_client.py
│ │ ├── test_memory.py
│ │ └── test_observability.py
│ ├── conftest.py
│ ├── conftest_mock.py
│ ├── create/
│ │ ├── __init__.py
│ │ ├── __snapshots__/
│ │ │ ├── test_monorepo_snapshots.ambr
│ │ │ ├── test_monorepo_snapshots_with_config.ambr
│ │ │ └── test_runtime_snapshots.ambr
│ │ ├── features/
│ │ │ ├── test_iac_features.py
│ │ │ └── test_sdk_features.py
│ │ ├── fixtures/
│ │ │ └── scenarios/
│ │ │ ├── scenario_0/
│ │ │ │ └── .bedrock_agentcore.yaml
│ │ │ └── scenario_1/
│ │ │ └── .bedrock_agentcore.yaml
│ │ ├── test_baseline_feature.py
│ │ ├── test_constants.py
│ │ ├── test_generate.py
│ │ ├── test_helper/
│ │ │ ├── __init__.py
│ │ │ ├── create_scenarios.py
│ │ │ ├── run_create_with_config.py
│ │ │ └── syrupy_util.py
│ │ ├── test_memory.py
│ │ ├── test_monorepo_snapshots.py
│ │ ├── test_monorepo_snapshots_with_config.py
│ │ ├── test_resolve.py
│ │ ├── test_runtime_snapshots.py
│ │ ├── test_util_dotenv.py
│ │ ├── test_util_subprocess.py
│ │ └── test_util_yaml.py
│ ├── fixtures/
│ │ ├── project_config_multiple.yaml
│ │ └── project_config_single.yaml
│ ├── notebook/
│ │ └── runtime/
│ │ ├── test_bedrock_agentcore.py
│ │ └── test_bedrock_agentcore_code_zip.py
│ ├── operations/
│ │ ├── evaluation/
│ │ │ ├── __init__.py
│ │ │ ├── test_control_plane_client.py
│ │ │ ├── test_create_role.py
│ │ │ ├── test_data_plane_client.py
│ │ │ ├── test_evaluator_processor.py
│ │ │ ├── test_models.py
│ │ │ ├── test_on_demand_processor.py
│ │ │ └── test_online_processor.py
│ │ ├── gateway/
│ │ │ ├── test_gateway_client.py
│ │ │ ├── test_gateway_client_init.py
│ │ │ └── test_gateway_create_role.py
│ │ ├── identity/
│ │ │ ├── test_helpers.py
│ │ │ └── test_oauth2_callback_server.py
│ │ ├── memory/
│ │ │ ├── test_formatters.py
│ │ │ ├── test_manager.py
│ │ │ ├── test_strategy_types.py
│ │ │ ├── test_strategy_validator.py
│ │ │ └── test_visualizer.py
│ │ ├── observability/
│ │ │ ├── __init__.py
│ │ │ ├── conftest.py
│ │ │ ├── fixtures/
│ │ │ │ ├── raw_otel_langchain_runtime_logs.json
│ │ │ │ ├── raw_otel_langchain_spans.json
│ │ │ │ ├── raw_otel_langchain_tool_runtime_logs.json
│ │ │ │ ├── raw_otel_strands_bedrock_runtime_logs.json
│ │ │ │ ├── raw_otel_strands_bedrock_spans.json
│ │ │ │ ├── raw_otel_strands_openai_runtime_logs.json
│ │ │ │ └── raw_otel_strands_openai_spans.json
│ │ │ ├── test_builders.py
│ │ │ ├── test_client.py
│ │ │ ├── test_e2e_observability.py
│ │ │ ├── test_formatters.py
│ │ │ ├── test_message_parser.py
│ │ │ ├── test_observability_delivery.py
│ │ │ ├── test_query_builder.py
│ │ │ ├── test_trace_processor.py
│ │ │ └── test_trace_visualizer.py
│ │ ├── policy/
│ │ │ ├── __init__.py
│ │ │ └── test_policy_client.py
│ │ └── runtime/
│ │ ├── test_configure.py
│ │ ├── test_create_role.py
│ │ ├── test_destroy.py
│ │ ├── test_invoke.py
│ │ ├── test_launch.py
│ │ ├── test_status.py
│ │ ├── test_stopsession.py
│ │ └── test_vpc_validation.py
│ ├── services/
│ │ ├── import_agent/
│ │ │ ├── data/
│ │ │ │ ├── bedrock_config.json
│ │ │ │ ├── bedrock_config_multi_agent.json
│ │ │ │ └── bedrock_config_no_schema.json
│ │ │ └── test_import_agent.py
│ │ ├── test_codebuild.py
│ │ ├── test_ecr.py
│ │ ├── test_runtime.py
│ │ ├── test_runtime_conflict_error.py
│ │ ├── test_s3.py
│ │ └── test_xray.py
│ └── utils/
│ ├── runtime/
│ │ ├── test_agentcore_identity.py
│ │ ├── test_config.py
│ │ ├── test_container.py
│ │ ├── test_create.py
│ │ ├── test_entrypoint.py
│ │ ├── test_package.py
│ │ ├── test_policy_template.py
│ │ └── test_schema.py
│ ├── test_aws.py
│ ├── test_endpoints.py
│ ├── test_lambda_utils.py
│ └── test_logging_config.py
└── tests_integ/
├── __init__.py
├── cli/
│ ├── __init__.py
│ ├── identity/
│ │ ├── __init__.py
│ │ ├── test_identity_aws_jwt.py
│ │ ├── test_identity_flow.py
│ │ └── test_identity_m2m.py
│ └── runtime/
│ ├── __init__.py
│ ├── base_test.py
│ └── test_simple_agent.py
├── gateway/
│ ├── README.md
│ ├── gateway_quickstart.ipynb
│ ├── test_cognito_token.py
│ ├── test_create_gateway_role.py
│ ├── test_egress_auth.py
│ └── test_gateway_cognito.py
├── identity/
│ └── access_token_3LO.py
├── memory/
│ ├── memory-manager.ipynb
│ └── test_create_memory.py
├── notebook/
│ ├── evaluation_inegration_test_.ipynb
│ ├── memory_integration_test.ipynb
│ ├── observability_integration_test.ipynb
│ └── test_notebook_runtime.py
├── observability/
│ └── test_observability_delivery_integration.py
├── policy/
│ └── test_policy_gateway_integration.py
├── strands_agent/
│ ├── __init__.py
│ └── agent.py
├── tools/
│ ├── __init__.py
│ ├── my_mcp_client.py
│ ├── my_mcp_client_remote.py
│ ├── my_mcp_server.py
│ └── setup_cognito.sh
└── utils/
└── config.py
Showing preview only (491K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4552 symbols across 231 files)
FILE: scripts/bump-version.py
function get_current_version (line 15) | def get_current_version() -> str:
function get_sdk_dependency_version (line 24) | def get_sdk_dependency_version() -> Optional[str]:
function check_sdk_version_on_pypi (line 31) | def check_sdk_version_on_pypi(version: str, max_wait: int = 300) -> bool:
function update_sdk_dependency (line 51) | def update_sdk_dependency(new_sdk_version: str):
function parse_version (line 63) | def parse_version(version: str) -> Tuple[int, int, int, Optional[str]]:
function bump_version (line 74) | def bump_version(current: str, bump_type: str) -> str:
function update_version_in_file (line 91) | def update_version_in_file(file_path: Path, old_version: str, new_versio...
function update_all_versions (line 106) | def update_all_versions(old_version: str, new_version: str):
function get_git_log (line 121) | def get_git_log(since_tag: Optional[str] = None) -> str:
function update_changelog (line 139) | def update_changelog(new_version: str, changes: str = None, sdk_version:...
function main (line 175) | def main():
FILE: scripts/validate-release.py
class Colors (line 15) | class Colors:
function print_status (line 26) | def print_status(message: str, status: str = "info"):
function run_command (line 40) | def run_command(cmd: List[str], capture=True) -> Tuple[int, str, str]:
function check_version (line 46) | def check_version() -> str:
function check_dependencies (line 71) | def check_dependencies():
function check_security_files (line 102) | def check_security_files():
function validate_package_contents (line 126) | def validate_package_contents(wheel_path: Path):
function main (line 162) | def main():
FILE: src/bedrock_agentcore_starter_toolkit/cli/cli.py
function _deprecation_banner (line 40) | def _deprecation_banner(ctx: typer.Context) -> None:
function main (line 81) | def main(): # pragma: no cover
FILE: src/bedrock_agentcore_starter_toolkit/cli/cli_ui.py
class NoUnderline (line 37) | class NoUnderline(StyleTransformation):
method transform_attrs (line 40) | def transform_attrs(self, attrs):
class OptionState (line 50) | class OptionState:
method __init__ (line 53) | def __init__(self, values: list[tuple[str, str, str | None]]):
method current_value (line 64) | def current_value(self):
function build_option_fragments (line 69) | def build_option_fragments(state: OptionState):
function show_create_welcome_ascii (line 116) | def show_create_welcome_ascii() -> None:
function select_one (line 127) | def select_one(title: str, options: list[str] | dict[str, str], default:...
function ask_text (line 226) | def ask_text(
function ask_text_with_validation (line 306) | def ask_text_with_validation(
function intro_animate_once (line 408) | def intro_animate_once():
function print_border (line 422) | def print_border(char: str = "-", style: str = "") -> None:
function sandwich_text_ui (line 428) | def sandwich_text_ui(style: str, text: str) -> None:
function show_invalid_aws_creds (line 436) | def show_invalid_aws_creds(ok: bool, msg: Optional[str], optional_header...
function _pause_and_new_line_on_finish (line 457) | def _pause_and_new_line_on_finish(sleep_override: float | None = None):
FILE: src/bedrock_agentcore_starter_toolkit/cli/common.py
function requires_aws_creds (line 15) | def requires_aws_creds(func):
function assert_valid_aws_creds_or_exit (line 26) | def assert_valid_aws_creds_or_exit(failure_message=None):
function _handle_error (line 35) | def _handle_error(message: str, exception: Optional[Exception] = None) -...
function _handle_warn (line 44) | def _handle_warn(message: str) -> None:
function _print_success (line 49) | def _print_success(message: str) -> None:
function _prompt_with_default (line 54) | def _prompt_with_default(question: str, default_value: Optional[str] = "...
FILE: src/bedrock_agentcore_starter_toolkit/cli/create/commands.py
function create (line 84) | def create(
function _apply_non_interactive_defaults (line 177) | def _apply_non_interactive_defaults(
function _handle_basic_runtime_flow (line 219) | def _handle_basic_runtime_flow(
function _handle_monorepo_flow (line 268) | def _handle_monorepo_flow(
function _assert_sdk_and_model_provider_combination (line 320) | def _assert_sdk_and_model_provider_combination(sdk: SDKProvider, model_p...
function handle_keyboard_interrupt (line 330) | def handle_keyboard_interrupt():
FILE: src/bedrock_agentcore_starter_toolkit/cli/create/import_agent/agent_info.py
function get_clients (line 13) | def get_clients(credentials, region_name="us-west-2"):
function get_agents (line 36) | def get_agents(bedrock_agent_client) -> list[dict[str, str]]:
function get_agent_aliases (line 57) | def get_agent_aliases(bedrock_agent_client, agent_id):
function get_agent_info (line 79) | def get_agent_info(agent_id: str, agent_alias_id: str, bedrock_client, b...
function auth_and_get_info (line 213) | def auth_and_get_info(agent_id: str, agent_alias_id: str, output_dir: st...
FILE: src/bedrock_agentcore_starter_toolkit/cli/create/import_agent/commands.py
function _run_agent (line 22) | def _run_agent(output_dir, output_path):
function _agentcore_invoke_cli (line 60) | def _agentcore_invoke_cli(output_dir):
function import_agent (line 83) | def import_agent(
FILE: src/bedrock_agentcore_starter_toolkit/cli/create/prompt_util.py
function prompt_runtime_or_monorepo (line 10) | def prompt_runtime_or_monorepo(runtime_only_text: str):
function prompt_iac_provider (line 19) | def prompt_iac_provider() -> IACProvider:
function prompt_sdk_provider (line 27) | def prompt_sdk_provider(is_direct_code_deploy: bool = False) -> CreateSD...
function prompt_model_provider (line 36) | def prompt_model_provider(sdk_provider: str | None = None) -> CreateMode...
function prompt_configure (line 45) | def prompt_configure():
function prompt_memory (line 55) | def prompt_memory() -> bool:
function prompt_git_init (line 63) | def prompt_git_init():
function get_auto_generated_project_name (line 69) | def get_auto_generated_project_name() -> str:
FILE: src/bedrock_agentcore_starter_toolkit/cli/evaluation/commands.py
function _get_agent_config_from_file (line 42) | def _get_agent_config_from_file(agent_name: Optional[str] = None) -> Opt...
function run_evaluation (line 79) | def run_evaluation(
function list_evaluators (line 261) | def list_evaluators(
function get_evaluator (line 298) | def get_evaluator(
function _interactive_create_evaluator (line 338) | def _interactive_create_evaluator(client: EvaluationControlPlaneClient) ...
function create_evaluator (line 393) | def create_evaluator(
function update_evaluator (line 473) | def update_evaluator(
function delete_evaluator (line 527) | def delete_evaluator(
function create_online_config (line 570) | def create_online_config(
function get_online_config (line 691) | def get_online_config(
function list_online_configs (line 752) | def list_online_configs(
function update_online_config (line 833) | def update_online_config(
function delete_online_config (line 913) | def delete_online_config(
FILE: src/bedrock_agentcore_starter_toolkit/cli/gateway/commands.py
function create_mcp_gateway (line 16) | def create_mcp_gateway(
function create_mcp_gateway_target (line 47) | def create_mcp_gateway_target(
function delete_mcp_gateway (line 102) | def delete_mcp_gateway(
function delete_mcp_gateway_target (line 137) | def delete_mcp_gateway_target(
function list_mcp_gateways (line 170) | def list_mcp_gateways(
function get_mcp_gateway (line 190) | def get_mcp_gateway(
function list_mcp_gateway_targets (line 216) | def list_mcp_gateway_targets(
function get_mcp_gateway_target (line 247) | def get_mcp_gateway_target(
function update_gateway (line 280) | def update_gateway(
FILE: src/bedrock_agentcore_starter_toolkit/cli/identity/commands.py
function create_credential_provider (line 33) | def create_credential_provider(
function create_workload_identity (line 148) | def create_workload_identity(
function update_workload_identity (line 224) | def update_workload_identity(
function get_cognito_inbound_token (line 289) | def get_cognito_inbound_token(
function list_credential_providers (line 409) | def list_credential_providers():
function _build_provider_config (line 470) | def _build_provider_config(
function _save_provider_config (line 526) | def _save_provider_config(name: str, arn: str, provider_type: str, callb...
function _save_workload_config (line 548) | def _save_workload_config(name: str, arn: str, return_urls: List[str]):
function setup_cognito (line 567) | def setup_cognito(
function setup_aws_jwt (line 708) | def setup_aws_jwt(
function list_aws_jwt (line 857) | def list_aws_jwt():
function cleanup_identity (line 894) | def cleanup_identity(
FILE: src/bedrock_agentcore_starter_toolkit/cli/memory/browser.py
class NavigationState (line 24) | class NavigationState:
class BrowserData (line 39) | class BrowserData:
class MemoryBrowser (line 50) | class MemoryBrowser:
method __init__ (line 53) | def __init__(
method run (line 77) | def run(self) -> None:
method _clear (line 177) | def _clear(self) -> None:
method _render (line 181) | def _render(self) -> None:
method _render_breadcrumb (line 188) | def _render_breadcrumb(self) -> None:
method _render_content (line 221) | def _render_content(self) -> None:
method _render_memory_view (line 235) | def _render_memory_view(self) -> None:
method _render_list_view (line 259) | def _render_list_view(self, view_type: str) -> None:
method _render_event_detail (line 360) | def _render_event_detail(self) -> None:
method _render_record_detail (line 367) | def _render_record_detail(self) -> None:
method _render_controls (line 374) | def _render_controls(self) -> None:
method _load_view (line 410) | def _load_view(self) -> None:
method _load_memory (line 442) | def _load_memory(self) -> None:
method _load_actors (line 450) | def _load_actors(self, load_more: bool = False) -> None:
method _load_sessions (line 472) | def _load_sessions(self, load_more: bool = False) -> None:
method _load_events (line 494) | def _load_events(self, load_more: bool = False) -> None:
method _load_namespaces (line 521) | def _load_namespaces(self) -> None:
method _load_records (line 532) | def _load_records(self, load_more: bool = False) -> None:
method _cursor_up (line 555) | def _cursor_up(self) -> None:
method _cursor_down (line 560) | def _cursor_down(self) -> None:
method _push_state (line 565) | def _push_state(self) -> None:
method _go_back (line 570) | def _go_back(self) -> None:
method _select (line 577) | def _select(self) -> None:
method _select_memory_item (line 597) | def _select_memory_item(self) -> None:
method _select_actor (line 602) | def _select_actor(self) -> None:
method _select_session (line 610) | def _select_session(self) -> None:
method _select_event (line 618) | def _select_event(self) -> None:
method _select_namespace (line 623) | def _select_namespace(self) -> None:
method _select_namespace_actor (line 639) | def _select_namespace_actor(self) -> None:
method _select_namespace_session (line 655) | def _select_namespace_session(self) -> None:
method _select_record (line 667) | def _select_record(self) -> None:
method _extract_role (line 672) | def _extract_role(self, event: Dict[str, Any]) -> str:
method _extract_text (line 683) | def _extract_text(self, event: Dict[str, Any]) -> str:
method _extract_payload_snippet (line 694) | def _extract_payload_snippet(self, event: Dict[str, Any]) -> str:
method _extract_record_text (line 704) | def _extract_record_text(self, record: Dict[str, Any]) -> str:
FILE: src/bedrock_agentcore_starter_toolkit/cli/memory/commands.py
class ResolvedMemoryConfig (line 33) | class ResolvedMemoryConfig:
class _ConfigLookupResult (line 41) | class _ConfigLookupResult:
function _get_memory_config_from_file (line 50) | def _get_memory_config_from_file(agent_name: Optional[str] = None) -> _C...
function _resolve_memory_config (line 80) | def _resolve_memory_config(
function _validate_events_options (line 144) | def _validate_events_options(
function _validate_records_options (line 162) | def _validate_records_options(
function _collect_all_events (line 182) | def _collect_all_events(manager: MemoryManager, memory_id: str) -> List[...
function _collect_all_records (line 203) | def _collect_all_records(
function _collect_records_from_namespace_template (line 230) | def _collect_records_from_namespace_template(
function _try_collect_records (line 262) | def _try_collect_records(
function create (line 283) | def create(
function show (line 354) | def show(
function get (line 429) | def get(
function list_memories_cmd (line 459) | def list_memories_cmd(
function delete (line 480) | def delete(
function status (line 508) | def status(
function show_callback (line 532) | def show_callback(
function show_events (line 581) | def show_events(
function _handle_list_actors (line 658) | def _handle_list_actors(manager: MemoryManager, memory_id: str) -> None:
function _handle_list_sessions (line 668) | def _handle_list_sessions(manager: MemoryManager, memory_id: str, actor_...
function _handle_show_nth_event (line 681) | def _handle_show_nth_event(
function show_records (line 714) | def show_records(
function _handle_semantic_search (line 780) | def _handle_semantic_search(
function _handle_show_nth_record (line 800) | def _handle_show_nth_record(
function browse (line 839) | def browse(
FILE: src/bedrock_agentcore_starter_toolkit/cli/observability/commands.py
function _get_default_time_range (line 30) | def _get_default_time_range(days: int = DEFAULT_LOOKBACK_DAYS) -> tuple[...
function _get_agent_config_from_file (line 37) | def _get_agent_config_from_file(agent_name: Optional[str] = None) -> Opt...
function _create_observability_client (line 67) | def _create_observability_client(
function _display_trace_list (line 136) | def _display_trace_list(trace_data: TraceData, session_id: str) -> None:
function _export_trace_data_to_json (line 224) | def _export_trace_data_to_json(trace_data: TraceData, output_path: str, ...
function show (line 243) | def show(
function _show_trace_view (line 404) | def _show_trace_view(
function _show_session_view (line 445) | def _show_session_view(
function list_traces (line 553) | def list_traces(
FILE: src/bedrock_agentcore_starter_toolkit/cli/policy/commands.py
function create_policy_engine (line 20) | def create_policy_engine(
function get_policy_engine (line 55) | def get_policy_engine(
function update_policy_engine (line 77) | def update_policy_engine(
function list_policy_engines (line 97) | def list_policy_engines(
function delete_policy_engine (line 136) | def delete_policy_engine(
function create_policy (line 154) | def create_policy(
function get_policy (line 197) | def get_policy(
function update_policy (line 223) | def update_policy(
function list_policies (line 259) | def list_policies(
function delete_policy (line 305) | def delete_policy(
function create_policy_from_generation (line 321) | def create_policy_from_generation(
function start_policy_generation (line 357) | def start_policy_generation(
function get_policy_generation (line 400) | def get_policy_generation(
function list_policy_generation_assets (line 422) | def list_policy_generation_assets(
function list_policy_generations (line 443) | def list_policy_generations(
FILE: src/bedrock_agentcore_starter_toolkit/cli/runtime/_configure_impl.py
function configure_impl (line 23) | def configure_impl(
function _validate_requirements_file (line 702) | def _validate_requirements_file(file_path: str) -> str:
function _prompt_for_requirements_file (line 716) | def _prompt_for_requirements_file(prompt_text: str, source_path: str, de...
function _handle_requirements_file_display (line 751) | def _handle_requirements_file_display(
function _detect_entrypoint_in_source (line 805) | def _detect_entrypoint_in_source(source_path: str, non_interactive: bool...
FILE: src/bedrock_agentcore_starter_toolkit/cli/runtime/commands.py
function _show_configuration_not_found_panel (line 45) | def _show_configuration_not_found_panel():
function list_agents (line 62) | def list_agents():
function set_default (line 86) | def set_default(name: str = typer.Argument(...)):
function configure (line 106) | def configure(
function deploy (line 219) | def deploy(
function _show_invoke_info_panel (line 619) | def _show_invoke_info_panel(agent_name: str, invoke_result=None, config=...
function _show_success_response (line 663) | def _show_success_response(content):
function _show_error_response (line 670) | def _show_error_response(error_msg: str):
function _parse_custom_headers (line 675) | def _parse_custom_headers(headers_str: str) -> dict:
function invoke (line 714) | def invoke(
function status (line 880) | def status(
function stop_session (line 1101) | def stop_session(
function destroy (line 1204) | def destroy(
function _invoke_dev_server (line 1353) | def _invoke_dev_server(payload: str, port: int = 8080, session_id: str =...
FILE: src/bedrock_agentcore_starter_toolkit/cli/runtime/configuration_manager.py
class ConfigurationManager (line 11) | class ConfigurationManager:
method __init__ (line 14) | def __init__(self, config_path: Path, non_interactive: bool = False, r...
method prompt_agent_name (line 29) | def prompt_agent_name(self, suggested_name: str) -> str:
method prompt_execution_role (line 52) | def prompt_execution_role(self) -> Optional[str]:
method prompt_ecr_repository (line 72) | def prompt_ecr_repository(self) -> tuple[Optional[str], bool]:
method prompt_s3_bucket (line 92) | def prompt_s3_bucket(self) -> tuple[Optional[str], bool]:
method _validate_s3_bucket (line 115) | def _validate_s3_bucket(self, s3_input: str) -> bool:
method prompt_oauth_config (line 147) | def prompt_oauth_config(self) -> Optional[dict]:
method _configure_oauth (line 167) | def _configure_oauth(self) -> dict:
method prompt_request_header_allowlist (line 229) | def prompt_request_header_allowlist(self) -> Optional[dict]:
method _configure_request_header_allowlist (line 257) | def _configure_request_header_allowlist(self) -> dict:
method prompt_memory_type (line 278) | def prompt_memory_type(self) -> tuple[bool, bool]:
method prompt_memory_selection (line 316) | def prompt_memory_selection(self) -> Tuple[str, str]:
method _prompt_new_memory_config (line 409) | def _prompt_new_memory_config(self) -> Tuple[str, str]:
FILE: src/bedrock_agentcore_starter_toolkit/cli/runtime/dev_command.py
function dev (line 25) | def dev(
function _get_language (line 101) | def _get_language(config_path: Path) -> str:
function _has_dev_script (line 114) | def _has_dev_script(project_dir: Path) -> bool:
function _build_typescript_command (line 129) | def _build_typescript_command(config_path: Path, port: str) -> List[str]:
function _get_module_path_and_agent_name (line 140) | def _get_module_path_and_agent_name(config_path: Path) -> tuple[str, str]:
function _get_env_vars (line 171) | def _get_env_vars(config_path: Path) -> Dict[str, str]:
function _ensure_config (line 189) | def _ensure_config(config_path: Path) -> Tuple[bool, bool]:
function _get_module_path_from_config (line 207) | def _get_module_path_from_config(config_path: Path, agent_config) -> str:
function _setup_dev_environment (line 223) | def _setup_dev_environment(envs: List[str], port: Optional[int], config_...
function _find_available_port (line 261) | def _find_available_port(start_port: int = 8080) -> int:
function _assert_aws_creds_if_required (line 273) | def _assert_aws_creds_if_required(config_path: Path):
function _cleanup_process (line 290) | def _cleanup_process(process):
FILE: src/bedrock_agentcore_starter_toolkit/create/baseline_feature.py
class BaselineFeature (line 10) | class BaselineFeature(Feature):
method __init__ (line 16) | def __init__(self, ctx: ProjectContext):
method before_apply (line 37) | def before_apply(self, context):
method after_apply (line 41) | def after_apply(self, context):
method execute (line 45) | def execute(self, context: ProjectContext) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/create/configure/resolve.py
function resolve_agent_config_with_project_context (line 19) | def resolve_agent_config_with_project_context(ctx: ProjectContext, agent...
FILE: src/bedrock_agentcore_starter_toolkit/create/constants.py
class TemplateDisplay (line 10) | class TemplateDisplay:
class TemplateDirSelection (line 17) | class TemplateDirSelection:
class DeploymentType (line 25) | class DeploymentType:
class RuntimeProtocol (line 32) | class RuntimeProtocol:
class IACProvider (line 44) | class IACProvider:
method get_iac_as_list (line 53) | def get_iac_as_list(cls) -> list[CreateIACProvider]:
class MemoryConfig (line 58) | class MemoryConfig:
method get_memory_display_names_as_list (line 71) | def get_memory_display_names_as_list(cls) -> list[str]:
method get_id_from_display (line 77) | def get_id_from_display(cls, display_name: str) -> CreateMemoryType:
class SDKProvider (line 85) | class SDKProvider:
method get_sdk_display_names_as_list (line 117) | def get_sdk_display_names_as_list(cls, is_direct_code_deploy: bool = F...
method get_id_from_display (line 125) | def get_id_from_display(cls, display_name: str) -> CreateSDKProvider:
method resolve_to_internal_id (line 133) | def resolve_to_internal_id(cls, input_val: str) -> str:
class ModelProvider (line 148) | class ModelProvider:
method _get_filtered_ids (line 183) | def _get_filtered_ids(cls, sdk_provider: str | None = None) -> list[Cr...
method get_provider_display_names_as_list (line 207) | def get_provider_display_names_as_list(cls, sdk_provider: str | None =...
method get_providers_list (line 213) | def get_providers_list(cls, sdk_provider: str | None = None) -> list[C...
method get_id_from_display (line 218) | def get_id_from_display(cls, display_name: str) -> str:
FILE: src/bedrock_agentcore_starter_toolkit/create/features/autogen/feature.py
class AutogenFeature (line 8) | class AutogenFeature(Feature):
method before_apply (line 13) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 33) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 37) | def execute(self, context: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/features/base_feature.py
class Feature (line 15) | class Feature(ABC):
method __init__ (line 23) | def __init__(self) -> None:
method _resolve_template_dir (line 31) | def _resolve_template_dir(self, context: ProjectContext) -> Path:
method before_apply (line 43) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 48) | def after_apply(self, context: ProjectContext) -> None:
method apply (line 52) | def apply(self, context: ProjectContext) -> None:
method execute (line 60) | def execute(self, context: ProjectContext) -> None:
method render_dir (line 64) | def render_dir(self, dest_dir: Path, context: ProjectContext) -> None:
method _render_from_template_src_dir (line 90) | def _render_from_template_src_dir(self, template_src_dir: Path, dest_d...
FILE: src/bedrock_agentcore_starter_toolkit/create/features/cdk/feature.py
class CDKFeature (line 10) | class CDKFeature(Feature):
method before_apply (line 16) | def before_apply(self, context: ProjectContext):
method after_apply (line 22) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 26) | def execute(self, context: ProjectContext) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/create/features/crewai/feature.py
class CrewAIFeature (line 8) | class CrewAIFeature(Feature):
method before_apply (line 13) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 30) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 34) | def execute(self, context: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/features/googleadk/feature.py
class GoogleADKFeature (line 8) | class GoogleADKFeature(Feature):
method before_apply (line 14) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 18) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 22) | def execute(self, context: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/features/langchain_langgraph/feature.py
class LangChainLangGraphFeature (line 8) | class LangChainLangGraphFeature(Feature):
method before_apply (line 13) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 33) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 37) | def execute(self, context: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/features/openaiagents/feature.py
class OpenAIAgentsFeature (line 8) | class OpenAIAgentsFeature(Feature):
method before_apply (line 14) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 18) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 22) | def execute(self, context: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/features/strands/feature.py
class StrandsFeature (line 8) | class StrandsFeature(Feature):
method before_apply (line 13) | def before_apply(self, context: ProjectContext) -> None:
method after_apply (line 27) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 31) | def execute(self, context: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/features/terraform/feature.py
class TerraformFeature (line 10) | class TerraformFeature(Feature):
method before_apply (line 15) | def before_apply(self, context: ProjectContext):
method after_apply (line 21) | def after_apply(self, context: ProjectContext) -> None:
method execute (line 25) | def execute(self, context: ProjectContext) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/create/generate.py
function generate_project (line 25) | def generate_project(
function _apply_baseline_and_sdk_features (line 119) | def _apply_baseline_and_sdk_features(ctx: ProjectContext) -> None:
function _apply_iac_generation (line 154) | def _apply_iac_generation(ctx: ProjectContext, agent_config: BedrockAgen...
FILE: src/bedrock_agentcore_starter_toolkit/create/progress/progress_sink.py
class ProgressSink (line 14) | class ProgressSink:
method step (line 21) | def step(self, message: str, done_message: str | None = None, error_me...
method notification (line 66) | def notification(self, message: str):
FILE: src/bedrock_agentcore_starter_toolkit/create/types.py
class ProjectContext (line 26) | class ProjectContext:
method dict (line 68) | def dict(self):
FILE: src/bedrock_agentcore_starter_toolkit/create/util/console_print.py
function emit_create_completed_message (line 9) | def emit_create_completed_message(ctx: ProjectContext):
FILE: src/bedrock_agentcore_starter_toolkit/create/util/create_agentcore_yaml.py
function write_minimal_create_with_iac_project_yaml (line 15) | def write_minimal_create_with_iac_project_yaml(ctx: ProjectContext) -> P...
function write_minimal_create_runtime_yaml (line 46) | def write_minimal_create_runtime_yaml(ctx: ProjectContext, memory: Creat...
FILE: src/bedrock_agentcore_starter_toolkit/create/util/dotenv.py
function _write_env_file_directly (line 8) | def _write_env_file_directly(output_dir: Path, model_provider: str, api_...
FILE: src/bedrock_agentcore_starter_toolkit/create/util/subprocess.py
function create_and_init_venv (line 14) | def create_and_init_venv(ctx: ProjectContext, sink: ProgressSink) -> None:
function init_git_project (line 42) | def init_git_project(ctx: ProjectContext, sink: ProgressSink) -> None:
function _has_uv (line 69) | def _has_uv() -> bool:
function _has_git (line 73) | def _has_git() -> bool:
function _run (line 77) | def _run(cmd: list[str], cwd: Path) -> None:
function _run_quiet (line 82) | def _run_quiet(cmd: list[str], cwd: Path) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/notebook/evaluation/client.py
class Evaluation (line 21) | class Evaluation:
method __init__ (line 43) | def __init__(
method from_config (line 85) | def from_config(
method get_latest_session (line 123) | def get_latest_session(self, agent_id: str) -> Optional[str]:
method run (line 156) | def run(
method list_evaluators (line 257) | def list_evaluators(self, max_results: int = 50) -> Dict:
method get_evaluator (line 278) | def get_evaluator(self, evaluator_id: str, output: Optional[str] = Non...
method duplicate_evaluator (line 304) | def duplicate_evaluator(
method create_evaluator (line 344) | def create_evaluator(
method update_evaluator (line 396) | def update_evaluator(
method delete_evaluator (line 429) | def delete_evaluator(self, evaluator_id: str) -> None:
method create_online_config (line 447) | def create_online_config(
method get_online_config (line 514) | def get_online_config(self, config_id: str) -> Dict:
method list_online_configs (line 535) | def list_online_configs(self, agent_id: Optional[str] = None, max_resu...
method update_online_config (line 565) | def update_online_config(
method delete_online_config (line 611) | def delete_online_config(self, config_id: str, delete_execution_role: ...
FILE: src/bedrock_agentcore_starter_toolkit/notebook/memory/memory.py
function _resolve_memory_config (line 12) | def _resolve_memory_config(
class Memory (line 44) | class Memory:
method __init__ (line 58) | def __init__(
method show (line 68) | def show(self, verbose: bool = False) -> Dict[str, Any]:
method show_events (line 74) | def show_events(
method show_records (line 138) | def show_records(
FILE: src/bedrock_agentcore_starter_toolkit/notebook/observability/observability.py
class Observability (line 17) | class Observability:
method __init__ (line 33) | def __init__(
method list (line 68) | def list(
method show (line 136) | def show(
FILE: src/bedrock_agentcore_starter_toolkit/notebook/runtime/bedrock_agentcore.py
class Runtime (line 29) | class Runtime:
method __init__ (line 32) | def __init__(self):
method configure (line 37) | def configure(
method launch (line 257) | def launch(
method invoke (line 394) | def invoke(
method stop_session (line 433) | def stop_session(self, session_id: Optional[str] = None) -> Dict[str, ...
method status (line 463) | def status(self) -> StatusResult:
method destroy (line 479) | def destroy(
method help_deployment_modes (line 549) | def help_deployment_modes(self):
method help_vpc_networking (line 585) | def help_vpc_networking(self):
FILE: src/bedrock_agentcore_starter_toolkit/operations/constants.py
class OTelFields (line 14) | class OTelFields:
class AttributePrefixes (line 31) | class AttributePrefixes:
class GenAIAttributes (line 43) | class GenAIAttributes:
class LLMAttributes (line 67) | class LLMAttributes:
class InstrumentationScopes (line 75) | class InstrumentationScopes:
class TruncationConfig (line 95) | class TruncationConfig:
method truncate (line 104) | def truncate(cls, text: str, length: int = None, is_tool_use: bool = F...
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/control_plane_client.py
class EvaluationControlPlaneClient (line 21) | class EvaluationControlPlaneClient:
method __init__ (line 41) | def __init__(self, region_name: str, endpoint_url: Optional[str] = Non...
method list_evaluators (line 70) | def list_evaluators(self, max_results: int = 50) -> Dict[str, Any]:
method get_evaluator (line 96) | def get_evaluator(self, evaluator_id: str) -> Dict[str, Any]:
method create_evaluator (line 107) | def create_evaluator(
method update_evaluator (line 127) | def update_evaluator(
method delete_evaluator (line 163) | def delete_evaluator(self, evaluator_id: str) -> None:
method create_online_evaluation_config (line 175) | def create_online_evaluation_config(
method get_online_evaluation_config (line 269) | def get_online_evaluation_config(self, config_id: str) -> Dict[str, Any]:
method list_online_evaluation_configs (line 285) | def list_online_evaluation_configs(self, agent_id: Optional[str] = Non...
method update_online_evaluation_config (line 312) | def update_online_evaluation_config(
method delete_online_evaluation_config (line 345) | def delete_online_evaluation_config(self, config_id: str) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/create_role.py
function _generate_deterministic_suffix (line 16) | def _generate_deterministic_suffix(config_name: str, length: int = 10) -...
function get_or_create_evaluation_execution_role (line 34) | def get_or_create_evaluation_execution_role(
function _attach_inline_policy (line 217) | def _attach_inline_policy(
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/data_plane_client.py
class EvaluationDataPlaneClient (line 20) | class EvaluationDataPlaneClient:
method __init__ (line 29) | def __init__(self, region_name: str, endpoint_url: Optional[str] = Non...
method evaluate (line 57) | def evaluate(
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/evaluator_processor.py
function filter_custom_evaluators (line 16) | def filter_custom_evaluators(evaluators: List[Dict[str, Any]]) -> List[D...
function is_builtin_evaluator (line 28) | def is_builtin_evaluator(evaluator_id: str) -> bool:
function validate_evaluator_config (line 40) | def validate_evaluator_config(config_data: Dict[str, Any]) -> None:
function get_evaluator_for_duplication (line 58) | def get_evaluator_for_duplication(
function create_evaluator (line 96) | def create_evaluator(
function duplicate_evaluator (line 122) | def duplicate_evaluator(
function update_evaluator (line 154) | def update_evaluator(
function update_evaluator_instructions (line 186) | def update_evaluator_instructions(
function delete_evaluator (line 220) | def delete_evaluator(client: EvaluationControlPlaneClient, evaluator_id:...
function list_evaluators (line 242) | def list_evaluators(client: EvaluationControlPlaneClient, max_results: i...
function get_evaluator (line 255) | def get_evaluator(client: EvaluationControlPlaneClient, evaluator_id: st...
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/formatters.py
function display_evaluator_list (line 19) | def display_evaluator_list(evaluators: List[Dict[str, Any]], console: Co...
function display_evaluator_details (line 74) | def display_evaluator_details(details: Dict[str, Any], console: Console)...
function display_evaluation_results (line 125) | def display_evaluation_results(results: EvaluationResults, console: Cons...
function save_evaluation_results (line 209) | def save_evaluation_results(results: EvaluationResults, output_file: str...
function save_json_output (line 247) | def save_json_output(data: Dict[str, Any], output_file: str, console: Co...
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/models.py
class ReferenceInputs (line 8) | class ReferenceInputs:
method to_api_dict (line 20) | def to_api_dict(self, session_id: str) -> List[Dict[str, Any]]:
class EvaluationRequest (line 53) | class EvaluationRequest:
method to_api_request (line 64) | def to_api_request(self) -> tuple[str, Dict[str, Any]]:
class EvaluationResult (line 81) | class EvaluationResult:
method from_api_response (line 95) | def from_api_response(cls, result: Dict[str, Any]) -> "EvaluationResult":
method has_error (line 129) | def has_error(self) -> bool:
class EvaluationResults (line 135) | class EvaluationResults:
method add_result (line 143) | def add_result(self, result: EvaluationResult) -> None:
method has_errors (line 147) | def has_errors(self) -> bool:
method get_successful_results (line 151) | def get_successful_results(self) -> List[EvaluationResult]:
method get_failed_results (line 155) | def get_failed_results(self) -> List[EvaluationResult]:
method to_dict (line 159) | def to_dict(self) -> Dict[str, Any]:
class OnlineEvaluationConfig (line 190) | class OnlineEvaluationConfig:
method from_api_response (line 215) | def from_api_response(cls, response: Dict[str, Any]) -> "OnlineEvaluat...
method to_dict (line 263) | def to_dict(self) -> Dict[str, Any]:
method is_enabled (line 284) | def is_enabled(self) -> bool:
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/on_demand_processor.py
class EvaluationProcessor (line 27) | class EvaluationProcessor:
method __init__ (line 37) | def __init__(self, data_plane_client, control_plane_client=None):
method get_latest_session (line 47) | def get_latest_session(self, agent_id: str, region: str) -> Optional[s...
method fetch_session_data (line 88) | def fetch_session_data(
method extract_raw_spans (line 152) | def extract_raw_spans(self, trace_data: TraceData) -> List[Dict[str, A...
method filter_relevant_spans (line 175) | def filter_relevant_spans(self, raw_spans: List[Dict[str, Any]]) -> Li...
method filter_traces_up_to (line 211) | def filter_traces_up_to(self, trace_data: TraceData, target_trace_id: ...
method get_most_recent_spans (line 248) | def get_most_recent_spans(
method count_span_types (line 282) | def count_span_types(self, raw_spans: List[Dict[str, Any]]) -> tuple:
method determine_spans_for_evaluator (line 304) | def determine_spans_for_evaluator(
method execute_evaluators (line 343) | def execute_evaluators(
method evaluate_session (line 418) | def evaluate_session(
method _group_evaluators_by_level (line 515) | def _group_evaluators_by_level(self, evaluators: List[str]) -> Dict[st...
FILE: src/bedrock_agentcore_starter_toolkit/operations/evaluation/online_processor.py
function create_online_evaluation_config (line 19) | def create_online_evaluation_config(
function get_online_evaluation_config (line 90) | def get_online_evaluation_config(
function list_online_evaluation_configs (line 113) | def list_online_evaluation_configs(
function update_online_evaluation_config (line 144) | def update_online_evaluation_config(
function delete_online_evaluation_config (line 200) | def delete_online_evaluation_config(
function _delete_execution_role (line 241) | def _delete_execution_role(role_arn: str) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/operations/gateway/client.py
class GatewayClient (line 25) | class GatewayClient:
method __init__ (line 28) | def __init__(self, region_name: Optional[str] = None, endpoint_url: Op...
method create_mcp_gateway (line 57) | def create_mcp_gateway(
method create_mcp_gateway_target (line 134) | def create_mcp_gateway_target(
method fix_iam_permissions (line 206) | def fix_iam_permissions(self, gateway: dict) -> None:
method delete_gateway (line 268) | def delete_gateway(
method delete_gateway_target (line 343) | def delete_gateway_target(
method _get_gateway_id_by_name (line 407) | def _get_gateway_id_by_name(self, name: str) -> Optional[str]:
method list_gateways (line 431) | def list_gateways(
method get_gateway (line 467) | def get_gateway(
method list_gateway_targets (line 504) | def list_gateway_targets(
method get_gateway_target (line 561) | def get_gateway_target(
method cleanup_gateway (line 622) | def cleanup_gateway(self, gateway_id: str, client_info: Optional[Dict]...
method __handle_lambda_target_creation (line 699) | def __handle_lambda_target_creation(self, role_arn: str) -> Dict[str, ...
method __handle_openapi_target_credential_provider_creation (line 710) | def __handle_openapi_target_credential_provider_creation(
method __wait_for_ready (line 765) | def __wait_for_ready(resource_name, method, identifiers, max_attempts:...
method generate_random_id (line 793) | def generate_random_id():
method create_oauth_authorizer_with_cognito (line 797) | def create_oauth_authorizer_with_cognito(self, gateway_name: str) -> D...
method update_gateway (line 926) | def update_gateway(
method update_gateway_policy_engine (line 1006) | def update_gateway_policy_engine(
method get_access_token_for_cognito (line 1030) | def get_access_token_for_cognito(self, client_info: Dict[str, Any]) ->...
method _enable_observability_for_gateway (line 1093) | def _enable_observability_for_gateway(self, gateway: dict) -> None:
method enable_observability (line 1109) | def enable_observability(
method disable_observability (line 1136) | def disable_observability(
FILE: src/bedrock_agentcore_starter_toolkit/operations/gateway/create_lambda.py
function create_test_lambda (line 19) | def create_test_lambda(session: Session, logger: logging.Logger, gateway...
FILE: src/bedrock_agentcore_starter_toolkit/operations/gateway/create_role.py
function create_gateway_execution_role (line 18) | def create_gateway_execution_role(
function _attach_policy (line 70) | def _attach_policy(
function _try_create_policy (line 101) | def _try_create_policy(iam_client: BaseClient, policy_name: str, policy_...
function _get_existing_policy_arn (line 122) | def _get_existing_policy_arn(iam_client: BaseClient, policy_name: str) -...
FILE: src/bedrock_agentcore_starter_toolkit/operations/gateway/exceptions.py
class GatewayException (line 4) | class GatewayException(Exception):
class GatewaySetupException (line 10) | class GatewaySetupException(GatewayException):
FILE: src/bedrock_agentcore_starter_toolkit/operations/identity/helpers.py
function create_cognito_oauth_pool (line 15) | def create_cognito_oauth_pool(
function update_cognito_callback_urls (line 112) | def update_cognito_callback_urls(pool_id: str, client_id: str, callback_...
function get_cognito_access_token (line 146) | def get_cognito_access_token(
function get_cognito_m2m_token (line 190) | def get_cognito_m2m_token(
function _random_suffix (line 243) | def _random_suffix(length: int = 4) -> str:
function _generate_password (line 250) | def _generate_password(length: int = 16) -> str:
function ensure_identity_permissions (line 257) | def ensure_identity_permissions(role_arn: str, provider_arns: list, regi...
function setup_aws_jwt_federation (line 360) | def setup_aws_jwt_federation(region: str, logger: Optional[logging.Logge...
function get_aws_jwt_federation_info (line 424) | def get_aws_jwt_federation_info(region: str, logger: Optional[logging.Lo...
function ensure_aws_jwt_permissions (line 454) | def ensure_aws_jwt_permissions(
class IdentityCognitoManager (line 526) | class IdentityCognitoManager:
method __init__ (line 529) | def __init__(self, region_name: str):
method generate_random_id (line 542) | def generate_random_id() -> str:
method create_dual_pool_setup (line 546) | def create_dual_pool_setup(self) -> Dict[str, Any]:
method _create_runtime_pool (line 579) | def _create_runtime_pool(self) -> Dict[str, Any]:
method _create_identity_pool (line 631) | def _create_identity_pool(self) -> Dict[str, Any]:
method _wait_for_domain (line 689) | def _wait_for_domain(self, domain_prefix: str, max_attempts: int = 30)...
method _generate_password (line 708) | def _generate_password() -> str:
method cleanup_cognito_pools (line 730) | def cleanup_cognito_pools(self, runtime_pool_id: str = None, identity_...
method _delete_user_pool (line 749) | def _delete_user_pool(self, pool_id: str, pool_type: str) -> None:
method _create_identity_pool_m2m (line 782) | def _create_identity_pool_m2m(self) -> Dict[str, Any]:
method create_user_federation_pools (line 835) | def create_user_federation_pools(self) -> Dict[str, Any]:
method create_m2m_pools (line 851) | def create_m2m_pools(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/identity/oauth2_callback_server.py
function start_oauth2_callback_server (line 20) | def start_oauth2_callback_server(config_path: Path, agent_name: str, deb...
class BedrockAgentCoreIdentity3loCallback (line 26) | class BedrockAgentCoreIdentity3loCallback(Starlette):
method __init__ (line 29) | def __init__(self, config_path: Path, agent_name: str, debug: bool = F...
method run (line 38) | def run(self, **kwargs):
method _handle_3lo_callback (line 50) | def _handle_3lo_callback(self, request: Request) -> JSONResponse:
method get_oauth2_callback_endpoint (line 84) | def get_oauth2_callback_endpoint(cls) -> str:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/constants.py
class StrategyType (line 7) | class StrategyType(Enum):
method extraction_wrapper_key (line 15) | def extraction_wrapper_key(self) -> Optional[str]:
method consolidation_wrapper_key (line 23) | def consolidation_wrapper_key(self) -> Optional[str]:
method get_memory_strategy (line 30) | def get_memory_strategy(self) -> str:
method get_override_type (line 40) | def get_override_type(self) -> Optional[str]:
class OverrideType (line 49) | class OverrideType(Enum):
method extraction_wrapper_key (line 56) | def extraction_wrapper_key(self) -> Optional[str]:
method consolidation_wrapper_key (line 64) | def consolidation_wrapper_key(self) -> Optional[str]:
class MemoryStatus (line 74) | class MemoryStatus(Enum):
class MemoryStrategyStatus (line 84) | class MemoryStrategyStatus(Enum):
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/manager.py
class MemoryManager (line 26) | class MemoryManager:
method __init__ (line 33) | def __init__(
method __getattr__ (line 96) | def __getattr__(self, name: str):
method _validate_namespace (line 132) | def _validate_namespace(self, namespace: str) -> bool:
method _validate_strategy_config (line 142) | def _validate_strategy_config(self, strategy: Dict[str, Any], strategy...
method _wrap_configuration (line 150) | def _wrap_configuration(
method _create_memory (line 199) | def _create_memory(
method _create_memory_and_wait (line 245) | def _create_memory_and_wait(
method create_memory_and_wait (line 304) | def create_memory_and_wait(
method get_or_create_memory (line 364) | def get_or_create_memory(
method get_memory (line 435) | def get_memory(self, memory_id: str) -> Memory:
method get_memory_status (line 449) | def get_memory_status(self, memory_id: str) -> str:
method get_memory_strategies (line 458) | def get_memory_strategies(self, memory_id: str) -> List[MemoryStrategy]:
method list_memories (line 471) | def list_memories(self, max_results: int = 100) -> list[MemorySummary]:
method delete_memory (line 508) | def delete_memory(self, memory_id: str) -> Dict[str, Any]:
method delete_memory_and_wait (line 521) | def delete_memory_and_wait(self, memory_id: str, max_wait: int = 300, ...
method _paginated_list (line 565) | def _paginated_list(
method _paginated_list_page (line 613) | def _paginated_list_page(
method list_actors (line 641) | def list_actors(
method list_sessions (line 674) | def list_sessions(
method list_events (line 709) | def list_events(
method get_event (line 746) | def get_event(self, memory_id: str, event_id: str) -> Dict[str, Any]:
method list_records (line 770) | def list_records(
method get_record (line 805) | def get_record(self, memory_id: str, record_id: str) -> Dict[str, Any]:
method search_records (line 829) | def search_records(
method add_semantic_strategy (line 869) | def add_semantic_strategy(
method add_semantic_strategy_and_wait (line 893) | def add_semantic_strategy_and_wait(
method add_summary_strategy (line 913) | def add_summary_strategy(
method add_summary_strategy_and_wait (line 937) | def add_summary_strategy_and_wait(
method add_user_preference_strategy (line 950) | def add_user_preference_strategy(
method add_user_preference_strategy_and_wait (line 974) | def add_user_preference_strategy_and_wait(
method add_custom_semantic_strategy (line 987) | def add_custom_semantic_strategy(
method add_custom_semantic_strategy_and_wait (line 1033) | def add_custom_semantic_strategy_and_wait(
method modify_strategy (line 1050) | def modify_strategy(
method delete_strategy (line 1070) | def delete_strategy(self, memory_id: str, strategy_id: str) -> Memory:
method update_memory_strategies (line 1074) | def update_memory_strategies(
method update_memory_strategies_and_wait (line 1161) | def update_memory_strategies_and_wait(
method add_strategy (line 1202) | def add_strategy(self, memory_id: str, strategy: Union[BaseStrategy, D...
method add_strategy_and_wait (line 1228) | def add_strategy_and_wait(
method _check_strategies_terminal_state (line 1273) | def _check_strategies_terminal_state(self, strategies: List[Dict[str, ...
method _wait_for_memory_active (line 1299) | def _wait_for_memory_active(self, memory_id: str, max_wait: int, poll_...
method _validate_namespace (line 1368) | def _validate_namespace(self, namespace: str) -> bool:
method _validate_strategy_config (line 1378) | def _validate_strategy_config(self, strategy: Dict[str, Any], strategy...
method _enable_observability_for_memory (line 1386) | def _enable_observability_for_memory(self, memory: Memory) -> None:
method enable_observability (line 1394) | def enable_observability(
method disable_observability (line 1418) | def disable_observability(
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/memory_formatters.py
function get_memory_status_icon (line 10) | def get_memory_status_icon(status: str) -> str:
function get_memory_status_style (line 21) | def get_memory_status_style(status: str) -> str:
function get_strategy_type_icon (line 32) | def get_strategy_type_icon(strategy_type: str) -> str:
function get_strategy_status_style (line 37) | def get_strategy_status_style(status: str) -> str:
function format_namespaces (line 42) | def format_namespaces(namespaces: list) -> str:
function format_memory_age (line 49) | def format_memory_age(created_at: Any) -> str:
class DisplayConfig (line 80) | class DisplayConfig:
function extract_record_text (line 94) | def extract_record_text(record: Dict[str, Any]) -> str:
function extract_event_text (line 109) | def extract_event_text(event: Dict[str, Any]) -> Optional[str]:
function extract_event_role (line 142) | def extract_event_role(event: Dict[str, Any]) -> Optional[str]:
function extract_event_type (line 159) | def extract_event_type(event: Dict[str, Any]) -> Optional[str]:
function truncate_text (line 181) | def truncate_text(text: str, max_len: int = 80, verbose: bool = False) -...
function format_content_preview (line 197) | def format_content_preview(text: str, verbose: bool = False) -> str:
function render_content_panel (line 212) | def render_content_panel(text: str, verbose: bool = False) -> Union[Pane...
function format_payload_snippet (line 227) | def format_payload_snippet(event: Dict[str, Any], max_len: int = 60) -> ...
function format_truncation_hint (line 248) | def format_truncation_hint(shown: int, total: int) -> str:
function format_role_icon (line 264) | def format_role_icon(role: Optional[str]) -> str:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/memory_visualizer.py
class MemoryVisualizer (line 38) | class MemoryVisualizer:
method __init__ (line 41) | def __init__(self, console: Optional[Console] = None):
method build_memory_tree (line 47) | def build_memory_tree(
method build_actors_table (line 70) | def build_actors_table(self, actors: List[Dict[str, Any]], memory_id: ...
method build_sessions_table (line 88) | def build_sessions_table(self, sessions: List[Dict[str, Any]], actor_i...
method build_events_table (line 106) | def build_events_table(self, events: List[Dict[str, Any]], session_id:...
method build_event_detail (line 131) | def build_event_detail(self, event: Dict[str, Any], verbose: bool = Fa...
method build_namespaces_table (line 175) | def build_namespaces_table(self, strategies: List[Dict[str, Any]], mem...
method build_records_table (line 200) | def build_records_table(self, records: List[Dict[str, Any]], namespace...
method build_record_detail (line 225) | def build_record_detail(
method visualize_memory (line 253) | def visualize_memory(
method _extract_memory_data (line 260) | def _extract_memory_data(self, memory: Any) -> Dict[str, Any]:
method _format_memory_header (line 266) | def _format_memory_header(self, memory_id: str, name: str, status: str...
method _add_memory_info (line 277) | def _add_memory_info(self, tree: Tree, data: Dict[str, Any], verbose: ...
method _add_memory_strategies (line 302) | def _add_memory_strategies(self, tree: Tree, data: Dict[str, Any], ver...
method _add_strategy_node (line 314) | def _add_strategy_node(self, parent: Tree, strategy: Dict[str, Any], v...
method _format_strategy_header (line 340) | def _format_strategy_header(self, name: str, strategy_type: str, statu...
method _add_config_tree (line 354) | def _add_config_tree(self, parent: Tree, config: Dict[str, Any]) -> None:
method display_memory_list (line 366) | def display_memory_list(self, memories: List[Dict[str, Any]], manager:...
method _format_memory_row (line 386) | def _format_memory_row(self, memory: Any, manager: Any) -> tuple:
method display_events_tree (line 419) | def display_events_tree(
method _get_actors (line 453) | def _get_actors(self, manager: Any, memory_id: str, actor_id: Optional...
method _build_actor_subtree (line 460) | def _build_actor_subtree(
method _get_sessions (line 493) | def _get_sessions(
method _build_session_subtree (line 502) | def _build_session_subtree(
method _group_events_by_branch (line 536) | def _group_events_by_branch(self, events: List[Dict[str, Any]]) -> Dic...
method _add_event_node (line 546) | def _add_event_node(self, branch_tree: Tree, event: Dict[str, Any], ve...
method display_single_event (line 569) | def display_single_event(self, event: Dict[str, Any], nth: int, total:...
method display_single_record (line 591) | def display_single_record(self, record: Dict[str, Any], nth: int, tota...
method _format_position_label (line 604) | def _format_position_label(self, nth: int, total: int) -> str:
method _print_content_panel (line 608) | def _print_content_panel(self, text: str, verbose: bool) -> None:
method display_namespace_records (line 618) | def display_namespace_records(
method display_records_tree (line 642) | def display_records_tree(
method _add_strategy_records (line 662) | def _add_strategy_records(
method _add_records_to_tree (line 692) | def _add_records_to_tree(
method _resolve_namespace (line 717) | def _resolve_namespace(self, manager: Any, memory_id: str, ns_template...
method display_search_results (line 741) | def display_search_results(self, records: List[Dict[str, Any]], query:...
method _output_or_print (line 760) | def _output_or_print(self, tree: Tree, data: Dict[str, Any], output: O...
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/DictWrapper.py
class DictWrapper (line 6) | class DictWrapper:
method __init__ (line 9) | def __init__(self, data: Dict[str, Any]):
method __getattr__ (line 17) | def __getattr__(self, name: str) -> Any:
method __getitem__ (line 21) | def __getitem__(self, key: str) -> Any:
method get (line 25) | def get(self, key: str, default: Any = None) -> Any:
method __contains__ (line 29) | def __contains__(self, key: str) -> bool:
method keys (line 33) | def keys(self):
method values (line 37) | def values(self):
method items (line 41) | def items(self):
method __dir__ (line 45) | def __dir__(self):
method __repr__ (line 49) | def __repr__(self):
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/Memory.py
class Memory (line 8) | class Memory(DictWrapper):
method __init__ (line 11) | def __init__(self, memory: Dict[str, Any]):
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/MemoryStrategy.py
class MemoryStrategy (line 8) | class MemoryStrategy(DictWrapper):
method __init__ (line 11) | def __init__(self, memory_strategy: Dict[str, Any]):
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/MemorySummary.py
class MemorySummary (line 8) | class MemorySummary(DictWrapper):
method __init__ (line 11) | def __init__(self, memory_summary: Dict[str, Any]):
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/__init__.py
function convert_strategies_to_dicts (line 56) | def convert_strategies_to_dicts(strategies: List[StrategyType]) -> List[...
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/strategies/base.py
class ExtractionConfig (line 16) | class ExtractionConfig(BaseModel):
class ConsolidationConfig (line 30) | class ConsolidationConfig(BaseModel):
class BaseStrategy (line 44) | class BaseStrategy(BaseModel, ABC):
method to_dict (line 58) | def to_dict(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/strategies/custom.py
class CustomSemanticStrategy (line 10) | class CustomSemanticStrategy(BaseStrategy):
method to_dict (line 39) | def to_dict(self) -> Dict[str, Any]:
method _convert_extraction_config (line 59) | def _convert_extraction_config(self) -> Dict[str, Any]:
method _convert_consolidation_config (line 68) | def _convert_consolidation_config(self) -> Dict[str, Any]:
class CustomSummaryStrategy (line 78) | class CustomSummaryStrategy(BaseStrategy):
method to_dict (line 100) | def to_dict(self) -> Dict[str, Any]:
method _convert_consolidation_config (line 119) | def _convert_consolidation_config(self) -> Dict[str, Any]:
class CustomUserPreferenceStrategy (line 129) | class CustomUserPreferenceStrategy(BaseStrategy):
method to_dict (line 158) | def to_dict(self) -> Dict[str, Any]:
method _convert_extraction_config (line 178) | def _convert_extraction_config(self) -> Dict[str, Any]:
method _convert_consolidation_config (line 187) | def _convert_consolidation_config(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/strategies/self_managed.py
class MessageBasedTrigger (line 10) | class MessageBasedTrigger(BaseModel):
class TokenBasedTrigger (line 16) | class TokenBasedTrigger(BaseModel):
class TimeBasedTrigger (line 22) | class TimeBasedTrigger(BaseModel):
class InvocationConfig (line 30) | class InvocationConfig(BaseModel):
class SelfManagedStrategy (line 37) | class SelfManagedStrategy(BaseStrategy):
method to_dict (line 72) | def to_dict(self) -> Dict[str, Any]:
method _convert_trigger_conditions (line 90) | def _convert_trigger_conditions(self) -> List[Dict[str, Any]]:
method _convert_invocation_config (line 102) | def _convert_invocation_config(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/strategies/semantic.py
class SemanticStrategy (line 8) | class SemanticStrategy(BaseStrategy):
method to_dict (line 23) | def to_dict(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/strategies/summary.py
class SummaryStrategy (line 8) | class SummaryStrategy(BaseStrategy):
method to_dict (line 23) | def to_dict(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/models/strategies/user_preference.py
class UserPreferenceStrategy (line 8) | class UserPreferenceStrategy(BaseStrategy):
method to_dict (line 22) | def to_dict(self) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/memory/strategy_validator.py
class UniversalComparator (line 14) | class UniversalComparator:
method _camel_to_snake (line 18) | def _camel_to_snake(name: str) -> str:
method normalize_field_names (line 25) | def normalize_field_names(data: Any) -> Any:
method deep_compare (line 39) | def deep_compare(dict1: Dict[str, Any], dict2: Dict[str, Any], path: s...
method _deep_compare_normalized (line 48) | def _deep_compare_normalized(obj1: Any, obj2: Any, path: str = "") -> ...
class StrategyComparator (line 126) | class StrategyComparator:
method normalize_strategy (line 130) | def normalize_strategy(strategy: Union[Dict[str, Any], Dict[str, Dict[...
method _normalize_memory_strategy (line 147) | def _normalize_memory_strategy(strategy: Dict[str, Any]) -> Dict[str, ...
method _transform_memory_configuration (line 172) | def _transform_memory_configuration(config: Dict[str, Any], strategy_t...
method _normalize_request_strategy (line 269) | def _normalize_request_strategy(strategy_dict: Dict[str, Any]) -> Dict...
method compare_strategies (line 323) | def compare_strategies(
function validate_existing_memory_strategies (line 379) | def validate_existing_memory_strategies(
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/builders.py
class CloudWatchResultBuilder (line 9) | class CloudWatchResultBuilder:
method build_span (line 13) | def build_span(result: Any) -> Span:
method build_runtime_log (line 83) | def build_runtime_log(result: Any) -> RuntimeLog:
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/client.py
class ObservabilityClient (line 14) | class ObservabilityClient:
method __init__ (line 25) | def __init__(self, region_name: str):
method query_spans_by_session (line 44) | def query_spans_by_session(
method query_spans_by_trace (line 79) | def query_spans_by_trace(
method query_runtime_logs_by_traces (line 114) | def query_runtime_logs_by_traces(
method _query_runtime_logs_individually (line 166) | def _query_runtime_logs_individually(
method get_latest_session_id (line 212) | def get_latest_session_id(
method _execute_cloudwatch_query (line 257) | def _execute_cloudwatch_query(
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/delivery.py
class ObservabilityDeliveryManager (line 30) | class ObservabilityDeliveryManager:
method __init__ (line 66) | def __init__(
method account_id (line 97) | def account_id(self) -> str:
method enable_observability_for_resource (line 101) | def enable_observability_for_resource(
method enable_traces_for_runtime (line 241) | def enable_traces_for_runtime(
method _create_log_group_if_not_exists (line 267) | def _create_log_group_if_not_exists(self, log_group_name: str) -> None:
method _setup_logs_delivery (line 282) | def _setup_logs_delivery(
method _setup_traces_delivery (line 359) | def _setup_traces_delivery(
method disable_observability_for_resource (line 426) | def disable_observability_for_resource(
method get_observability_status (line 493) | def get_observability_status(
method enable_for_memory (line 531) | def enable_for_memory(
method enable_for_gateway (line 553) | def enable_for_gateway(
method disable_for_memory (line 575) | def disable_for_memory(
method disable_for_gateway (line 586) | def disable_for_gateway(
function enable_observability_for_resource (line 599) | def enable_observability_for_resource(
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/formatters.py
function format_age (line 15) | def format_age(age_seconds: float) -> str:
function format_duration_seconds (line 42) | def format_duration_seconds(duration_ms: float) -> str:
function calculate_age_seconds (line 60) | def calculate_age_seconds(timestamp_nano: int, now_nano: int) -> float:
function format_timestamp_relative (line 77) | def format_timestamp_relative(timestamp_nano: int, now_nano: int) -> str:
function get_duration_style (line 95) | def get_duration_style(duration_ms: float) -> str:
function format_duration_ms (line 130) | def format_duration_ms(duration_ms: float, include_unit: bool = True) ->...
function get_status_icon (line 152) | def get_status_icon(status_code: str) -> str:
function get_status_style (line 177) | def get_status_style(status_code: str) -> str:
function format_status_display (line 202) | def format_status_display(has_errors: bool) -> tuple[str, str]:
function get_span_attribute (line 226) | def get_span_attribute(attributes: Dict[str, Any], *attr_names: str) -> ...
function extract_prompt (line 252) | def extract_prompt(attributes: Dict[str, Any]) -> Optional[str]:
function extract_completion (line 277) | def extract_completion(attributes: Dict[str, Any]) -> Optional[str]:
function extract_invocation_payload (line 302) | def extract_invocation_payload(attributes: Dict[str, Any]) -> Optional[s...
function extract_input_data (line 327) | def extract_input_data(attributes: Dict[str, Any]) -> Optional[str]:
function extract_output_data (line 351) | def extract_output_data(attributes: Dict[str, Any]) -> Optional[str]:
function truncate_for_display (line 375) | def truncate_for_display(text: str, verbose: bool = False, is_tool_use: ...
function has_llm_attributes (line 401) | def has_llm_attributes(attributes: Dict[str, Any]) -> bool:
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/message_parser.py
class UnifiedLogParser (line 17) | class UnifiedLogParser:
method parse (line 20) | def parse(self, raw_message: Optional[Dict[str, Any]], timestamp: str)...
method _extract_exception (line 45) | def _extract_exception(self, raw_message: Dict[str, Any], timestamp: s...
method _extract_messages (line 67) | def _extract_messages(self, raw_message: Dict[str, Any], timestamp: st...
method _get_role_from_event_name (line 93) | def _get_role_from_event_name(self, event_name: str) -> Optional[str]:
method _extract_content (line 112) | def _extract_content(self, body: Dict[str, Any]) -> Optional[str]:
method _extract_generic_otel (line 141) | def _extract_generic_otel(
method _extract_from_strands (line 167) | def _extract_from_strands(self, body: Dict[str, Any], timestamp: str) ...
method _extract_from_input_output (line 171) | def _extract_from_input_output(self, body: Dict[str, Any], timestamp: ...
method _extract_from_langchain (line 207) | def _extract_from_langchain(self, body: Dict[str, Any], timestamp: str...
method _parse_langchain_input (line 223) | def _parse_langchain_input(self, body: Dict[str, Any]) -> Optional[str]:
method _parse_langchain_output (line 240) | def _parse_langchain_output(self, body: Dict[str, Any]) -> Optional[str]:
method _format_langchain_content (line 273) | def _format_langchain_content(self, content: Any, tool_calls: list) ->...
method _extract_text_from_array (line 294) | def _extract_text_from_array(self, content: list) -> Optional[str]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/query_builder.py
class CloudWatchQueryBuilder (line 4) | class CloudWatchQueryBuilder:
method build_spans_by_session_query (line 8) | def build_spans_by_session_query(session_id: str, agent_id: str) -> str:
method build_spans_by_trace_query (line 41) | def build_spans_by_trace_query(trace_id: str) -> str:
method build_runtime_logs_by_trace_direct (line 69) | def build_runtime_logs_by_trace_direct(trace_id: str) -> str:
method build_runtime_logs_by_traces_batch (line 83) | def build_runtime_logs_by_traces_batch(trace_ids: list[str]) -> str:
method build_latest_session_query (line 103) | def build_latest_session_query(agent_id: str, limit: int = 1) -> str:
method build_session_summary_query (line 125) | def build_session_summary_query(session_id: str, agent_id: str | None ...
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/telemetry.py
class Span (line 11) | class Span:
class RuntimeLog (line 37) | class RuntimeLog:
class TraceData (line 49) | class TraceData:
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/trace_processor.py
class TraceProcessor (line 12) | class TraceProcessor:
method group_spans_by_trace (line 16) | def group_spans_by_trace(trace_data: TraceData) -> None:
method build_span_hierarchy (line 32) | def build_span_hierarchy(trace_data: TraceData, trace_id: str) -> List...
method get_messages_by_span (line 69) | def get_messages_by_span(trace_data: TraceData) -> Dict[str, List[Dict...
method calculate_trace_duration (line 94) | def calculate_trace_duration(spans: List[Span]) -> float:
method count_error_spans (line 115) | def count_error_spans(spans: List[Span]) -> int:
method get_trace_ids (line 127) | def get_trace_ids(trace_data: TraceData) -> List[str]:
method filter_error_traces (line 139) | def filter_error_traces(trace_data: TraceData) -> Dict[str, List[Span]]:
method get_trace_messages (line 155) | def get_trace_messages(trace_data: TraceData, trace_id: str) -> tuple[...
method to_dict (line 204) | def to_dict(trace_data: TraceData) -> Dict[str, Any]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/observability/trace_visualizer.py
class TraceVisualizer (line 26) | class TraceVisualizer:
method __init__ (line 29) | def __init__(self, console: Optional[Console] = None):
method visualize_trace (line 37) | def visualize_trace(
method visualize_all_traces (line 89) | def visualize_all_traces(
method _format_trace_header (line 116) | def _format_trace_header(self, trace_id: str, spans: List[Span]) -> Text:
method _has_meaningful_data (line 142) | def _has_meaningful_data(
method _add_span_to_tree (line 208) | def _add_span_to_tree(
method _format_span (line 249) | def _format_span(
method _get_message_id (line 412) | def _get_message_id(self, item: Dict[str, Any]) -> str:
method _is_generic_wrapper_event (line 441) | def _is_generic_wrapper_event(self, event_name: str, payload: Dict[str...
method _format_event_payload_display (line 471) | def _format_event_payload_display(self, text: Text, payload: Dict[str,...
FILE: src/bedrock_agentcore_starter_toolkit/operations/policy/client.py
class PolicyClient (line 24) | class PolicyClient:
method __init__ (line 31) | def __init__(self, region_name: Optional[str] = None):
method create_policy_engine (line 54) | def create_policy_engine(
method create_or_get_policy_engine (line 94) | def create_or_get_policy_engine(
method get_policy_engine (line 202) | def get_policy_engine(self, policy_engine_id: str) -> Dict[str, Any]:
method update_policy_engine (line 219) | def update_policy_engine(
method list_policy_engines (line 249) | def list_policy_engines(
method delete_policy_engine (line 275) | def delete_policy_engine(self, policy_engine_id: str) -> Dict[str, Any]:
method create_policy (line 297) | def create_policy(
method create_or_get_policy (line 343) | def create_or_get_policy(
method get_policy (line 454) | def get_policy(self, policy_engine_id: str, policy_id: str) -> Dict[st...
method update_policy (line 475) | def update_policy(
method list_policies (line 517) | def list_policies(
method delete_policy (line 552) | def delete_policy(self, policy_engine_id: str, policy_id: str) -> Dict...
method create_policy_from_generation_asset (line 576) | def create_policy_from_generation_asset(
method start_policy_generation (line 618) | def start_policy_generation(
method get_policy_generation (line 659) | def get_policy_generation(
method list_policy_generation_assets (line 684) | def list_policy_generation_assets(
method list_policy_generations (line 720) | def list_policy_generations(
method generate_policy (line 751) | def generate_policy(
method _wait_for_policy_engine_active (line 843) | def _wait_for_policy_engine_active(
method _wait_for_policy_active (line 877) | def _wait_for_policy_active(
method _wait_for_policy_deleted (line 913) | def _wait_for_policy_deleted(
method cleanup_policy_engine (line 948) | def cleanup_policy_engine(self, policy_engine_id: str) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/operations/policy/constants.py
class PolicyEngineStatus (line 14) | class PolicyEngineStatus(Enum):
class PolicyStatus (line 26) | class PolicyStatus(Enum):
class PolicyGenerationStatus (line 38) | class PolicyGenerationStatus(Enum):
class ValidationMode (line 47) | class ValidationMode(Enum):
class FindingType (line 54) | class FindingType(Enum):
FILE: src/bedrock_agentcore_starter_toolkit/operations/policy/exceptions.py
class PolicyException (line 4) | class PolicyException(Exception):
class PolicySetupException (line 10) | class PolicySetupException(PolicyException):
class PolicyEngineNotFoundException (line 16) | class PolicyEngineNotFoundException(PolicyException):
class PolicyNotFoundException (line 22) | class PolicyNotFoundException(PolicyException):
class PolicyGenerationNotFoundException (line 28) | class PolicyGenerationNotFoundException(PolicyException):
class PolicyValidationException (line 34) | class PolicyValidationException(PolicyException):
class PolicyGenerationException (line 40) | class PolicyGenerationException(PolicyException):
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/configure.py
function get_relative_path (line 34) | def get_relative_path(path: Path, base: Optional[Path] = None) -> str:
function detect_entrypoint (line 64) | def detect_entrypoint(source_path: Path) -> List[Path]:
function detect_requirements (line 90) | def detect_requirements(source_path: Path):
function infer_agent_name (line 112) | def infer_agent_name(entrypoint_path: Path, base: Optional[Path] = None)...
function configure_bedrock_agentcore (line 137) | def configure_bedrock_agentcore(
function validate_agent_name (line 634) | def validate_agent_name(name: str) -> Tuple[bool, str]:
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/create_role.py
function _extract_ecr_repository_name (line 19) | def _extract_ecr_repository_name(ecr_uri: Optional[str]) -> Optional[str]:
function _generate_deterministic_suffix (line 40) | def _generate_deterministic_suffix(agent_name: str, length: int = 10) ->...
function get_or_create_runtime_execution_role (line 58) | def get_or_create_runtime_execution_role(
function _create_iam_role_with_policies (line 200) | def _create_iam_role_with_policies(
function _attach_inline_policy (line 291) | def _attach_inline_policy(
function get_or_create_codebuild_execution_role (line 330) | def get_or_create_codebuild_execution_role(
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/destroy.py
function destroy_bedrock_agentcore (line 20) | def destroy_bedrock_agentcore(
function _destroy_agentcore_endpoint (line 132) | def _destroy_agentcore_endpoint(
function _destroy_api_key_credential_provider (line 198) | def _destroy_api_key_credential_provider(
function _destroy_agentcore_agent (line 246) | def _destroy_agentcore_agent(
function _destroy_ecr_images (line 287) | def _destroy_ecr_images(
function _delete_ecr_repository (line 409) | def _delete_ecr_repository(ecr_client, repo_name: str, result: DestroyRe...
function _destroy_codebuild_project (line 439) | def _destroy_codebuild_project(
function _destroy_s3_artifacts (line 472) | def _destroy_s3_artifacts(
function _destroy_memory (line 522) | def _destroy_memory(
function _destroy_codebuild_iam_role (line 558) | def _destroy_codebuild_iam_role(
function _destroy_iam_role (line 602) | def _destroy_iam_role(
function _cleanup_agent_config (line 671) | def _cleanup_agent_config(
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/exceptions.py
class RuntimeException (line 6) | class RuntimeException(Exception):
class RuntimeToolkitException (line 12) | class RuntimeToolkitException(RuntimeException):
method __init__ (line 15) | def __init__(self, message: str, created_resources: Optional[List[str]...
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/invoke.py
function invoke_bedrock_agentcore (line 25) | def invoke_bedrock_agentcore(
function _update_workload_identity_with_oauth2_callback_url (line 129) | def _update_workload_identity_with_oauth2_callback_url(
function _get_workload_name (line 147) | def _get_workload_name(
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/launch.py
function _validate_vpc_resources (line 36) | def _validate_vpc_resources(session: boto3.Session, agent_config, region...
function _ensure_network_service_linked_role (line 110) | def _ensure_network_service_linked_role(session: boto3.Session, logger) ...
function _resolve_ecr_repo_name_to_uri (line 147) | def _resolve_ecr_repo_name_to_uri(repo_name: str, region: str) -> str:
function _ensure_ecr_repository (line 176) | def _ensure_ecr_repository(agent_config, project_config, config_path, ag...
function _ensure_identity_permissions (line 216) | def _ensure_identity_permissions(
function _ensure_aws_jwt_permissions (line 262) | def _ensure_aws_jwt_permissions(
function _validate_execution_role (line 309) | def _validate_execution_role(role_arn: str, session: boto3.Session) -> b...
function _ensure_execution_role (line 343) | def _ensure_execution_role(agent_config, project_config, config_path, ag...
function _ensure_memory_for_agent (line 386) | def _ensure_memory_for_agent(
function _deploy_to_bedrock_agentcore (line 555) | def _deploy_to_bedrock_agentcore(
function _check_vpc_deployment (line 698) | def _check_vpc_deployment(session: boto3.Session, agent_id: str, vpc_sub...
function _launch_direct_code_deploy_local (line 729) | def _launch_direct_code_deploy_local(
function launch_bedrock_agentcore (line 785) | def launch_bedrock_agentcore(
function _execute_codebuild_workflow (line 1040) | def _execute_codebuild_workflow(
function _launch_with_codebuild (line 1169) | def _launch_with_codebuild(
function _launch_with_direct_code_deploy (line 1222) | def _launch_with_direct_code_deploy(
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/models.py
class ConfigureResult (line 12) | class ConfigureResult(BaseModel):
class LaunchResult (line 35) | class LaunchResult(BaseModel):
class InvokeResult (line 64) | class InvokeResult(BaseModel):
class StatusConfigInfo (line 73) | class StatusConfigInfo(BaseModel):
class StatusResult (line 98) | class StatusResult(BaseModel):
class DestroyResult (line 106) | class DestroyResult(BaseModel):
class StopSessionResult (line 116) | class StopSessionResult(BaseModel):
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/status.py
function get_status (line 12) | def get_status(config_path: Path, agent_name: Optional[str] = None) -> S...
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/stop_session.py
function stop_runtime_session (line 17) | def stop_runtime_session(
function _clear_session_from_config (line 114) | def _clear_session_from_config(
FILE: src/bedrock_agentcore_starter_toolkit/operations/runtime/vpc_validation.py
function validate_vpc_configuration (line 12) | def validate_vpc_configuration(
function _validate_subnets (line 47) | def _validate_subnets(ec2_client, subnets: List[str], warnings: List[str...
function _validate_security_groups (line 85) | def _validate_security_groups(
function check_network_immutability (line 125) | def check_network_immutability(
function verify_subnet_azs (line 168) | def verify_subnet_azs(ec2_client, subnets: List[str], region: str) -> Li...
FILE: src/bedrock_agentcore_starter_toolkit/services/codebuild.py
class CodeBuildService (line 20) | class CodeBuildService:
method __init__ (line 23) | def __init__(self, session: boto3.Session):
method get_source_bucket_name (line 33) | def get_source_bucket_name(self, account_id: str) -> str:
method ensure_source_bucket (line 38) | def ensure_source_bucket(self, account_id: str) -> str:
method upload_source (line 75) | def upload_source(self, agent_name: str, source_dir: str = ".", docker...
method _normalize_s3_location (line 143) | def _normalize_s3_location(self, source_location: str) -> str:
method create_codebuild_execution_role (line 147) | def create_codebuild_execution_role(self, account_id: str, ecr_reposit...
method create_or_update_project (line 159) | def create_or_update_project(
method start_build (line 210) | def start_build(self, project_name: str, source_location: str) -> str:
method wait_for_completion (line 222) | def wait_for_completion(self, build_id: str, timeout: int = 900):
method _get_arm64_buildspec (line 274) | def _get_arm64_buildspec(self, ecr_repository_uri: str, image_tag: str...
method _parse_dockerignore (line 310) | def _parse_dockerignore(self) -> List[str]:
method _should_ignore (line 348) | def _should_ignore(self, path: str, patterns: List[str], is_dir: bool ...
method _matches_pattern (line 368) | def _matches_pattern(self, path: str, pattern: str, is_dir: bool) -> b...
FILE: src/bedrock_agentcore_starter_toolkit/services/ecr.py
function sanitize_ecr_repo_name (line 13) | def sanitize_ecr_repo_name(name: str) -> str:
function get_account_id (line 54) | def get_account_id() -> str:
function get_region (line 59) | def get_region() -> str:
function generate_image_tag (line 64) | def generate_image_tag() -> str:
function create_ecr_repository (line 69) | def create_ecr_repository(repo_name: str, region: str) -> str:
function get_or_create_ecr_repository (line 80) | def get_or_create_ecr_repository(agent_name: str, region: str) -> str:
function deploy_to_ecr (line 109) | def deploy_to_ecr(
FILE: src/bedrock_agentcore_starter_toolkit/services/import_agent/assets/memory_manager_template.py
class LongTermMemoryManager (line 16) | class LongTermMemoryManager:
method __init__ (line 22) | def __init__(
method _cleanup_reference (line 48) | def _cleanup_reference(ref):
method _load_session_summaries (line 52) | def _load_session_summaries(self) -> List[Dict[str, Any]]:
method _save_session_summaries (line 60) | def _save_session_summaries(self):
method add_message (line 67) | def add_message(self, message: Dict[str, str]):
method _generate_session_summary (line 71) | def _generate_session_summary(self) -> str:
method _cleanup_instance (line 115) | def _cleanup_instance(cls):
method get_active_instances_count (line 120) | def get_active_instances_count(cls):
method get_active_instances (line 127) | def get_active_instances(cls):
method end_all_sessions (line 134) | def end_all_sessions(cls):
method end_session (line 143) | def end_session(self):
method get_memory_synopsis (line 188) | def get_memory_synopsis(self) -> str:
method has_memory_changed (line 192) | def has_memory_changed(self) -> bool:
method clear_current_session (line 205) | def clear_current_session(self):
FILE: src/bedrock_agentcore_starter_toolkit/services/import_agent/scripts/base_bedrock_translate.py
class BaseBedrockTranslator (line 35) | class BaseBedrockTranslator:
method __init__ (line 38) | def __init__(self, agent_config, debug: bool, output_dir: str, enabled...
method _clean_fixtures_and_prompt (line 167) | def _clean_fixtures_and_prompt(self, base_template, fixtures) -> Tuple...
method generate_prompt (line 210) | def generate_prompt(self, config: Dict):
method generate_memory_configuration (line 287) | def generate_memory_configuration(self, memory_saver: str) -> str:
method generate_action_groups_code (line 349) | def generate_action_groups_code(self, platform: str) -> str:
method generate_openapi_ag_code (line 468) | def generate_openapi_ag_code(self, ag: Dict, platform: str) -> Tuple[l...
method generate_structured_ag_code (line 640) | def generate_structured_ag_code(self, ag: Dict, platform: str) -> Tupl...
method generate_example_usage (line 774) | def generate_example_usage(self) -> str:
method generate_code_interpreter (line 829) | def generate_code_interpreter(self, platform: str):
method _get_url_regex_pattern (line 1035) | def _get_url_regex_pattern(self) -> str:
method generate_entrypoint_code (line 1039) | def generate_entrypoint_code(self, platform: str) -> str:
method translate (line 1104) | def translate(self, output_path: str, code_sections: list, platform: s...
method create_gateway (line 1151) | def create_gateway(self):
method create_gateway_proxy_and_targets (line 1166) | def create_gateway_proxy_and_targets(self):
method _update_gateway_role_with_lambda_permission (line 1475) | def _update_gateway_role_with_lambda_permission(self, function_name):
method create_lambda (line 1528) | def create_lambda(self, code, function_name):
method create_gateway_lambda_target (line 1659) | def create_gateway_lambda_target(self, tools, lambda_arn, target_name):
FILE: src/bedrock_agentcore_starter_toolkit/services/import_agent/scripts/bedrock_to_langchain.py
class BedrockLangchainTranslation (line 14) | class BedrockLangchainTranslation(BaseBedrockTranslator):
method __init__ (line 17) | def __init__(self, agent_config, debug: bool, output_dir: str, enabled...
method generate_imports (line 54) | def generate_imports(self) -> str:
method generate_model_configurations (line 71) | def generate_model_configurations(self) -> str:
method generate_knowledge_base_code (line 110) | def generate_knowledge_base_code(self) -> str:
method generate_collaboration_code (line 136) | def generate_collaboration_code(self) -> str:
method generate_agent_setup (line 182) | def generate_agent_setup(self) -> str:
method generate_routing_code (line 336) | def generate_routing_code(self):
method translate_bedrock_to_langchain (line 380) | def translate_bedrock_to_langchain(self, output_path: str) -> dict:
FILE: src/bedrock_agentcore_starter_toolkit/services/import_agent/scripts/bedrock_to_strands.py
class BedrockStrandsTranslation (line 14) | class BedrockStrandsTranslation(BaseBedrockTranslator):
method __init__ (line 17) | def __init__(self, agent_config, debug: bool, output_dir: str, enabled...
method generate_imports (line 46) | def generate_imports(self) -> str:
method generate_model_configurations (line 57) | def generate_model_configurations(self) -> str:
method generate_knowledge_base_code (line 94) | def generate_knowledge_base_code(self) -> str:
method generate_collaboration_code (line 124) | def generate_collaboration_code(self) -> str:
method generate_agent_setup (line 158) | def generate_agent_setup(self) -> str:
method generate_routing_code (line 337) | def generate_routing_code(self):
method translate_bedrock_to_strands (line 372) | def translate_bedrock_to_strands(self, output_path) -> dict:
FILE: src/bedrock_agentcore_starter_toolkit/services/import_agent/utils.py
function json_to_obj_fixed (line 11) | def json_to_obj_fixed(json_string: str):
function fix_field (line 24) | def fix_field(obj, field=None):
function clean_variable_name (line 36) | def clean_variable_name(text):
function clean_gateway_or_target_name (line 53) | def clean_gateway_or_target_name(text):
function unindent_by_one (line 67) | def unindent_by_one(input_code, spaces_per_indent=4):
function generate_pydantic_models (line 93) | def generate_pydantic_models(
function prune_tool_name (line 372) | def prune_tool_name(tool_name: str, length=50) -> str:
function get_template_fixtures (line 380) | def get_template_fixtures(field: str = "orchestrationBasePrompts", group...
function safe_substitute_placeholders (line 419) | def safe_substitute_placeholders(template_str, substitutions):
function get_base_dir (line 429) | def get_base_dir(file):
FILE: src/bedrock_agentcore_starter_toolkit/services/runtime.py
function _get_user_agent (line 23) | def _get_user_agent() -> str:
function generate_session_id (line 36) | def generate_session_id() -> str:
function _validate_runtime_type (line 41) | def _validate_runtime_type(runtime_type: Optional[str]) -> str:
function _handle_http_response (line 69) | def _handle_http_response(response) -> dict:
function _handle_aws_response (line 86) | def _handle_aws_response(response) -> dict:
function _handle_streaming_response (line 110) | def _handle_streaming_response(response) -> Dict[str, Any]:
class BedrockAgentCoreClient (line 133) | class BedrockAgentCoreClient:
method __init__ (line 136) | def __init__(self, region: str):
method create_agent (line 169) | def create_agent(
method update_agent (line 328) | def update_agent(
method list_agents (line 425) | def list_agents(self, max_results: int = 100) -> list:
method find_agent_by_name (line 449) | def find_agent_by_name(self, agent_name: str) -> Optional[Dict]:
method create_or_update_agent (line 465) | def create_or_update_agent(
method wait_for_agent_endpoint_ready (line 526) | def wait_for_agent_endpoint_ready(self, agent_id: str, endpoint_name: ...
method get_agent_runtime (line 566) | def get_agent_runtime(self, agent_id: str) -> Dict:
method get_agent_runtime_endpoint (line 577) | def get_agent_runtime_endpoint(self, agent_id: str, endpoint_name: str...
method delete_agent_runtime_endpoint (line 592) | def delete_agent_runtime_endpoint(self, agent_id: str, endpoint_name: ...
method invoke_endpoint (line 618) | def invoke_endpoint(
method stop_runtime_session (line 688) | def stop_runtime_session(
method _update_api_key_credential_provider (line 719) | def _update_api_key_credential_provider(
method _create_api_key_credential_provider (line 741) | def _create_api_key_credential_provider(
method create_or_update_api_key_credential_provider (line 763) | def create_or_update_api_key_credential_provider(
method delete_api_key_credential_provider (line 773) | def delete_api_key_credential_provider(self, api_key_credential_provid...
class HttpBedrockAgentCoreClient (line 778) | class HttpBedrockAgentCoreClient:
method __init__ (line 781) | def __init__(self, region: str):
method invoke_endpoint (line 794) | def invoke_endpoint(
class LocalBedrockAgentCoreClient (line 870) | class LocalBedrockAgentCoreClient:
method __init__ (line 873) | def __init__(self, endpoint: str):
method invoke_endpoint (line 878) | def invoke_endpoint(
FILE: src/bedrock_agentcore_starter_toolkit/services/s3.py
function sanitize_s3_bucket_name (line 12) | def sanitize_s3_bucket_name(name: str, account_id: str, region: str) -> ...
function get_or_create_s3_bucket (line 38) | def get_or_create_s3_bucket(agent_name: str, account_id: str, region: st...
function create_s3_bucket (line 64) | def create_s3_bucket(bucket_name: str, region: str, account_id: str) -> ...
FILE: src/bedrock_agentcore_starter_toolkit/services/xray.py
function _need_resource_policy (line 14) | def _need_resource_policy(logs_client, policy_name="TransactionSearchXRa...
function _need_trace_destination (line 26) | def _need_trace_destination(xray_client):
function _need_indexing_rule (line 35) | def _need_indexing_rule(xray_client):
function enable_transaction_search_if_needed (line 47) | def enable_transaction_search_if_needed(region: str, account_id: str) ->...
function enable_traces_delivery_for_runtime (line 103) | def enable_traces_delivery_for_runtime(
function _create_cloudwatch_logs_resource_policy (line 156) | def _create_cloudwatch_logs_resource_policy(logs_client, account_id: str...
function _configure_trace_segment_destination (line 191) | def _configure_trace_segment_destination(xray_client) -> None:
function _log_trace_destination_status (line 213) | def _log_trace_destination_status(xray_client):
function _configure_indexing_rule (line 230) | def _configure_indexing_rule(xray_client) -> None:
FILE: src/bedrock_agentcore_starter_toolkit/utils/aws.py
function extract_id_from_arn (line 17) | def extract_id_from_arn(arn_or_id: str) -> str:
function get_account_id (line 37) | def get_account_id() -> str:
function get_region (line 42) | def get_region() -> str:
function get_partition (line 47) | def get_partition(region: str) -> str:
function ensure_valid_aws_creds (line 52) | def ensure_valid_aws_creds() -> tuple[bool, Optional[str]]:
FILE: src/bedrock_agentcore_starter_toolkit/utils/endpoints.py
function get_data_plane_endpoint (line 11) | def get_data_plane_endpoint(region: str = DEFAULT_REGION) -> str:
function get_control_plane_endpoint (line 23) | def get_control_plane_endpoint(region: str = DEFAULT_REGION) -> str:
FILE: src/bedrock_agentcore_starter_toolkit/utils/lambda_utils.py
function create_lambda_function (line 14) | def create_lambda_function(
FILE: src/bedrock_agentcore_starter_toolkit/utils/logging_config.py
function setup_toolkit_logging (line 8) | def setup_toolkit_logging(mode: str = "sdk") -> None:
function _setup_cli_logging (line 28) | def _setup_cli_logging() -> None:
function _setup_sdk_logging (line 47) | def _setup_sdk_logging() -> None:
function _setup_basic_logging (line 59) | def _setup_basic_logging() -> None:
function is_logging_configured (line 64) | def is_logging_configured() -> bool:
function reset_logging_config (line 69) | def reset_logging_config() -> None:
FILE: src/bedrock_agentcore_starter_toolkit/utils/paths.py
function is_sub_path (line 9) | def is_sub_path(path: Path, parent: Path) -> bool:
function expand_source_path_for_dependencies (line 18) | def expand_source_path_for_dependencies(source_dir: Path, dependency_inf...
function _relative_to_build_context (line 37) | def _relative_to_build_context(context_root: Path, path: Path, descripti...
FILE: src/bedrock_agentcore_starter_toolkit/utils/python_env.py
function is_recommended_python_version (line 8) | def is_recommended_python_version() -> tuple[bool, str]:
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/agentcore_identity.py
function _parse_env_file (line 12) | def _parse_env_file(env_file_path: Path) -> Dict[str, str]:
function _load_api_key_from_env_if_configured (line 53) | def _load_api_key_from_env_if_configured(
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/config.py
function is_project_config_format (line 29) | def is_project_config_format(config_path: Path) -> bool:
function _is_legacy_format (line 38) | def _is_legacy_format(data: dict) -> bool:
function _transform_legacy_to_multi_agent (line 43) | def _transform_legacy_to_multi_agent(data: dict) -> BedrockAgentCoreConf...
function _migrate_deployment_type (line 49) | def _migrate_deployment_type(config: BedrockAgentCoreConfigSchema) -> None:
function load_config (line 72) | def load_config(config_path: Path, autofill_missing_aws=True) -> Bedrock...
function save_config (line 129) | def save_config(config: BedrockAgentCoreConfigSchema, config_path: Path):
function load_config_if_exists (line 150) | def load_config_if_exists(config_path: Path, autofill_missing_aws=True) ...
function get_entrypoint_from_config (line 165) | def get_entrypoint_from_config(config_path: Path, default: str) -> str:
function merge_agent_config (line 186) | def merge_agent_config(
function get_agentcore_directory (line 228) | def get_agentcore_directory(project_root: Path, agent_name: str, source_...
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/container.py
class ContainerRuntime (line 22) | class ContainerRuntime:
method __init__ (line 28) | def __init__(self, runtime_type: Optional[str] = None, print_logs=True):
method _is_runtime_installed (line 87) | def _is_runtime_installed(self, runtime: str) -> bool:
method get_name (line 95) | def get_name(self) -> str:
method image_exists (line 99) | def image_exists(self, tag: str) -> bool:
method _get_template_path (line 107) | def _get_template_path(self, language: str, template_type: str) -> Path:
method generate_dockerfile (line 126) | def generate_dockerfile(
method _ensure_dockerignore (line 318) | def _ensure_dockerignore(self, project_dir: Path, language: str = "pyt...
method _transform_ts_entrypoint (line 327) | def _transform_ts_entrypoint(self, source_path: str) -> str:
method _validate_module_path (line 341) | def _validate_module_path(self, agent_path: Path, project_root: Path) ...
method _get_module_path (line 359) | def _get_module_path(self, agent_path: Path, project_root: Path) -> str:
method _get_current_platform (line 380) | def _get_current_platform(self) -> str:
method build (line 387) | def build(
method run_local (line 436) | def run_local(self, tag: str, port: int = 8080, env_vars: Optional[dic...
method login (line 485) | def login(self, registry: str, username: str, password: str) -> bool:
method tag (line 501) | def tag(self, source: str, target: str) -> bool:
method push (line 511) | def push(self, tag: str) -> bool:
method _execute_command (line 522) | def _execute_command(self, cmd: List[str]) -> Tuple[bool, List[str]]:
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/create.py
function resolve_create_with_iac_project_config (line 10) | def resolve_create_with_iac_project_config(config_path: Path) -> Bedrock...
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/create_with_iam_eventual_consistency.py
function retry_create_with_eventual_iam_consistency (line 12) | def retry_create_with_eventual_iam_consistency(create_function: Callable...
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/entrypoint.py
function detect_entrypoint_by_language (line 28) | def detect_entrypoint_by_language(source_dir: Path, language: str) -> Li...
function detect_language (line 58) | def detect_language(project_dir: Path, entrypoint: Optional[str] = None)...
function detect_typescript_project (line 86) | def detect_typescript_project(project_dir: Path) -> Optional["TypeScript...
function parse_entrypoint (line 121) | def parse_entrypoint(entrypoint: str) -> Tuple[Path, str]:
class DependencyInfo (line 145) | class DependencyInfo:
method found (line 154) | def found(self) -> bool:
method is_pyproject (line 159) | def is_pyproject(self) -> bool:
method is_requirements (line 164) | def is_requirements(self) -> bool:
method is_root_package (line 169) | def is_root_package(self) -> bool:
class TypeScriptProjectInfo (line 175) | class TypeScriptProjectInfo:
method found (line 183) | def found(self) -> bool:
function detect_dependencies (line 188) | def detect_dependencies(package_dir: Path, explicit_file: Optional[str] ...
function _handle_explicit_file (line 226) | def _handle_explicit_file(package_dir: Path, explicit_file: str) -> Depe...
function validate_requirements_file (line 271) | def validate_requirements_file(build_dir: Path, requirements_file: str) ...
function get_python_version (line 298) | def get_python_version() -> str:
class RuntimeEntrypointInfo (line 304) | class RuntimeEntrypointInfo:
function parse_entrypoint_for_runtime (line 312) | def parse_entrypoint_for_runtime(entrypoint: str, source_dir: Optional[P...
function build_entrypoint_array (line 368) | def build_entrypoint_array(entrypoint_path: str, has_otel_distro: bool, ...
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/logs.py
function get_agent_runtime_log_group (line 7) | def get_agent_runtime_log_group(agent_id: str, endpoint_name: Optional[s...
function get_genai_observability_url (line 23) | def get_genai_observability_url(region: str) -> str:
function get_agent_log_paths (line 35) | def get_agent_log_paths(
function get_aws_tail_commands (line 74) | def get_aws_tail_commands(log_group: str) -> tuple[str, str]:
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/package.py
class PackageCache (line 20) | class PackageCache:
method __init__ (line 23) | def __init__(self, cache_dir: Path):
method dependencies_zip (line 33) | def dependencies_zip(self) -> Path:
method dependencies_hash (line 38) | def dependencies_hash(self) -> Path:
method should_rebuild_dependencies (line 42) | def should_rebuild_dependencies(
method save_dependencies_hash (line 87) | def save_dependencies_hash(
method _compute_file_hash (line 101) | def _compute_file_hash(file_path: Path) -> str:
method _compute_combined_hash (line 112) | def _compute_combined_hash(
class CodeZipPackager (line 150) | class CodeZipPackager:
method create_deployment_package (line 153) | def create_deployment_package(
method _build_dependencies_zip (line 233) | def _build_dependencies_zip(self, requirements_file: Path, output_zip:...
method _check_otel_distro (line 271) | def _check_otel_distro(self, requirements_file: Optional[Path]) -> bool:
method _fix_shebangs_in_bin_dir (line 292) | def _fix_shebangs_in_bin_dir(package_dir: Path) -> None:
method _resolve_pyproject_to_requirements (line 340) | def _resolve_pyproject_to_requirements(self, pyproject_file: Path, out...
method _install_dependencies (line 382) | def _install_dependencies(
method _build_uv_command (line 437) | def _build_uv_command(
method _should_cross_compile (line 475) | def _should_cross_compile(self) -> bool:
method _build_direct_code_deploy (line 487) | def _build_direct_code_deploy(self, source_dir: Path, output_zip: Path...
method _merge_zips (line 518) | def _merge_zips(self, dependencies_zip: Optional[Path], direct_code_de...
method _get_ignore_patterns (line 542) | def _get_ignore_patterns(self) -> List[str]:
method _should_ignore (line 581) | def _should_ignore(self, path: str, patterns: List[str], is_dir: bool)...
method _matches_pattern (line 609) | def _matches_pattern(self, path: str, pattern: str, is_dir: bool) -> b...
method upload_to_s3 (line 640) | def upload_to_s3(self, deployment_zip: Path, agent_name: str, session:...
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/policy_template.py
function _get_template_dir (line 13) | def _get_template_dir() -> Path:
function _render_template (line 18) | def _render_template(template_name: str, variables: Dict[str, str]) -> str:
function render_trust_policy_template (line 26) | def render_trust_policy_template(region: str, account_id: str) -> str:
function render_execution_policy_template (line 40) | def render_execution_policy_template(
function validate_rendered_policy (line 87) | def validate_rendered_policy(policy_json: str) -> Dict:
FILE: src/bedrock_agentcore_starter_toolkit/utils/runtime/schema.py
class NetworkModeConfig (line 8) | class NetworkModeConfig(BaseModel):
class MemoryConfig (line 15) | class MemoryConfig(BaseModel):
method is_enabled (line 33) | def is_enabled(self) -> bool:
method has_ltm (line 38) | def has_ltm(self) -> bool:
class CredentialProviderInfo (line 43) | class CredentialProviderInfo(BaseModel):
class WorkloadIdentityInfo (line 52) | class WorkloadIdentityInfo(BaseModel):
class AwsJwtConfig (line 63) | class AwsJwtConfig(BaseModel):
method validate_signing_algorithm (line 83) | def validate_signing_algorithm(cls, v: str) -> str:
class IdentityConfig (line 91) | class IdentityConfig(BaseModel):
method is_enabled (line 100) | def is_enabled(self) -> bool:
method has_oauth_providers (line 105) | def has_oauth_providers(self) -> bool:
method provider_names (line 110) | def provider_names(self) -> List[str]:
class NetworkConfiguration (line 115) | class NetworkConfiguration(BaseModel):
method validate_network_mode (line 125) | def validate_network_mode(cls, v: str) -> str:
method validate_network_mode_config (line 134) | def validate_network_mode_config(cls, v: Optional[NetworkModeConfig], ...
method to_aws_dict (line 140) | def to_aws_dict(self) -> dict:
class ProtocolConfiguration (line 153) | class ProtocolConfiguration(BaseModel):
method validate_protocol (line 162) | def validate_protocol(cls, v: str) -> str:
method to_aws_dict (line 169) | def to_aws_dict(self) -> dict:
class LifecycleConfiguration (line 174) | class LifecycleConfiguration(BaseModel):
method validate_lifecycle_relationship (line 189) | def validate_lifecycle_relationship(cls, v: Optional[int], info) -> Op...
method to_aws_dict (line 201) | def to_aws_dict(self) -> dict:
method has_custom_settings (line 211) | def has_custom_settings(self) -> bool:
class ObservabilityConfig (line 216) | class ObservabilityConfig(BaseModel):
class AWSConfig (line 222) | class AWSConfig(BaseModel):
method validate_account (line 240) | def validate_account(cls, v: Optional[str]) -> Optional[str]:
class CodeBuildConfig (line 248) | class CodeBuildConfig(BaseModel):
class BedrockAgentCoreDeploymentInfo (line 256) | class BedrockAgentCoreDeploymentInfo(BaseModel):
class BedrockAgentCoreAgentSchema (line 264) | class BedrockAgentCoreAgentSchema(BaseModel):
method validate_typescript_deployment (line 305) | def validate_typescript_deployment(self) -> "BedrockAgentCoreAgentSche...
method get_authorizer_configuration (line 311) | def get_authorizer_configuration(self) -> Optional[dict]:
method validate (line 315) | def validate(self, for_local: bool = False) -> List[str]:
class BedrockAgentCoreConfigSchema (line 346) | class BedrockAgentCoreConfigSchema(BaseModel):
method get_agent_config (line 360) | def get_agent_config(self, agent_name: Optional[str] = None) -> Bedroc...
FILE: src/bedrock_agentcore_starter_toolkit/utils/server_addresses.py
function build_server_urls (line 11) | def build_server_urls(port: int, *, path_suffix: str = "", protocol: str...
function _normalize_path_suffix (line 26) | def _normalize_path_suffix(path_suffix: str) -> str:
function _detect_local_network_ip (line 32) | def _detect_local_network_ip() -> Optional[str]:
FILE: tests/cli/evaluation/test_commands.py
function runner (line 31) | def runner():
function mock_config (line 37) | def mock_config():
function sample_evaluation_results (line 50) | def sample_evaluation_results():
class TestHelperFunctions (line 71) | class TestHelperFunctions:
method test_get_agent_config_from_file_success (line 75) | def test_get_agent_config_from_file_success(self, mock_load_config, mo...
method test_get_agent_config_from_file_no_config (line 90) | def test_get_agent_config_from_file_no_config(self, tmp_path):
method test_get_agent_config_from_file_error (line 98) | def test_get_agent_config_from_file_error(self, mock_load_config, tmp_...
class TestRunEvaluationCommand (line 116) | class TestRunEvaluationCommand:
method test_run_evaluation_with_config_file (line 121) | def test_run_evaluation_with_config_file(
method test_run_evaluation_with_explicit_params (line 137) | def test_run_evaluation_with_explicit_params(self, mock_processor_clas...
method test_run_evaluation_with_trace_id (line 154) | def test_run_evaluation_with_trace_id(
method test_run_evaluation_multiple_evaluators (line 173) | def test_run_evaluation_multiple_evaluators(
method test_run_evaluation_no_config (line 192) | def test_run_evaluation_no_config(self, mock_get_config, runner):
method test_run_evaluation_with_reference_inputs (line 203) | def test_run_evaluation_with_reference_inputs(
method test_run_evaluation_with_comma_separated_trajectory (line 243) | def test_run_evaluation_with_comma_separated_trajectory(
method test_run_evaluation_without_reference_inputs (line 272) | def test_run_evaluation_without_reference_inputs(
class TestListEvaluatorsCommand (line 294) | class TestListEvaluatorsCommand:
method test_list_evaluators_success (line 299) | def test_list_evaluators_success(self, mock_client_class, mock_list_op...
method test_list_evaluators_empty (line 319) | def test_list_evaluators_empty(self, mock_client_class, mock_list_op, ...
method test_list_evaluators_with_max_results (line 329) | def test_list_evaluators_with_max_results(self, mock_client_class, moc...
class TestGetEvaluatorCommand (line 346) | class TestGetEvaluatorCommand:
method test_get_evaluator_success (line 351) | def test_get_evaluator_success(self, mock_client_class, mock_get_op, r...
method test_get_evaluator_not_found (line 368) | def test_get_evaluator_not_found(self, mock_client_class, mock_get_op,...
class TestCreateEvaluatorCommand (line 382) | class TestCreateEvaluatorCommand:
method test_create_evaluator_from_json (line 387) | def test_create_evaluator_from_json(self, mock_client_class, mock_crea...
method test_create_evaluator_missing_config (line 400) | def test_create_evaluator_missing_config(self, mock_client_class, runn...
class TestUpdateEvaluatorCommand (line 413) | class TestUpdateEvaluatorCommand:
method test_update_evaluator_description (line 418) | def test_update_evaluator_description(self, mock_client_class, mock_up...
method test_update_evaluator_config (line 430) | def test_update_evaluator_config(self, mock_client_class, mock_update_...
class TestDeleteEvaluatorCommand (line 449) | class TestDeleteEvaluatorCommand:
method test_delete_evaluator_success (line 454) | def test_delete_evaluator_success(self, mock_client_class, mock_delete...
method test_delete_evaluator_builtin_fails (line 464) | def test_delete_evaluator_builtin_fails(self, mock_client_class, mock_...
FILE: tests/cli/gateway/test_commands.py
class TestBedrockAgentCoreGatewayCLI (line 11) | class TestBedrockAgentCoreGatewayCLI:
method setup_method (line 14) | def setup_method(self):
method test_create_mcp_gateway_command_basic (line 18) | def test_create_mcp_gateway_command_basic(self):
method test_create_mcp_gateway_with_defaults (line 64) | def test_create_mcp_gateway_with_defaults(self):
method test_create_mcp_gateway_target_command_basic (line 89) | def test_create_mcp_gateway_target_command_basic(self):
method test_create_mcp_gateway_target_with_openapi_schema (line 145) | def test_create_mcp_gateway_target_with_openapi_schema(self):
method test_create_mcp_gateway_target_with_defaults (line 200) | def test_create_mcp_gateway_target_with_defaults(self):
method test_create_mcp_gateway_invalid_json_authorizer_config (line 244) | def test_create_mcp_gateway_invalid_json_authorizer_config(self):
method test_create_mcp_gateway_target_invalid_json_credentials (line 259) | def test_create_mcp_gateway_target_invalid_json_credentials(self):
method test_list_mcp_gateways_command_parameters (line 285) | def test_list_mcp_gateways_command_parameters(self):
method test_get_mcp_gateway_command_flag_parsing (line 298) | def test_get_mcp_gateway_command_flag_parsing(self):
method test_delete_mcp_gateway_command_flag_parsing (line 310) | def test_delete_mcp_gateway_command_flag_parsing(self):
method test_delete_mcp_gateway_target_command_parameter_parsing (line 323) | def test_delete_mcp_gateway_target_command_parameter_parsing(self):
method test_update_gateway_command_basic (line 337) | def test_update_gateway_command_basic(self):
method test_update_gateway_command_all_parameters (line 366) | def test_update_gateway_command_all_parameters(self):
method test_update_gateway_command_no_identifier_error (line 393) | def test_update_gateway_command_no_identifier_error(self):
FILE: tests/cli/identity/test_identity.py
function runner (line 29) | def runner():
function test_config (line 35) | def test_config(tmp_path):
class TestCreateProvider (line 53) | class TestCreateProvider:
method test_create_cognito_provider_success (line 56) | def test_create_cognito_provider_success(self, runner, tmp_path, monke...
method test_create_github_provider_success (line 121) | def test_create_github_provider_success(self, runner, tmp_path, monkey...
method test_create_google_provider (line 169) | def test_create_google_provider(self, runner, tmp_path, monkeypatch):
method test_create_salesforce_provider (line 215) | def test_create_salesforce_provider(self, runner, tmp_path, monkeypatch):
method test_create_provider_with_cognito_auto_update (line 261) | def test_create_provider_with_cognito_auto_update(self, runner, tmp_pa...
method test_create_provider_cognito_auto_update_failure (line 320) | def test_create_provider_cognito_auto_update_failure(self, runner, tmp...
method test_create_provider_missing_discovery_url (line 376) | def test_create_provider_missing_discovery_url(self, runner, tmp_path,...
method test_create_provider_unsupported_type (line 412) | def test_create_provider_unsupported_type(self, runner, tmp_path, monk...
method test_create_provider_no_callback_url (line 448) | def test_create_provider_no_callback_url(self, runner, tmp_path, monke...
method test_create_provider_api_error (line 492) | def test_create_provider_api_error(self, runner, tmp_path, monkeypatch):
class TestCreateWorkload (line 534) | class TestCreateWorkload:
method test_create_workload_with_name_and_urls (line 537) | def test_create_workload_with_name_and_urls(self, runner, tmp_path, mo...
method test_create_workload_auto_generated_name (line 587) | def test_create_workload_auto_generated_name(self, runner, tmp_path, m...
method test_create_workload_no_config_generates_uuid (line 628) | def test_create_workload_no_config_generates_uuid(self, runner, tmp_pa...
method test_create_workload_api_error (line 653) | def test_create_workload_api_error(self, runner, tmp_path, monkeypatch):
class TestUpdateWorkload (line 691) | class TestUpdateWorkload:
method test_update_workload_add_urls (line 694) | def test_update_workload_add_urls(self, runner, tmp_path, monkeypatch):
method test_update_workload_set_urls (line 743) | def test_update_workload_set_urls(self, runner, tmp_path, monkeypatch):
method test_update_workload_no_options_error (line 791) | def test_update_workload_no_options_error(self, runner, tmp_path, monk...
method test_update_workload_api_error (line 814) | def test_update_workload_api_error(self, runner, tmp_path, monkeypatch):
class TestGetToken (line 852) | class TestGetToken:
method test_get_token_user_flow_without_secret (line 855) | def test_get_token_user_flow_without_secret(self, runner):
method test_get_token_user_flow_with_secret (line 892) | def test_get_token_user_flow_with_secret(self, runner):
method test_get_token_user_flow_default (line 925) | def test_get_token_user_flow_default(self, runner):
method test_get_token_m2m_flow_success (line 951) | def test_get_token_m2m_flow_success(self, runner):
method test_get_token_user_flow_missing_username (line 984) | def test_get_token_user_flow_missing_username(self, runner):
method test_get_token_user_flow_missing_password (line 1014) | def test_get_token_user_flow_missing_password(self, runner):
method test_get_token_m2m_flow_missing_secret (line 1044) | def test_get_token_m2m_flow_missing_secret(self, runner):
method test_get_token_invalid_auth_flow (line 1072) | def test_get_token_invalid_auth_flow(self, runner):
method test_get_token_user_flow_error (line 1091) | def test_get_token_user_flow_error(self, runner):
method test_get_token_m2m_flow_error (line 1119) | def test_get_token_m2m_flow_error(self, runner):
class TestListProviders (line 1146) | class TestListProviders:
method test_list_providers_success (line 1149) | def test_list_providers_success(self, runner, tmp_path, monkeypatch):
method test_list_providers_with_workload (line 1195) | def test_list_providers_with_workload(self, runner, tmp_path, monkeypa...
method test_list_providers_no_config (line 1237) | def test_list_providers_no_config(self, runner, tmp_path, monkeypatch):
method test_list_providers_empty (line 1246) | def test_list_providers_empty(self, runner, tmp_path, monkeypatch):
method test_list_providers_no_identity_attribute (line 1279) | def test_list_providers_no_identity_attribute(self, runner, tmp_path, ...
class TestSetupCognito (line 1314) | class TestSetupCognito:
method test_setup_cognito_user_flow_success (line 1317) | def test_setup_cognito_user_flow_success(self, runner, tmp_path, monke...
method test_setup_cognito_m2m_flow_success (line 1382) | def test_setup_cognito_m2m_flow_success(self, runner, tmp_path, monkey...
method test_setup_cognito_uses_config_region (line 1436) | def test_setup_cognito_uses_config_region(self, runner, tmp_path, monk...
method test_setup_cognito_fallback_region (line 1485) | def test_setup_cognito_fallback_region(self, runner, tmp_path, monkeyp...
method test_setup_cognito_invalid_auth_flow (line 1526) | def test_setup_cognito_invalid_auth_flow(self, runner, tmp_path, monke...
method test_setup_cognito_error (line 1535) | def test_setup_cognito_error(self, runner, tmp_path, monkeypatch):
class TestCleanup (line 1551) | class TestCleanup:
method test_cleanup_success_with_force (line 1554) | def test_cleanup_success_with_force(self, runner, tmp_path, monkeypatch):
method test_cleanup_without_force_cancelled (line 1630) | def test_cleanup_without_force_cancelled(self, runner, tmp_path, monke...
method test_cleanup_no_config_error (line 1665) | def test_cleanup_no_config_error(self, runner, tmp_path, monkeypatch):
method test_cleanup_provider_deletion_error (line 1674) | def test_cleanup_provider_deletion_error(self, runner, tmp_path, monke...
class TestBuildProviderConfig (line 1725) | class TestBuildProviderConfig:
method test_build_cognito_config (line 1728) | def test_build_cognito_config(self):
method test_build_github_config (line 1751) | def test_build_github_config(self):
method test_build_google_config (line 1768) | def test_build_google_config(self):
method test_build_salesforce_config (line 1783) | def test_build_salesforce_config(self):
class TestSetupAwsJwt (line 1799) | class TestSetupAwsJwt:
method test_setup_aws_jwt_success (line 1802) | def test_setup_aws_jwt_success(self, runner, tmp_path, monkeypatch):
method test_setup_aws_jwt_already_enabled (line 1848) | def test_setup_aws_jwt_already_enabled(self, runner, tmp_path, monkeyp...
method test_setup_aws_jwt_with_rs256 (line 1882) | def test_setup_aws_jwt_with_rs256(self, runner, tmp_path, monkeypatch):
method test_setup_aws_jwt_with_custom_duration (line 1923) | def test_setup_aws_jwt_with_custom_duration(self, runner, tmp_path, mo...
method test_setup_aws_jwt_invalid_algorithm (line 1964) | def test_setup_aws_jwt_invalid_algorithm(self, runner, tmp_path, monke...
method test_setup_aws_jwt_invalid_duration_too_short (line 1982) | def test_setup_aws_jwt_invalid_duration_too_short(self, runner, tmp_pa...
method test_setup_aws_jwt_invalid_duration_too_long (line 2000) | def test_setup_aws_jwt_invalid_duration_too_long(self, runner, tmp_pat...
method test_setup_aws_jwt_no_config_file (line 2018) | def test_setup_aws_jwt_no_config_file(self, runner, tmp_path, monkeypa...
method test_setup_aws_jwt_adds_multiple_audiences (line 2039) | def test_setup_aws_jwt_adds_multiple_audiences(self, runner, tmp_path,...
method test_setup_aws_jwt_duplicate_audience (line 2082) | def test_setup_aws_jwt_duplicate_audience(self, runner, tmp_path, monk...
method test_setup_aws_jwt_api_error (line 2130) | def test_setup_aws_jwt_api_error(self, runner, tmp_path, monkeypatch):
class TestListAwsJwt (line 2160) | class TestListAwsJwt:
method test_list_aws_jwt_success (line 2163) | def test_list_aws_jwt_success(self, runner, tmp_path, monkeypatch):
method test_list_aws_jwt_not_configured (line 2204) | def test_list_aws_jwt_not_configured(self, runner, tmp_path, monkeypat...
method test_list_aws_jwt_disabled (line 2228) | def test_list_aws_jwt_disabled(self, runner, tmp_path, monkeypatch):
method test_list_aws_jwt_no_config_file (line 2261) | def test_list_aws_jwt_no_config_file(self, runner, tmp_path, monkeypat...
FILE: tests/cli/memory/test_browser.py
class TestNavigationState (line 16) | class TestNavigationState:
method test_default_values (line 19) | def test_default_values(self):
method test_with_values (line 28) | def test_with_values(self):
method test_replace (line 40) | def test_replace(self):
class TestBrowserData (line 49) | class TestBrowserData:
method test_default_values (line 52) | def test_default_values(self):
method test_mutable_defaults_isolated (line 61) | def test_mutable_defaults_isolated(self):
class TestMemoryBrowserInit (line 68) | class TestMemoryBrowserInit:
method test_init_with_manager (line 71) | def test_init_with_manager(self):
method test_init_with_visualizer (line 80) | def test_init_with_visualizer(self):
method test_init_with_initial_memory (line 86) | def test_init_with_initial_memory(self):
method test_load_memory_skips_api_when_preloaded (line 92) | def test_load_memory_skips_api_when_preloaded(self):
class TestMemoryBrowserNavigation (line 100) | class TestMemoryBrowserNavigation:
method test_push_state (line 103) | def test_push_state(self):
method test_go_back_empty_stack (line 113) | def test_go_back_empty_stack(self):
method test_go_back_with_stack (line 119) | def test_go_back_with_stack(self):
method test_go_back_restores_cursor (line 133) | def test_go_back_restores_cursor(self):
class TestMemoryBrowserCursor (line 149) | class TestMemoryBrowserCursor:
method test_cursor_up (line 152) | def test_cursor_up(self):
method test_cursor_up_at_zero (line 159) | def test_cursor_up_at_zero(self):
method test_cursor_down (line 166) | def test_cursor_down(self):
method test_cursor_down_at_end (line 174) | def test_cursor_down_at_end(self):
class TestMemoryBrowserSelection (line 183) | class TestMemoryBrowserSelection:
method test_select_actor (line 186) | def test_select_actor(self):
method test_select_session (line 200) | def test_select_session(self):
method test_select_event (line 214) | def test_select_event(self):
method test_select_static_namespace (line 226) | def test_select_static_namespace(self):
method test_select_template_namespace (line 239) | def test_select_template_namespace(self):
method test_select_namespace_actor (line 252) | def test_select_namespace_actor(self):
method test_select_namespace_actor_with_session (line 266) | def test_select_namespace_actor_with_session(self):
method test_select_namespace_session (line 280) | def test_select_namespace_session(self):
method test_select_record (line 295) | def test_select_record(self):
method test_select_empty_items (line 308) | def test_select_empty_items(self):
method test_select_memory_item_actors (line 314) | def test_select_memory_item_actors(self):
method test_select_memory_item_namespaces (line 327) | def test_select_memory_item_namespaces(self):
class TestMemoryBrowserExtractors (line 340) | class TestMemoryBrowserExtractors:
method test_extract_role (line 343) | def test_extract_role(self):
method test_extract_role_empty (line 349) | def test_extract_role_empty(self):
method test_extract_text (line 356) | def test_extract_text(self):
method test_extract_text_empty (line 362) | def test_extract_text_empty(self):
method test_extract_record_text (line 368) | def test_extract_record_text(self):
method test_extract_record_text_string_content (line 374) | def test_extract_record_text_string_content(self):
method test_extract_record_text_empty (line 380) | def test_extract_record_text_empty(self):
method test_extract_payload_snippet_short (line 386) | def test_extract_payload_snippet_short(self):
method test_extract_payload_snippet_long (line 392) | def test_extract_payload_snippet_long(self):
method test_extract_payload_snippet_empty (line 400) | def test_extract_payload_snippet_empty(self):
class TestMemoryBrowserLoadView (line 407) | class TestMemoryBrowserLoadView:
method test_load_memory_view (line 410) | def test_load_memory_view(self):
method test_load_actors_view (line 421) | def test_load_actors_view(self):
method test_load_sessions_view (line 430) | def test_load_sessions_view(self):
method test_load_events_view (line 439) | def test_load_events_view(self):
method test_load_namespaces_view (line 459) | def test_load_namespaces_view(self):
method test_load_records_view (line 474) | def test_load_records_view(self):
method test_load_view_error_handling (line 483) | def test_load_view_error_handling(self):
method test_load_view_client_error_handling (line 495) | def test_load_view_client_error_handling(self):
method test_load_view_botocore_error_handling (line 509) | def test_load_view_botocore_error_handling(self):
class TestMemoryBrowserLoadMore (line 523) | class TestMemoryBrowserLoadMore:
method test_load_actors_load_more (line 526) | def test_load_actors_load_more(self):
method test_load_sessions_load_more (line 543) | def test_load_sessions_load_more(self):
method test_load_events_load_more_sorts (line 558) | def test_load_events_load_more_sorts(self):
method test_load_records_load_more (line 574) | def test_load_records_load_more(self):
method test_load_actors_cache_hit (line 589) | def test_load_actors_cache_hit(self):
method test_load_namespaces_fallback_key (line 597) | def test_load_namespaces_fallback_key(self):
class TestMemoryBrowserCacheInvalidation (line 611) | class TestMemoryBrowserCacheInvalidation:
method test_select_actor_clears_session_cache (line 614) | def test_select_actor_clears_session_cache(self):
method test_select_session_clears_event_cache (line 629) | def test_select_session_clears_event_cache(self):
method test_select_namespace_clears_record_cache (line 645) | def test_select_namespace_clears_record_cache(self):
class TestMemoryBrowserRender (line 661) | class TestMemoryBrowserRender:
method _make_browser (line 664) | def _make_browser(self, **kwargs):
method test_render_breadcrumb_memory_root (line 674) | def test_render_breadcrumb_memory_root(self):
method test_render_breadcrumb_deep_navigation (line 681) | def test_render_breadcrumb_deep_navigation(self):
method test_render_breadcrumb_record_detail (line 694) | def test_render_breadcrumb_record_detail(self):
method test_render_memory_view_calls_visualizer (line 705) | def test_render_memory_view_calls_visualizer(self):
method test_render_memory_view_no_data_shows_nav (line 718) | def test_render_memory_view_no_data_shows_nav(self):
method test_render_event_detail_calls_visualizer (line 731) | def test_render_event_detail_calls_visualizer(self):
method test_render_record_detail_with_namespace (line 739) | def test_render_record_detail_with_namespace(self):
method test_render_event_detail_out_of_bounds (line 750) | def test_render_event_detail_out_of_bounds(self):
method test_render_list_view_empty (line 757) | def test_render_list_view_empty(self):
method test_render_list_view_events_with_role (line 763) | def test_render_list_view_events_with_role(self):
method test_render_list_view_events_payload_fallback (line 775) | def test_render_list_view_events_payload_fallback(self):
class TestMemoryBrowserRenderControls (line 786) | class TestMemoryBrowserRenderControls:
method _make_browser (line 789) | def _make_browser(self):
method test_render_controls_shows_more_for_events (line 797) | def test_render_controls_shows_more_for_events(self):
method test_render_controls_no_notice_for_actors (line 804) | def test_render_controls_no_notice_for_actors(self):
method test_render_controls_shows_shortcuts_on_memory_view (line 811) | def test_render_controls_shows_shortcuts_on_memory_view(self):
method test_render_controls_no_shortcuts_on_other_views (line 822) | def test_render_controls_no_shortcuts_on_other_views(self):
class TestMemoryBrowserCoverage (line 833) | class TestMemoryBrowserCoverage:
method _make_browser (line 836) | def _make_browser(self, **kwargs):
method test_render_calls_all_phases (line 847) | def test_render_calls_all_phases(self):
method test_render_content_dispatches_to_list_view (line 861) | def test_render_content_dispatches_to_list_view(self):
method test_render_content_unknown_view (line 869) | def test_render_content_unknown_view(self):
method test_render_list_view_actors (line 876) | def test_render_list_view_actors(self):
method test_render_list_view_namespace_actors (line 885) | def test_render_list_view_namespace_actors(self):
method test_render_list_view_sessions (line 893) | def test_render_list_view_sessions(self):
method test_render_list_view_namespaces (line 903) | def test_render_list_view_namespaces(self):
method test_render_list_view_records (line 916) | def test_render_list_view_records(self):
method test_load_sessions_cache_hit (line 930) | def test_load_sessions_cache_hit(self):
method test_load_events_cache_hit (line 939) | def test_load_events_cache_hit(self):
method test_load_records_cache_hit (line 948) | def test_load_records_cache_hit(self):
method test_load_view_unknown_view (line 957) | def test_load_view_unknown_view(self):
method test_select_empty_items (line 964) | def test_select_empty_items(self):
method test_select_unknown_view (line 970) | def test_select_unknown_view(self):
method test_extract_role_non_dict_payload (line 977) | def test_extract_role_non_dict_payload(self):
method test_extract_role_non_list_content (line 982) | def test_extract_role_non_list_content(self):
method test_extract_role_non_dict_item (line 987) | def test_extract_role_non_dict_item(self):
method test_extract_text_non_dict_payload (line 992) | def test_extract_text_non_dict_payload(self):
method test_extract_text_non_list_content (line 997) | def test_extract_text_non_list_content(self):
method test_render_controls_minimal (line 1002) | def test_render_controls_minimal(self):
method test_load_namespaces_memory_already_cached (line 1011) | def test_load_namespaces_memory_already_cached(self):
FILE: tests/cli/memory/test_commands.py
function _mock_config (line 12) | def _mock_config(memory_id=None, region=None, config_exists=True, agent_...
class TestShowCommand (line 22) | class TestShowCommand:
method test_show_uses_config_memory_id (line 28) | def test_show_uses_config_memory_id(self, mock_config, mock_manager_cl...
method test_show_explicit_memory_id_overrides_config (line 45) | def test_show_explicit_memory_id_overrides_config(self, mock_config, m...
method test_show_no_memory_id_errors (line 60) | def test_show_no_memory_id_errors(self, mock_config):
method test_show_with_verbose (line 72) | def test_show_with_verbose(self, mock_config, mock_manager_class, mock...
method test_show_with_region (line 94) | def test_show_with_region(self, mock_config, mock_manager_class, mock_...
class TestShowEventsCommand (line 111) | class TestShowEventsCommand:
method test_show_events_default_shows_latest (line 118) | def test_show_events_default_shows_latest(
method test_show_events_last_n (line 143) | def test_show_events_last_n(self, mock_collect, mock_config, mock_mana...
method test_show_events_list_actors (line 163) | def test_show_events_list_actors(self, mock_config, mock_manager_class):
method test_show_events_list_sessions_requires_actor (line 178) | def test_show_events_list_sessions_requires_actor(self, mock_config, m...
method test_show_events_session_requires_actor (line 190) | def test_show_events_session_requires_actor(self, mock_config, mock_ma...
method test_show_events_all_and_last_conflict (line 202) | def test_show_events_all_and_last_conflict(self, mock_config, mock_man...
method test_show_events_all_displays_tree (line 215) | def test_show_events_all_displays_tree(self, mock_visualizer_class, mo...
class TestShowRecordsCommand (line 228) | class TestShowRecordsCommand:
method test_show_records_default_shows_latest (line 235) | def test_show_records_default_shows_latest(
method test_show_records_last_n (line 259) | def test_show_records_last_n(self, mock_collect, mock_config, mock_man...
method test_show_records_all_displays_tree (line 280) | def test_show_records_all_displays_tree(self, mock_config, mock_manage...
method test_show_records_all_with_namespace_errors (line 294) | def test_show_records_all_with_namespace_errors(self, mock_config, moc...
method test_show_records_namespace_drills_down (line 307) | def test_show_records_namespace_drills_down(self, mock_config, mock_ma...
method test_show_records_query_requires_namespace (line 321) | def test_show_records_query_requires_namespace(self, mock_config, mock...
method test_show_records_query_with_namespace (line 334) | def test_show_records_query_with_namespace(self, mock_config, mock_man...
method test_show_records_all_and_last_conflict (line 351) | def test_show_records_all_and_last_conflict(self, mock_config, mock_ma...
class TestConfigResolution (line 362) | class TestConfigResolution:
method test_no_config_no_memory_id_errors (line 366) | def test_no_config_no_memory_id_errors(self, mock_config):
method test_config_exists_but_no_memory_id_errors (line 377) | def test_config_exists_but_no_memory_id_errors(self, mock_config):
method test_region_from_config (line 392) | def test_region_from_config(self, mock_collect, mock_config, mock_mana...
class TestGetMemoryConfigFromFile (line 405) | class TestGetMemoryConfigFromFile:
method test_no_config_file (line 409) | def test_no_config_file(self, mock_load):
method test_config_without_memory (line 419) | def test_config_without_memory(self, mock_load):
method test_config_with_memory (line 436) | def test_config_with_memory(self, mock_load):
method test_config_exception (line 454) | def test_config_exception(self, mock_load):
class TestShowEventsEdgeCases (line 467) | class TestShowEventsEdgeCases:
method test_show_events_list_sessions (line 472) | def test_show_events_list_sessions(self, mock_config, mock_manager_cla...
method test_show_events_no_events (line 489) | def test_show_events_no_events(self, mock_collect, mock_config, mock_m...
method test_show_events_last_exceeds_count (line 504) | def test_show_events_last_exceeds_count(self, mock_collect, mock_confi...
class TestShowRecordsEdgeCases (line 516) | class TestShowRecordsEdgeCases:
method test_show_records_no_records (line 523) | def test_show_records_no_records(self, mock_collect, mock_config, mock...
method test_show_records_last_exceeds_count (line 538) | def test_show_records_last_exceeds_count(
method test_show_records_query_no_results (line 554) | def test_show_records_query_no_results(self, mock_config, mock_manager...
class TestCollectAllEvents (line 567) | class TestCollectAllEvents:
method test_collect_events_basic (line 570) | def test_collect_events_basic(self):
method test_collect_events_skips_missing_actor_id (line 585) | def test_collect_events_skips_missing_actor_id(self):
method test_collect_events_skips_missing_session_id (line 598) | def test_collect_events_skips_missing_session_id(self):
class TestCollectAllRecords (line 612) | class TestCollectAllRecords:
method test_collect_records_with_namespace (line 615) | def test_collect_records_with_namespace(self):
method test_collect_records_all_namespaces (line 627) | def test_collect_records_all_namespaces(self):
class TestCollectRecordsFromNamespaceTemplate (line 641) | class TestCollectRecordsFromNamespaceTemplate:
method test_static_namespace (line 644) | def test_static_namespace(self):
method test_actor_template (line 656) | def test_actor_template(self):
method test_session_template (line 669) | def test_session_template(self):
method test_template_error_handling (line 685) | def test_template_error_handling(self):
class TestTryCollectRecords (line 698) | class TestTryCollectRecords:
method test_successful_collection (line 701) | def test_successful_collection(self):
method test_error_handling (line 714) | def test_error_handling(self):
class TestResolveMemoryConfig (line 727) | class TestResolveMemoryConfig:
method test_resolve_with_explicit_memory_id (line 732) | def test_resolve_with_explicit_memory_id(self, mock_session, mock_conf...
method test_resolve_from_config (line 746) | def test_resolve_from_config(self, mock_session, mock_config):
method test_resolve_region_from_boto (line 759) | def test_resolve_region_from_boto(self, mock_session_class, mock_config):
method test_resolve_with_agent_name (line 774) | def test_resolve_with_agent_name(self, mock_session, mock_config):
method test_resolve_config_region_not_overridden (line 787) | def test_resolve_config_region_not_overridden(self, mock_session, mock...
method test_resolve_explicit_region_overrides_config (line 799) | def test_resolve_explicit_region_overrides_config(self, mock_session, ...
method test_resolve_explicit_memory_id_overrides_config (line 811) | def test_resolve_explicit_memory_id_overrides_config(self, mock_sessio...
class TestBrowseCommand (line 822) | class TestBrowseCommand:
method test_browse_success (line 828) | def test_browse_success(self, mock_config, mock_manager_class, mock_br...
method test_browse_auth_error (line 841) | def test_browse_auth_error(self, mock_config, mock_manager_class):
method test_browse_passes_initial_memory (line 852) | def test_browse_passes_initial_memory(self, mock_config, mock_manager_...
FILE: tests/cli/observability/test_commands.py
class TestCreateObservabilityClient (line 13) | class TestCreateObservabilityClient:
method test_returns_tuple_with_client_agent_id_endpoint (line 18) | def test_returns_tuple_with_client_agent_id_endpoint(self, mock_config...
method test_creates_stateless_client_with_only_region (line 46) | def test_creates_stateless_client_with_only_region(self, mock_client_c...
class TestObservabilityListCommand (line 59) | class TestObservabilityListCommand:
method test_list_passes_agent_id_to_client_methods (line 64) | def test_list_passes_agent_id_to_client_methods(self, mock_config, moc...
class TestStatelessClientPattern (line 90) | class TestStatelessClientPattern:
method test_client_created_without_agent_id_parameter (line 94) | def test_client_created_without_agent_id_parameter(self, mock_client_c...
class TestShowCommand (line 111) | class TestShowCommand:
method test_show_with_trace_id (line 116) | def test_show_with_trace_id(self, mock_config, mock_client_class):
method test_show_with_session_id (line 154) | def test_show_with_session_id(self, mock_config, mock_client_class):
method test_show_with_conflicting_ids_fails (line 188) | def test_show_with_conflicting_ids_fails(self, mock_config, mock_clien...
class TestDefaultTimeRange (line 207) | class TestDefaultTimeRange:
method test_returns_milliseconds_timestamp (line 210) | def test_returns_milliseconds_timestamp(self):
method test_respects_days_parameter (line 221) | def test_respects_days_parameter(self):
class TestAgentConfigHelper (line 234) | class TestAgentConfigHelper:
method test_returns_none_when_no_config_file (line 238) | def test_returns_none_when_no_config_file(self, mock_load):
method test_extracts_agent_config_fields (line 249) | def test_extracts_agent_config_fields(self, mock_load):
class TestShowCommandValidation (line 271) | class TestShowCommandValidation:
method test_trace_id_with_all_flag_fails (line 276) | def test_trace_id_with_all_flag_fails(self, mock_config, mock_client_c...
method test_trace_id_with_last_flag_fails (line 290) | def test_trace_id_with_last_flag_fails(self, mock_config, mock_client_...
method test_all_and_last_together_fails (line 304) | def test_all_and_last_together_fails(self, mock_config, mock_client_cl...
method test_show_with_all_flag (line 318) | def test_show_with_all_flag(self, mock_config, mock_client_class):
method test_show_with_last_flag (line 358) | def test_show_with_last_flag(self, mock_config, mock_client_class):
method test_show_with_errors_only_flag (line 387) | def test_show_with_errors_only_flag(self, mock_config, mock_client_cla...
class TestShowCommandAutoDiscovery (line 414) | class TestShowCommandAutoDiscovery:
method test_show_without_ids_uses_config_session (line 419) | def test_show_without_ids_uses_config_session(self, mock_config, mock_...
method test_show_without_ids_fetches_latest_session (line 450) | def test_show_without_ids_fetches_latest_session(self, mock_config, mo...
method test_show_without_ids_no_sessions_found (line 482) | def test_show_without_ids_no_sessions_found(self, mock_config, mock_cl...
class TestListCommandValidation (line 497) | class TestListCommandValidation:
method test_list_with_errors_filter (line 502) | def test_list_with_errors_filter(self, mock_config, mock_client_class):
method test_list_auto_discovers_session (line 530) | def test_list_auto_discovers_session(self, mock_config, mock_client_cl...
method test_list_no_sessions_found (line 561) | def test_list_no_sessions_found(self, mock_config, mock_client_class):
class TestAgentConfigHelperErrorPaths (line 576) | class TestAgentConfigHelperErrorPaths:
method test_returns_none_when_agent_id_missing (line 580) | def test_returns_none_when_agent_id_missing(self, mock_load):
method test_returns_none_when_region_missing (line 598) | def test_returns_none_when_region_missing(self, mock_load):
method test_returns_none_on_exception (line 616) | def test_returns_none_on_exception(self, mock_load):
class TestShowCommandEmptyResults (line 631) | class TestShowCommandEmptyResults:
method test_show_trace_with_no_spans (line 636) | def test_show_trace_with_no_spans(self, mock_config, mock_client_class):
method test_show_session_with_no_spans (line 653) | def test_show_session_with_no_spans(self, mock_config, mock_client_cla...
method test_list_with_no_spans (line 670) | def test_list_with_no_spans(self, mock_config, mock_client_class):
class TestShowCommandWithOutput (line 686) | class TestShowCommandWithOutput:
method test_show_with_output_json_export (line 692) | def test_show_with_output_json_export(self, mock_path, mock_config, mo...
method test_show_output_handles_export_error (line 726) | def test_show_output_handles_export_error(self, mock_path, mock_config...
class TestShowCommandRuntimeLogErrors (line 759) | class TestShowCommandRuntimeLogErrors:
method test_show_trace_continues_when_runtime_logs_fail (line 764) | def test_show_trace_continues_when_runtime_logs_fail(self, mock_config...
method test_show_session_continues_when_runtime_logs_fail (line 795) | def test_show_session_continues_when_runtime_logs_fail(self, mock_conf...
method test_show_all_traces_continues_when_runtime_logs_fail (line 825) | def test_show_all_traces_continues_when_runtime_logs_fail(self, mock_c...
method test_list_continues_when_runtime_logs_fail (line 855) | def test_list_continues_when_runtime_logs_fail(self, mock_config, mock...
class TestShowSessionErrorFiltering (line 884) | class TestShowSessionErrorFiltering:
method test_show_session_with_errors_only_no_errors_found (line 889) | def test_show_session_with_errors_only_no_errors_found(self, mock_conf...
method test_list_with_errors_only_no_errors_found (line 920) | def test_list_with_errors_only_no_errors_found(self, mock_config, mock...
FILE: tests/cli/policy/test_commands.py
function mock_policy_client (line 15) | def mock_policy_client():
function test_create_policy_engine_basic (line 29) | def test_create_policy_engine_basic(mock_policy_client):
function test_create_policy_engine_defaults (line 60) | def test_create_policy_engine_defaults(mock_policy_client):
function test_create_policy_engine_with_encryption_key (line 70) | def test_create_policy_engine_with_encryption_key(mock_policy_client):
function test_create_policy_engine_with_tags (line 99) | def test_create_policy_engine_with_tags(mock_policy_client):
function test_create_policy_engine_with_encryption_and_tags (line 126) | def test_create_policy_engine_with_encryption_and_tags(mock_policy_client):
function test_create_policy_engine_with_invalid_tags_json (line 161) | def test_create_policy_engine_with_invalid_tags_json(mock_policy_client):
function test_get_policy_engine (line 178) | def test_get_policy_engine(mock_policy_client):
function test_update_policy_engine (line 196) | def test_update_policy_engine(mock_policy_client):
function test_list_policy_engines (line 217) | def test_list_policy_engines(mock_policy_client):
function test_list_policy_engines_empty (line 235) | def test_list_policy_engines_empty(mock_policy_client):
function test_list_policy_engines_with_pagination (line 245) | def test_list_policy_engines_with_pagination(mock_policy_client):
function test_delete_policy_engine (line 259) | def test_delete_policy_engine(mock_policy_client):
function test_policy_engine_api_error (line 271) | def test_policy_engine_api_error(mock_policy_client):
function test_create_policy_basic (line 284) | def test_create_policy_basic(mock_policy_client):
function test_create_policy_with_validation_mode (line 318) | def test_create_policy_with_validation_mode(mock_policy_client):
function test_create_policy_with_description (line 344) | def test_create_policy_with_description(mock_policy_client):
function test_create_policy_invalid_json (line 370) | def test_create_policy_invalid_json(mock_policy_client):
function test_get_policy (line 389) | def test_get_policy(mock_policy_client):
function test_update_policy (line 408) | def test_update_policy(mock_policy_client):
function test_update_policy_invalid_json (line 433) | def test_update_policy_invalid_json(mock_policy_client):
function test_list_policies (line 452) | def test_list_policies(mock_policy_client):
function test_list_policies_empty (line 469) | def test_list_policies_empty(mock_policy_client):
function test_list_policies_with_resource_scope (line 479) | def test_list_policies_with_resource_scope(mock_policy_client):
function test_list_policies_with_pagination (line 494) | def test_list_policies_with_pagination(mock_policy_client):
function test_delete_policy (line 513) | def test_delete_policy(mock_policy_client):
function test_create_policy_from_generation_basic (line 528) | def test_create_policy_from_generation_basic(mock_policy_client):
function test_create_policy_from_generation_with_description (line 563) | def test_create_policy_from_generation_with_description(mock_policy_clie...
function test_create_policy_from_generation_with_validation_mode (line 594) | def test_create_policy_from_generation_with_validation_mode(mock_policy_...
function test_create_policy_from_generation_with_all_params (line 624) | def test_create_policy_from_generation_with_all_params(mock_policy_client):
function test_policy_api_error (line 666) | def test_policy_api_error(mock_policy_client):
function test_start_policy_generation (line 678) | def test_start_policy_generation(mock_policy_client):
function test_start_policy_generation_with_region (line 713) | def test_start_policy_generation_with_region(mock_policy_client):
function test_get_policy_generation (line 740) | def test_get_policy_generation(mock_policy_client):
function test_list_policy_generation_assets (line 758) | def test_list_policy_generation_assets(mock_policy_client):
function test_list_policy_generation_assets_empty (line 782) | def test_list_policy_generation_assets_empty(mock_policy_client):
function test_list_policy_generation_assets_with_pagination (line 798) | def test_list_policy_generation_assets_with_pagination(mock_policy_client):
function test_list_policy_generations (line 829) | def test_list_policy_generations(mock_policy_client):
function test_list_policy_generations_empty (line 846) | def test_list_policy_generations_empty(mock_policy_client):
function test_list_policy_generations_with_pagination (line 856) | def test_list_policy_generations_with_pagination(mock_policy_client):
function test_policy_generation_api_error (line 883) | def test_policy_generation_api_error(mock_policy_client):
function test_create_policy_engine_with_all_optional_fields (line 897) | def test_create_policy_engine_with_all_optional_fields(mock_policy_client):
function test_get_policy_engine_with_all_timestamps (line 915) | def test_get_policy_engine_with_all_timestamps(mock_policy_client):
function test_create_policy_with_arn (line 934) | def test_create_policy_with_arn(mock_policy_client):
function test_update_policy_with_updated_at (line 963) | def test_update_policy_with_updated_at(mock_policy_client):
function test_list_policy_generation_assets_with_data (line 990) | def test_list_policy_generation_assets_with_data(mock_policy_client):
function test_all_commands_accept_region_option (line 1018) | def test_all_commands_accept_region_option(mock_policy_client):
FILE: tests/cli/runtime/test_commands.py
class TestBedrockAgentCoreCLI (line 17) | class TestBedrockAgentCoreCLI:
method setup_method (line 20) | def setup_method(self):
method test_configure_command_basic (line 24) | def test_configure_command_basic(self, tmp_path):
method test_configure_with_oauth (line 107) | def test_configure_with_oauth(self, tmp_path):
method test_configure_with_code_build_execution_role (line 217) | def test_configure_with_code_build_execution_role(self, tmp_path):
method test_configure_with_invalid_protocol (line 283) | def test_configure_with_invalid_protocol(self, tmp_path):
method test_launch_command_local (line 307) | def test_launch_command_local(self, tmp_path):
method test_configure_invalid_agent_name_special_chars (line 360) | def test_configure_invalid_agent_name_special_chars(self, tmp_path):
method test_configure_no_entrypoint (line 408) | def test_configure_no_entrypoint(self, tmp_path):
method test_configure_no_execution_role_interactive_prompt_fails (line 440) | def test_configure_no_execution_role_interactive_prompt_fails(self, tm...
method test_configure_ecr_repository_specified (line 481) | def test_configure_ecr_repository_specified(self, tmp_path):
method test_configure_json_decode_error_in_authorizer_config (line 565) | def test_configure_json_decode_error_in_authorizer_config(self, tmp_pa...
method test_launch_command_cloud (line 610) | def test_launch_command_cloud(self, tmp_path):
method test_configure_command_value_error (line 666) | def test_configure_command_value_error(self, tmp_path):
method test_configure_command_file_not_found_error (line 691) | def test_configure_command_file_not_found_error(self, tmp_path):
method test_configure_command_general_exception (line 724) | def test_configure_command_general_exception(self, tmp_path):
method test_launch_command_value_error (line 801) | def test_launch_command_value_error(self, tmp_path):
method test_launch_command_general_exception (line 839) | def test_launch_command_general_exception(self, tmp_path):
method test_invoke_command_value_error_not_deployed (line 876) | def test_invoke_command_value_error_not_deployed(self, tmp_path):
method test_invoke_command_value_error_general (line 908) | def test_invoke_command_value_error_general(self, tmp_path):
method test_invoke_command_error_with_cloudwatch_logs (line 939) | def test_invoke_command_error_with_cloudwatch_logs(self, tmp_path):
method test_invoke_command_general_exception (line 972) | def test_invoke_command_general_exception(self, tmp_path):
method test_status_command_value_error (line 1003) | def test_status_command_value_error(self, tmp_path):
method test_status_command_general_exception (line 1026) | def test_status_command_general_exception(self, tmp_path):
method test_configure_set_default_file_not_found_error (line 1049) | def test_configure_set_default_file_not_found_error(self, tmp_path):
method test_configure_set_default_value_error (line 1074) | def test_configure_set_default_value_error(self, tmp_path):
method test_configure_list_file_not_found_error (line 1105) | def test_configure_list_file_not_found_error(self, tmp_path):
method test_validate_requirements_file_error (line 1122) | def test_validate_requirements_file_error(self, tmp_path):
method test_prompt_for_requirements_file_validation_error (line 1153) | def test_prompt_for_requirements_file_validation_error(self, tmp_path):
method test_handle_requirements_file_display_none_return (line 1178) | def test_handle_requirements_file_display_none_return(self, tmp_path):
method test_prompt_for_requirements_empty_response (line 1197) | def test_prompt_for_requirements_empty_response(self, tmp_path):
method test_configure_no_agents_configured (line 1207) | def test_configure_no_agents_configured(self, tmp_path):
method test_launch_deprecated_code_build_flag (line 1230) | def test_launch_deprecated_code_build_flag(self, tmp_path):
method test_status_verbose_json_output (line 1258) | def test_status_verbose_json_output(self, tmp_path):
method test_invoke_command_basic (line 1285) | def test_invoke_command_basic(self, tmp_path):
method test_invoke_command_verbose_flag (line 1327) | def test_invoke_command_verbose_flag(self, tmp_path):
method test_invoke_command_response_parsing (line 1365) | def test_invoke_command_response_parsing(self, tmp_path):
method test_invoke_with_bearer_token_and_oauth_config (line 1432) | def test_invoke_with_bearer_token_and_oauth_config(self, tmp_path):
method test_invoke_bearer_token_without_oauth_config (line 1476) | def test_invoke_bearer_token_without_oauth_config(self, tmp_path):
method test_status_command (line 1520) | def test_status_command(self, tmp_path):
method test_error_no_config_file (line 1609) | def test_error_no_config_file(self, tmp_path):
method test_invoke_simple_text_payload (line 1626) | def test_invoke_simple_text_payload(self, tmp_path):
method test_launch_command_mutually_exclusive_options (line 1667) | def test_launch_command_mutually_exclusive_options(self):
method test_launch_command_local_build_success (line 1675) | def test_launch_command_local_build_success(self, tmp_path):
method test_launch_command_codebuild_success (line 1727) | def test_launch_command_codebuild_success(self, tmp_path):
method test_launch_help_text_updated (line 1782) | def test_launch_help_text_updated(self):
method test_launch_missing_config (line 1804) | def test_launch_missing_config(self, tmp_path):
method test_invoke_missing_config (line 1818) | def test_invoke_missing_config(self, tmp_path):
method test_status_command_missing_fields (line 1830) | def test_status_command_missing_fields(self, tmp_path):
method test_handle_requirements_file_display_with_provided_file (line 1900) | def test_handle_requirements_file_display_with_provided_file(self, tmp...
method test_handle_requirements_file_display_auto_detect_found (line 1923) | def test_handle_requirements_file_display_auto_detect_found(self, tmp_...
method test_handle_requirements_file_display_no_file_found (line 1962) | def test_handle_requirements_file_display_no_file_found(self, tmp_path):
method test_configure_oauth (line 1993) | def test_configure_oauth(self, tmp_path):
method test_configure_oauth_with_existing_values (line 2044) | def test_configure_oauth_with_existing_values(self, tmp_path):
method test_configure_oauth_no_discovery_url_error (line 2120) | def test_configure_oauth_no_discovery_url_error(self, tmp_path):
method test_configure_oauth_no_client_or_audience_error (line 2149) | def test_configure_oauth_no_client_or_audience_error(self, tmp_path):
method test_configure_list_agents_success (line 2175) | def test_configure_list_agents_success(self, tmp_path):
method test_configure_set_default_success (line 2233) | def test_configure_set_default_success(self, tmp_path):
method test_validate_requirements_file_success (line 2269) | def test_validate_requirements_file_success(self, tmp_path):
method test_prompt_for_requirements_file_success (line 2300) | def test_prompt_for_requirements_file_success(self, tmp_path):
method test_launch_command_with_env_vars (line 2328) | def test_launch_command_with_env_vars(self, tmp_path):
method test_invoke_with_oauth_and_env_bearer_token (line 2393) | def test_invoke_with_oauth_and_env_bearer_token(self, tmp_path):
method test_launch_command_cloud_success (line 2426) | def test_launch_command_cloud_success(self, tmp_path):
method test_status_command_missing_agent (line 2483) | def test_status_command_missing_agent(self, tmp_path):
method test_status_command_no_agents_in_config (line 2504) | def test_status_command_no_agents_in_config(self, tmp_path):
method test_status_command_log_info_failure (line 2525) | def test_status_command_log_info_failure(self, tmp_path):
method test_status_command_malformed_response (line 2578) | def test_status_command_malformed_response(self, tmp_path):
method test_status_command_with_specific_agent (line 2613) | def test_status_command_with_specific_agent(self, tmp_path):
method test_status_command_endpoint_missing_optional_fields (line 2654) | def test_status_command_endpoint_missing_optional_fields(self, tmp_path):
method test_invoke_command_unicode_payload (line 2698) | def test_invoke_command_unicode_payload(self, tmp_path):
method test_invoke_command_unicode_response (line 2754) | def test_invoke_command_unicode_response(self, tmp_path):
method test_invoke_command_mixed_unicode_ascii (line 2809) | def test_invoke_command_mixed_unicode_ascii(self, tmp_path):
method test_destroy_command_dry_run (line 2869) | def test_destroy_command_dry_run(self, tmp_path):
method test_destroy_command_force (line 2930) | def test_destroy_command_force(self, tmp_path):
method test_destroy_command_undeployed_agent (line 2994) | def test_destroy_command_undeployed_agent(self, tmp_path):
method test_destroy_command_specific_agent (line 3028) | def test_destroy_command_specific_agent(self, tmp_path):
method test_destroy_command_nonexistent_agent (line 3090) | def test_destroy_command_nonexistent_agent(self, tmp_path):
method test_destroy_command_no_config (line 3124) | def test_destroy_command_no_config(self, tmp_path):
method test_parse_custom_headers_valid_single_header (line 3138) | def test_parse_custom_headers_valid_single_header(self):
method test_parse_custom_headers_valid_multiple_headers (line 3147) | def test_parse_custom_headers_valid_multiple_headers(self):
method test_parse_custom_headers_already_prefixed (line 3160) | def test_parse_custom_headers_already_prefixed(self):
method test_parse_custom_headers_with_spaces_and_special_chars (line 3172) | def test_parse_custom_headers_with_spaces_and_special_chars(self):
method test_parse_custom_headers_empty_string (line 3184) | def test_parse_custom_headers_empty_string(self):
method test_parse_custom_headers_invalid_format_no_colon (line 3194) | def test_parse_custom_headers_invalid_format_no_colon(self):
method test_parse_custom_headers_invalid_format_empty_name (line 3201) | def test_parse_custom_headers_invalid_format_empty_name(self):
method test_parse_custom_headers_mixed_valid_invalid (line 3208) | def test_parse_custom_headers_mixed_valid_invalid(self):
method test_invoke_with_custom_headers_success (line 3217) | def test_invoke_with_custom_headers_success(self, tmp_path):
method test_invoke_with_custom_headers_and_bearer_token (line 3266) | def test_invoke_with_custom_headers_and_bearer_token(self, tmp_path):
method test_invoke_with_custom_headers_and_session_id (line 3305) | def test_invoke_with_custom_headers_and_session_id(self, tmp_path):
method test_invoke_with_invalid_headers_format (line 3363) | def test_invoke_with_invalid_headers_format(self, tmp_path):
method test_invoke_with_empty_headers (line 3390) | def test_invoke_with_empty_headers(self, tmp_path):
method test_invoke_with_headers_local_mode (line 3432) | def test_invoke_with_headers_local_mode(self, tmp_path):
method test_configure_with_vpc_flags (line 3481) | def test_configure_with_vpc_flags(self, tmp_path):
method test_deploy_with_custom_image_tag (line 3570) | def test_deploy_with_custom_image_tag(self, tmp_path):
method test_deploy_without_image_tag (line 3612) | def test_deploy_without_image_tag(self, tmp_path):
class TestCommandsAdditionalCoverage (line 3654) | class TestCommandsAdditionalCoverage:
method setup_method (line 3657) | def setup_method(self):
method test_configure_idle_timeout_greater_than_max_lifetime_error (line 3663) | def test_configure_idle_timeout_greater_than_max_lifetime_error(self, ...
method test_configure_with_request_header_allowlist_flag (line 3703) | def test_configure_with_request_header_allowlist_flag(self, tmp_path):
method test_configure_vpc_without_flag_but_with_resources_error (line 3779) | def test_configure_vpc_without_flag_but_with_resources_error(self, tmp...
method test_configure_vpc_invalid_subnet_format (line 3814) | def test_configure_vpc_invalid_subnet_format(self, tmp_path):
method test_configure_vpc_invalid_security_group_format (line 3852) | def test_configure_vpc_invalid_security_group_format(self, tmp_path):
method test_status_displays_vpc_info (line 3890) | def test_status_displays_vpc_info(self, tmp_path):
method test_configure_with_disable_memory_flag (line 3952) | def test_configure_with_disable_memory_flag(self, tmp_path):
method test_stop_session_command_success (line 4025) | def test_stop_session_command_success(self, tmp_path):
method test_stop_session_command_no_session_id_error (line 4074) | def test_stop_session_command_no_session_id_error(self, tmp_path):
method test_stop_session_command_value_error (line 4107) | def test_stop_session_command_value_error(self, tmp_path):
method test_stop_session_command_no_config (line 4134) | def test_stop_session_command_no_config(self, tmp_path):
method test_status_command_with_memory_creating_state (line 4149) | def test_status_command_with_memory_creating_state(self, tmp_path):
method test_status_command_with_lifecycle_settings (line 4216) | def test_status_command_with_lifecycle_settings(self, tmp_path):
method test_status_displays_public_network_info (line 4284) | def test_status_displays_public_network_info(self, tmp_path):
method test_status_command_not_deployed (line 4348) | def test_status_command_not_deployed(self, tmp_path):
method test_destroy_command_with_errors (line 4393) | def test_destroy_command_with_errors(self, tmp_path):
method test_destroy_command_runtime_error (line 4445) | def test_destroy_command_runtime_error(self, tmp_path):
method test_destroy_command_with_delete_ecr_repo_flag (line 4486) | def test_destroy_command_with_delete_ecr_repo_flag(self, tmp_path):
method test_launch_command_auto_update_on_conflict_flag (line 4542) | def test_launch_command_auto_update_on_conflict_flag(self, tmp_path):
method test_launch_command_invalid_env_var_format (line 4584) | def test_launch_command_invalid_env_var_format(self, tmp_path):
method test_invoke_dev_mode_basic (line 4622) | def test_invoke_dev_mode_basic(self):
method test_invoke_dev_mode_with_session_id (line 4652) | def test_invoke_dev_mode_with_session_id(self):
method test_invoke_dev_mode_connection_error (line 4673) | def test_invoke_dev_mode_connection_error(self):
FILE: tests/cli/runtime/test_configuration_manager.py
class TestConfigurationManager (line 10) | class TestConfigurationManager:
method test_prompt_execution_role_with_user_input (line 13) | def test_prompt_execution_role_with_user_input(self, tmp_path):
method test_prompt_execution_role_with_existing_config (line 36) | def test_prompt_execution_role_with_existing_config(self, tmp_path):
method test_prompt_execution_role_existing_config_overridden (line 69) | def test_prompt_execution_role_existing_config_overridden(self, tmp_pa...
method test_prompt_request_header_allowlist_no_configuration (line 102) | def test_prompt_request_header_allowlist_no_configuration(self, tmp_pa...
method test_prompt_request_header_allowlist_with_configuration (line 123) | def test_prompt_request_header_allowlist_with_configuration(self, tmp_...
method test_prompt_request_header_allowlist_with_existing_config (line 147) | def test_prompt_request_header_allowlist_with_existing_config(self, tm...
method test_prompt_request_header_allowlist_non_interactive (line 183) | def test_prompt_request_header_allowlist_non_interactive(self, tmp_path):
method test_configure_request_header_allowlist_basic (line 196) | def test_configure_request_header_allowlist_basic(self, tmp_path):
method test_configure_request_header_allowlist_with_existing_headers (line 217) | def test_configure_request_header_allowlist_with_existing_headers(self...
method test_configure_request_header_allowlist_with_whitespace (line 241) | def test_configure_request_header_allowlist_with_whitespace(self, tmp_...
method test_configure_request_header_allowlist_empty_input_error (line 261) | def test_configure_request_header_allowlist_empty_input_error(self, tm...
method test_configure_request_header_allowlist_only_commas_error (line 288) | def test_configure_request_header_allowlist_only_commas_error(self, tm...
method test_configure_request_header_allowlist_default_headers (line 313) | def test_configure_request_header_allowlist_default_headers(self, tmp_...
method test_prompt_memory_selection_create_new_stm_only (line 336) | def test_prompt_memory_selection_create_new_stm_only(self, tmp_path):
method test_prompt_memory_selection_create_new_stm_and_ltm (line 360) | def test_prompt_memory_selection_create_new_stm_and_ltm(self, tmp_path):
method test_init_with_non_interactive_mode (line 385) | def test_init_with_non_interactive_mode(self, tmp_path):
method test_prompt_execution_role_non_interactive (line 392) | def test_prompt_execution_role_non_interactive(self, tmp_path):
method test_prompt_ecr_repository_non_interactive (line 404) | def test_prompt_ecr_repository_non_interactive(self, tmp_path):
method test_prompt_ecr_repository_with_user_input (line 417) | def test_prompt_ecr_repository_with_user_input(self, tmp_path):
method test_prompt_oauth_config_non_interactive (line 441) | def test_prompt_oauth_config_non_interactive(self, tmp_path):
method test_prompt_oauth_config_with_no (line 453) | def test_prompt_oauth_config_with_no(self, tmp_path):
method test_configure_oauth_basic (line 474) | def test_configure_oauth_basic(self, tmp_path):
method test_prompt_memory_type_yes_both (line 519) | def test_prompt_memory_type_yes_both(self, tmp_path):
method test_prompt_memory_type_yes_stm_only (line 541) | def test_prompt_memory_type_yes_stm_only(self, tmp_path):
method test_prompt_memory_type_no (line 563) | def test_prompt_memory_type_no(self, tmp_path):
method test_prompt_memory_selection_with_existing_memories (line 585) | def test_prompt_memory_selection_with_existing_memories(self, tmp_path):
method test_prompt_memory_selection_skip_option (line 620) | def test_prompt_memory_selection_skip_option(self, tmp_path):
FILE: tests/cli/runtime/test_configure_impl.py
class TestConfigureImplExistingCreateAgent (line 20) | class TestConfigureImplExistingCreateAgent:
method test_detects_existing_create_flow_agent (line 23) | def test_detects_existing_create_flow_agent(
method test_existing_create_agent_skips_entrypoint_prompt (line 107) | def test_existing_create_agent_skips_entrypoint_prompt(
method test_existing_create_agent_blocks_deployment_type_change (line 188) | def test_existing_create_agent_blocks_deployment_type_change(
class TestConfigureImplVPCValidation (line 265) | class TestConfigureImplVPCValidation:
method test_vpc_requires_subnets_and_security_groups (line 268) | def test_vpc_requires_subnets_and_security_groups(self, tmp_path):
method test_vpc_validates_subnet_format (line 290) | def test_vpc_validates_subnet_format(self, tmp_path):
method test_vpc_validates_security_group_format (line 312) | def test_vpc_validates_security_group_format(self, tmp_path):
class TestConfigureImplProtocolValidation (line 335) | class TestConfigureImplProtocolValidation:
method test_invalid_protocol_rejected (line 338) | def test_invalid_protocol_rejected(self, tmp_path):
class TestConfigureImplLifecycleValidation (line 359) | class TestConfigureImplLifecycleValidation:
method test_idle_timeout_must_be_less_than_max_lifetime (line 362) | def test_idle_timeout_must_be_less_than_max_lifetime(self, tmp_path):
class TestConfigureImplAuthorizerConfig (line 384) | class TestConfigureImplAuthorizerConfig:
method test_invalid_authorizer_json_rejected (line 387) | def test_invalid_authorizer_json_rejected(self, tmp_path, mock_boto3_c...
class TestConfigureImplRequestHeaderAllowlist (line 410) | class TestConfigureImplRequestHeaderAllowlist:
method test_empty_request_header_allowlist_uses_default (line 413) | def test_empty_request_header_allowlist_uses_default(
class TestConfigureImplIACProjectBlocking (line 482) | class TestConfigureImplIACProjectBlocking:
method test_blocks_iac_created_projects (line 485) | def test_blocks_iac_created_projects(self, tmp_path, mock_boto3_clients):
class TestConfigureImplBasicFlow (line 522) | class TestConfigureImplBasicFlow:
method test_configure_with_basic_options (line 525) | def test_configure_with_basic_options(
method test_configure_with_memory_disabled (line 587) | def test_configure_with_memory_disabled(
method test_configure_with_request_headers (line 656) | def test_configure_with_request_headers(
method test_configure_with_oauth_authorizer (line 727) | def test_configure_with_oauth_authorizer(
class TestConfigureImplDeploymentType (line 806) | class TestConfigureImplDeploymentType:
method test_configure_with_direct_code_deploy (line 809) | def test_configure_with_direct_code_deploy(
method test_configure_with_invalid_deployment_type (line 880) | def test_configure_with_invalid_deployment_type(self, tmp_path, mock_b...
class TestConfigureImplCreateMode (line 903) | class TestConfigureImplCreateMode:
method test_create_mode_uses_container_deployment (line 906) | def test_create_mode_uses_container_deployment(
class TestConfigureImplSuccessPanelNoDuplicateECR (line 969) | class TestConfigureImplSuccessPanelNoDuplicateECR:
method test_ecr_repository_appears_once_in_container_success_panel (line 972) | def test_ecr_repository_appears_once_in_container_success_panel(
method test_no_ecr_repository_in_direct_code_deploy_success_panel (line 1051) | def test_no_ecr_repository_in_direct_code_deploy_success_panel(
FILE: tests/cli/runtime/test_dev_command.py
class TestGetModulePathAndAgentName (line 27) | class TestGetModulePathAndAgentName:
method test_no_config_no_default_entrypoint_fails (line 30) | def test_no_config_no_default_entrypoint_fails(self, tmp_path):
method test_with_valid_config (line 37) | def test_with_valid_config(self, tmp_path):
method test_with_default_entrypoint_no_config (line 69) | def test_with_default_entrypoint_no_config(self, tmp_path):
method test_config_without_entrypoint (line 89) | def test_config_without_entrypoint(self, tmp_path):
method test_config_load_error_with_default_entrypoint (line 117) | def test_config_load_error_with_default_entrypoint(self, tmp_path):
method test_config_load_error_without_default_entrypoint (line 139) | def test_config_load_error_without_default_entrypoint(self, tmp_path):
class TestGetModulePathFromConfig (line 155) | class TestGetModulePathFromConfig:
method test_file_entrypoint (line 158) | def test_file_entrypoint(self, tmp_path):
method test_directory_entrypoint (line 174) | def test_directory_entrypoint(self, tmp_path):
method test_nested_entrypoint (line 189) | def test_nested_entrypoint(self, tmp_path):
method test_absolute_path_outside_project (line 205) | def test_absolute_path_outside_project(self, tmp_path):
class TestSetupDevEnvironment (line 216) | class TestSetupDevEnvironment:
method test_no_envs_default_port (line 219) | def test_no_envs_default_port(self, tmp_path):
method test_custom_port (line 232) | def test_custom_port(self, tmp_path):
method test_port_in_use_fallback (line 244) | def test_port_in_use_fallback(self, tmp_path):
method test_custom_env_vars (line 256) | def test_custom_env_vars(self, tmp_path):
method test_invalid_env_var_format (line 268) | def test_invalid_env_var_format(self, tmp_path):
method test_port_from_env_var_string (line 274) | def test_port_from_env_var_string(self, tmp_path):
method test_user_env_vars_override_config_env_vars (line 285) | def test_user_env_vars_override_config_env_vars(self, tmp_path):
method test_user_env_vars_partial_override (line 307) | def test_user_env_vars_partial_override(self, tmp_path):
class TestFindAvailablePort (line 327) | class TestFindAvailablePort:
method test_first_port_available (line 330) | def test_first_port_available(self):
method test_first_port_in_use (line 339) | def test_first_port_in_use(self):
method test_no_available_port (line 357) | def test_no_available_port(self):
class TestCleanupProcess (line 368) | class TestCleanupProcess:
method test_cleanup_none_process (line 371) | def test_cleanup_none_process(self):
method test_cleanup_terminates_process (line 376) | def test_cleanup_terminates_process(self):
method test_cleanup_kills_on_timeout (line 386) | def test_cleanup_kills_on_timeout(self):
class TestDevCommand (line 397) | class TestDevCommand:
method test_dev_starts_server (line 400) | def test_dev_starts_server(self, tmp_path):
method test_dev_handles_keyboard_interrupt (line 452) | def test_dev_handles_keyboard_interrupt(self, tmp_path):
method test_dev_handles_exception (line 499) | def test_dev_handles_exception(self, tmp_path):
method test_dev_with_custom_port (line 547) | def test_dev_with_custom_port(self, tmp_path):
method test_dev_with_env_vars (line 595) | def test_dev_with_env_vars(self, tmp_path):
class TestTypeScriptHelpers (line 646) | class TestTypeScriptHelpers:
method test_get_language_from_config (line 649) | def test_get_language_from_config(self, tmp_path):
method test_get_language_no_config (line 670) | def test_get_language_no_config(self, tmp_path):
method test_has_dev_script_true (line 688) | def test_has_dev_script_true(self, tmp_path):
method test_has_dev_script_false (line 698) | def test_has_dev_script_false(self, tmp_path):
method test_has_dev_script_no_package_json (line 708) | def test_has_dev_script_no_package_json(self, tmp_path):
method test_build_typescript_command_with_dev_script (line 715) | def test_build_typescript_command_with_dev_script(self, tmp_path):
method test_build_typescript_command_fallback (line 731) | def test_build_typescript_command_fallback(self, tmp_path):
method test_build_typescript_command_with_config_entrypoint (line 745) | def test_build_typescript_command_with_config_entrypoint(self, tmp_path):
FILE: tests/cli/runtime/test_dev_command_additions.py
class TestGetEnvVars (line 22) | class TestGetEnvVars:
method test_no_config_file_returns_empty (line 25) | def test_no_config_file_returns_empty(self, tmp_path):
method test_config_with_memory_id_and_region (line 34) | def test_config_with_memory_id_and_region(self, tmp_path):
method test_config_with_only_aws_region (line 58) | def test_config_with_only_aws_region(self, tmp_path):
method test_config_with_only_memory_id (line 79) | def test_config_with_only_memory_id(self, tmp_path):
method test_config_without_memory_or_region (line 103) | def test_config_without_memory_or_region(self, tmp_path):
method test_invalid_config_returns_empty_with_warning (line 123) | def test_invalid_config_returns_empty_with_warning(self, tmp_path):
method test_config_load_exception_handling (line 136) | def test_config_load_exception_handling(self, tmp_path):
class TestEnsureConfig (line 149) | class TestEnsureConfig:
method test_both_config_and_entrypoint_exist (line 152) | def test_both_config_and_entrypoint_exist(self, tmp_path):
method test_only_config_exists (line 171) | def test_only_config_exists(self, tmp_path):
method test_only_entrypoint_exists (line 186) | def test_only_entrypoint_exists(self, tmp_path):
method test_neither_exists_raises_error (line 205) | def test_neither_exists_raises_error(self, tmp_path):
class TestEdgeCases (line 219) | class TestEdgeCases:
method test_config_with_empty_memory_id (line 222) | def test_config_with_empty_memory_id(self, tmp_path):
method test_config_with_empty_region (line 246) | def test_config_with_empty_region(self, tmp_path):
method test_config_without_memory_config (line 267) | def test_config_without_memory_config(self, tmp_path):
FILE: tests/cli/test_cli_ui.py
class TestOptionState (line 19) | class TestOptionState:
method test_init_and_properties (line 22) | def test_init_and_properties(self):
method test_empty_init (line 33) | def test_empty_init(self):
class TestFragments (line 40) | class TestFragments:
method test_build_option_fragments_normal (line 43) | def test_build_option_fragments_normal(self):
method test_build_option_fragments_finalized (line 65) | def test_build_option_fragments_finalized(self):
class TestInteractiveComponents (line 79) | class TestInteractiveComponents:
method mock_key_bindings (line 83) | def mock_key_bindings(self):
method test_select_one_navigation (line 102) | def test_select_one_navigation(self, mock_app_cls, mock_key_bindings):
method test_ask_text_simple (line 161) | def test_ask_text_simple(
method test_ask_text_validation_success (line 187) | def test_ask_text_validation_success(
method test_ask_text_validation_fail (line 217) | def test_ask_text_validation_fail(
class TestOutputHelpers (line 243) | class TestOutputHelpers:
method test_intro_animate_once (line 248) | def test_intro_animate_once(self, mock_sleep, mock_console):
method test_sandwich_text_ui (line 255) | def test_sandwich_text_ui(self, mock_sleep, mock_console):
method test_show_invalid_aws_creds (line 270) | def test_show_invalid_aws_creds(self, mock_sandwich):
method test_show_invalid_aws_creds_with_header (line 284) | def test_show_invalid_aws_creds_with_header(self, mock_sandwich):
FILE: tests/cli/test_common.py
class TestCLICommon (line 7) | class TestCLICommon:
method test_prompt_with_default_with_input (line 8) | def test_prompt_with_default_with_input(self):
method test_prompt_with_default_empty_input (line 16) | def test_prompt_with_default_empty_input(self):
method test_print_success (line 25) | def test_print_success(self, mock_console):
method test_assert_valid_aws_creds_or_exit_failure (line 32) | def test_assert_valid_aws_creds_or_exit_failure(self):
FILE: tests/client/test_evaluation_client.py
class TestInitialization (line 20) | class TestInitialization:
method test_init_with_region (line 23) | def test_init_with_region(self):
method test_init_without_region (line 33) | def test_init_without_region(self, mock_session):
method test_init_defaults_to_us_east_1 (line 44) | def test_init_defaults_to_us_east_1(self, mock_session):
method test_init_with_endpoint_url (line 54) | def test_init_with_endpoint_url(self):
class TestFromConfig (line 67) | class TestFromConfig:
method test_from_config_returns_tuple (line 71) | def test_from_config_returns_tuple(self, mock_load_config, tmp_path):
method test_from_config_no_file (line 95) | def test_from_config_no_file(self, mock_load_config, tmp_path):
class TestGetLatestSession (line 109) | class TestGetLatestSession:
method test_get_latest_session_requires_agent_id (line 113) | def test_get_latest_session_requires_agent_id(self, mock_init):
method test_get_latest_session_success (line 124) | def test_get_latest_session_success(self, mock_init):
method test_get_latest_session_no_sessions (line 140) | def test_get_latest_session_no_sessions(self, mock_init):
method test_get_latest_session_error_handling (line 156) | def test_get_latest_session_error_handling(self, mock_init):
class TestRun (line 176) | class TestRun:
method test_run_requires_agent_id (line 180) | def test_run_requires_agent_id(self, mock_init):
method test_run_with_session_id (line 190) | def test_run_with_session_id(self, mock_init):
method test_run_auto_fetch_session (line 212) | def test_run_auto_fetch_session(self, mock_init):
method test_run_fails_when_no_session_found (line 237) | def test_run_fails_when_no_session_found(self, mock_init):
class TestEvaluatorManagement (line 253) | class TestEvaluatorManagement:
method test_list_evaluators (line 256) | def test_list_evaluators(self):
method test_get_evaluator (line 268) | def test_get_evaluator(self):
method test_create_evaluator (line 281) | def test_create_evaluator(self, mock_processor):
method test_duplicate_evaluator (line 296) | def test_duplicate_evaluator(self, mock_processor):
method test_update_evaluator (line 310) | def test_update_evaluator(self, mock_processor):
method test_delete_evaluator (line 321) | def test_delete_evaluator(self, mock_processor):
class TestOnlineEvaluation (line 336) | class TestOnlineEvaluation:
method test_create_online_config (line 340) | def test_create_online_config(self, mock_processor):
method test_create_online_config_requires_agent_id (line 354) | def test_create_online_config_requires_agent_id(self, mock_processor):
method test_get_online_config (line 362) | def test_get_online_config(self, mock_processor):
method test_list_online_configs (line 373) | def test_list_online_configs(self, mock_processor):
method test_update_online_config (line 384) | def test_update_online_config(self, mock_processor):
method test_delete_online_config (line 395) | def test_delete_online_config(self, mock_processor):
FILE: tests/client/test_memory.py
class TestResolveMemoryConfig (line 10) | class TestResolveMemoryConfig:
method test_resolve_with_memory_id (line 16) | def test_resolve_with_memory_id(self, mock_get_config, mock_session, m...
method test_resolve_from_config (line 29) | def test_resolve_from_config(self, mock_get_config, mock_session, mock...
method test_resolve_region_from_session (line 43) | def test_resolve_region_from_session(self, mock_get_config, mock_sessi...
method test_resolve_no_memory_id_raises (line 59) | def test_resolve_no_memory_id_raises(self, mock_get_config, mock_sessi...
method test_resolve_config_without_region (line 71) | def test_resolve_config_without_region(self, mock_get_config, mock_ses...
method test_resolve_config_with_region_already_set (line 88) | def test_resolve_config_with_region_already_set(self, mock_get_config,...
class TestMemoryInit (line 100) | class TestMemoryInit:
method test_init_with_memory_id (line 104) | def test_init_with_memory_id(self, mock_resolve):
method test_init_with_agent_name (line 118) | def test_init_with_agent_name(self, mock_resolve):
class TestMemoryShow (line 130) | class TestMemoryShow:
method test_show_returns_memory_data (line 134) | def test_show_returns_memory_data(self, mock_resolve):
method test_show_with_data_attribute (line 153) | def test_show_with_data_attribute(self, mock_resolve):
class TestMemoryShowEvents (line 172) | class TestMemoryShowEvents:
method test_show_events_default_returns_latest (line 177) | def test_show_events_default_returns_latest(self, mock_collect, mock_r...
method test_show_events_no_events (line 198) | def test_show_events_no_events(self, mock_collect, mock_resolve):
method test_show_events_last_exceeds_count (line 213) | def test_show_events_last_exceeds_count(self, mock_collect, mock_resol...
method test_show_events_list_actors (line 229) | def test_show_events_list_actors(self, mock_resolve):
method test_show_events_list_sessions (line 244) | def test_show_events_list_sessions(self, mock_resolve):
method test_show_events_list_sessions_requires_actor (line 259) | def test_show_events_list_sessions_requires_actor(self, mock_resolve):
method test_show_events_all (line 272) | def test_show_events_all(self, mock_collect, mock_resolve):
class TestMemoryShowRecords (line 289) | class TestMemoryShowRecords:
method test_show_records_default_returns_latest (line 294) | def test_show_records_default_returns_latest(self, mock_collect, mock_...
method test_show_records_no_records (line 315) | def test_show_records_no_records(self, mock_collect, mock_resolve):
method test_show_records_last_exceeds_count (line 330) | def test_show_records_last_exceeds_count(self, mock_collect, mock_reso...
method test_show_records_all (line 347) | def test_show_records_all(self, mock_collect, mock_resolve):
method test_show_records_all_with_namespace_raises (line 364) | def test_show_records_all_with_namespace_raises(self, mock_resolve):
method test_show_records_namespace_only (line 376) | def test_show_records_namespace_only(self, mock_resolve):
method test_show_records_query_requires_namespace (line 394) | def test_show_records_query_requires_namespace(self, mock_resolve):
method test_show_records_with_query (line 406) | def test_show_records_with_query(self, mock_resolve):
method test_show_records_query_no_results (line 424) | def test_show_records_query_no_results(self, mock_resolve):
FILE: tests/client/test_observability.py
class TestObservabilityInit (line 11) | class TestObservabilityInit:
method test_init_with_agent_id (line 15) | def test_init_with_agent_id(self, mock_create):
method test_init_with_agent_name (line 32) | def test_init_with_agent_name(self, mock_create):
method test_init_creates_visualizer (line 46) | def test_init_creates_visualizer(self, mock_create):
class TestObservabilityList (line 58) | class TestObservabilityList:
method test_list_with_session_id (line 63) | def test_list_with_session_id(self, mock_display, mock_create):
method test_list_auto_discovers_session (line 93) | def test_list_auto_discovers_session(self, mock_create):
method test_list_no_sessions_found (line 109) | def test_list_no_sessions_found(self, mock_create):
method test_list_filters_errors (line 125) | def test_list_filters_errors(self, mock_display, mock_create):
class TestObservabilityShow (line 151) | class TestObservabilityShow:
method test_show_with_trace_id (line 156) | def test_show_with_trace_id(self, mock_show_trace, mock_create):
method test_show_with_session_all (line 184) | def test_show_with_session_all(self, mock_show_session, mock_create):
method test_show_validation_both_ids (line 210) | def test_show_validation_both_ids(self, mock_create):
method test_show_validation_trace_with_all (line 222) | def test_show_validation_trace_with_all(self, mock_create):
method test_show_validation_all_with_last (line 234) | def test_show_validation_all_with_last(self, mock_create):
method test_show_with_last_flag (line 247) | def test_show_with_last_flag(self, mock_show_session, mock_create):
FILE: tests/conftest.py
function mock_boto3_clients (line 22) | def mock_boto3_clients(monkeypatch):
function mock_subprocess (line 108) | def mock_subprocess(monkeypatch):
function mock_bedrock_agentcore_app (line 126) | def mock_bedrock_agentcore_app():
function no_sleep (line 138) | def no_sleep(monkeypatch):
function mock_container_runtime (line 144) | def mock_container_runtime(monkeypatch):
function sample_project_context (line 173) | def sample_project_context(tmp_path):
function sample_agent_config (line 209) | def sample_agent_config():
function temp_source_structure (line 234) | def temp_source_structure(tmp_path):
FILE: tests/create/features/test_iac_features.py
function create_monorepo_context (line 17) | def create_monorepo_context(tmp_path, iac_provider):
class TestCDKFeature (line 54) | class TestCDKFeature:
method test_feature_dir_name (line 57) | def test_feature_dir_name(self):
method test_render_common_dir_enabled (line 61) | def test_render_common_dir_enabled(self):
method test_before_apply_creates_cdk_directory (line 65) | def test_before_apply_creates_cdk_directory(self, tmp_path):
method test_before_apply_sets_iac_dir_on_context (line 76) | def test_before_apply_sets_iac_dir_on_context(self, tmp_path):
method test_before_apply_fails_if_dir_exists (line 87) | def test_before_apply_fails_if_dir_exists(self, tmp_path):
class TestTerraformFeature (line 99) | class TestTerraformFeature:
method test_feature_dir_name (line 102) | def test_feature_dir_name(self):
method test_before_apply_creates_terraform_directory (line 106) | def test_before_apply_creates_terraform_directory(self, tmp_path):
method test_before_apply_sets_iac_dir_on_context (line 117) | def test_before_apply_sets_iac_dir_on_context(self, tmp_path):
method test_before_apply_fails_if_dir_exists (line 128) | def test_before_apply_fails_if_dir_exists(self, tmp_path):
FILE: tests/create/features/test_sdk_features.py
function create_context (line 19) | def create_context(tmp_path, sdk_provider, model_provider, template_dir_...
class TestStrandsFeature (line 43) | class TestStrandsFeature:
method test_feature_dir_name (line 46) | def test_feature_dir_name(self):
method test_monorepo_dependencies (line 50) | def test_monorepo_dependencies(self, tmp_path):
method test_runtime_only_bedrock_dependencies (line 59) | def test_runtime_only_bedrock_dependencies(self, tmp_path):
method test_runtime_only_openai_dependencies (line 69) | def test_runtime_only_openai_dependencies(self, tmp_path):
method test_runtime_only_anthropic_dependencies (line 79) | def test_runtime_only_anthropic_dependencies(self, tmp_path):
method test_runtime_only_gemini_dependencies (line 89) | def test_runtime_only_gemini_dependencies(self, tmp_path):
class TestCrewAIFeature (line 100) | class TestCrewAIFeature:
method test_feature_dir_name (line 103) | def test_feature_dir_name(self):
method test_monorepo_dependencies (line 107) | def test_monorepo_dependencies(self, tmp_path):
method test_runtime_only_bedrock_dependencies (line 117) | def test_runtime_only_bedrock_dependencies(self, tmp_path):
method test_runtime_only_openai_dependencies (line 127) | def test_runtime_only_openai_dependencies(self, tmp_path):
method test_runtime_only_anthropic_dependencies (line 137) | def test_runtime_only_anthropic_dependencies(self, tmp_path):
method test_runtime_only_gemini_dependencies (line 147) | def test_runtime_only_gemini_dependencies(self, tmp_path):
class TestLangChainLangGraphFeature (line 158) | class TestLangChainLangGraphFeature:
method test_feature_dir_name (line 161) | def test_feature_dir_name(self):
method test_monorepo_dependencies (line 165) | def test_monorepo_dependencies(self, tmp_path):
method test_runtime_only_bedrock_dependencies (line 177) | def test_runtime_only_bedrock_dependencies(self, tmp_path):
method test_runtime_only_openai_dependencies (line 188) | def test_runtime_only_openai_dependencies(self, tmp_path):
method test_runtime_only_anthropic_dependencies (line 199) | def test_runtime_only_anthropic_dependencies(self, tmp_path):
method test_runtime_only_gemini_dependencies (line 210) | def test_runtime_only_gemini_dependencies(self, tmp_path):
class TestOpenAIAgentsFeature (line 222) | class TestOpenAIAgentsFeature:
method test_feature_dir_name (line 225) | def test_feature_dir_name(self):
method test_default_dependencies (line 229) | def test_default_dependencies(self):
method test_runtime_only_sets_model_provider_name (line 233) | def test_runtime_only_sets_model_provider_name(self, tmp_path):
method test_monorepo_no_model_provider_name (line 244) | def test_monorepo_no_model_provider_name(self, tmp_path):
class TestGoogleADKFeature (line 253) | class TestGoogleADKFeature:
method test_feature_dir_name (line 256) | def test_feature_dir_name(self):
method test_default_dependencies (line 260) | def test_default_dependencies(self):
method test_runtime_only_sets_model_provider_name (line 264) | def test_runtime_only_sets_model_provider_name(self, tmp_path):
method test_monorepo_no_model_provider_name (line 273) | def test_monorepo_no_model_provider_name(self, tmp_path):
class TestAutogenFeature (line 282) | class TestAutogenFeature:
method test_feature_dir_name (line 285) | def test_feature_dir_name(self):
method test_monorepo_dependencies (line 289) | def test_monorepo_dependencies(self, tmp_path):
method test_runtime_only_bedrock_dependencies (line 299) | def test_runtime_only_bedrock_dependencies(self, tmp_path):
method test_runtime_only_openai_dependencies (line 309) | def test_runtime_only_openai_dependencies(self, tmp_path):
method test_runtime_only_anthropic_dependencies (line 319) | def test_runtime_only_anthropic_dependencies(self, tmp_path):
method test_runtime_only_gemini_dependencies (line 329) | def test_runtime_only_gemini_dependencies(self, tmp_path):
FILE: tests/create/test_baseline_feature.py
class TestBaselineFeature (line 13) | class TestBaselineFeature:
method _create_context (line 16) | def _create_context(self, tmp_path, template_dir_selection, model_prov...
method test_monorepo_dependencies (line 38) | def test_monorepo_dependencies(self, tmp_path):
method test_runtime_only_dependencies (line 51) | def test_runtime_only_dependencies(self, tmp_path):
method test_before_apply_does_not_add_dotenv_for_monorepo (line 65) | def test_before_apply_does_not_add_dotenv_for_monorepo(self, tmp_path):
method test_before_apply_no_dotenv_for_bedrock (line 78) | def test_before_apply_no_dotenv_for_bedrock(self, tmp_path):
method test_before_apply_adds_dotenv_for_anthropic_runtime (line 92) | def test_before_apply_adds_dotenv_for_anthropic_runtime(self, tmp_path):
method test_template_override_dir_is_set (line 100) | def test_template_override_dir_is_set(self, tmp_path):
method test_after_apply_does_nothing (line 108) | def test_after_apply_does_nothing(self, tmp_path):
FILE: tests/create/test_constants.py
class TestTemplateDirSelection (line 15) | class TestTemplateDirSelection:
method test_monorepo_value (line 18) | def test_monorepo_value(self):
method test_common_value (line 22) | def test_common_value(self):
method test_runtime_only_value (line 26) | def test_runtime_only_value(self):
class TestDeploymentType (line 31) | class TestDeploymentType:
method test_container_value (line 34) | def test_container_value(self):
method test_direct_code_deploy_value (line 38) | def test_direct_code_deploy_value(self):
class TestRuntimeProtocol (line 43) | class TestRuntimeProtocol:
method test_http_value (line 46) | def test_http_value(self):
method test_mcp_value (line 50) | def test_mcp_value(self):
method test_a2a_value (line 54) | def test_a2a_value(self):
method test_agui_value (line 58) | def test_agui_value(self):
class TestIACProvider (line 63) | class TestIACProvider:
method test_cdk_value (line 66) | def test_cdk_value(self):
method test_terraform_value (line 70) | def test_terraform_value(self):
method test_get_iac_as_list_returns_correct_order (line 74) | def test_get_iac_as_list_returns_correct_order(self):
method test_get_iac_as_list_returns_list (line 79) | def test_get_iac_as_list_returns_list(self):
class TestSDKProvider (line 85) | class TestSDKProvider:
method test_strands_value (line 88) | def test_strands_value(self):
method test_langchain_value (line 92) | def test_langchain_value(self):
method test_google_adk_value (line 96) | def test_google_adk_value(self):
method test_openai_agents_value (line 100) | def test_openai_agents_value(self):
method test_autogen_value (line 104) | def test_autogen_value(self):
method test_crewai_value (line 108) | def test_crewai_value(self):
method test_get_sdk_display_names_as_list_returns_correct_order (line 112) | def test_get_sdk_display_names_as_list_returns_correct_order(self):
method test_get_sdk_display_names_as_list_length (line 125) | def test_get_sdk_display_names_as_list_length(self):
method test_get_id_from_display_strands (line 130) | def test_get_id_from_display_strands(self):
method test_get_id_from_display_crewai (line 135) | def test_get_id_from_display_crewai(self):
method test_get_id_from_display_google_adk (line 140) | def test_get_id_from_display_google_adk(self):
method test_get_id_from_display_langchain_langgraph (line 145) | def test_get_id_from_display_langchain_langgraph(self):
method test_get_id_from_display_autogen (line 150) | def test_get_id_from_display_autogen(self):
method test_get_id_from_display_openai (line 155) | def test_get_id_from_display_openai(self):
method test_get_id_from_display_unknown_raises_error (line 160) | def test_get_id_from_display_unknown_raises_error(self):
method test_resolve_to_internal_id_with_internal_id (line 165) | def test_resolve_to_internal_id_with_internal_id(self):
method test_resolve_to_internal_id_with_display_name (line 171) | def test_resolve_to_internal_id_with_display_name(self):
method test_resolve_to_internal_id_unknown_raises_error (line 176) | def test_resolve_to_internal_id_unknown_raises_error(self):
class TestModelProvider (line 182) | class TestModelProvider:
method test_openai_value (line 185) | def test_openai_value(self):
method test_bedrock_value (line 189) | def test_bedrock_value(self):
method test_anthropic_value (line 193) | def test_anthropic_value(self):
method test_gemini_value (line 197) | def test_gemini_value(self):
method test_requires_api_key_set (line 201) | def test_requires_api_key_set(self):
method test_
Condensed preview — 522 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,951K chars).
[
{
"path": ".github/CODEOWNERS",
"chars": 744,
"preview": "# Code ownership for automatic PR review assignments\n\n# Default owners for everything in the repo\n* @aws/bedrock-agentco"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 716,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: '[BUG] '\nlabels: 'bug'\nassignees: ''\n\n---\n\n**Descr"
},
{
"path": ".github/branch-protection.json",
"chars": 970,
"preview": "{\n \"main\": {\n \"required_status_checks\": {\n \"strict\": true,\n \"contexts\": [\n \"Test Suite / Python 3.1"
},
{
"path": ".github/dependabot.yml",
"chars": 1599,
"preview": "version: 2\nupdates:\n # Python dependencies\n - package-ecosystem: \"pip\"\n directory: \"/\"\n schedule:\n interval"
},
{
"path": ".github/pull_request_template.md",
"chars": 1386,
"preview": "## Description\n\nBrief description of changes\n\n## Type of Change\n\n- [ ] Bug fix (non-breaking change which fixes an issue"
},
{
"path": ".github/workflows/deploy-docs.yml",
"chars": 1670,
"preview": "name: Deploy Documentation\n\non:\n push:\n branches:\n - main\n paths:\n - 'documentation/**'\n - '.githu"
},
{
"path": ".github/workflows/integration_testing.yml",
"chars": 5851,
"preview": "name: Secure Integration test\n\non:\n push:\n branches: [ main ]\n tags:\n - 'v*'\n pull_request_target: # Chang"
},
{
"path": ".github/workflows/pr-automerge.yml",
"chars": 2122,
"preview": "name: PR Auto-merge\n\non:\n pull_request_review:\n types: [submitted]\n\npermissions:\n contents: write\n pull-requests: "
},
{
"path": ".github/workflows/release.yml",
"chars": 12747,
"preview": "name: Release\n\non:\n workflow_dispatch:\n inputs:\n bump_type:\n description: 'Version bump type (only patch"
},
{
"path": ".github/workflows/security-scanning.yml",
"chars": 2561,
"preview": "name: Security Scanning\n\non:\n push:\n branches: [ main, develop ]\n pull_request:\n branches: [ main ]\n schedule:\n"
},
{
"path": ".github/workflows/security.yml",
"chars": 2993,
"preview": "name: Security Scanning\n\non:\n push:\n branches: [ main, develop ]\n pull_request:\n branches: [ main ]\n schedule:\n"
},
{
"path": ".github/workflows/slack-issue-notification.yml",
"chars": 785,
"preview": "name: Slack Issue Notification\n\non:\n issues:\n types: [opened]\n\npermissions: {}\n\njobs:\n notify-slack:\n runs-on: u"
},
{
"path": ".github/workflows/slack-open-prs-notification.yml",
"chars": 1595,
"preview": "name: Slack Open PRs Notification\n\non:\n schedule:\n - cron: '0 13 * * *' # 8:00 AM EST (13:00 UTC)\n workflow_dispat"
},
{
"path": ".github/workflows/test-pypi-release.yml",
"chars": 3116,
"preview": "name: Test PyPI Release\n\non:\n workflow_dispatch:\n inputs:\n version:\n description: 'Version to release (e"
},
{
"path": ".github/workflows/test.yml",
"chars": 2573,
"preview": "name: Test\n\non:\n pull_request:\n branches: [ main ]\n push:\n branches: [ main ]\n\npermissions:\n contents: read\n c"
},
{
"path": ".gitignore",
"chars": 437,
"preview": "build\n__pycache__*\n.coverage*\n.env\n.venv\n.mypy_cache\n.pytest_cache\n.ruff_cache\n*.bak\n.vscode\ndist\n.dockerignore\n.bedrock"
},
{
"path": ".pre-commit-config.yaml",
"chars": 2762,
"preview": "repos:\n # ========================================\n # PRE-COMMIT STAGE (Fast, Auto-fixing)\n # Runs on every commit\n "
},
{
"path": ".python-version",
"chars": 5,
"preview": "3.10\n"
},
{
"path": "CHANGELOG.md",
"chars": 23149,
"preview": "# Changelog\n\n## [0.3.7] - 2026-05-05\n\n### Changes\n\n- feat: add deprecation banner recommending AgentCore CLI (#507) (#50"
},
{
"path": "CODE-OF-CONDUCT.md",
"chars": 2245,
"preview": "# Code of Conduct\n\nThis project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-condu"
},
{
"path": "CONTRIBUTING.md",
"chars": 6639,
"preview": "# Contributing to Bedrock AgentCore CLI Starter Toolkit\n\n👋 Welcome! We're glad you're interested in the Bedrock AgentCor"
},
{
"path": "LICENSE.txt",
"chars": 10768,
"preview": "Apache License\n Version 2.0, January 2004\n http://www.apache.org/licens"
},
{
"path": "NOTICE.txt",
"chars": 8669,
"preview": "Bedrock AgentCore CLI Starter Toolkit\nCopyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n\nThis prod"
},
{
"path": "README.md",
"chars": 12082,
"preview": "<div align=\"center\">\n <h1>\n Bedrock AgentCore Starter Toolkit\n </h1>\n\n <div align=\"center\">\n <a href=\"https://g"
},
{
"path": "SECURITY.md",
"chars": 4375,
"preview": "# Security Policy\n\n## Reporting Security Issues\n\nAt AWS, we take security seriously. We appreciate your efforts to respo"
},
{
"path": "buildspec-lambda-package.yml",
"chars": 1008,
"preview": "version: 0.2\n\nphases:\n pre_build:\n commands:\n - echo \"Lambda compute build starting (no Docker)...\"\n - sta"
},
{
"path": "documentation/.gitignore",
"chars": 22,
"preview": ".cache\nsite\n.DS_Store\n"
},
{
"path": "documentation/README.md",
"chars": 644,
"preview": "This repository contains the documentation for the Bedrock AgentCore SDK, primitives for building and running AI agents."
},
{
"path": "documentation/docs/api-reference/cli.md",
"chars": 53341,
"preview": "# CLI\n\nCommand-line interface for BedrockAgentCore Starter Toolkit.\n\nThe `agentcore` CLI provides commands for configuri"
},
{
"path": "documentation/docs/api-reference/identity.md",
"chars": 236,
"preview": "# Identity\n\nMemory management for Bedrock AgentCore SDK.\n\n## Service client\n\n::: bedrock_agentcore.services.identity\n "
},
{
"path": "documentation/docs/api-reference/memory.md",
"chars": 85,
"preview": "# Memory\n\nMemory management for Bedrock AgentCore SDK.\n\n::: bedrock_agentcore.memory\n"
},
{
"path": "documentation/docs/api-reference/runtime.md",
"chars": 108,
"preview": "# Runtime\n\nRuntime management and application context for Bedrock AgentCore.\n\n::: bedrock_agentcore.runtime\n"
},
{
"path": "documentation/docs/api-reference/tools.md",
"chars": 198,
"preview": "# Tools\n\nTools and utilities for Bedrock AgentCore SDK including browser and code interpreter tools.\n\n::: bedrock_agentc"
},
{
"path": "documentation/docs/examples/README.md",
"chars": 388,
"preview": "# Examples\n\nThese simple examples demonstrate key Amazon Bedrock AgentCore concepts and patterns. Each example focuses o"
},
{
"path": "documentation/docs/examples/agentcore-quickstart-example.md",
"chars": 16531,
"preview": "# AgentCore Quickstart\n\n## Introduction\n\nBuild and deploy a production-ready AI agent in minutes with runtime hosting, m"
},
{
"path": "documentation/docs/examples/async-processing.md",
"chars": 4989,
"preview": "# Async Processing\n\nThis example demonstrates how to use Bedrock AgentCore's manual task management for automatic health"
},
{
"path": "documentation/docs/examples/gateway-integration.md",
"chars": 10412,
"preview": "# Gateway Integration Examples\n\n## Lambda Function as MCP Tool\n\n```python\nfrom bedrock_agentcore.gateway import GatewayC"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/basic-runtime/basic-cfn-deploy-readme.md",
"chars": 191,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/basic-runtime/basic-cfn-template.md",
"chars": 188,
"preview": "```yaml\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/basic-runtime/basic-deploy-bash-script.md",
"chars": 184,
"preview": "```bash\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/end-to-end-weather-agent/cloudformation-deploy-with-tools-and-memory-bash-script.md",
"chars": 195,
"preview": "```bash\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/end-to-end-weather-agent/cloudformation-deploy-with-tools-and-memory-readme.md",
"chars": 202,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/end-to-end-weather-agent/cloudformation-deploy-with-tools-and-memory-template.md",
"chars": 238,
"preview": "```yaml\n{% raw %}\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/mcp-server-runtime/cloudfomation-deploy-with-mcp-tool-bash-script.md",
"chars": 199,
"preview": "```bash\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/mcp-server-runtime/cloudformation-deploy-with-mcp-tool-readme.md",
"chars": 206,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/mcp-server-runtime/cloudformation-deploy-with-mcp-tool-template.md",
"chars": 436,
"preview": "```yaml\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/multi-agent-runtime/cloudformation-multi-agent-deploy-bash-script.md",
"chars": 190,
"preview": "```bash\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/multi-agent-runtime/cloudformation-multi-agent-deploy-readme.md",
"chars": 197,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/cloudformation/multi-agent-runtime/cloudformation-multi-agent-template.md",
"chars": 194,
"preview": "```yaml\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infras"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/basic-runtime/basic-terraform-deploy-readme.md",
"chars": 186,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/basic-runtime/basic-terraform-deploy-sample.md",
"chars": 2640,
"preview": "### main.tf\n```hcl\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/mai"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/end-to-end-weather-agent/weather-agent-terraform-deploy-readme.md",
"chars": 197,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/end-to-end-weather-agent/weather-agent-terraform-deploy-sample.md",
"chars": 4086,
"preview": "### main.tf\n```hcl\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/mai"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/mcp-server-agentcore-runtime/mcp-server-terraform-deploy-readme.md",
"chars": 201,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/mcp-server-agentcore-runtime/mcp-server-terraform-deploy-sample.md",
"chars": 3073,
"preview": "### main.tf\n```hcl\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/mai"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/multi-agent-runtime/multi-agent-terraform-deploy-readme.md",
"chars": 192,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/04-infra"
},
{
"path": "documentation/docs/examples/infrastructure-as-code/terraform/multi-agent-runtime/multi-agent-terraform-deploy-sample.md",
"chars": 4208,
"preview": "### main.tf\n```hcl\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/mai"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/adk/adk-agent-readme.md",
"chars": 175,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-integ"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/adk/adk-agent.md",
"chars": 187,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/autogen/autogen-agent-readme.md",
"chars": 179,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-integ"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/autogen/autogen-agent.md",
"chars": 193,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/claude-sdk/claude-agent-readme.md",
"chars": 195,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-integ"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/claude-sdk/claude-agent.md",
"chars": 189,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/langgraph/langgraph-agent-readme.md",
"chars": 181,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-integ"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/langgraph/langgraph-agent.md",
"chars": 196,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/llamaindex/llama-agent-readme.md",
"chars": 182,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-integ"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/llamaindex/llama-agent.md",
"chars": 194,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/openai/openai-agent-basic-example.md",
"chars": 199,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/openai/openai-agent-handoff-example.md",
"chars": 203,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/openai/openai-agent-readme.md",
"chars": 185,
"preview": "{% include-markdown \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-integ"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/pydanticai/pydanticai-agent.md",
"chars": 201,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/strands/strands-agent-basic-example.md",
"chars": 200,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/strands/strands-agent-openai-identity-example.md",
"chars": 198,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/integrations/agentic-frameworks/strands/strands-agent-streaming-example.md",
"chars": 199,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/memory_gateway_agent.md",
"chars": 18574,
"preview": "# Amazon Bedrock AgentCore Quickstart\n\n## Introduction\n\nAmazon Bedrock AgentCore is a suite of services designed to acce"
},
{
"path": "documentation/docs/examples/observability/dynatrace/observability-agent-and-dynatrace-init.md",
"chars": 169,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/observability/dynatrace/observability-basic-agent.md",
"chars": 177,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/observability/dynatrace/observability-dynatrace.md",
"chars": 174,
"preview": "```python\n{% include \"https://raw.githubusercontent.com/awslabs/amazon-bedrock-agentcore-samples/refs/heads/main/03-inte"
},
{
"path": "documentation/docs/examples/policy-integration.md",
"chars": 17446,
"preview": "# Policy Integration Examples\n\nThis guide demonstrates practical patterns for integrating Policy with AgentCore Gateway,"
},
{
"path": "documentation/docs/examples/runtime-framework-agents.md",
"chars": 5617,
"preview": "# Framework Agents Examples\n\nThis guide shows how to use popular AI agent frameworks with Amazon Bedrock AgentCore Runti"
},
{
"path": "documentation/docs/examples/semantic_search.md",
"chars": 2691,
"preview": "# Semantic Search Memory Example\n\nThis example demonstrates the complete workflow for creating a memory resource with se"
},
{
"path": "documentation/docs/examples/session-management.md",
"chars": 1530,
"preview": "# Session Management\n\nAgent that maintains conversation state using session IDs.\n\n## Handler Code\n\n```python\n# handler.p"
},
{
"path": "documentation/docs/index.md",
"chars": 5240,
"preview": "# Amazon Bedrock AgentCore\n\nAmazon Bedrock AgentCore is a comprehensive platform for deploying and operating highly effe"
},
{
"path": "documentation/docs/mcp/agentcore_runtime_deployment.md",
"chars": 3888,
"preview": "### Build your first agent or transform existing code\n\n#### Prerequisites & Environment Setup\n- **Environment**: Set up "
},
{
"path": "documentation/docs/stylesheets/extra.css",
"chars": 3374,
"preview": ":root > * {\n --md-primary-fg-color: #14181C;\n --md-primary-bg-color: #F0F6FC;\n --md-primary-bg-color--light: #7"
},
{
"path": "documentation/docs/user-guide/builtin-tools/quickstart-browser.md",
"chars": 29102,
"preview": "# AgentCore Browser Quickstart\n\nAgentCore Browser enables your agents to interact with web pages through a managed Chrom"
},
{
"path": "documentation/docs/user-guide/builtin-tools/quickstart-code-interpreter.md",
"chars": 12052,
"preview": "# AgentCore Code Interpreter Quickstart\n\nAgentCore Code Interpreter enables your agents to execute Python code in a secu"
},
{
"path": "documentation/docs/user-guide/create/quickstart.md",
"chars": 7581,
"preview": "# QuickStart: Generate Production-Ready Projects with `agentcore create`\n\nThis guide shows how to use the Amazon Bedrock"
},
{
"path": "documentation/docs/user-guide/dev/quickstart.md",
"chars": 7223,
"preview": "# QuickStart: Local Development with `agentcore dev`\n\nThis guide shows how to use the Amazon Bedrock AgentCore developme"
},
{
"path": "documentation/docs/user-guide/evaluation/quickstart.md",
"chars": 17034,
"preview": "# Evaluation Quickstart: Evaluate Your Agent! 🎯\n\nThis tutorial shows you how to use the Amazon Bedrock AgentCore starter"
},
{
"path": "documentation/docs/user-guide/gateway/quickstart.md",
"chars": 49635,
"preview": "# QuickStart: A Fully Managed MCP Server in 5 Minutes! 🚀\n\nAmazon Bedrock AgentCore Gateway provides an easy and secure w"
},
{
"path": "documentation/docs/user-guide/identity/quickstart-aws-jwt.md",
"chars": 11008,
"preview": "# Getting Started with AWS IAM JWT Federation (CLI)\n\nAmazon Bedrock AgentCore supports AWS IAM JWT federation for M2M (m"
},
{
"path": "documentation/docs/user-guide/identity/quickstart-with-cli.md",
"chars": 9969,
"preview": "# Getting Started with AgentCore Identity (CLI)\n\nAmazon Bedrock AgentCore Identity provides secure OAuth 2.0 authenticat"
},
{
"path": "documentation/docs/user-guide/identity/quickstart.md",
"chars": 17267,
"preview": "# Getting Started with AgentCore Identity\n\nAmazon Bedrock AgentCore Identity provides a secure way to manage identities "
},
{
"path": "documentation/docs/user-guide/import-agent/configuration.md",
"chars": 6019,
"preview": "# Import Agent Configuration Reference\n\nThis document provides detailed information about all configuration options avai"
},
{
"path": "documentation/docs/user-guide/import-agent/design.md",
"chars": 10567,
"preview": "# Import Agent Design\n\nDesign overview for the import-agent utility, explaining the choices behind the generated agent.\n"
},
{
"path": "documentation/docs/user-guide/import-agent/overview.md",
"chars": 7558,
"preview": "# Import Agent Overview\n\nThe `import-agent` utility enables you to migrate existing Amazon Bedrock Agents to Bedrock Age"
},
{
"path": "documentation/docs/user-guide/import-agent/quickstart.md",
"chars": 3327,
"preview": "# Import Agent Quick Start\n\nGet started with importing your Bedrock Agent to AgentCore in just a few minutes.\n\n## Prereq"
},
{
"path": "documentation/docs/user-guide/memory/quickstart.md",
"chars": 6577,
"preview": "# Getting Started with AgentCore Memory\n\nAmazon Bedrock AgentCore Memory lets you create and manage memory resources tha"
},
{
"path": "documentation/docs/user-guide/observability/quickstart.md",
"chars": 15172,
"preview": "# Getting Started with AgentCore Observability\n\nAmazon Bedrock AgentCore Observability helps you trace, debug, and monit"
},
{
"path": "documentation/docs/user-guide/policy/overview.md",
"chars": 8810,
"preview": "# Policy Overview\n\n## Introduction\n\nPolicy in Amazon Bedrock AgentCore enables developers to define and enforce security"
},
{
"path": "documentation/docs/user-guide/policy/quickstart.md",
"chars": 15058,
"preview": "# QuickStart: Policy Engine in 5 Minutes! 🚀\n\nAmazon Bedrock AgentCore Policy enables you to define and enforce fine-grai"
},
{
"path": "documentation/docs/user-guide/runtime/a2a.md",
"chars": 16371,
"preview": "# Deploy A2A servers in AgentCore Runtime\n\nAmazon Bedrock AgentCore Runtime lets you deploy and run Agent-to-Agent (A2A)"
},
{
"path": "documentation/docs/user-guide/runtime/async.md",
"chars": 7183,
"preview": "# Handle Asynchronous and Long Running Agents\n\nAgentCore Runtime can handle asynchronous processing and long running age"
},
{
"path": "documentation/docs/user-guide/runtime/notebook.md",
"chars": 2308,
"preview": "# Jupyter Notebook Support\n\n!!! warning \"Local Testing Only\"\n\n The notebook interface is intended for **local develop"
},
{
"path": "documentation/docs/user-guide/runtime/overview.md",
"chars": 16278,
"preview": "# AgentCore Runtime SDK Overview\n\nThe Amazon Bedrock AgentCore Runtime SDK transforms your Python functions into product"
},
{
"path": "documentation/docs/user-guide/runtime/permissions.md",
"chars": 13110,
"preview": "# Runtime Permissions\n\nThis guide covers the IAM permissions required to run agents with Amazon Bedrock AgentCore Runtim"
},
{
"path": "documentation/docs/user-guide/runtime/quickstart.md",
"chars": 13941,
"preview": "# QuickStart: Your First Agent in 5 Minutes! 🚀\n\nThis tutorial shows you how to use the Amazon Bedrock AgentCore [starter"
},
{
"path": "documentation/docs/user-guide/security/agentcore-vpc.md",
"chars": 20727,
"preview": "# Configure Amazon Bedrock AgentCore Runtime and tools for VPC\n\nYou can configure Amazon Bedrock AgentCore Runtime and b"
},
{
"path": "documentation/docs/user-guide/security/security-vpc-condition.md",
"chars": 4809,
"preview": "# Use IAM condition keys with AgentCore Runtime and built-in tools VPC settings\n\nYou can use Amazon Bedrock AgentCore-sp"
},
{
"path": "documentation/docs/user-guide/security/vpc-interface-endpoints.md",
"chars": 11695,
"preview": "# Use interface VPC endpoints (AWS PrivateLink) to create a private connection between your VPC and your AgentCore resou"
},
{
"path": "documentation/mkdocs.yaml",
"chars": 8165,
"preview": "site_name: Amazon Bedrock AgentCore\nsite_description: Documentation for Amazon Bedrock AgentCore, primitives for buildin"
},
{
"path": "documentation/overrides/main.html",
"chars": 2524,
"preview": "{% extends \"base.html\" %}\n\n{% block content %}\n<div class=\"agentcore-cli-banner\">\n <strong>Recommendation: Use the Agen"
},
{
"path": "pyproject.toml",
"chars": 5825,
"preview": "[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"bedrock-agentcore-starter-t"
},
{
"path": "scripts/bump-version.py",
"chars": 7700,
"preview": "#!/usr/bin/env python3\n\"\"\"Automated version bumping for Bedrock AgentCore Starter Toolkit.\"\"\"\n\nimport re\nimport subproce"
},
{
"path": "scripts/prepare-release.py",
"chars": 682,
"preview": "#!/usr/bin/env python3\n\"\"\"Prepare pyproject.toml for release by removing local dependencies.\"\"\"\n\nimport re\n\nprint(\"Prepa"
},
{
"path": "scripts/setup-branch-protection.sh",
"chars": 1228,
"preview": "#!/bin/bash\n# Script to set up branch protection rules\n# Usage: ./scripts/setup-branch-protection.sh <github-token>\n\nset"
},
{
"path": "scripts/validate-release.py",
"chars": 7526,
"preview": "#!/usr/bin/env python3\n\"\"\"\nPre-release validation script for BedrockAgentCore Starter Toolkit.\nConfigured for staging re"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/__init__.py",
"chars": 206,
"preview": "\"\"\"BedrockAgentCore Starter Toolkit.\"\"\"\n\nfrom .notebook import Evaluation, Memory, Observability, ReferenceInputs, Runti"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/__init__.py",
"chars": 62,
"preview": "\"\"\"CLI commands for the Bedrock AgentCore Starter Toolkit.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/cli.py",
"chars": 2853,
"preview": "\"\"\"BedrockAgentCore CLI main module.\"\"\"\n\nimport os\n\nimport typer\nfrom rich.console import Console\n\nfrom ..cli.evaluation"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/cli_ui.py",
"chars": 13211,
"preview": "\"\"\"UI components for interactive CLI selectors.\"\"\"\n\nimport re\nimport time\nfrom typing import Optional\n\nfrom prompt_toolk"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/common.py",
"chars": 1957,
"preview": "\"\"\"Common utilities for BedrockAgentCore CLI.\"\"\"\n\nimport functools\nfrom typing import NoReturn, Optional\n\nimport typer\nf"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/__init__.py",
"chars": 55,
"preview": "\"\"\"CLI implementation for agentcore create command.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/commands.py",
"chars": 13232,
"preview": "\"\"\"Create CLI Commands.\"\"\"\n\nimport re\nfrom contextlib import contextmanager\nfrom pathlib import Path\nfrom typing import "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/import_agent/README.md",
"chars": 2292,
"preview": "# Usage of Import Agent CLI\n\nThis document explains how to use the `import_agent` command.\n\nThe workflow can be started "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/import_agent/__init__.py",
"chars": 54,
"preview": "\"\"\"CLI commands for the Bedrock Agent Import Tool.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/import_agent/agent_info.py",
"chars": 9737,
"preview": "\"\"\"This module provides utility functions to interact with AWS Bedrock Agent services.\"\"\"\n\nimport json\nimport os\n\nimport"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/import_agent/commands.py",
"chars": 21481,
"preview": "\"\"\"Bedrock Agent Translation Tool. Subcomand of create.\"\"\"\n\nimport os\nimport subprocess # nosec # needed to run the age"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/create/prompt_util.py",
"chars": 3180,
"preview": "\"\"\"Utility functions for interactive CLI prompts with validation and confirmation.\"\"\"\n\nimport random\n\nfrom ...create.con"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/evaluation/__init__.py",
"chars": 114,
"preview": "\"\"\"CLI commands for evaluation operations.\"\"\"\n\nfrom .commands import evaluation_app\n\n__all__ = [\"evaluation_app\"]\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/evaluation/commands.py",
"chars": 40836,
"preview": "\"\"\"CLI commands for agent evaluation.\"\"\"\n\nimport json\nimport logging\nfrom pathlib import Path\nfrom typing import List, O"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/gateway/__init__.py",
"chars": 68,
"preview": "\"\"\"BedrockAgentCore Gateway Starter Toolkit cli gateway package.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/gateway/commands.py",
"chars": 13839,
"preview": "\"\"\"Bedrock AgentCore CLI - Command line interface for Bedrock AgentCore.\"\"\"\n\nimport json\nfrom typing import Optional\n\nim"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/identity/__init__.py",
"chars": 51,
"preview": "\"\"\"CLI commands for AgentCore Identity service.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/identity/commands.py",
"chars": 42582,
"preview": "\"\"\"Identity CLI commands for credential provider management and workload identity.\"\"\"\n\nimport json\nimport logging\nimport"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/memory/__init__.py",
"chars": 59,
"preview": "\"\"\"BedrockAgentCore Starter Toolkit cli memory package.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/memory/browser.py",
"chars": 27022,
"preview": "\"\"\"Interactive browser for exploring AgentCore Memory content.\"\"\"\n\nimport json\nimport logging\nfrom dataclasses import da"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/memory/commands.py",
"chars": 32267,
"preview": "\"\"\"Bedrock AgentCore Memory CLI - Command line interface for Memory operations.\"\"\"\n\nimport json\nimport logging\nfrom data"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/observability/__init__.py",
"chars": 34,
"preview": "\"\"\"Observability CLI commands.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/observability/commands.py",
"chars": 26216,
"preview": "\"\"\"Bedrock AgentCore CLI - Observability commands for querying and visualizing traces.\"\"\"\n\nimport json\nimport logging\nfr"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/policy/__init__.py",
"chars": 53,
"preview": "\"\"\"Bedrock AgentCore Policy CLI commands package.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/policy/commands.py",
"chars": 21199,
"preview": "\"\"\"Bedrock AgentCore Policy CLI commands.\"\"\"\n\nimport json\nfrom typing import Optional\n\nimport typer\n\nfrom ...operations."
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/runtime/__init__.py",
"chars": 60,
"preview": "\"\"\"BedrockAgentCore Starter Toolkit cli runtime package.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/runtime/_configure_impl.py",
"chars": 36903,
"preview": "import json\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom prompt_toolkit import prompt\nfrom prompt_toolkit."
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/runtime/commands.py",
"chars": 62310,
"preview": "\"\"\"Bedrock AgentCore CLI - Command line interface for Bedrock AgentCore.\n\nTODO: This file has grown to 2000+ lines and s"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/runtime/configuration_manager.py",
"chars": 18755,
"preview": "\"\"\"Configuration management for BedrockAgentCore runtime.\"\"\"\n\nimport json\nimport os\nfrom pathlib import Path\nfrom typing"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/cli/runtime/dev_command.py",
"chars": 11457,
"preview": "\"\"\"Development server command for Bedrock AgentCore CLI.\"\"\"\n\nimport logging\nimport os\nimport socket\nimport subprocess #"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/__init__.py",
"chars": 39,
"preview": "\"\"\"CLI Commands for Create Feature.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/baseline_feature.py",
"chars": 1791,
"preview": "\"\"\"Base feature implementation for rendering create templates.\"\"\"\n\nfrom pathlib import Path\n\nfrom .constants import Temp"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/configure/__init__.py",
"chars": 76,
"preview": "\"\"\"Implementation to support running create on a pre-configured project.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/configure/resolve.py",
"chars": 3439,
"preview": "\"\"\"Implementation for create command to be compatible with the outputs from the configure command.\"\"\"\n\nfrom typing impor"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/constants.py",
"chars": 7001,
"preview": "\"\"\"Classes used to reference str constants throughout the code.\n\nDefine class members in all caps so pylance treats them"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/__init__.py",
"chars": 1118,
"preview": "\"\"\"Implements code generation for supported SDK and IaC providers.\"\"\"\n\nfrom typing import Type\n\nfrom ..constants import "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/__init__.py",
"chars": 35,
"preview": "\"\"\"Microsoft Autogen Templates.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/feature.py",
"chars": 1601,
"preview": "\"\"\"AutoGen Feature.\"\"\"\n\nfrom ...constants import ModelProvider, SDKProvider\nfrom ...types import ProjectContext\nfrom ..b"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/model_provider/anthropic/model/load.py.j2",
"chars": 1173,
"preview": "import os\nfrom autogen_ext.models.anthropic import AnthropicChatCompletionClient\n{%- if not iac_provider %}\nfrom bedrock"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/model_provider/bedrock/model/load.py.j2",
"chars": 816,
"preview": "import os\nfrom autogen_ext.models.anthropic import AnthropicBedrockChatCompletionClient\nfrom autogen_core.models import "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/model_provider/gemini/model/load.py.j2",
"chars": 1166,
"preview": "import os\nfrom autogen_ext.models.openai import OpenAIChatCompletionClient\n{%- if not iac_provider %}\nfrom bedrock_agent"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/model_provider/openai/model/load.py.j2",
"chars": 1157,
"preview": "import os\nfrom autogen_ext.models.openai import OpenAIChatCompletionClient\n{%- if not iac_provider %}\nfrom bedrock_agent"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/monorepo/common/main.py.j2",
"chars": 1665,
"preview": "import os\n\nfrom autogen_agentchat.agents import AssistantAgent\nfrom autogen_ext.models.anthropic import AnthropicBedrock"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/monorepo/common/mcp_client/client.py.j2",
"chars": 1604,
"preview": "import os\nfrom typing import List\nfrom autogen_ext.tools.mcp import StreamableHttpMcpToolAdapter, StreamableHttpServerPa"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/runtime_only/common/main.py.j2",
"chars": 1311,
"preview": "import os\nfrom autogen_agentchat.agents import AssistantAgent\nfrom bedrock_agentcore.runtime import BedrockAgentCoreApp\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/autogen/templates/runtime_only/common/mcp_client/client.py.j2",
"chars": 743,
"preview": "from typing import List\nfrom autogen_ext.tools.mcp import StreamableHttpMcpToolAdapter, StreamableHttpServerParams, mcp_"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/base_feature.py",
"chars": 4768,
"preview": "\"\"\"Defines a Base feature class for applying Jinja2-based templates to a target directory.\"\"\"\n\nfrom __future__ import an"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/__init__.py",
"chars": 21,
"preview": "\"\"\"CDK Templates.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/feature.py",
"chars": 817,
"preview": "\"\"\"CDK Feature.\"\"\"\n\nfrom pathlib import Path\n\nfrom ...constants import IACProvider\nfrom ...features.base_feature import "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/.gitignore.j2",
"chars": 93,
"preview": "*.js\n!jest.config.js\n*.d.ts\nnode_modules\n\n# CDK asset staging directory\n.cdk.staging\ncdk.out\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/.npmignore.j2",
"chars": 65,
"preview": "*.ts\n!*.d.ts\n\n# CDK asset staging directory\n.cdk.staging\ncdk.out\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/README.j2",
"chars": 536,
"preview": "# Welcome to your CDK TypeScript project\n\nThis is a blank project for CDK development with TypeScript.\n\nThe `cdk.json` f"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/cdk.json.j2",
"chars": 4490,
"preview": "{\n \"app\": \"npx ts-node --prefer-ts-exts bin/cdk.ts\",\n \"watch\": {\n \"include\": [\n \"**\"\n ],\n \"exclude\": [\n "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/jest.config.js.j2",
"chars": 157,
"preview": "module.exports = {\n testEnvironment: 'node',\n roots: ['<rootDir>/test'],\n testMatch: ['**/*.test.ts'],\n transform: {"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/package.json.j2",
"chars": 631,
"preview": "{\n \"name\": \"cdk\",\n \"version\": \"0.1.0\",\n \"bin\": {\n \"cdk\": \"bin/cdk.js\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/common/tsconfig.json.j2",
"chars": 663,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"module\": \"commonjs\",\n \"lib\": [\n \"es2020\",\n \"dom\"\n "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/monorepo/bin/cdk.ts.j2",
"chars": 1290,
"preview": "#!/usr/bin/env node\nimport * as cdk from 'aws-cdk-lib';\nimport { BaseStackProps } from '../lib/types';\nimport {\n Docker"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/monorepo/lib/stacks/agentcore-stack.ts.j2",
"chars": 18183,
"preview": "import * as cdk from 'aws-cdk-lib/core';\nimport { Construct } from 'constructs/lib/construct';\nimport * as bedrockagentc"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/monorepo/lib/stacks/docker-image-stack.ts.j2",
"chars": 797,
"preview": "import * as cdk from 'aws-cdk-lib/core';\nimport { Construct } from 'constructs/lib/construct';\nimport * as ecr_assets fr"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/monorepo/lib/stacks/index.ts.j2",
"chars": 73,
"preview": "export * from './docker-image-stack';\nexport * from './agentcore-stack';\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/monorepo/lib/test/cdk.test.ts.j2",
"chars": 553,
"preview": "// import * as cdk from 'aws-cdk-lib';\n// import { Template } from 'aws-cdk-lib/assertions';\n// import * as Cdk from '.."
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/cdk/templates/monorepo/lib/types.ts.j2",
"chars": 120,
"preview": "import * as cdk from 'aws-cdk-lib/core'\n\nexport interface BaseStackProps extends cdk.StackProps {\n appName: string\n}\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/__init__.py",
"chars": 24,
"preview": "\"\"\"CrewAI Templates.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/feature.py",
"chars": 1408,
"preview": "\"\"\"CrewAI Feature.\"\"\"\n\nfrom ...constants import ModelProvider, SDKProvider\nfrom ...types import ProjectContext\nfrom ..ba"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/model_provider/anthropic/model/load.py.j2",
"chars": 1134,
"preview": "import os\nfrom crewai import LLM\n{%- if not iac_provider %}\nfrom bedrock_agentcore.identity.auth import requires_api_key"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/model_provider/bedrock/model/load.py.j2",
"chars": 391,
"preview": "from crewai import LLM\n\n# Uses global inference profile for Claude Sonnet 4.5\n# https://docs.aws.amazon.com/bedrock/late"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/model_provider/gemini/model/load.py.j2",
"chars": 1085,
"preview": "import os\nfrom crewai import LLM\n{%- if not iac_provider %}\nfrom bedrock_agentcore.identity.auth import requires_api_key"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/model_provider/openai/model/load.py.j2",
"chars": 1055,
"preview": "import os\nfrom crewai import LLM\n{%- if not iac_provider %}\nfrom bedrock_agentcore.identity.auth import requires_api_key"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/monorepo/common/main.py.j2",
"chars": 1784,
"preview": "from crewai import Agent, Crew, Task, Process\nfrom crewai.tools import tool\nfrom bedrock_agentcore.runtime import Bedroc"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/monorepo/common/mcp_client/client.py.j2",
"chars": 1499,
"preview": "import os\nfrom crewai_tools import MCPServerAdapter\n{%- if not custom_authorizer_enabled %}\nimport requests\n\nCOGNITO_TOK"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/runtime_only/common/main.py.j2",
"chars": 1566,
"preview": "from crewai import Agent, Crew, Task, Process\nfrom crewai.tools import tool\nfrom bedrock_agentcore.runtime import Bedroc"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/crewai/templates/runtime_only/common/mcp_client/client.py.j2",
"chars": 662,
"preview": "from crewai_tools import MCPServerAdapter\n\n# ExaAI provides information about code through web searches, crawling and co"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/__init__.py",
"chars": 27,
"preview": "\"\"\"GoogleADK Templates.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/feature.py",
"chars": 739,
"preview": "\"\"\"Google ADK Feature.\"\"\"\n\nfrom ...constants import SDKProvider\nfrom ...types import ProjectContext\nfrom ..base_feature "
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/templates/model_provider/gemini/model/load.py.j2",
"chars": 1007,
"preview": "import os\n{%- if not iac_provider %}\nfrom bedrock_agentcore.identity.auth import requires_api_key\nfrom dotenv import loa"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/templates/monorepo/common/main.py.j2",
"chars": 2586,
"preview": "import os\nfrom google.adk.agents import Agent\nfrom google.adk.runners import Runner\nfrom google.adk.sessions import InMe"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/templates/monorepo/common/mcp_client/client.py.j2",
"chars": 1616,
"preview": "import os\nfrom google.adk.tools.mcp_tool.mcp_toolset import MCPToolset\nfrom google.adk.tools.mcp_tool.mcp_session_manage"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/templates/runtime_only/common/main.py.j2",
"chars": 2362,
"preview": "from google.adk.agents import Agent\nfrom google.adk.runners import Runner\nfrom google.adk.sessions import InMemorySessio"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/googleadk/templates/runtime_only/common/mcp_client/client.py.j2",
"chars": 725,
"preview": "from google.adk.tools.mcp_tool.mcp_toolset import McpToolset\nfrom google.adk.tools.mcp_tool.mcp_session_manager import S"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/langchain_langgraph/__init__.py",
"chars": 27,
"preview": "\"\"\"Langgraph Templates.\"\"\"\n"
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/langchain_langgraph/feature.py",
"chars": 1604,
"preview": "\"\"\"LangGraph Feature.\"\"\"\n\nfrom ...constants import ModelProvider, SDKProvider\nfrom ...types import ProjectContext\nfrom ."
},
{
"path": "src/bedrock_agentcore_starter_toolkit/create/features/langchain_langgraph/templates/model_provider/anthropic/model/load.py.j2",
"chars": 1116,
"preview": "import os\nfrom langchain_anthropic import ChatAnthropic\n{%- if not iac_provider %}\nfrom bedrock_agentcore.identity.auth "
}
]
// ... and 322 more files (download for full content)
About this extraction
This page contains the full source code of the aws/bedrock-agentcore-starter-toolkit GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 522 files (6.2 MB), approximately 1.7M tokens, and a symbol index with 4552 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.