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,60 @@
|
|
|
1
|
+
## AgentCore Templates
|
|
2
|
+
|
|
3
|
+
This directory stores:
|
|
4
|
+
|
|
5
|
+
- Template assets for agents written in different languages, SDKs, and configurations
|
|
6
|
+
- Container templates (`container/python/`) with `Dockerfile` and `.dockerignore` for Container build agents
|
|
7
|
+
- Vended documentation (`README.md`, `agents/AGENTS.md`) copied into user projects at create time
|
|
8
|
+
- CDK project template (`cdk/`) using `@aws/agentcore-cdk` L3 constructs
|
|
9
|
+
- Evaluator templates (`evaluators/`) for code-based evaluators
|
|
10
|
+
- MCP tool templates (`mcp/`) for Lambda and AgentCoreRuntime compute
|
|
11
|
+
|
|
12
|
+
### Directory Layout
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
assets/
|
|
16
|
+
├── README.md # Vended to project root as project README
|
|
17
|
+
├── AGENTS.md # This file — internal dev context
|
|
18
|
+
├── agents/
|
|
19
|
+
│ └── AGENTS.md # Vended to project root for AI coding assistants
|
|
20
|
+
├── python/ # Framework templates (one per SDK per protocol)
|
|
21
|
+
│ ├── http/ # HTTP protocol agents
|
|
22
|
+
│ │ ├── strands/
|
|
23
|
+
│ │ ├── langchain_langgraph/
|
|
24
|
+
│ │ ├── googleadk/
|
|
25
|
+
│ │ ├── openaiagents/
|
|
26
|
+
│ │ └── autogen/
|
|
27
|
+
│ ├── mcp/ # MCP protocol agents
|
|
28
|
+
│ │ └── standalone/
|
|
29
|
+
│ └── a2a/ # A2A protocol agents
|
|
30
|
+
│ ├── strands/
|
|
31
|
+
│ ├── langchain_langgraph/
|
|
32
|
+
│ └── googleadk/
|
|
33
|
+
├── typescript/ # TypeScript agent templates
|
|
34
|
+
├── container/ # Container build templates
|
|
35
|
+
│ └── python/
|
|
36
|
+
│ ├── Dockerfile
|
|
37
|
+
│ └── dockerignore.template
|
|
38
|
+
├── cdk/ # CDK project template (@aws/agentcore-cdk)
|
|
39
|
+
├── evaluators/ # Code-based evaluator templates
|
|
40
|
+
└── mcp/ # MCP tool templates (Lambda + AgentCoreRuntime)
|
|
41
|
+
├── python/
|
|
42
|
+
└── python-lambda/
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The rendering logic is rooted in the `AgentEnvSpec` and must ALWAYS respect the configuration in the spec.
|
|
46
|
+
|
|
47
|
+
For Container builds, `BaseRenderer.render()` automatically copies the `container/<language>/` templates (Dockerfile,
|
|
48
|
+
.dockerignore) into the agent directory when `buildType === 'Container'`.
|
|
49
|
+
|
|
50
|
+
## Guidance for template changes
|
|
51
|
+
|
|
52
|
+
- Always make sure the templates are as close to working code as possible
|
|
53
|
+
- AVOID as much as possible using any conditionals within the templates
|
|
54
|
+
- Test template rendering with `agentcore add agent` for each framework/protocol combination
|
|
55
|
+
|
|
56
|
+
## How to use the assets in this directory
|
|
57
|
+
|
|
58
|
+
- These assets are rendered by the CLI's template renderer in `src/cli/templates/`
|
|
59
|
+
- The `README.md` and `agents/AGENTS.md` are copied verbatim (no template rendering) during project creation
|
|
60
|
+
- The `.llm-context/` files are sourced from `src/schema/llm-compacted/` and written during project creation
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# AgentCore Project
|
|
2
|
+
|
|
3
|
+
This project was created with the [AgentCore CLI](https://github.com/aws/agentcore-cli).
|
|
4
|
+
|
|
5
|
+
## Project Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
my-project/
|
|
9
|
+
├── AGENTS.md # AI coding assistant context
|
|
10
|
+
├── agentcore/
|
|
11
|
+
│ ├── agentcore.json # Project config (agents, memories, credentials, gateways, evaluators)
|
|
12
|
+
│ ├── aws-targets.json # Deployment targets (account + region)
|
|
13
|
+
│ ├── .env.local # Secrets — API keys (gitignored)
|
|
14
|
+
│ ├── .llm-context/ # TypeScript type definitions for AI assistants
|
|
15
|
+
│ │ ├── agentcore.ts # AgentCoreProjectSpec types
|
|
16
|
+
│ │ └── aws-targets.ts # Deployment target types
|
|
17
|
+
│ └── cdk/ # CDK infrastructure (@aws/agentcore-cdk)
|
|
18
|
+
├── app/ # Agent application code
|
|
19
|
+
└── evaluators/ # Custom evaluator code (if any)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Getting Started
|
|
23
|
+
|
|
24
|
+
### Prerequisites
|
|
25
|
+
|
|
26
|
+
- **Node.js** 20.x or later
|
|
27
|
+
- **Python 3.10+** and **uv** for Python agents ([install uv](https://docs.astral.sh/uv/getting-started/installation/))
|
|
28
|
+
- **AWS credentials** configured (`aws configure` or environment variables)
|
|
29
|
+
- **Docker** (only for Container build agents)
|
|
30
|
+
|
|
31
|
+
### Development
|
|
32
|
+
|
|
33
|
+
Run your agent locally:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
agentcore dev
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Validate Invocation Input
|
|
40
|
+
|
|
41
|
+
Validate runtime invocation payloads before forwarding them to an agent framework. Keep user prompts typed as strings
|
|
42
|
+
and pass only prompt text to the agent.
|
|
43
|
+
|
|
44
|
+
### Deployment
|
|
45
|
+
|
|
46
|
+
Deploy to AWS:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
agentcore deploy
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Commands
|
|
53
|
+
|
|
54
|
+
| Command | Description |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| `agentcore create` | Create a new AgentCore project |
|
|
57
|
+
| `agentcore add` | Add resources (agent, memory, credential, gateway, evaluator, policy) |
|
|
58
|
+
| `agentcore remove` | Remove resources |
|
|
59
|
+
| `agentcore dev` | Run agent locally with hot-reload |
|
|
60
|
+
| `agentcore deploy` | Deploy to AWS via CDK |
|
|
61
|
+
| `agentcore status` | Show deployment status |
|
|
62
|
+
| `agentcore invoke` | Invoke agent (local or deployed) |
|
|
63
|
+
| `agentcore logs` | View agent logs |
|
|
64
|
+
| `agentcore traces` | View agent traces |
|
|
65
|
+
| `agentcore eval` | Run evaluations |
|
|
66
|
+
| `agentcore package` | Package agent artifacts |
|
|
67
|
+
| `agentcore validate` | Validate configuration |
|
|
68
|
+
| `agentcore pause` | Pause a deployed agent |
|
|
69
|
+
| `agentcore resume` | Resume a paused agent |
|
|
70
|
+
| `agentcore fetch` | Fetch remote resource definitions |
|
|
71
|
+
| `agentcore import` | Import existing resources |
|
|
72
|
+
| `agentcore update` | Check for CLI updates |
|
|
73
|
+
|
|
74
|
+
## Configuration
|
|
75
|
+
|
|
76
|
+
Edit the JSON files in `agentcore/` to configure your project. See `agentcore/.llm-context/` for type definitions and validation constraints.
|
|
77
|
+
|
|
78
|
+
The project uses a **flat resource model** — agents, memories, credentials, gateways, evaluators, and policies are top-level arrays in `agentcore.json`. Resources are independent; agents discover memories and credentials at runtime via environment variables or SDK calls.
|
|
79
|
+
|
|
80
|
+
## Resources
|
|
81
|
+
|
|
82
|
+
| Resource | Purpose |
|
|
83
|
+
| --- | --- |
|
|
84
|
+
| Agent (runtime) | HTTP, MCP, or A2A agent deployed to AgentCore Runtime |
|
|
85
|
+
| Memory | Persistent context storage with configurable strategies |
|
|
86
|
+
| Credential | API key or OAuth credential providers |
|
|
87
|
+
| Gateway | MCP gateway that routes tool calls to targets |
|
|
88
|
+
| Gateway Target | Tool implementation (Lambda, MCP server, OpenAPI, Smithy, API Gateway) |
|
|
89
|
+
| Evaluator | Custom LLM-as-a-Judge or code-based evaluation |
|
|
90
|
+
| Online Eval Config | Continuous evaluation pipeline for deployed agents |
|
|
91
|
+
| Policy | Cedar authorization policies for gateway tools |
|
|
92
|
+
|
|
93
|
+
### Agent Types
|
|
94
|
+
|
|
95
|
+
- **Template agents**: Created from framework templates (Strands, LangChain/LangGraph, GoogleADK, OpenAI Agents, Autogen)
|
|
96
|
+
- **BYO agents**: Bring your own code with `agentcore add agent --type byo`
|
|
97
|
+
- **Import agents**: Import existing Bedrock agents with `agentcore import`
|
|
98
|
+
|
|
99
|
+
### Build Types
|
|
100
|
+
|
|
101
|
+
- **CodeZip**: Python source packaged as a zip and deployed directly to AgentCore Runtime
|
|
102
|
+
- **Container**: Docker image built via CodeBuild (ARM64), pushed to ECR, and deployed to AgentCore Runtime
|
|
103
|
+
|
|
104
|
+
## Documentation
|
|
105
|
+
|
|
106
|
+
- [AgentCore CLI](https://github.com/aws/agentcore-cli)
|
|
107
|
+
- [AgentCore CDK Constructs](https://github.com/aws/agentcore-l3-cdk-constructs)
|
|
108
|
+
- [Amazon Bedrock AgentCore](https://aws.amazon.com/bedrock/agentcore/)
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# AgentCore Project
|
|
2
|
+
|
|
3
|
+
This project contains configuration and infrastructure for an Amazon Bedrock AgentCore application.
|
|
4
|
+
|
|
5
|
+
The `agentcore/` directory is a declarative model of the project. The `agentcore/cdk/` subdirectory uses the
|
|
6
|
+
`@aws/agentcore-cdk` L3 constructs to deploy the configuration to AWS.
|
|
7
|
+
|
|
8
|
+
## Mental Model
|
|
9
|
+
|
|
10
|
+
The project uses a **flat resource model**. Agents, memories, credentials, gateways, evaluators, and policies are
|
|
11
|
+
independent top-level arrays in `agentcore.json`. There is no binding between resources in the schema — each resource is
|
|
12
|
+
provisioned independently. Agents discover memories and credentials at runtime via environment variables or SDK calls.
|
|
13
|
+
Tags defined in `agentcore.json` flow through to deployed CloudFormation resources.
|
|
14
|
+
|
|
15
|
+
## Critical Invariants
|
|
16
|
+
|
|
17
|
+
1. **Schema-First Authority:** The `.json` files are the source of truth. Do not modify agent behavior by editing
|
|
18
|
+
generated CDK code in `cdk/`.
|
|
19
|
+
2. **Resource Identity:** The `name` field determines the CloudFormation Logical ID.
|
|
20
|
+
- **Renaming** a resource will **destroy and recreate** it.
|
|
21
|
+
- **Modifying** other fields will update the resource **in-place**.
|
|
22
|
+
3. **Schema Validation:** If your JSON conforms to the types in `.llm-context/`, it will deploy successfully. Run
|
|
23
|
+
`agentcore validate` to check.
|
|
24
|
+
4. **Resource Removal:** Use `agentcore remove` to remove resources. Run `agentcore deploy` after removal to tear down
|
|
25
|
+
deployed infrastructure.
|
|
26
|
+
5. **Invocation Input:** Validate runtime payloads and require text prompts to be strings. If a Strands app accepts a
|
|
27
|
+
caller-supplied message history, normalize the history tail with `strip_trailing_tool_use()` before invocation.
|
|
28
|
+
|
|
29
|
+
## Directory Structure
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
myProject/
|
|
33
|
+
├── AGENTS.md # This file — AI coding assistant context
|
|
34
|
+
├── agentcore/
|
|
35
|
+
│ ├── agentcore.json # Main project config (AgentCoreProjectSpec)
|
|
36
|
+
│ ├── aws-targets.json # Deployment targets (account + region)
|
|
37
|
+
│ ├── .env.local # Secrets — API keys (gitignored)
|
|
38
|
+
│ ├── .llm-context/ # TypeScript type definitions for AI assistants
|
|
39
|
+
│ │ ├── README.md # Guide to using schema files
|
|
40
|
+
│ │ ├── agentcore.ts # AgentCoreProjectSpec types
|
|
41
|
+
│ │ └── aws-targets.ts # AWS deployment target types
|
|
42
|
+
│ └── cdk/ # AWS CDK project (@aws/agentcore-cdk L3 constructs)
|
|
43
|
+
├── app/ # Agent application code
|
|
44
|
+
└── evaluators/ # Custom evaluator code (if any)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Schema Reference
|
|
48
|
+
|
|
49
|
+
The `agentcore/.llm-context/` directory contains TypeScript type definitions optimized for AI coding assistants. Each
|
|
50
|
+
file maps to a JSON config file and includes validation constraints as comments (`@regex`, `@min`, `@max`).
|
|
51
|
+
|
|
52
|
+
| JSON Config | Schema File | Root Type |
|
|
53
|
+
| --- | --- | --- |
|
|
54
|
+
| `agentcore/agentcore.json` | `agentcore/.llm-context/agentcore.ts` | `AgentCoreProjectSpec` |
|
|
55
|
+
| `agentcore/aws-targets.json` | `agentcore/.llm-context/aws-targets.ts` | `AwsDeploymentTarget[]` |
|
|
56
|
+
|
|
57
|
+
### Key Types
|
|
58
|
+
|
|
59
|
+
- **AgentCoreProjectSpec**: Root config with runtimes, memories, knowledge bases, credentials, evaluators, online evals and insights, gateways, policy engines, config bundles, A/B tests, harness registrations, datasets, payment managers, and capacity providers
|
|
60
|
+
- **AgentEnvSpec**: Agent configuration (build type, entrypoint, code location, runtime version, network mode)
|
|
61
|
+
- **Memory**: Memory resource with strategies (SEMANTIC, SUMMARIZATION, USER_PREFERENCE, EPISODIC) and expiry
|
|
62
|
+
- **Credential**: API key or OAuth credential provider
|
|
63
|
+
- **AgentCoreGateway**: MCP gateway with targets (Lambda, MCP server, OpenAPI, Smithy, API Gateway, web-search, knowledge-base)
|
|
64
|
+
- **Evaluator**: LLM-as-a-Judge or code-based evaluator
|
|
65
|
+
- **OnlineEvalConfig**: Continuous evaluation pipeline bound to an agent
|
|
66
|
+
- **OnlineInsightsConfig** _[preview]_: Continuous failure-pattern analysis bound to an agent
|
|
67
|
+
- **KnowledgeBase**: Managed Bedrock Knowledge Base auto-wired to a gateway
|
|
68
|
+
- **Harness**: Declarative agent — runtime + tools + skills + memory + observability without writing agent code
|
|
69
|
+
- **PolicyEngine** + **Policy**: Cedar policy engine with form-based guardrails (Bedrock content filters, prompt-attack, sensitive-info) or raw Cedar policies
|
|
70
|
+
- **PaymentManager** + **PaymentConnector**: x402-protocol payment orchestration with provider credentials (CoinbaseCDP, StripePrivy)
|
|
71
|
+
- **ConfigBundle**: Versioned runtime configuration as a separately-deployable resource
|
|
72
|
+
- **Dataset**: Curated session dataset for batch evaluation and recommendation runs
|
|
73
|
+
- **RuntimeEndpoint**: Named endpoint (e.g. `PROMPT_V1`) targeting a specific runtime version
|
|
74
|
+
|
|
75
|
+
### Common Enum Values
|
|
76
|
+
|
|
77
|
+
- **BuildType**: `'CodeZip'` | `'Container'`
|
|
78
|
+
- **NetworkMode**: `'PUBLIC'` | `'VPC'`
|
|
79
|
+
- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'` | `'PYTHON_3_14'` | `'NODE_18'` | `'NODE_20'` | `'NODE_22'`
|
|
80
|
+
- **MemoryStrategyType**: `'SEMANTIC'` | `'SUMMARIZATION'` | `'USER_PREFERENCE'` | `'EPISODIC'`
|
|
81
|
+
- **GatewayTargetType**: `'lambda'` | `'mcpServer'` | `'openApiSchema'` | `'smithyModel'` | `'apiGateway'` | `'lambdaFunctionArn'` | `'connector'` (web-search, bedrock-knowledge-bases)
|
|
82
|
+
- **ModelProvider**: `'Bedrock'` | `'Gemini'` | `'OpenAI'` | `'Anthropic'`
|
|
83
|
+
- **PaymentProvider**: `'CoinbaseCDP'` | `'StripePrivy'`
|
|
84
|
+
- **PolicyEnforcementMode**: `'ACTIVE'` | `'PASSIVE'`
|
|
85
|
+
- **GuardrailContentFilter**: `'VIOLENCE'` | `'HATE'` | `'SEXUAL'` | `'MISCONDUCT'` | `'INSULTS'`
|
|
86
|
+
|
|
87
|
+
### Build Types
|
|
88
|
+
|
|
89
|
+
- **CodeZip**: Python source packaged as a zip and deployed directly to AgentCore Runtime.
|
|
90
|
+
- **Container**: Docker image built in CodeBuild (ARM64), pushed to a per-agent ECR repository. Requires a `Dockerfile`
|
|
91
|
+
in the agent's `codeLocation` directory. For local development (`agentcore dev`), the container is built and run
|
|
92
|
+
locally with volume-mounted hot-reload.
|
|
93
|
+
|
|
94
|
+
### Supported Frameworks (for template agents)
|
|
95
|
+
|
|
96
|
+
- **Strands** — Bedrock, Anthropic, OpenAI, Gemini
|
|
97
|
+
- **LangChain/LangGraph** — Bedrock, Anthropic, OpenAI, Gemini
|
|
98
|
+
- **GoogleADK** — Gemini
|
|
99
|
+
- **OpenAI Agents** — OpenAI
|
|
100
|
+
- **Autogen** — Bedrock, Anthropic, OpenAI, Gemini
|
|
101
|
+
|
|
102
|
+
### Protocols
|
|
103
|
+
|
|
104
|
+
- **HTTP** — Standard HTTP agent endpoint
|
|
105
|
+
- **MCP** — Model Context Protocol server
|
|
106
|
+
- **A2A** — Agent-to-Agent protocol (Google A2A)
|
|
107
|
+
|
|
108
|
+
## Deployment
|
|
109
|
+
|
|
110
|
+
Deployments are orchestrated through the CLI:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
agentcore deploy # Synthesizes CDK and deploys to AWS
|
|
114
|
+
agentcore status # Shows deployment status
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Alternatively, deploy directly via CDK:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
cd agentcore/cdk
|
|
121
|
+
npm install
|
|
122
|
+
npx cdk synth
|
|
123
|
+
npx cdk deploy
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Editing Schemas
|
|
127
|
+
|
|
128
|
+
When modifying JSON config files:
|
|
129
|
+
|
|
130
|
+
1. Read the corresponding `agentcore/.llm-context/*.ts` file for type definitions
|
|
131
|
+
2. Check validation constraint comments (`@regex`, `@min`, `@max`)
|
|
132
|
+
3. Use exact enum values as string literals
|
|
133
|
+
4. Use CloudFormation-safe names (alphanumeric, start with letter)
|
|
134
|
+
5. Run `agentcore validate` to verify changes
|
|
135
|
+
|
|
136
|
+
## Harness Export
|
|
137
|
+
|
|
138
|
+
`agentcore export harness` converts a harness configuration into a deployable Strands Python agent under `app/<agentName>/`.
|
|
139
|
+
|
|
140
|
+
**After every export, you MUST read `app/<agentName>/EXPORT_NOTES.md` before proceeding.**
|
|
141
|
+
|
|
142
|
+
This file lists any manual follow-up items required before the agent will deploy or run correctly — missing files to create, IAM policies to add, or configuration steps the exporter could not automate. A clean export produces "No manual steps required." Complete every item in the file before running `agentcore deploy`.
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
agentcore export harness --name <harnessName> # generates app/<agentName>/EXPORT_NOTES.md
|
|
146
|
+
cat app/<agentName>/EXPORT_NOTES.md # read this before touching anything else
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## CLI Commands
|
|
150
|
+
|
|
151
|
+
Run `agentcore --help` or `agentcore <command> --help` for full flags. Commonly used:
|
|
152
|
+
|
|
153
|
+
**Project lifecycle**
|
|
154
|
+
|
|
155
|
+
| Command | Description |
|
|
156
|
+
| --- | --- |
|
|
157
|
+
| `agentcore create` | Create a new project |
|
|
158
|
+
| `agentcore dev` | Run agent locally with hot-reload |
|
|
159
|
+
| `agentcore deploy` | Deploy to AWS |
|
|
160
|
+
| `agentcore invoke` | Invoke agent (local or deployed) |
|
|
161
|
+
| `agentcore capacity-provider delete-session` | Delete (deprovision) a live capacity provider session |
|
|
162
|
+
| `agentcore status` | Show deployment status |
|
|
163
|
+
| `agentcore validate` | Validate configuration |
|
|
164
|
+
| `agentcore package` | Package agent artifacts |
|
|
165
|
+
| `agentcore import` | Import resources from a Bedrock AgentCore Starter Toolkit project |
|
|
166
|
+
|
|
167
|
+
**Resources**
|
|
168
|
+
|
|
169
|
+
| Command | Description |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| `agentcore add <resource>` | Add agent, memory, credential, gateway, gateway-target, evaluator, online-eval, online-insights, knowledge-base, harness, policy-engine, policy, payment-manager, payment-connector, capacity-provider, config-bundle, dataset, runtime-endpoint |
|
|
172
|
+
| `agentcore remove <resource>` | Remove any resource |
|
|
173
|
+
| `agentcore export harness` | Export a harness to a Strands runtime agent under `app/<agentName>/` |
|
|
174
|
+
|
|
175
|
+
**Jobs (run, view, archive, lifecycle)**
|
|
176
|
+
|
|
177
|
+
| Command | Description |
|
|
178
|
+
| --- | --- |
|
|
179
|
+
| `agentcore run eval` | Run on-demand evaluation against agent traces |
|
|
180
|
+
| `agentcore run batch-evaluation` | Run evaluators across all sessions at scale |
|
|
181
|
+
| `agentcore run recommendation` | Optimize prompts or tool descriptions from real traces |
|
|
182
|
+
| `agentcore run insights` _[preview]_ | Run failure-pattern analysis across sessions |
|
|
183
|
+
| `agentcore run ab-test` | Start an A/B test (config-bundle or target-based) |
|
|
184
|
+
| `agentcore run ingest` | Start a fresh ingestion job for every data source on a deployed knowledge base |
|
|
185
|
+
| `agentcore view <type>` | List or view jobs (recommendation, batch-evaluation, ab-test, insights) |
|
|
186
|
+
| `agentcore archive <type>` | Delete a job on the service + clear local history |
|
|
187
|
+
| `agentcore stop <type>` | Stop a running batch-evaluation or ab-test |
|
|
188
|
+
| `agentcore promote ab-test` | Apply the winning variant to `agentcore.json` |
|
|
189
|
+
| `agentcore pause <type>` / `agentcore resume <type>` | Pause/resume a deployed online-eval, online-insights, or ab-test |
|
|
190
|
+
|
|
191
|
+
**Config bundles & datasets**
|
|
192
|
+
|
|
193
|
+
| Command | Description |
|
|
194
|
+
| --- | --- |
|
|
195
|
+
| `agentcore config-bundle versions` (alias `cb versions`) | List version history for a bundle |
|
|
196
|
+
| `agentcore config-bundle diff` | Diff two versions of a bundle |
|
|
197
|
+
| `agentcore config-bundle create-branch` | Create a new branch on an existing bundle |
|
|
198
|
+
| `agentcore dataset download` | Download a dataset version locally |
|
|
199
|
+
| `agentcore dataset publish-version` | Publish a new dataset version |
|
|
200
|
+
| `agentcore dataset remove-version` | Remove a dataset version |
|
|
201
|
+
|
|
202
|
+
**Observability & history**
|
|
203
|
+
|
|
204
|
+
| Command | Description |
|
|
205
|
+
| --- | --- |
|
|
206
|
+
| `agentcore logs` | Stream/search agent runtime logs |
|
|
207
|
+
| `agentcore logs evals` | Stream/search online-eval logs |
|
|
208
|
+
| `agentcore traces list` / `agentcore traces get` | List recent traces or download one to JSON |
|
|
209
|
+
| `agentcore evals history` | View past on-demand eval results |
|
|
210
|
+
|
|
211
|
+
**Utilities**
|
|
212
|
+
|
|
213
|
+
| Command | Description |
|
|
214
|
+
| --- | --- |
|
|
215
|
+
| `agentcore fetch access` | Fetch access info for deployed gateway or agent |
|
|
216
|
+
| `agentcore feedback` | Send feedback (with optional screenshot) to the AgentCore team |
|
|
217
|
+
| `agentcore update` | Check for and install CLI updates |
|
|
218
|
+
| `agentcore telemetry` | View or change telemetry preferences |
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# AgentCore CDK Project
|
|
2
|
+
|
|
3
|
+
This CDK project is managed by the AgentCore CLI. It deploys your agent infrastructure into AWS using the `@aws/agentcore-cdk` L3 constructs.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- `bin/cdk.ts` — Entry point. Reads project configuration from `agentcore/` and creates a stack per deployment target.
|
|
8
|
+
- `lib/cdk-stack.ts` — Defines `AgentCoreStack`, which wraps the `AgentCoreApplication` L3 construct.
|
|
9
|
+
- `test/cdk.test.ts` — Unit tests for stack synthesis.
|
|
10
|
+
|
|
11
|
+
## Useful commands
|
|
12
|
+
|
|
13
|
+
- `npm run build` compile TypeScript to JavaScript
|
|
14
|
+
- `npm run test` run unit tests
|
|
15
|
+
- `npx cdk synth` emit the synthesized CloudFormation template
|
|
16
|
+
- `npx cdk deploy` deploy this stack to your default AWS account/region
|
|
17
|
+
- `npx cdk diff` compare deployed stack with current state
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
You typically don't need to interact with this directory directly. The AgentCore CLI handles synthesis and deployment:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
agentcore deploy # synthesizes and deploys via CDK
|
|
25
|
+
agentcore status # checks deployment status
|
|
26
|
+
```
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { AgentCoreStack, type HarnessConfig } from '../lib/cdk-stack';
|
|
3
|
+
import { ConfigIO, HarnessSpecSchema, type AwsDeploymentTarget } from '@aws/agentcore-cdk';
|
|
4
|
+
import { App, type Environment } from 'aws-cdk-lib';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
|
|
8
|
+
function toEnvironment(target: AwsDeploymentTarget): Environment {
|
|
9
|
+
return {
|
|
10
|
+
account: target.account,
|
|
11
|
+
region: target.region,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function sanitize(name: string): string {
|
|
16
|
+
return name.replace(/_/g, '-');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function toStackName(projectName: string, targetName: string): string {
|
|
20
|
+
return `AgentCore-${sanitize(projectName)}-${sanitize(targetName)}`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function main() {
|
|
24
|
+
// Config root is parent of cdk/ directory. The CLI sets process.cwd() to agentcore/cdk/.
|
|
25
|
+
const configRoot = path.resolve(process.cwd(), '..');
|
|
26
|
+
const configIO = new ConfigIO({ baseDir: configRoot });
|
|
27
|
+
|
|
28
|
+
const spec = await configIO.readProjectSpec();
|
|
29
|
+
const targets = await configIO.readAWSDeploymentTargets();
|
|
30
|
+
|
|
31
|
+
// The vended CDK project compiles against the published @aws/agentcore-cdk
|
|
32
|
+
// schema type, which may lag the CLI's own AgentCoreProjectSpec (e.g. payments,
|
|
33
|
+
// harnesses, gateway fields). Cast once so those fields are reachable.
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
const specAny = spec as any;
|
|
36
|
+
|
|
37
|
+
// Extract MCP configuration from project spec.
|
|
38
|
+
// Gateway fields are stored in agentcore.json but may not yet be on the
|
|
39
|
+
const mcpSpec = specAny.agentCoreGateways?.length
|
|
40
|
+
? {
|
|
41
|
+
agentCoreGateways: specAny.agentCoreGateways,
|
|
42
|
+
mcpRuntimeTools: specAny.mcpRuntimeTools,
|
|
43
|
+
unassignedTargets: specAny.unassignedTargets,
|
|
44
|
+
}
|
|
45
|
+
: undefined;
|
|
46
|
+
|
|
47
|
+
// Read deployed state for credential ARNs (populated by pre-deploy identity setup)
|
|
48
|
+
let deployedState: Record<string, unknown> | undefined;
|
|
49
|
+
try {
|
|
50
|
+
deployedState = JSON.parse(fs.readFileSync(path.join(configRoot, '.cli', 'deployed-state.json'), 'utf8'));
|
|
51
|
+
} catch {
|
|
52
|
+
// Deployed state may not exist on first deploy
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (targets.length === 0) {
|
|
56
|
+
throw new Error('No deployment targets configured. Please define targets in agentcore/aws-targets.json');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Read harness configs: the full validated spec drives the CFN resource; the
|
|
60
|
+
// role-scoped fields drive the IAM role + container build.
|
|
61
|
+
const projectRoot = path.resolve(configRoot, '..');
|
|
62
|
+
|
|
63
|
+
// Read non-S3 KB connector-config files and pass their parsed contents to the
|
|
64
|
+
// L3 verbatim. The L3 does not read files; it expects the parsed
|
|
65
|
+
// connectorParameters keyed by the data source's connectorConfigFile path.
|
|
66
|
+
const connectorParametersByFile: Record<string, Record<string, unknown>> = {};
|
|
67
|
+
for (const kb of specAny.knowledgeBases ?? []) {
|
|
68
|
+
for (const ds of kb.dataSources ?? []) {
|
|
69
|
+
if (ds.type !== 'S3' && ds.connectorConfigFile) {
|
|
70
|
+
const abs = path.resolve(projectRoot, ds.connectorConfigFile);
|
|
71
|
+
try {
|
|
72
|
+
connectorParametersByFile[ds.connectorConfigFile] = JSON.parse(fs.readFileSync(abs, 'utf-8'));
|
|
73
|
+
} catch (err) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
`Could not read connector config '${ds.connectorConfigFile}' for knowledge base '${kb.name}' at ${abs}: ${err instanceof Error ? err.message : err}`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Synthesize an AWS::BedrockAgentCore::Harness resource for each harness entry in the spec.
|
|
83
|
+
const harnessConfigs: HarnessConfig[] = [];
|
|
84
|
+
for (const entry of specAny.harnesses ?? []) {
|
|
85
|
+
const harnessDir = path.resolve(projectRoot, entry.path);
|
|
86
|
+
const harnessPath = path.resolve(harnessDir, 'harness.json');
|
|
87
|
+
try {
|
|
88
|
+
const harnessSpec = HarnessSpecSchema.parse(JSON.parse(fs.readFileSync(harnessPath, 'utf-8')));
|
|
89
|
+
harnessConfigs.push({
|
|
90
|
+
name: entry.name,
|
|
91
|
+
executionRoleArn: harnessSpec.executionRoleArn,
|
|
92
|
+
// Only an `existing` memory ref carries a name to wire IAM against; managed memory is
|
|
93
|
+
// owned by the harness (no sibling) and disabled has none — both resolve to undefined.
|
|
94
|
+
memoryName: harnessSpec.memory?.mode === 'existing' ? harnessSpec.memory.name : undefined,
|
|
95
|
+
containerUri: harnessSpec.containerUri,
|
|
96
|
+
hasDockerfile: !!harnessSpec.dockerfile,
|
|
97
|
+
dockerfile: harnessSpec.dockerfile,
|
|
98
|
+
codeLocation: harnessSpec.dockerfile ? harnessDir : undefined,
|
|
99
|
+
tools: harnessSpec.tools,
|
|
100
|
+
skills: harnessSpec.skills,
|
|
101
|
+
apiKeyArn: harnessSpec.model?.apiKeyArn,
|
|
102
|
+
efsAccessPoints: harnessSpec.efsAccessPoints,
|
|
103
|
+
s3AccessPoints: harnessSpec.s3AccessPoints,
|
|
104
|
+
apiFormat: harnessSpec.model?.apiFormat,
|
|
105
|
+
// Full spec + dir drive the AWS::BedrockAgentCore::Harness CFN resource.
|
|
106
|
+
spec: harnessSpec,
|
|
107
|
+
harnessDir,
|
|
108
|
+
});
|
|
109
|
+
} catch (err) {
|
|
110
|
+
throw new Error(
|
|
111
|
+
`Could not read harness.json for "${entry.name}" at ${harnessPath}: ${err instanceof Error ? err.message : err}`
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const app = new App();
|
|
117
|
+
|
|
118
|
+
for (const target of targets) {
|
|
119
|
+
const env = toEnvironment(target);
|
|
120
|
+
const stackName = toStackName(spec.name, target.name);
|
|
121
|
+
|
|
122
|
+
// Extract credentials from deployed state for this target
|
|
123
|
+
const targetState = (deployedState as Record<string, unknown>)?.targets as
|
|
124
|
+
| Record<string, Record<string, unknown>>
|
|
125
|
+
| undefined;
|
|
126
|
+
const targetResources = targetState?.[target.name]?.resources as Record<string, unknown> | undefined;
|
|
127
|
+
const credentials = targetResources?.credentials as
|
|
128
|
+
| Record<string, { credentialProviderArn: string; clientSecretArn?: string }>
|
|
129
|
+
| undefined;
|
|
130
|
+
|
|
131
|
+
// Payment credential provider ARNs live in the same credentials map as identity credentials
|
|
132
|
+
const paymentCredentials = credentials;
|
|
133
|
+
|
|
134
|
+
const paymentSpec = specAny.payments?.length
|
|
135
|
+
? specAny.payments.map(
|
|
136
|
+
(p: {
|
|
137
|
+
name: string;
|
|
138
|
+
description?: string;
|
|
139
|
+
authorizerType: 'AWS_IAM' | 'CUSTOM_JWT';
|
|
140
|
+
authorizerConfiguration?: unknown;
|
|
141
|
+
autoPayment?: boolean;
|
|
142
|
+
paymentToolAllowlist?: string[];
|
|
143
|
+
networkPreferences?: string[];
|
|
144
|
+
connectors: {
|
|
145
|
+
name: string;
|
|
146
|
+
provider?: string;
|
|
147
|
+
provisionMode?: 'MANUAL' | 'QUICK_CREATE';
|
|
148
|
+
credentialName?: string;
|
|
149
|
+
}[];
|
|
150
|
+
}) => ({
|
|
151
|
+
name: p.name,
|
|
152
|
+
description: p.description,
|
|
153
|
+
authorizerType: p.authorizerType,
|
|
154
|
+
authorizerConfiguration: p.authorizerConfiguration,
|
|
155
|
+
autoPayment: p.autoPayment,
|
|
156
|
+
paymentToolAllowlist: p.paymentToolAllowlist,
|
|
157
|
+
networkPreferences: p.networkPreferences,
|
|
158
|
+
connectors: p.connectors.map(c => {
|
|
159
|
+
if (c.provisionMode === 'QUICK_CREATE') {
|
|
160
|
+
return {
|
|
161
|
+
name: c.name,
|
|
162
|
+
provider: 'CoinbaseCDP' as const,
|
|
163
|
+
provisionMode: 'QUICK_CREATE' as const,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (!c.credentialName) {
|
|
168
|
+
throw new Error(
|
|
169
|
+
`Manual payment connector "${c.name}" on manager "${p.name}" is missing its credential name.`
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
const credentialProviderArn = paymentCredentials?.[c.credentialName]?.credentialProviderArn;
|
|
173
|
+
if (!credentialProviderArn) {
|
|
174
|
+
// Fail fast with an actionable message rather than passing an empty
|
|
175
|
+
// ARN that fails opaquely server-side at CreatePaymentConnector.
|
|
176
|
+
throw new Error(
|
|
177
|
+
`Payment connector "${c.name}" on manager "${p.name}" references credential ` +
|
|
178
|
+
`"${c.credentialName}", but no deployed credential provider was found for it. ` +
|
|
179
|
+
`Run \`agentcore deploy\` so the credential provider is created first.`
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
name: c.name,
|
|
184
|
+
provider: c.provider,
|
|
185
|
+
...(c.provisionMode && { provisionMode: c.provisionMode }),
|
|
186
|
+
credentialName: c.credentialName,
|
|
187
|
+
credentialProviderArn,
|
|
188
|
+
};
|
|
189
|
+
}),
|
|
190
|
+
})
|
|
191
|
+
)
|
|
192
|
+
: undefined;
|
|
193
|
+
|
|
194
|
+
new AgentCoreStack(app, stackName, {
|
|
195
|
+
spec,
|
|
196
|
+
mcpSpec,
|
|
197
|
+
credentials,
|
|
198
|
+
connectorParametersByFile,
|
|
199
|
+
harnesses: harnessConfigs.length > 0 ? harnessConfigs : undefined,
|
|
200
|
+
paymentSpec,
|
|
201
|
+
env,
|
|
202
|
+
description: `AgentCore stack for ${spec.name} deployed to ${target.name} (${target.region})`,
|
|
203
|
+
tags: {
|
|
204
|
+
'agentcore:project-name': spec.name,
|
|
205
|
+
'agentcore:target-name': target.name,
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
app.synth();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
main().catch((error: unknown) => {
|
|
214
|
+
console.error('AgentCore CDK synthesis failed:', error instanceof Error ? error.message : error);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
});
|