agentcore-cli 0.31.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentcore/__init__.py +1 -0
- agentcore/agent_inspector/NOTICE +9 -0
- agentcore/agent_inspector/favicon.svg +60 -0
- agentcore/agent_inspector/index.css +1 -0
- agentcore/agent_inspector/index.html +14 -0
- agentcore/agent_inspector/index.js +289 -0
- agentcore/assets/AGENTS.md +60 -0
- agentcore/assets/README.md +108 -0
- agentcore/assets/agents/AGENTS.md +218 -0
- agentcore/assets/cdk/.prettierrc +8 -0
- agentcore/assets/cdk/README.md +26 -0
- agentcore/assets/cdk/bin/cdk.ts +216 -0
- agentcore/assets/cdk/cdk.json +88 -0
- agentcore/assets/cdk/gitignore.template +9 -0
- agentcore/assets/cdk/jest.config.js +9 -0
- agentcore/assets/cdk/lib/cdk-stack.ts +291 -0
- agentcore/assets/cdk/npmignore.template +6 -0
- agentcore/assets/cdk/package.json +30 -0
- agentcore/assets/cdk/test/cdk.test.ts +31 -0
- agentcore/assets/cdk/tsconfig.json +28 -0
- agentcore/assets/container/python/Dockerfile +47 -0
- agentcore/assets/container/python/dockerignore.template +27 -0
- agentcore/assets/container/typescript/Dockerfile +25 -0
- agentcore/assets/container/typescript/dockerignore.template +24 -0
- agentcore/assets/datasets/predefined-v1.jsonl +3 -0
- agentcore/assets/datasets/simulated-v1.jsonl +3 -0
- agentcore/assets/evaluators/autoevals-lambda/execution-role-policy.json +15 -0
- agentcore/assets/evaluators/autoevals-lambda/lambda_function.py +37 -0
- agentcore/assets/evaluators/autoevals-lambda/pyproject.toml +22 -0
- agentcore/assets/evaluators/deepeval-lambda/execution-role-policy.json +15 -0
- agentcore/assets/evaluators/deepeval-lambda/lambda_function.py +29 -0
- agentcore/assets/evaluators/deepeval-lambda/pyproject.toml +19 -0
- agentcore/assets/evaluators/python-lambda/execution-role-policy.json +10 -0
- agentcore/assets/evaluators/python-lambda/lambda_function.py +19 -0
- agentcore/assets/evaluators/python-lambda/pyproject.toml +15 -0
- agentcore/assets/harness/invoke.py.template +74 -0
- agentcore/assets/mcp/python/README.md +27 -0
- agentcore/assets/mcp/python/pyproject.toml +22 -0
- agentcore/assets/mcp/python/server.py +117 -0
- agentcore/assets/mcp/python-lambda/README.md +22 -0
- agentcore/assets/mcp/python-lambda/handler.py +144 -0
- agentcore/assets/mcp/python-lambda/pyproject.toml +15 -0
- agentcore/assets/python/a2a/googleadk/base/README.md +22 -0
- agentcore/assets/python/a2a/googleadk/base/gitignore.template +41 -0
- agentcore/assets/python/a2a/googleadk/base/main.py +124 -0
- agentcore/assets/python/a2a/googleadk/base/model/__init__.py +1 -0
- agentcore/assets/python/a2a/googleadk/base/model/load.py +41 -0
- agentcore/assets/python/a2a/googleadk/base/pyproject.toml +22 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/README.md +22 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/gitignore.template +41 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/main.py +144 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/model/__init__.py +1 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/model/load.py +123 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/pyproject.toml +26 -0
- agentcore/assets/python/a2a/strands/base/README.md +22 -0
- agentcore/assets/python/a2a/strands/base/gitignore.template +41 -0
- agentcore/assets/python/a2a/strands/base/main.py +113 -0
- agentcore/assets/python/a2a/strands/base/model/__init__.py +1 -0
- agentcore/assets/python/a2a/strands/base/model/load.py +123 -0
- agentcore/assets/python/a2a/strands/base/pyproject.toml +23 -0
- agentcore/assets/python/a2a/strands/capabilities/memory/__init__.py +1 -0
- agentcore/assets/python/a2a/strands/capabilities/memory/session.py +46 -0
- agentcore/assets/python/agui/googleadk/base/README.md +30 -0
- agentcore/assets/python/agui/googleadk/base/gitignore.template +41 -0
- agentcore/assets/python/agui/googleadk/base/main.py +91 -0
- agentcore/assets/python/agui/googleadk/base/model/__init__.py +1 -0
- agentcore/assets/python/agui/googleadk/base/model/load.py +41 -0
- agentcore/assets/python/agui/googleadk/base/pyproject.toml +25 -0
- agentcore/assets/python/agui/langchain_langgraph/base/README.md +22 -0
- agentcore/assets/python/agui/langchain_langgraph/base/gitignore.template +41 -0
- agentcore/assets/python/agui/langchain_langgraph/base/main.py +130 -0
- agentcore/assets/python/agui/langchain_langgraph/base/model/__init__.py +1 -0
- agentcore/assets/python/agui/langchain_langgraph/base/model/load.py +123 -0
- agentcore/assets/python/agui/langchain_langgraph/base/pyproject.toml +31 -0
- agentcore/assets/python/agui/strands/base/README.md +22 -0
- agentcore/assets/python/agui/strands/base/gitignore.template +41 -0
- agentcore/assets/python/agui/strands/base/main.py +105 -0
- agentcore/assets/python/agui/strands/base/model/__init__.py +1 -0
- agentcore/assets/python/agui/strands/base/model/load.py +123 -0
- agentcore/assets/python/agui/strands/base/pyproject.toml +27 -0
- agentcore/assets/python/agui/strands/capabilities/memory/__init__.py +1 -0
- agentcore/assets/python/agui/strands/capabilities/memory/session.py +46 -0
- agentcore/assets/python/http/autogen/base/README.md +45 -0
- agentcore/assets/python/http/autogen/base/gitignore.template +41 -0
- agentcore/assets/python/http/autogen/base/main.py +145 -0
- agentcore/assets/python/http/autogen/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/autogen/base/mcp_client/client.py +28 -0
- agentcore/assets/python/http/autogen/base/model/__init__.py +1 -0
- agentcore/assets/python/http/autogen/base/model/load.py +136 -0
- agentcore/assets/python/http/autogen/base/pyproject.toml +34 -0
- agentcore/assets/python/http/bma/base/Dockerfile +41 -0
- agentcore/assets/python/http/bma/base/README.md +178 -0
- agentcore/assets/python/http/bma/base/client.py +200 -0
- agentcore/assets/python/http/bma/base/lifecycle/server.py +641 -0
- agentcore/assets/python/http/bma/base/otel/collector.yaml +69 -0
- agentcore/assets/python/http/bma/base/plugins/acr-report/.codex-plugin/plugin.json +6 -0
- agentcore/assets/python/http/bma/base/plugins/acr-report/skills/acr-report/SKILL.md +16 -0
- agentcore/assets/python/http/bma/base/policies/bma-acr-policy.json +11 -0
- agentcore/assets/python/http/bma/base/policies/bma-session-policy.json +35 -0
- agentcore/assets/python/http/bma/base/policies/bma-session-trust.json +20 -0
- agentcore/assets/python/http/bma/base/pyproject.toml +21 -0
- agentcore/assets/python/http/googleadk/base/README.md +45 -0
- agentcore/assets/python/http/googleadk/base/gitignore.template +41 -0
- agentcore/assets/python/http/googleadk/base/main.py +207 -0
- agentcore/assets/python/http/googleadk/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/googleadk/base/mcp_client/client.py +75 -0
- agentcore/assets/python/http/googleadk/base/model/__init__.py +1 -0
- agentcore/assets/python/http/googleadk/base/model/load.py +41 -0
- agentcore/assets/python/http/googleadk/base/pyproject.toml +24 -0
- agentcore/assets/python/http/langchain_langgraph/base/README.md +45 -0
- agentcore/assets/python/http/langchain_langgraph/base/gitignore.template +41 -0
- agentcore/assets/python/http/langchain_langgraph/base/main.py +227 -0
- agentcore/assets/python/http/langchain_langgraph/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/langchain_langgraph/base/mcp_client/client.py +79 -0
- agentcore/assets/python/http/langchain_langgraph/base/model/__init__.py +1 -0
- agentcore/assets/python/http/langchain_langgraph/base/model/load.py +123 -0
- agentcore/assets/python/http/langchain_langgraph/base/pyproject.toml +38 -0
- agentcore/assets/python/http/openaiagents/base/README.md +45 -0
- agentcore/assets/python/http/openaiagents/base/gitignore.template +41 -0
- agentcore/assets/python/http/openaiagents/base/main.py +200 -0
- agentcore/assets/python/http/openaiagents/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/openaiagents/base/mcp_client/client.py +74 -0
- agentcore/assets/python/http/openaiagents/base/model/__init__.py +1 -0
- agentcore/assets/python/http/openaiagents/base/model/load.py +37 -0
- agentcore/assets/python/http/openaiagents/base/pyproject.toml +21 -0
- agentcore/assets/python/http/strands/base/README.md +46 -0
- agentcore/assets/python/http/strands/base/gitignore.template +41 -0
- agentcore/assets/python/http/strands/base/main.py +714 -0
- agentcore/assets/python/http/strands/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/strands/base/mcp_client/client.py +116 -0
- agentcore/assets/python/http/strands/base/model/__init__.py +1 -0
- agentcore/assets/python/http/strands/base/model/load.py +239 -0
- agentcore/assets/python/http/strands/base/model/mantle_compat.py +21 -0
- agentcore/assets/python/http/strands/base/pyproject.toml +31 -0
- agentcore/assets/python/http/strands/base/skills/fetcher.py +279 -0
- agentcore/assets/python/http/strands/capabilities/execution-limits/hooks/execution_limits.py +54 -0
- agentcore/assets/python/http/strands/capabilities/memory/__init__.py +1 -0
- agentcore/assets/python/http/strands/capabilities/memory/session.py +47 -0
- agentcore/assets/python/http/strands/capabilities/payments/__init__.py +4 -0
- agentcore/assets/python/http/strands/capabilities/payments/payments.py +142 -0
- agentcore/assets/python/mcp/standalone/base/README.md +36 -0
- agentcore/assets/python/mcp/standalone/base/gitignore.template +41 -0
- agentcore/assets/python/mcp/standalone/base/main.py +83 -0
- agentcore/assets/python/mcp/standalone/base/pyproject.toml +16 -0
- agentcore/assets/typescript/.gitkeep +0 -0
- agentcore/assets/typescript/http/strands/base/README.md +42 -0
- agentcore/assets/typescript/http/strands/base/gitignore.template +22 -0
- agentcore/assets/typescript/http/strands/base/main.ts +149 -0
- agentcore/assets/typescript/http/strands/base/mcp_client/client.ts +11 -0
- agentcore/assets/typescript/http/strands/base/model/load.ts +102 -0
- agentcore/assets/typescript/http/strands/base/package.json +38 -0
- agentcore/assets/typescript/http/strands/base/tsconfig.json +19 -0
- agentcore/assets/typescript/http/strands/capabilities/memory/memory.ts +52 -0
- agentcore/assets/typescript/http/vercelai/base/README.md +42 -0
- agentcore/assets/typescript/http/vercelai/base/gitignore.template +22 -0
- agentcore/assets/typescript/http/vercelai/base/main.ts +70 -0
- agentcore/assets/typescript/http/vercelai/base/model/load.ts +121 -0
- agentcore/assets/typescript/http/vercelai/base/package.json +35 -0
- agentcore/assets/typescript/http/vercelai/base/tsconfig.json +19 -0
- agentcore/aws/__init__.py +263 -0
- agentcore/aws/_aws_errors.py +72 -0
- agentcore/aws/_http.py +176 -0
- agentcore/aws/_util.py +37 -0
- agentcore/aws/account.py +165 -0
- agentcore/aws/agentcore.py +971 -0
- agentcore/aws/agentcore_ab_tests.py +230 -0
- agentcore/aws/agentcore_batch_evaluation.py +227 -0
- agentcore/aws/agentcore_config_bundles.py +220 -0
- agentcore/aws/agentcore_control.py +994 -0
- agentcore/aws/agentcore_datasets.py +222 -0
- agentcore/aws/agentcore_harness.py +330 -0
- agentcore/aws/agentcore_payments.py +430 -0
- agentcore/aws/agentcore_recommendation.py +140 -0
- agentcore/aws/agui_parser.py +131 -0
- agentcore/aws/agui_types.py +342 -0
- agentcore/aws/api_client.py +87 -0
- agentcore/aws/arn.py +18 -0
- agentcore/aws/aws_context.py +23 -0
- agentcore/aws/bedrock.py +44 -0
- agentcore/aws/bedrock_agent.py +129 -0
- agentcore/aws/bedrock_import.py +252 -0
- agentcore/aws/bedrock_import_types.py +111 -0
- agentcore/aws/cloudwatch.py +136 -0
- agentcore/aws/connect_shell.py +266 -0
- agentcore/aws/iam.py +41 -0
- agentcore/aws/partition.py +58 -0
- agentcore/aws/policy_generation.py +116 -0
- agentcore/aws/region.py +54 -0
- agentcore/aws/retry.py +27 -0
- agentcore/aws/shell_framer.py +136 -0
- agentcore/aws/stage_endpoint.py +39 -0
- agentcore/aws/target_region.py +54 -0
- agentcore/aws/transaction_search.py +97 -0
- agentcore/cdk/__init__.py +10 -0
- agentcore/cdk/constants.py +13 -0
- agentcore/cdk/local_cdk_project.py +48 -0
- agentcore/cdk/toolkit.py +706 -0
- agentcore/cli/__init__.py +0 -0
- agentcore/cli/commands/__init__.py +0 -0
- agentcore/cli/commands/_jobs_common.py +39 -0
- agentcore/cli/commands/_run_wizards.py +639 -0
- agentcore/cli/commands/add/__init__.py +37 -0
- agentcore/cli/commands/add/_commander.py +52 -0
- agentcore/cli/commands/add/_common.py +47 -0
- agentcore/cli/commands/add/agent_wizard.py +528 -0
- agentcore/cli/commands/add/auth_options.py +154 -0
- agentcore/cli/commands/add/skill_action.py +105 -0
- agentcore/cli/commands/add/skill_command.py +87 -0
- agentcore/cli/commands/add/tool_action.py +160 -0
- agentcore/cli/commands/add/tool_command.py +117 -0
- agentcore/cli/commands/add/validate.py +333 -0
- agentcore/cli/commands/capacity_provider/__init__.py +86 -0
- agentcore/cli/commands/capacity_provider/action.py +114 -0
- agentcore/cli/commands/capacity_provider/constants.py +22 -0
- agentcore/cli/commands/config.py +91 -0
- agentcore/cli/commands/config_bundle.py +251 -0
- agentcore/cli/commands/create/__init__.py +643 -0
- agentcore/cli/commands/create/action.py +406 -0
- agentcore/cli/commands/create/dependencies.py +91 -0
- agentcore/cli/commands/create/harness_validate.py +82 -0
- agentcore/cli/commands/create/validate.py +195 -0
- agentcore/cli/commands/create/wizard.py +127 -0
- agentcore/cli/commands/dataset.py +119 -0
- agentcore/cli/commands/deploy/__init__.py +31 -0
- agentcore/cli/commands/deploy/_guards.py +25 -0
- agentcore/cli/commands/deploy/actions.py +840 -0
- agentcore/cli/commands/deploy/command.py +349 -0
- agentcore/cli/commands/deploy/progress.py +115 -0
- agentcore/cli/commands/deploy/types.py +68 -0
- agentcore/cli/commands/deploy/utils.py +43 -0
- agentcore/cli/commands/deploy/validate.py +21 -0
- agentcore/cli/commands/dev/__init__.py +5 -0
- agentcore/cli/commands/dev/_deps.py +50 -0
- agentcore/cli/commands/dev/browser_mode.py +270 -0
- agentcore/cli/commands/dev/command.py +450 -0
- agentcore/cli/commands/dev/terminal_mode.py +379 -0
- agentcore/cli/commands/exec/__init__.py +29 -0
- agentcore/cli/commands/exec/action.py +442 -0
- agentcore/cli/commands/exec/command.py +206 -0
- agentcore/cli/commands/exec/types.py +35 -0
- agentcore/cli/commands/export/__init__.py +114 -0
- agentcore/cli/commands/export/constants.py +21 -0
- agentcore/cli/commands/export/fetch_harness_spec.py +234 -0
- agentcore/cli/commands/export/harness_action.py +385 -0
- agentcore/cli/commands/export/harness_mapper.py +868 -0
- agentcore/cli/commands/export/harness_resolver.py +95 -0
- agentcore/cli/commands/export/types.py +90 -0
- agentcore/cli/commands/export/wizard.py +97 -0
- agentcore/cli/commands/feedback/__init__.py +69 -0
- agentcore/cli/commands/feedback/action.py +30 -0
- agentcore/cli/commands/feedback/consent_prompt.py +35 -0
- agentcore/cli/commands/feedback/wizard.py +49 -0
- agentcore/cli/commands/fetch/__init__.py +69 -0
- agentcore/cli/commands/fetch/action.py +62 -0
- agentcore/cli/commands/help.py +65 -0
- agentcore/cli/commands/import_/__init__.py +167 -0
- agentcore/cli/commands/import_/_js.py +72 -0
- agentcore/cli/commands/import_/actions.py +457 -0
- agentcore/cli/commands/import_/constants.py +45 -0
- agentcore/cli/commands/import_/import_evaluator.py +140 -0
- agentcore/cli/commands/import_/import_gateway.py +520 -0
- agentcore/cli/commands/import_/import_memory.py +128 -0
- agentcore/cli/commands/import_/import_online_eval.py +165 -0
- agentcore/cli/commands/import_/import_pipeline.py +145 -0
- agentcore/cli/commands/import_/import_runtime.py +214 -0
- agentcore/cli/commands/import_/import_utils.py +410 -0
- agentcore/cli/commands/import_/phase1_update.py +110 -0
- agentcore/cli/commands/import_/phase2_import.py +206 -0
- agentcore/cli/commands/import_/resource_import.py +228 -0
- agentcore/cli/commands/import_/template_utils.py +148 -0
- agentcore/cli/commands/import_/types.py +150 -0
- agentcore/cli/commands/import_/yaml_parser.py +265 -0
- agentcore/cli/commands/init.py +196 -0
- agentcore/cli/commands/invoke/__init__.py +32 -0
- agentcore/cli/commands/invoke/_deps.py +73 -0
- agentcore/cli/commands/invoke/action.py +840 -0
- agentcore/cli/commands/invoke/command.py +490 -0
- agentcore/cli/commands/invoke/constants.py +40 -0
- agentcore/cli/commands/invoke/guards.py +23 -0
- agentcore/cli/commands/invoke/interactive.py +604 -0
- agentcore/cli/commands/invoke/resolve.py +149 -0
- agentcore/cli/commands/invoke/resolve_prompt.py +60 -0
- agentcore/cli/commands/invoke/types.py +61 -0
- agentcore/cli/commands/invoke/validate.py +33 -0
- agentcore/cli/commands/job_actions.py +239 -0
- agentcore/cli/commands/job_history.py +380 -0
- agentcore/cli/commands/logs/__init__.py +53 -0
- agentcore/cli/commands/logs/action.py +159 -0
- agentcore/cli/commands/logs/filter_pattern.py +17 -0
- agentcore/cli/commands/logs/guards.py +51 -0
- agentcore/cli/commands/logs_evals.py +42 -0
- agentcore/cli/commands/package.py +118 -0
- agentcore/cli/commands/remove/__init__.py +172 -0
- agentcore/cli/commands/remove/skill_command.py +131 -0
- agentcore/cli/commands/remove/tool_command.py +59 -0
- agentcore/cli/commands/run.py +808 -0
- agentcore/cli/commands/run_ingest.py +97 -0
- agentcore/cli/commands/shared/__init__.py +0 -0
- agentcore/cli/commands/shared/arn_utils.py +9 -0
- agentcore/cli/commands/shared/filesystem_utils.py +421 -0
- agentcore/cli/commands/shared/header_utils.py +87 -0
- agentcore/cli/commands/shared/indexed_key_parser.py +76 -0
- agentcore/cli/commands/shared/lifecycle_utils.py +72 -0
- agentcore/cli/commands/shared/region_utils.py +20 -0
- agentcore/cli/commands/shared/vpc_utils.py +99 -0
- agentcore/cli/commands/status/__init__.py +30 -0
- agentcore/cli/commands/status/_guards.py +25 -0
- agentcore/cli/commands/status/action.py +741 -0
- agentcore/cli/commands/status/command.py +321 -0
- agentcore/cli/commands/status/constants.py +36 -0
- agentcore/cli/commands/status/format_knowledge_base.py +111 -0
- agentcore/cli/commands/telemetry.py +79 -0
- agentcore/cli/commands/traces/__init__.py +155 -0
- agentcore/cli/commands/traces/action.py +123 -0
- agentcore/cli/commands/update/__init__.py +63 -0
- agentcore/cli/commands/update/action.py +164 -0
- agentcore/cli/commands/validate.py +165 -0
- agentcore/cli/constants.py +96 -0
- agentcore/cli/errors.py +118 -0
- agentcore/cli/external_requirements/__init__.py +67 -0
- agentcore/cli/external_requirements/checks.py +280 -0
- agentcore/cli/external_requirements/detect.py +55 -0
- agentcore/cli/external_requirements/versions.py +57 -0
- agentcore/cli/groups.py +23 -0
- agentcore/cli/interactive.py +85 -0
- agentcore/cli/main.py +137 -0
- agentcore/cli/naming.py +11 -0
- agentcore/cli/notices.py +42 -0
- agentcore/cli/project.py +34 -0
- agentcore/cli/run_command.py +27 -0
- agentcore/cli/tree.py +135 -0
- agentcore/cli/update_notifier.py +123 -0
- agentcore/cli/variadic.py +50 -0
- agentcore/cloudformation/__init__.py +84 -0
- agentcore/cloudformation/bootstrap.py +64 -0
- agentcore/cloudformation/logical_ids.py +37 -0
- agentcore/cloudformation/outputs.py +566 -0
- agentcore/cloudformation/stack_discovery.py +75 -0
- agentcore/cloudformation/stack_events.py +107 -0
- agentcore/cloudformation/stack_status.py +98 -0
- agentcore/cloudformation/types.py +44 -0
- agentcore/lib/__init__.py +68 -0
- agentcore/lib/constants.py +77 -0
- agentcore/lib/dependency_management/__init__.py +23 -0
- agentcore/lib/dependency_management/messages.py +92 -0
- agentcore/lib/dependency_management/plan.py +98 -0
- agentcore/lib/dependency_management/semver.py +137 -0
- agentcore/lib/dependency_management/sync.py +139 -0
- agentcore/lib/dependency_management/types.py +56 -0
- agentcore/lib/errors/__init__.py +5 -0
- agentcore/lib/errors/types.py +352 -0
- agentcore/lib/errors/validation.py +121 -0
- agentcore/lib/packaging/__init__.py +81 -0
- agentcore/lib/packaging/build_args.py +23 -0
- agentcore/lib/packaging/build_context.py +26 -0
- agentcore/lib/packaging/build_context_dockerignore.py +45 -0
- agentcore/lib/packaging/container.py +95 -0
- agentcore/lib/packaging/helpers.py +289 -0
- agentcore/lib/packaging/node.py +153 -0
- agentcore/lib/packaging/python.py +135 -0
- agentcore/lib/packaging/types.py +69 -0
- agentcore/lib/packaging/uv.py +45 -0
- agentcore/lib/result.py +104 -0
- agentcore/lib/schemas/__init__.py +1 -0
- agentcore/lib/schemas/io/__init__.py +27 -0
- agentcore/lib/schemas/io/config_io.py +458 -0
- agentcore/lib/schemas/io/global_config.py +239 -0
- agentcore/lib/schemas/io/path_resolver.py +132 -0
- agentcore/lib/secrets/__init__.py +18 -0
- agentcore/lib/secrets/cipher.py +70 -0
- agentcore/lib/secrets/key_provider.py +163 -0
- agentcore/lib/secrets/sensitive_keys.py +55 -0
- agentcore/lib/time_constants.py +4 -0
- agentcore/lib/utils/__init__.py +47 -0
- agentcore/lib/utils/aws_account.py +15 -0
- agentcore/lib/utils/credentials.py +68 -0
- agentcore/lib/utils/dotenv.py +32 -0
- agentcore/lib/utils/env.py +105 -0
- agentcore/lib/utils/json_format.py +29 -0
- agentcore/lib/utils/json_rpc.py +22 -0
- agentcore/lib/utils/platform.py +33 -0
- agentcore/lib/utils/polling.py +86 -0
- agentcore/lib/utils/subprocess.py +135 -0
- agentcore/lib/utils/time_parser.py +48 -0
- agentcore/lib/utils/validation.py +106 -0
- agentcore/logging/__init__.py +10 -0
- agentcore/logging/_common.py +77 -0
- agentcore/logging/cdk_io_host.py +36 -0
- agentcore/logging/create_logger.py +107 -0
- agentcore/logging/dev_logger.py +63 -0
- agentcore/logging/exec_logger.py +159 -0
- agentcore/logging/invoke_logger.py +154 -0
- agentcore/logging/remove_logger.py +95 -0
- agentcore/operations/__init__.py +0 -0
- agentcore/operations/agent/__init__.py +0 -0
- agentcore/operations/agent/config_bundle_defaults.py +31 -0
- agentcore/operations/agent/generate/__init__.py +28 -0
- agentcore/operations/agent/generate/schema_mapper.py +319 -0
- agentcore/operations/agent/generate/types.py +172 -0
- agentcore/operations/agent/generate/write_agent_to_project.py +67 -0
- agentcore/operations/agent/import_/__init__.py +31 -0
- agentcore/operations/agent/import_/base_translator.py +449 -0
- agentcore/operations/agent/import_/constants.py +23 -0
- agentcore/operations/agent/import_/execute.py +127 -0
- agentcore/operations/agent/import_/langgraph_translator.py +294 -0
- agentcore/operations/agent/import_/pyproject_generator.py +73 -0
- agentcore/operations/agent/import_/strands_translator.py +289 -0
- agentcore/operations/config_bundle/__init__.py +1 -0
- agentcore/operations/config_bundle/bundle_name_variants.py +9 -0
- agentcore/operations/config_bundle/diff_versions.py +52 -0
- agentcore/operations/config_bundle/resolve_bundle.py +65 -0
- agentcore/operations/connectors/__init__.py +3 -0
- agentcore/operations/connectors/translators.py +63 -0
- agentcore/operations/dataset/__init__.py +21 -0
- agentcore/operations/dataset/delete.py +7 -0
- agentcore/operations/dataset/publish.py +16 -0
- agentcore/operations/dataset/pull.py +21 -0
- agentcore/operations/dataset/push.py +201 -0
- agentcore/operations/dataset/resolve_dataset.py +65 -0
- agentcore/operations/dataset/status.py +18 -0
- agentcore/operations/dataset/wait.py +25 -0
- agentcore/operations/deploy/__init__.py +152 -0
- agentcore/operations/deploy/backfill_vpc_id.py +90 -0
- agentcore/operations/deploy/change_detection.py +84 -0
- agentcore/operations/deploy/constants.py +58 -0
- agentcore/operations/deploy/dependency_sync.py +105 -0
- agentcore/operations/deploy/ensure_target.py +30 -0
- agentcore/operations/deploy/gateway_status.py +44 -0
- agentcore/operations/deploy/managed_memory_notice.py +36 -0
- agentcore/operations/deploy/payment_connector_authorization.py +106 -0
- agentcore/operations/deploy/post_deploy_datasets.py +96 -0
- agentcore/operations/deploy/post_deploy_knowledge_bases.py +104 -0
- agentcore/operations/deploy/post_deploy_observability.py +28 -0
- agentcore/operations/deploy/post_deploy_online_evals.py +60 -0
- agentcore/operations/deploy/pre_deploy_identity.py +505 -0
- agentcore/operations/deploy/preflight.py +385 -0
- agentcore/operations/deploy/region_override.py +45 -0
- agentcore/operations/deploy/teardown.py +153 -0
- agentcore/operations/dev/__init__.py +61 -0
- agentcore/operations/dev/_http.py +79 -0
- agentcore/operations/dev/_server.py +165 -0
- agentcore/operations/dev/codezip_dev_server.py +151 -0
- agentcore/operations/dev/config.py +128 -0
- agentcore/operations/dev/constants.py +9 -0
- agentcore/operations/dev/container_dev_server.py +237 -0
- agentcore/operations/dev/container_runtime.py +37 -0
- agentcore/operations/dev/dev_server.py +244 -0
- agentcore/operations/dev/gateway_env.py +25 -0
- agentcore/operations/dev/invoke.py +214 -0
- agentcore/operations/dev/invoke_a2a.py +204 -0
- agentcore/operations/dev/invoke_agui.py +88 -0
- agentcore/operations/dev/invoke_mcp.py +145 -0
- agentcore/operations/dev/invoke_types.py +30 -0
- agentcore/operations/dev/load_dev_env.py +26 -0
- agentcore/operations/dev/memory_env.py +19 -0
- agentcore/operations/dev/otel/__init__.py +5 -0
- agentcore/operations/dev/otel/collector.py +234 -0
- agentcore/operations/dev/otel/transforms.py +331 -0
- agentcore/operations/dev/payment_env.py +50 -0
- agentcore/operations/dev/server.py +28 -0
- agentcore/operations/dev/sse_transform.py +30 -0
- agentcore/operations/dev/utils.py +152 -0
- agentcore/operations/dev/web_ui/__init__.py +31 -0
- agentcore/operations/dev/web_ui/constants.py +25 -0
- agentcore/operations/dev/web_ui/handlers/__init__.py +36 -0
- agentcore/operations/dev/web_ui/handlers/_common.py +36 -0
- agentcore/operations/dev/web_ui/handlers/_deployed.py +37 -0
- agentcore/operations/dev/web_ui/handlers/a2a_proxy.py +37 -0
- agentcore/operations/dev/web_ui/handlers/cloudwatch_traces.py +71 -0
- agentcore/operations/dev/web_ui/handlers/harness_invocation.py +89 -0
- agentcore/operations/dev/web_ui/handlers/harness_utils.py +95 -0
- agentcore/operations/dev/web_ui/handlers/invocations.py +327 -0
- agentcore/operations/dev/web_ui/handlers/mcp_proxy.py +119 -0
- agentcore/operations/dev/web_ui/handlers/memory.py +84 -0
- agentcore/operations/dev/web_ui/handlers/resources.py +351 -0
- agentcore/operations/dev/web_ui/handlers/start.py +182 -0
- agentcore/operations/dev/web_ui/handlers/status.py +25 -0
- agentcore/operations/dev/web_ui/handlers/traces.py +50 -0
- agentcore/operations/dev/web_ui/run_web_ui.py +60 -0
- agentcore/operations/dev/web_ui/web_server.py +297 -0
- agentcore/operations/eval/__init__.py +8 -0
- agentcore/operations/eval/list_eval_runs.py +18 -0
- agentcore/operations/eval/logs_eval.py +119 -0
- agentcore/operations/eval/pause_resume.py +90 -0
- agentcore/operations/eval/run_eval.py +354 -0
- agentcore/operations/eval/shared/__init__.py +0 -0
- agentcore/operations/eval/shared/dataset_loader.py +68 -0
- agentcore/operations/eval/shared/dataset_session_provider.py +122 -0
- agentcore/operations/eval/shared/evaluator_runner.py +89 -0
- agentcore/operations/eval/shared/scenario_executor.py +71 -0
- agentcore/operations/eval/shared/span_collector.py +255 -0
- agentcore/operations/eval/storage.py +67 -0
- agentcore/operations/feedback/__init__.py +21 -0
- agentcore/operations/feedback/aperture_client.py +98 -0
- agentcore/operations/feedback/build_payload.py +97 -0
- agentcore/operations/feedback/constants.py +26 -0
- agentcore/operations/feedback/submit_feedback.py +150 -0
- agentcore/operations/fetch_access/__init__.py +36 -0
- agentcore/operations/fetch_access/_target.py +17 -0
- agentcore/operations/fetch_access/fetch_gateway_token.py +75 -0
- agentcore/operations/fetch_access/fetch_harness_token.py +72 -0
- agentcore/operations/fetch_access/fetch_runtime_token.py +76 -0
- agentcore/operations/fetch_access/list_agents.py +18 -0
- agentcore/operations/fetch_access/list_gateways.py +26 -0
- agentcore/operations/fetch_access/list_harnesses.py +23 -0
- agentcore/operations/fetch_access/oauth_token.py +162 -0
- agentcore/operations/fetch_access/types.py +34 -0
- agentcore/operations/harness/__init__.py +1 -0
- agentcore/operations/harness/orphan.py +84 -0
- agentcore/operations/harness/skill_utils.py +56 -0
- agentcore/operations/identity/__init__.py +33 -0
- agentcore/operations/identity/api_key_credential_provider.py +68 -0
- agentcore/operations/identity/oauth2_credential_provider.py +95 -0
- agentcore/operations/ingest/__init__.py +184 -0
- agentcore/operations/init/__init__.py +3 -0
- agentcore/operations/init/files.py +59 -0
- agentcore/operations/insights/__init__.py +21 -0
- agentcore/operations/insights/insights_storage.py +67 -0
- agentcore/operations/insights/run_insights.py +148 -0
- agentcore/operations/invoke/__init__.py +5 -0
- agentcore/operations/invoke/resolve_agent_context.py +85 -0
- agentcore/operations/jobs/__init__.py +38 -0
- agentcore/operations/jobs/ab_test/__init__.py +0 -0
- agentcore/operations/jobs/ab_test/build_options.py +126 -0
- agentcore/operations/jobs/ab_test/format.py +121 -0
- agentcore/operations/jobs/ab_test/handler.py +412 -0
- agentcore/operations/jobs/ab_test/promote.py +142 -0
- agentcore/operations/jobs/ab_test/resolve.py +221 -0
- agentcore/operations/jobs/batch_evaluation/__init__.py +0 -0
- agentcore/operations/jobs/batch_evaluation/build_source.py +68 -0
- agentcore/operations/jobs/batch_evaluation/dataset_phase1.py +95 -0
- agentcore/operations/jobs/batch_evaluation/format.py +58 -0
- agentcore/operations/jobs/batch_evaluation/handler.py +203 -0
- agentcore/operations/jobs/insights/__init__.py +0 -0
- agentcore/operations/jobs/insights/format.py +65 -0
- agentcore/operations/jobs/insights/handler.py +178 -0
- agentcore/operations/jobs/recommendation/__init__.py +0 -0
- agentcore/operations/jobs/recommendation/apply_to_bundle.py +76 -0
- agentcore/operations/jobs/recommendation/build_config.py +271 -0
- agentcore/operations/jobs/recommendation/fetch_session_spans.py +93 -0
- agentcore/operations/jobs/recommendation/format.py +77 -0
- agentcore/operations/jobs/recommendation/handler.py +331 -0
- agentcore/operations/jobs/shared/__init__.py +0 -0
- agentcore/operations/jobs/shared/constants.py +85 -0
- agentcore/operations/jobs/shared/engine.py +187 -0
- agentcore/operations/jobs/shared/format.py +104 -0
- agentcore/operations/jobs/shared/region.py +34 -0
- agentcore/operations/jobs/shared/resolve_agent_state.py +30 -0
- agentcore/operations/jobs/shared/storage.py +117 -0
- agentcore/operations/jobs/shared/wait.py +30 -0
- agentcore/operations/knowledge_base/__init__.py +33 -0
- agentcore/operations/knowledge_base/connector_config.py +105 -0
- agentcore/operations/knowledge_base/hydrate_data_sources.py +59 -0
- agentcore/operations/mcp/__init__.py +4 -0
- agentcore/operations/memory/__init__.py +13 -0
- agentcore/operations/memory/_records.py +72 -0
- agentcore/operations/memory/list_memory_records.py +45 -0
- agentcore/operations/memory/retrieve_memory_records.py +52 -0
- agentcore/operations/node/__init__.py +15 -0
- agentcore/operations/node/setup.py +36 -0
- agentcore/operations/python/__init__.py +17 -0
- agentcore/operations/python/setup.py +47 -0
- agentcore/operations/resolve_agent.py +159 -0
- agentcore/operations/session/__init__.py +86 -0
- agentcore/operations/traces/__init__.py +29 -0
- agentcore/operations/traces/get_trace.py +202 -0
- agentcore/operations/traces/insights_query.py +74 -0
- agentcore/operations/traces/list_traces.py +46 -0
- agentcore/operations/traces/trace_url.py +25 -0
- agentcore/operations/traces/types.py +55 -0
- agentcore/primitives/__init__.py +0 -0
- agentcore/primitives/_gateway_target_wizard.py +293 -0
- agentcore/primitives/_gateway_validation.py +442 -0
- agentcore/primitives/_harness_cli.py +557 -0
- agentcore/primitives/_harness_validation.py +163 -0
- agentcore/primitives/_harness_wizard.py +726 -0
- agentcore/primitives/_knowledge_base_wizard.py +259 -0
- agentcore/primitives/_payment_wizard.py +331 -0
- agentcore/primitives/_policy_form.py +160 -0
- agentcore/primitives/agent.py +817 -0
- agentcore/primitives/auth_utils.py +77 -0
- agentcore/primitives/base.py +178 -0
- agentcore/primitives/capacity_provider.py +501 -0
- agentcore/primitives/config_bundle.py +329 -0
- agentcore/primitives/credential.py +387 -0
- agentcore/primitives/credential_utils.py +45 -0
- agentcore/primitives/dataset.py +211 -0
- agentcore/primitives/deployed_gateways.py +34 -0
- agentcore/primitives/evaluator.py +909 -0
- agentcore/primitives/gateway.py +496 -0
- agentcore/primitives/gateway_target.py +988 -0
- agentcore/primitives/harness.py +706 -0
- agentcore/primitives/knowledge_base.py +477 -0
- agentcore/primitives/memory.py +387 -0
- agentcore/primitives/online_eval_config.py +365 -0
- agentcore/primitives/online_insights.py +275 -0
- agentcore/primitives/payment_connector.py +427 -0
- agentcore/primitives/payment_eligible.py +20 -0
- agentcore/primitives/payment_manager.py +605 -0
- agentcore/primitives/payment_validation.py +68 -0
- agentcore/primitives/policy.py +622 -0
- agentcore/primitives/policy_engine.py +358 -0
- agentcore/primitives/registry.py +56 -0
- agentcore/primitives/runtime_endpoint.py +361 -0
- agentcore/primitives/secret_flag_warning.py +17 -0
- agentcore/schema/__init__.py +14 -0
- agentcore/schema/_zod.py +395 -0
- agentcore/schema/constants.py +306 -0
- agentcore/schema/schemas/__init__.py +40 -0
- agentcore/schema/schemas/agent_env.py +545 -0
- agentcore/schema/schemas/agentcore_project.py +530 -0
- agentcore/schema/schemas/auth.py +286 -0
- agentcore/schema/schemas/aws_targets.py +72 -0
- agentcore/schema/schemas/connections.py +187 -0
- agentcore/schema/schemas/deployed_state.py +322 -0
- agentcore/schema/schemas/mcp.py +650 -0
- agentcore/schema/schemas/mcp_defs.py +54 -0
- agentcore/schema/schemas/primitives/__init__.py +52 -0
- agentcore/schema/schemas/primitives/ab_test.py +162 -0
- agentcore/schema/schemas/primitives/capacity_provider.py +214 -0
- agentcore/schema/schemas/primitives/config_bundle.py +48 -0
- agentcore/schema/schemas/primitives/dataset.py +55 -0
- agentcore/schema/schemas/primitives/evaluator.py +171 -0
- agentcore/schema/schemas/primitives/harness.py +710 -0
- agentcore/schema/schemas/primitives/knowledge_base.py +90 -0
- agentcore/schema/schemas/primitives/memory.py +113 -0
- agentcore/schema/schemas/primitives/online_eval_config.py +77 -0
- agentcore/schema/schemas/primitives/payment.py +114 -0
- agentcore/schema/schemas/primitives/policy.py +83 -0
- agentcore/schema/schemas/primitives/tags.py +50 -0
- agentcore/schema/schemas/zod_util.py +5 -0
- agentcore/schema/types/__init__.py +3 -0
- agentcore/schema/types/path.py +16 -0
- agentcore/templates/__init__.py +115 -0
- agentcore/templates/_handlebars.py +782 -0
- agentcore/templates/_js.py +164 -0
- agentcore/templates/base_renderer.py +107 -0
- agentcore/templates/cdk_renderer.py +129 -0
- agentcore/templates/evaluator_renderer.py +39 -0
- agentcore/templates/gateway_target_renderer.py +69 -0
- agentcore/templates/llm_context/README.md +16 -0
- agentcore/templates/llm_context/agentcore.ts +685 -0
- agentcore/templates/llm_context/aws-targets.ts +51 -0
- agentcore/templates/profiles.py +151 -0
- agentcore/templates/render.py +92 -0
- agentcore/templates/renderers.py +83 -0
- agentcore/templates/schema_assets.py +23 -0
- agentcore/templates/template_root.py +28 -0
- agentcore/templates/types.py +192 -0
- agentcore_cli-0.31.1.dist-info/METADATA +84 -0
- agentcore_cli-0.31.1.dist-info/RECORD +655 -0
- agentcore_cli-0.31.1.dist-info/WHEEL +4 -0
- agentcore_cli-0.31.1.dist-info/entry_points.txt +2 -0
- agentcore_cli-0.31.1.dist-info/licenses/LICENSE +175 -0
- agentcore_cli-0.31.1.dist-info/licenses/NOTICE +88 -0
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
"""Gateways, gateway targets and MCP runtime tools (port of ``schemas/mcp.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from typing import Annotated, Any, Final, Literal, TypedDict, get_args
|
|
7
|
+
|
|
8
|
+
from pydantic import Field, model_validator
|
|
9
|
+
|
|
10
|
+
from .._zod import (
|
|
11
|
+
Issue,
|
|
12
|
+
PassthroughModel,
|
|
13
|
+
StrictModel,
|
|
14
|
+
ZBool,
|
|
15
|
+
ZodModel,
|
|
16
|
+
array_checks,
|
|
17
|
+
js_regex,
|
|
18
|
+
raise_issues,
|
|
19
|
+
zint,
|
|
20
|
+
zstr,
|
|
21
|
+
)
|
|
22
|
+
from ..constants import NetworkMode, NodeRuntime, PythonRuntime
|
|
23
|
+
from .agent_env import EnvVarName, GatewayName, Instrumentation
|
|
24
|
+
from .auth import GatewayAuthorizerConfig, GatewayAuthorizerType
|
|
25
|
+
from .mcp_defs import ToolDefinition
|
|
26
|
+
from .primitives.tags import Tags
|
|
27
|
+
|
|
28
|
+
# ============================================================================
|
|
29
|
+
# MCP-Specific Schemas
|
|
30
|
+
# ============================================================================
|
|
31
|
+
|
|
32
|
+
GatewayTargetType = Literal[
|
|
33
|
+
"lambda",
|
|
34
|
+
"mcpServer",
|
|
35
|
+
"openApiSchema",
|
|
36
|
+
"smithyModel",
|
|
37
|
+
"apiGateway",
|
|
38
|
+
"lambdaFunctionArn",
|
|
39
|
+
"httpRuntime",
|
|
40
|
+
"connector",
|
|
41
|
+
"passthrough",
|
|
42
|
+
]
|
|
43
|
+
GATEWAY_TARGET_TYPES: Final[tuple[GatewayTargetType, ...]] = get_args(GatewayTargetType)
|
|
44
|
+
|
|
45
|
+
# Target types that use the non-MCP (HTTP) protocol; they require a gateway with protocolType "None".
|
|
46
|
+
NON_MCP_TARGET_TYPES: Final[tuple[GatewayTargetType, ...]] = ("httpRuntime", "passthrough")
|
|
47
|
+
|
|
48
|
+
# Target types that use the MCP protocol.
|
|
49
|
+
MCP_TARGET_TYPES: Final[tuple[GatewayTargetType, ...]] = (
|
|
50
|
+
"lambda",
|
|
51
|
+
"mcpServer",
|
|
52
|
+
"openApiSchema",
|
|
53
|
+
"smithyModel",
|
|
54
|
+
"apiGateway",
|
|
55
|
+
"lambdaFunctionArn",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
# ============================================================================
|
|
59
|
+
# Connector (managed-service gateway target)
|
|
60
|
+
# ============================================================================
|
|
61
|
+
|
|
62
|
+
# Managed-service connector identifiers (the L3 maps each to an operation name + Enabled list).
|
|
63
|
+
CONNECTOR_ID: Final[dict[str, str]] = {
|
|
64
|
+
"BEDROCK_KNOWLEDGE_BASES": "bedrock-knowledge-bases",
|
|
65
|
+
"WEB_SEARCH": "web-search",
|
|
66
|
+
}
|
|
67
|
+
ConnectorId = Literal["bedrock-knowledge-bases", "web-search"]
|
|
68
|
+
CONNECTOR_ID_VALUES: Final[tuple[ConnectorId, ...]] = get_args(ConnectorId)
|
|
69
|
+
|
|
70
|
+
# Real Bedrock KB IDs are 10 uppercase alphanumerics and can never collide with a KB name.
|
|
71
|
+
REAL_KB_ID_PATTERN: Final = js_regex(r"^[A-Z0-9]{10}$")
|
|
72
|
+
|
|
73
|
+
# ============================================================================
|
|
74
|
+
# Gateway Outbound Auth
|
|
75
|
+
# ============================================================================
|
|
76
|
+
|
|
77
|
+
OutboundAuthType = Literal["OAUTH", "API_KEY", "NONE", "GATEWAY_IAM_ROLE", "JWT_PASSTHROUGH"]
|
|
78
|
+
OUTBOUND_AUTH_TYPES: Final[tuple[OutboundAuthType, ...]] = get_args(OutboundAuthType)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class OutboundAuth(StrictModel):
|
|
82
|
+
type: OutboundAuthType = "NONE"
|
|
83
|
+
credential_name: zstr(min=1) | None = None
|
|
84
|
+
scopes: list[str] | None = None
|
|
85
|
+
service: zstr(min=1, max=64) | None = None
|
|
86
|
+
region: zstr(min=1, max=32) | None = None
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@dataclass(frozen=True)
|
|
90
|
+
class TargetTypeAuthConfig:
|
|
91
|
+
# Target cannot be created without outbound auth.
|
|
92
|
+
auth_required: bool
|
|
93
|
+
# Allowed OutboundAuthType values (empty = no outbound auth applicable).
|
|
94
|
+
valid_auth_types: tuple[OutboundAuthType, ...]
|
|
95
|
+
# CDK passes GATEWAY_IAM_ROLE when no auth is configured.
|
|
96
|
+
iam_role_fallback: bool
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
# Outbound authentication rules per gateway target type (single source of truth).
|
|
100
|
+
TARGET_TYPE_AUTH_CONFIG: Final[dict[GatewayTargetType, TargetTypeAuthConfig]] = {
|
|
101
|
+
"openApiSchema": TargetTypeAuthConfig(True, ("OAUTH", "API_KEY"), False),
|
|
102
|
+
"smithyModel": TargetTypeAuthConfig(False, (), True),
|
|
103
|
+
"apiGateway": TargetTypeAuthConfig(False, ("API_KEY", "NONE"), True),
|
|
104
|
+
"mcpServer": TargetTypeAuthConfig(False, ("OAUTH", "NONE"), False),
|
|
105
|
+
"lambda": TargetTypeAuthConfig(False, ("OAUTH", "NONE"), True),
|
|
106
|
+
"lambdaFunctionArn": TargetTypeAuthConfig(False, ("OAUTH", "NONE"), True),
|
|
107
|
+
"httpRuntime": TargetTypeAuthConfig(False, ("OAUTH", "NONE"), True),
|
|
108
|
+
# Connector targets call the managed service via the gateway's IAM role; no outbound auth applies.
|
|
109
|
+
"connector": TargetTypeAuthConfig(False, (), True),
|
|
110
|
+
"passthrough": TargetTypeAuthConfig(True, ("GATEWAY_IAM_ROLE", "OAUTH", "JWT_PASSTHROUGH"), False),
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
# ============================================================================
|
|
114
|
+
# API Gateway Target
|
|
115
|
+
# ============================================================================
|
|
116
|
+
|
|
117
|
+
ApiGatewayHttpMethod = Literal["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]
|
|
118
|
+
API_GATEWAY_HTTP_METHODS: Final[tuple[ApiGatewayHttpMethod, ...]] = get_args(ApiGatewayHttpMethod)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class ApiGatewayToolFilter(StrictModel):
|
|
122
|
+
filter_path: zstr(min=1)
|
|
123
|
+
methods: Annotated[list[ApiGatewayHttpMethod], array_checks(min=1)]
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class ApiGatewayToolOverride(StrictModel):
|
|
127
|
+
name: zstr(min=1)
|
|
128
|
+
path: zstr(min=1)
|
|
129
|
+
method: ApiGatewayHttpMethod
|
|
130
|
+
description: str | None = None
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class ApiGatewayToolConfiguration(StrictModel):
|
|
134
|
+
tool_filters: Annotated[list[ApiGatewayToolFilter], array_checks(min=1)]
|
|
135
|
+
tool_overrides: list[ApiGatewayToolOverride] | None = None
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class ApiGatewayConfig(StrictModel):
|
|
139
|
+
rest_api_id: zstr(min=1)
|
|
140
|
+
stage: zstr(min=1)
|
|
141
|
+
api_gateway_tool_configuration: ApiGatewayToolConfiguration
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class LambdaFunctionArnConfig(StrictModel):
|
|
145
|
+
lambda_arn: zstr(min=1, max=170)
|
|
146
|
+
tool_schema_file: zstr(min=1)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
McpImplementationLanguage = Literal["TypeScript", "Python"]
|
|
150
|
+
MCP_IMPLEMENTATION_LANGUAGES: Final[tuple[McpImplementationLanguage, ...]] = get_args(McpImplementationLanguage)
|
|
151
|
+
|
|
152
|
+
ComputeHost = Literal["Lambda", "AgentCoreRuntime"]
|
|
153
|
+
COMPUTE_HOSTS: Final[tuple[ComputeHost, ...]] = get_args(ComputeHost)
|
|
154
|
+
|
|
155
|
+
# ============================================================================
|
|
156
|
+
# Tool Implementation Binding
|
|
157
|
+
# ============================================================================
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class ToolImplementationBinding(StrictModel):
|
|
161
|
+
"""Code-based tool implementation; the CLI installs deps, bundles, zips and uploads it."""
|
|
162
|
+
|
|
163
|
+
language: McpImplementationLanguage
|
|
164
|
+
path: zstr(min=1)
|
|
165
|
+
handler: zstr(min=1)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class IamPolicyDocument(PassthroughModel):
|
|
169
|
+
"""Opaque IAM policy document, passed through verbatim to CloudFormation / IAM."""
|
|
170
|
+
|
|
171
|
+
version: Annotated[str, Field(alias="Version")]
|
|
172
|
+
statement: Annotated[list[Any], Field(alias="Statement")]
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
# ============================================================================
|
|
176
|
+
# Runtime Configuration
|
|
177
|
+
# ============================================================================
|
|
178
|
+
|
|
179
|
+
_AgentRuntimeName = zstr(
|
|
180
|
+
min=1,
|
|
181
|
+
max=48,
|
|
182
|
+
pattern=r"^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
|
|
183
|
+
pattern_msg="Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)",
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
# "file.py", "file.py:handler" or "path/file.py:handler".
|
|
187
|
+
_PythonEntrypoint = zstr(
|
|
188
|
+
min=1,
|
|
189
|
+
pattern=r"^[a-zA-Z0-9_][a-zA-Z0-9_/.-]*\.py(:[a-zA-Z_][a-zA-Z0-9_]*)?$",
|
|
190
|
+
pattern_msg='Must be a Python file path with optional handler (e.g., "main.py:agent" or "src/handler.py:app")',
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class CodeZipRuntimeConfig(StrictModel):
|
|
195
|
+
artifact: Literal["CodeZip"]
|
|
196
|
+
python_version: PythonRuntime
|
|
197
|
+
name: _AgentRuntimeName
|
|
198
|
+
entrypoint: _PythonEntrypoint
|
|
199
|
+
code_location: zstr(min=1)
|
|
200
|
+
instrumentation: Instrumentation | None = None
|
|
201
|
+
network_mode: NetworkMode = "PUBLIC"
|
|
202
|
+
description: str | None = None
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
# Runtime configuration for AgentCore Runtime (MCP mode): explicit CodeZip artifact configuration.
|
|
206
|
+
RuntimeConfig = CodeZipRuntimeConfig
|
|
207
|
+
|
|
208
|
+
# ============================================================================
|
|
209
|
+
# Compute Configuration
|
|
210
|
+
# ============================================================================
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
class LambdaComputeConfig(StrictModel):
|
|
214
|
+
"""Lambda compute (Python or TypeScript)."""
|
|
215
|
+
|
|
216
|
+
host: Literal["Lambda"]
|
|
217
|
+
implementation: ToolImplementationBinding
|
|
218
|
+
node_version: NodeRuntime | None = None
|
|
219
|
+
python_version: PythonRuntime | None = None
|
|
220
|
+
timeout: zint(ge=1, le=900) | None = None
|
|
221
|
+
memory_size: zint(ge=128, le=10240) | None = None
|
|
222
|
+
iam_policy: IamPolicyDocument | None = None
|
|
223
|
+
|
|
224
|
+
@model_validator(mode="after")
|
|
225
|
+
def _refine(self) -> LambdaComputeConfig:
|
|
226
|
+
lang = self.implementation.language
|
|
227
|
+
if (lang == "TypeScript" and not self.node_version) or (lang == "Python" and not self.python_version):
|
|
228
|
+
raise_issues(
|
|
229
|
+
[((), "TypeScript Lambda must specify nodeVersion, Python Lambda must specify pythonVersion")], self
|
|
230
|
+
)
|
|
231
|
+
return self
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class AgentCoreRuntimeComputeConfig(StrictModel):
|
|
235
|
+
"""AgentCore Runtime compute (Python only)."""
|
|
236
|
+
|
|
237
|
+
host: Literal["AgentCoreRuntime"]
|
|
238
|
+
implementation: ToolImplementationBinding
|
|
239
|
+
runtime: RuntimeConfig | None = None
|
|
240
|
+
iam_policy: IamPolicyDocument | None = None
|
|
241
|
+
|
|
242
|
+
@model_validator(mode="after")
|
|
243
|
+
def _refine(self) -> AgentCoreRuntimeComputeConfig:
|
|
244
|
+
if self.implementation.language != "Python":
|
|
245
|
+
raise_issues([((), "AgentCore Runtime only supports Python")], self)
|
|
246
|
+
return self
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
ToolComputeConfig = Annotated[LambdaComputeConfig | AgentCoreRuntimeComputeConfig, Field(discriminator="host")]
|
|
250
|
+
|
|
251
|
+
# ============================================================================
|
|
252
|
+
# Schema Source (for OpenAPI / Smithy targets)
|
|
253
|
+
# ============================================================================
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class SchemaS3Source(StrictModel):
|
|
257
|
+
uri: zstr(min=1, starts_with="s3://")
|
|
258
|
+
bucket_owner_account_id: str | None = None
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class SchemaInlineSource(StrictModel):
|
|
262
|
+
"""Local file reference, relative to the project root (read at synth time)."""
|
|
263
|
+
|
|
264
|
+
path: zstr(min=1)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
class InlineSchemaSource(StrictModel):
|
|
268
|
+
inline: SchemaInlineSource
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class S3SchemaSource(StrictModel):
|
|
272
|
+
s3: SchemaS3Source
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
SchemaSource = Annotated[InlineSchemaSource | S3SchemaSource, Field(union_mode="left_to_right")]
|
|
276
|
+
|
|
277
|
+
# ============================================================================
|
|
278
|
+
# HTTP Runtime / Passthrough Configuration
|
|
279
|
+
# ============================================================================
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
class HttpRuntimeConfig(StrictModel):
|
|
283
|
+
runtime: zstr(min=1)
|
|
284
|
+
runtime_endpoint: zstr(min=1) | None = None
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class StickinessConfig(StrictModel):
|
|
288
|
+
identifier: zstr(min=1, max=256)
|
|
289
|
+
timeout: zint(ge=1, le=86400) | None = None
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
# HTTP is NOT valid — use CUSTOM for plain HTTP/REST backends.
|
|
293
|
+
PassthroughProtocolType = Literal["MCP", "A2A", "INFERENCE", "CUSTOM"]
|
|
294
|
+
PASSTHROUGH_PROTOCOL_TYPES: Final[tuple[PassthroughProtocolType, ...]] = get_args(PassthroughProtocolType)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
class PassthroughConfig(StrictModel):
|
|
298
|
+
endpoint: zstr(
|
|
299
|
+
min=1,
|
|
300
|
+
pattern=r"^https:\/\/[a-zA-Z0-9\-.]+(:[0-9]{1,5})?(\/.*)?$",
|
|
301
|
+
pattern_msg="Must be a valid HTTPS URL",
|
|
302
|
+
)
|
|
303
|
+
protocol_type: PassthroughProtocolType = "CUSTOM"
|
|
304
|
+
stickiness_configuration: StickinessConfig | None = None
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
# ============================================================================
|
|
308
|
+
# Gateway Target
|
|
309
|
+
# ============================================================================
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class ConnectorParameterOverride(ZodModel):
|
|
313
|
+
path: str
|
|
314
|
+
description: str | None = None
|
|
315
|
+
visible: ZBool | None = None
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
class ConnectorConfiguration(ZodModel):
|
|
319
|
+
"""Per-operation configuration entry for connector targets (e.g. Retrieve, WebSearch)."""
|
|
320
|
+
|
|
321
|
+
name: str
|
|
322
|
+
description: str | None = None
|
|
323
|
+
parameter_values: dict[str, Any] | None = None
|
|
324
|
+
parameter_overrides: list[ConnectorParameterOverride] | None = None
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
class AgentCoreGatewayTarget(StrictModel):
|
|
328
|
+
"""Binds one or more ToolDefinitions to the compute (or external endpoint) that services them."""
|
|
329
|
+
|
|
330
|
+
name: zstr(min=1)
|
|
331
|
+
target_type: GatewayTargetType
|
|
332
|
+
# Required for Lambda targets; optional for MCP Server (discovered via tools/list).
|
|
333
|
+
tool_definitions: list[ToolDefinition] | None = None
|
|
334
|
+
compute: ToolComputeConfig | None = None
|
|
335
|
+
# Endpoint URL for mcpServer targets.
|
|
336
|
+
endpoint: zstr(url=True) | None = None
|
|
337
|
+
outbound_auth: OutboundAuth | None = None
|
|
338
|
+
api_gateway: ApiGatewayConfig | None = None
|
|
339
|
+
schema_source: SchemaSource | None = None
|
|
340
|
+
lambda_function_arn: LambdaFunctionArnConfig | None = None
|
|
341
|
+
http_runtime: HttpRuntimeConfig | None = None
|
|
342
|
+
connector_id: ConnectorId | None = None
|
|
343
|
+
configurations: list[ConnectorConfiguration] | None = None
|
|
344
|
+
passthrough: PassthroughConfig | None = None
|
|
345
|
+
|
|
346
|
+
@model_validator(mode="after")
|
|
347
|
+
def _refine(self) -> AgentCoreGatewayTarget:
|
|
348
|
+
issues = _gateway_target_issues(self)
|
|
349
|
+
raise_issues(issues, self)
|
|
350
|
+
return self
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
def _gateway_target_issues(d: AgentCoreGatewayTarget) -> list[Issue]:
|
|
354
|
+
issues: list[Issue] = []
|
|
355
|
+
t = d.target_type
|
|
356
|
+
has_tools = bool(d.tool_definitions)
|
|
357
|
+
|
|
358
|
+
def add(field: str | None, msg: str) -> None:
|
|
359
|
+
issues.append(((field,) if field else (), msg))
|
|
360
|
+
|
|
361
|
+
if t == "apiGateway":
|
|
362
|
+
if d.api_gateway is None:
|
|
363
|
+
add("apiGateway", "apiGateway config is required for apiGateway target type")
|
|
364
|
+
if d.compute is not None:
|
|
365
|
+
add("compute", "compute is not applicable for apiGateway target type")
|
|
366
|
+
if d.endpoint:
|
|
367
|
+
add("endpoint", "endpoint is not applicable for apiGateway target type")
|
|
368
|
+
if has_tools:
|
|
369
|
+
add(
|
|
370
|
+
"toolDefinitions",
|
|
371
|
+
"toolDefinitions is not applicable for apiGateway target type (tools are auto-discovered)",
|
|
372
|
+
)
|
|
373
|
+
if d.lambda_function_arn is not None:
|
|
374
|
+
add("lambdaFunctionArn", "lambdaFunctionArn is not applicable for apiGateway target type")
|
|
375
|
+
if t in ("openApiSchema", "smithyModel"):
|
|
376
|
+
if d.schema_source is None:
|
|
377
|
+
add("schemaSource", f"{t} targets require a schemaSource.")
|
|
378
|
+
if d.compute is not None:
|
|
379
|
+
add("compute", f"compute is not applicable for {t} target type")
|
|
380
|
+
if d.endpoint:
|
|
381
|
+
add("endpoint", f"endpoint is not applicable for {t} target type")
|
|
382
|
+
if has_tools:
|
|
383
|
+
add("toolDefinitions", f"toolDefinitions is not applicable for {t} target type")
|
|
384
|
+
if d.api_gateway is not None:
|
|
385
|
+
add("apiGateway", f"apiGateway config is not applicable for {t} target type")
|
|
386
|
+
if t == "lambdaFunctionArn":
|
|
387
|
+
if d.lambda_function_arn is None:
|
|
388
|
+
add("lambdaFunctionArn", "lambdaFunctionArn config is required for lambdaFunctionArn target type")
|
|
389
|
+
if d.compute is not None:
|
|
390
|
+
add("compute", "compute is not applicable for lambdaFunctionArn target type")
|
|
391
|
+
if d.endpoint:
|
|
392
|
+
add("endpoint", "endpoint is not applicable for lambdaFunctionArn target type")
|
|
393
|
+
if d.api_gateway is not None:
|
|
394
|
+
add("apiGateway", "apiGateway is not applicable for lambdaFunctionArn target type")
|
|
395
|
+
if d.outbound_auth is not None:
|
|
396
|
+
add("outboundAuth", "outboundAuth is not applicable for lambdaFunctionArn target type")
|
|
397
|
+
if has_tools:
|
|
398
|
+
add(
|
|
399
|
+
"toolDefinitions",
|
|
400
|
+
"toolDefinitions is not applicable for lambdaFunctionArn target type (tools are defined via "
|
|
401
|
+
"toolSchemaFile)",
|
|
402
|
+
)
|
|
403
|
+
if t == "mcpServer":
|
|
404
|
+
if d.compute is None and not d.endpoint:
|
|
405
|
+
add(None, "MCP Server targets require either an endpoint URL or compute configuration.")
|
|
406
|
+
if d.api_gateway is not None:
|
|
407
|
+
add("apiGateway", "apiGateway is not applicable for mcpServer target type")
|
|
408
|
+
if d.lambda_function_arn is not None:
|
|
409
|
+
add("lambdaFunctionArn", "lambdaFunctionArn is not applicable for mcpServer target type")
|
|
410
|
+
if t == "httpRuntime":
|
|
411
|
+
if d.http_runtime is None:
|
|
412
|
+
add(
|
|
413
|
+
"httpRuntime",
|
|
414
|
+
"httpRuntime targets require an httpRuntime configuration (with a runtime reference).",
|
|
415
|
+
)
|
|
416
|
+
if d.endpoint:
|
|
417
|
+
add("endpoint", "httpRuntime targets should use httpRuntime.runtimeEndpoint instead of endpoint.")
|
|
418
|
+
if d.compute is not None:
|
|
419
|
+
add("compute", "compute is not applicable for httpRuntime target type")
|
|
420
|
+
if d.api_gateway is not None:
|
|
421
|
+
add("apiGateway", "apiGateway is not applicable for httpRuntime target type")
|
|
422
|
+
if d.lambda_function_arn is not None:
|
|
423
|
+
add("lambdaFunctionArn", "lambdaFunctionArn is not applicable for httpRuntime target type")
|
|
424
|
+
if has_tools:
|
|
425
|
+
add("toolDefinitions", "toolDefinitions is not applicable for httpRuntime target type")
|
|
426
|
+
if t == "passthrough":
|
|
427
|
+
if d.passthrough is None:
|
|
428
|
+
add("passthrough", "passthrough targets require a passthrough configuration (with an endpoint).")
|
|
429
|
+
if d.endpoint:
|
|
430
|
+
add("endpoint", "passthrough targets should use passthrough.endpoint instead of endpoint.")
|
|
431
|
+
if d.compute is not None:
|
|
432
|
+
add("compute", "compute is not applicable for passthrough target type")
|
|
433
|
+
if d.api_gateway is not None:
|
|
434
|
+
add("apiGateway", "apiGateway is not applicable for passthrough target type")
|
|
435
|
+
if d.lambda_function_arn is not None:
|
|
436
|
+
add("lambdaFunctionArn", "lambdaFunctionArn is not applicable for passthrough target type")
|
|
437
|
+
if d.http_runtime is not None:
|
|
438
|
+
add("httpRuntime", "httpRuntime is not applicable for passthrough target type")
|
|
439
|
+
if has_tools:
|
|
440
|
+
add("toolDefinitions", "toolDefinitions is not applicable for passthrough target type")
|
|
441
|
+
if t == "lambda" and d.compute is None:
|
|
442
|
+
add("compute", "Lambda targets require compute configuration.")
|
|
443
|
+
if t == "lambda" and not has_tools:
|
|
444
|
+
add("toolDefinitions", "Lambda targets require at least one tool definition.")
|
|
445
|
+
if t == "connector":
|
|
446
|
+
if not d.connector_id:
|
|
447
|
+
add("connectorId", "connectorId is required for connector target type")
|
|
448
|
+
if d.compute is not None:
|
|
449
|
+
add("compute", "compute is not applicable for connector target type")
|
|
450
|
+
if d.endpoint:
|
|
451
|
+
add("endpoint", "endpoint is not applicable for connector target type")
|
|
452
|
+
if has_tools:
|
|
453
|
+
add("toolDefinitions", "toolDefinitions is not applicable for connector target type")
|
|
454
|
+
if d.api_gateway is not None:
|
|
455
|
+
add("apiGateway", "apiGateway is not applicable for connector target type")
|
|
456
|
+
if d.lambda_function_arn is not None:
|
|
457
|
+
add("lambdaFunctionArn", "lambdaFunctionArn is not applicable for connector target type")
|
|
458
|
+
if d.schema_source is not None:
|
|
459
|
+
add("schemaSource", "schemaSource is not applicable for connector target type")
|
|
460
|
+
if d.http_runtime is not None:
|
|
461
|
+
add("httpRuntime", "httpRuntime is not applicable for connector target type")
|
|
462
|
+
if d.passthrough is not None:
|
|
463
|
+
add("passthrough", "passthrough is not applicable for connector target type")
|
|
464
|
+
if t != "connector":
|
|
465
|
+
if d.connector_id:
|
|
466
|
+
add("connectorId", "connectorId only applies to connector target type")
|
|
467
|
+
if d.configurations:
|
|
468
|
+
add("configurations", "configurations only applies to connector target type")
|
|
469
|
+
|
|
470
|
+
# Centralized outbound auth validation (driven by TARGET_TYPE_AUTH_CONFIG).
|
|
471
|
+
auth_config = TARGET_TYPE_AUTH_CONFIG[t]
|
|
472
|
+
auth_type = d.outbound_auth.type if d.outbound_auth is not None else "NONE"
|
|
473
|
+
if auth_config.auth_required and auth_type == "NONE":
|
|
474
|
+
add("outboundAuth", f"{t} targets require outbound auth ({' or '.join(auth_config.valid_auth_types)})")
|
|
475
|
+
if not auth_config.valid_auth_types and auth_type != "NONE":
|
|
476
|
+
add("outboundAuth", f"{t} targets use IAM role auth; outboundAuth is not applicable")
|
|
477
|
+
if auth_config.valid_auth_types and auth_type != "NONE" and auth_type not in auth_config.valid_auth_types:
|
|
478
|
+
add("outboundAuth", f"{t} targets do not support {auth_type} outbound auth")
|
|
479
|
+
oa = d.outbound_auth
|
|
480
|
+
if oa is not None and oa.type not in ("NONE", "GATEWAY_IAM_ROLE", "JWT_PASSTHROUGH") and not oa.credential_name:
|
|
481
|
+
issues.append((("outboundAuth", "credentialName"), f"{oa.type} outbound auth requires a credentialName."))
|
|
482
|
+
if t == "passthrough" and oa is not None and oa.type == "GATEWAY_IAM_ROLE" and not oa.service:
|
|
483
|
+
issues.append(
|
|
484
|
+
(
|
|
485
|
+
("outboundAuth", "service"),
|
|
486
|
+
"GATEWAY_IAM_ROLE outbound auth on passthrough targets requires a service name.",
|
|
487
|
+
)
|
|
488
|
+
)
|
|
489
|
+
if oa is not None and oa.type == "JWT_PASSTHROUGH" and t != "passthrough":
|
|
490
|
+
issues.append(
|
|
491
|
+
(("outboundAuth", "type"), "JWT_PASSTHROUGH outbound auth is only valid for passthrough targets.")
|
|
492
|
+
)
|
|
493
|
+
return issues
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
# ============================================================================
|
|
497
|
+
# Gateway
|
|
498
|
+
# ============================================================================
|
|
499
|
+
|
|
500
|
+
GatewayExceptionLevel = Literal["NONE", "DEBUG"]
|
|
501
|
+
GATEWAY_EXCEPTION_LEVELS: Final[tuple[GatewayExceptionLevel, ...]] = get_args(GatewayExceptionLevel)
|
|
502
|
+
|
|
503
|
+
PolicyEngineMode = Literal["LOG_ONLY", "ENFORCE"]
|
|
504
|
+
POLICY_ENGINE_MODES: Final[tuple[PolicyEngineMode, ...]] = get_args(PolicyEngineMode)
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
class GatewayPolicyEngineConfiguration(StrictModel):
|
|
508
|
+
policy_engine_name: zstr(min=1)
|
|
509
|
+
mode: PolicyEngineMode
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
GatewayProtocolType = Literal["MCP", "None"]
|
|
513
|
+
GATEWAY_PROTOCOL_TYPES: Final[tuple[GatewayProtocolType, ...]] = get_args(GatewayProtocolType)
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
class AgentCoreGateway(StrictModel):
|
|
517
|
+
"""Gateway with opinionated defaults (authorizerType NONE, semantic search on)."""
|
|
518
|
+
|
|
519
|
+
name: GatewayName
|
|
520
|
+
# Actual AWS resource name for imported gateways (CDK uses it instead of projectName-name).
|
|
521
|
+
resource_name: GatewayName | None = None
|
|
522
|
+
protocol_type: GatewayProtocolType | None = None
|
|
523
|
+
description: str | None = None
|
|
524
|
+
targets: list[AgentCoreGatewayTarget]
|
|
525
|
+
authorizer_type: GatewayAuthorizerType = "NONE"
|
|
526
|
+
authorizer_configuration: GatewayAuthorizerConfig | None = None
|
|
527
|
+
enable_semantic_search: ZBool = True
|
|
528
|
+
exception_level: GatewayExceptionLevel = "NONE"
|
|
529
|
+
policy_engine_configuration: GatewayPolicyEngineConfiguration | None = None
|
|
530
|
+
# Existing IAM execution role; when set, CDK uses it instead of creating one.
|
|
531
|
+
execution_role_arn: (
|
|
532
|
+
zstr(max=2048, pattern=r"^arn:[^:]+:iam::\d{12}:role\/.+", pattern_msg="Must be a valid IAM role ARN") | None
|
|
533
|
+
) = None
|
|
534
|
+
tags: Tags | None = None
|
|
535
|
+
|
|
536
|
+
@model_validator(mode="after")
|
|
537
|
+
def _refine(self) -> AgentCoreGateway:
|
|
538
|
+
issues: list[Issue] = []
|
|
539
|
+
if self.authorizer_type == "CUSTOM_JWT" and (
|
|
540
|
+
self.authorizer_configuration is None or self.authorizer_configuration.custom_jwt_authorizer is None
|
|
541
|
+
):
|
|
542
|
+
issues.append(
|
|
543
|
+
(
|
|
544
|
+
("authorizerConfiguration",),
|
|
545
|
+
"customJwtAuthorizer configuration is required when authorizerType is CUSTOM_JWT",
|
|
546
|
+
)
|
|
547
|
+
)
|
|
548
|
+
# A protocolType "None" (HTTP) gateway can host any target type; only an MCP gateway is
|
|
549
|
+
# restricted from hosting the HTTP-only target types.
|
|
550
|
+
for target in self.targets:
|
|
551
|
+
if self.protocol_type != "None" and target.target_type in NON_MCP_TARGET_TYPES:
|
|
552
|
+
issues.append(
|
|
553
|
+
(
|
|
554
|
+
(),
|
|
555
|
+
(
|
|
556
|
+
f'Target "{target.name}" is {target.target_type} but gateway does not have protocolType: '
|
|
557
|
+
'"None". Add --protocol-type None when creating the gateway.'
|
|
558
|
+
),
|
|
559
|
+
)
|
|
560
|
+
)
|
|
561
|
+
raise_issues(issues, self)
|
|
562
|
+
return self
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
# ============================================================================
|
|
566
|
+
# MCP Runtime Tool
|
|
567
|
+
# ============================================================================
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
class McpRuntimeBinding(StrictModel):
|
|
571
|
+
"""Grants a runtime InvokeAgentRuntime on the tool and sets its ARN in ``envVarName``."""
|
|
572
|
+
|
|
573
|
+
runtime_name: zstr(min=1)
|
|
574
|
+
env_var_name: EnvVarName
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
class AgentCoreMcpRuntimeTool(StrictModel):
|
|
578
|
+
"""An MCP tool server deployed as AgentCoreRuntime compute, addressed directly (not via a Gateway)."""
|
|
579
|
+
|
|
580
|
+
name: zstr(min=1)
|
|
581
|
+
tool_definition: ToolDefinition
|
|
582
|
+
compute: AgentCoreRuntimeComputeConfig
|
|
583
|
+
bindings: list[McpRuntimeBinding] | None = None
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
class AgentCoreMcpSpec(TypedDict, total=False):
|
|
587
|
+
"""Shape of the MCP-related fields within AgentCoreProjectSpec (previously mcp.json)."""
|
|
588
|
+
|
|
589
|
+
agentCoreGateways: list[AgentCoreGateway]
|
|
590
|
+
mcpRuntimeTools: list[AgentCoreMcpRuntimeTool]
|
|
591
|
+
unassignedTargets: list[AgentCoreGatewayTarget]
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
__all__ = [
|
|
595
|
+
"API_GATEWAY_HTTP_METHODS",
|
|
596
|
+
"COMPUTE_HOSTS",
|
|
597
|
+
"CONNECTOR_ID",
|
|
598
|
+
"CONNECTOR_ID_VALUES",
|
|
599
|
+
"GATEWAY_EXCEPTION_LEVELS",
|
|
600
|
+
"GATEWAY_PROTOCOL_TYPES",
|
|
601
|
+
"GATEWAY_TARGET_TYPES",
|
|
602
|
+
"MCP_IMPLEMENTATION_LANGUAGES",
|
|
603
|
+
"MCP_TARGET_TYPES",
|
|
604
|
+
"NON_MCP_TARGET_TYPES",
|
|
605
|
+
"OUTBOUND_AUTH_TYPES",
|
|
606
|
+
"PASSTHROUGH_PROTOCOL_TYPES",
|
|
607
|
+
"POLICY_ENGINE_MODES",
|
|
608
|
+
"REAL_KB_ID_PATTERN",
|
|
609
|
+
"TARGET_TYPE_AUTH_CONFIG",
|
|
610
|
+
"AgentCoreGateway",
|
|
611
|
+
"AgentCoreGatewayTarget",
|
|
612
|
+
"AgentCoreMcpRuntimeTool",
|
|
613
|
+
"AgentCoreMcpSpec",
|
|
614
|
+
"AgentCoreRuntimeComputeConfig",
|
|
615
|
+
"ApiGatewayConfig",
|
|
616
|
+
"ApiGatewayHttpMethod",
|
|
617
|
+
"ApiGatewayToolConfiguration",
|
|
618
|
+
"ApiGatewayToolFilter",
|
|
619
|
+
"ApiGatewayToolOverride",
|
|
620
|
+
"CodeZipRuntimeConfig",
|
|
621
|
+
"ComputeHost",
|
|
622
|
+
"ConnectorConfiguration",
|
|
623
|
+
"ConnectorId",
|
|
624
|
+
"ConnectorParameterOverride",
|
|
625
|
+
"GatewayExceptionLevel",
|
|
626
|
+
"GatewayPolicyEngineConfiguration",
|
|
627
|
+
"GatewayProtocolType",
|
|
628
|
+
"GatewayTargetType",
|
|
629
|
+
"HttpRuntimeConfig",
|
|
630
|
+
"IamPolicyDocument",
|
|
631
|
+
"InlineSchemaSource",
|
|
632
|
+
"LambdaComputeConfig",
|
|
633
|
+
"LambdaFunctionArnConfig",
|
|
634
|
+
"McpImplementationLanguage",
|
|
635
|
+
"McpRuntimeBinding",
|
|
636
|
+
"OutboundAuth",
|
|
637
|
+
"OutboundAuthType",
|
|
638
|
+
"PassthroughConfig",
|
|
639
|
+
"PassthroughProtocolType",
|
|
640
|
+
"PolicyEngineMode",
|
|
641
|
+
"RuntimeConfig",
|
|
642
|
+
"S3SchemaSource",
|
|
643
|
+
"SchemaInlineSource",
|
|
644
|
+
"SchemaS3Source",
|
|
645
|
+
"SchemaSource",
|
|
646
|
+
"StickinessConfig",
|
|
647
|
+
"TargetTypeAuthConfig",
|
|
648
|
+
"ToolComputeConfig",
|
|
649
|
+
"ToolImplementationBinding",
|
|
650
|
+
]
|