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,319 @@
|
|
|
1
|
+
"""GenerateConfig -> agentcore.json resources / template render config
|
|
2
|
+
(port of src/cli/operations/agent/generate/schema-mapper.ts).
|
|
3
|
+
|
|
4
|
+
Resources are produced as camelCase JSON dicts, ready for ``ConfigIO.write_project_spec``.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import dataclasses
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
from agentcore.lib import APP_DIR, ConfigIO
|
|
12
|
+
from agentcore.lib.schemas.io.config_io import to_jsonable
|
|
13
|
+
from agentcore.operations.agent.generate.types import (
|
|
14
|
+
DEFAULT_MEMORY_EXPIRY_DAYS,
|
|
15
|
+
DEFAULT_NETWORK_MODE,
|
|
16
|
+
DEFAULT_PYTHON_ENTRYPOINT,
|
|
17
|
+
GenerateConfig,
|
|
18
|
+
)
|
|
19
|
+
from agentcore.primitives.auth_utils import build_authorizer_config_from_jwt_config
|
|
20
|
+
from agentcore.primitives.credential_utils import (
|
|
21
|
+
compute_default_credential_env_var_name,
|
|
22
|
+
compute_managed_oauth_credential_name,
|
|
23
|
+
)
|
|
24
|
+
from agentcore.schema import (
|
|
25
|
+
DEFAULT_ENTRYPOINT_BY_LANGUAGE,
|
|
26
|
+
DEFAULT_EPISODIC_REFLECTION_NAMESPACE_TEMPLATES,
|
|
27
|
+
DEFAULT_PYTHON_VERSION,
|
|
28
|
+
DEFAULT_RUNTIME_BY_LANGUAGE,
|
|
29
|
+
DEFAULT_STRATEGY_NAMESPACE_TEMPLATES,
|
|
30
|
+
is_framework_supported_for_protocol,
|
|
31
|
+
)
|
|
32
|
+
from agentcore.templates import (
|
|
33
|
+
AgentRenderConfig,
|
|
34
|
+
GatewayProviderRenderConfig,
|
|
35
|
+
IdentityProviderRenderConfig,
|
|
36
|
+
MemoryProviderRenderConfig,
|
|
37
|
+
MountRenderConfig,
|
|
38
|
+
TemplateRuntimeProfile,
|
|
39
|
+
get_template_profile,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
ACTOR_ID_HEADER = "X-Amzn-Bedrock-AgentCore-Runtime-Custom-Actor-Id"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass
|
|
46
|
+
class GenerateConfigMappingResult:
|
|
47
|
+
agent: dict[str, Any]
|
|
48
|
+
memories: list[dict[str, Any]]
|
|
49
|
+
credentials: list[dict[str, Any]]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def compute_default_gateway_env_var_name(gateway_name: str) -> str:
|
|
53
|
+
"""Port of GatewayPrimitive.computeDefaultGatewayEnvVarName (kept local to avoid a cross-area import)."""
|
|
54
|
+
return f"AGENTCORE_GATEWAY_{gateway_name.upper().replace('-', '_')}_URL"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _compute_credential_name(project_name: str, provider_name: str) -> str:
|
|
58
|
+
return f"{project_name}{provider_name}"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _strategy(strategy_type: str) -> dict[str, Any]:
|
|
62
|
+
strategy: dict[str, Any] = {"type": strategy_type}
|
|
63
|
+
templates = DEFAULT_STRATEGY_NAMESPACE_TEMPLATES.get(strategy_type) # type: ignore[call-overload]
|
|
64
|
+
if templates:
|
|
65
|
+
strategy["namespaceTemplates"] = list(templates)
|
|
66
|
+
if strategy_type == "EPISODIC":
|
|
67
|
+
strategy["reflectionNamespaceTemplates"] = list(DEFAULT_EPISODIC_REFLECTION_NAMESPACE_TEMPLATES)
|
|
68
|
+
return strategy
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def map_generate_input_to_memories(memory: str, project_name: str) -> list[dict[str, Any]]:
|
|
72
|
+
"""none -> []; shortTerm -> memory without strategies; longAndShortTerm -> four strategies."""
|
|
73
|
+
if memory == "none":
|
|
74
|
+
return []
|
|
75
|
+
strategies: list[dict[str, Any]] = []
|
|
76
|
+
if memory == "longAndShortTerm":
|
|
77
|
+
strategies = [_strategy(t) for t in ("SEMANTIC", "USER_PREFERENCE", "SUMMARIZATION", "EPISODIC")]
|
|
78
|
+
return [
|
|
79
|
+
{"name": f"{project_name}Memory", "eventExpiryDuration": DEFAULT_MEMORY_EXPIRY_DAYS, "strategies": strategies}
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def map_model_provider_to_credentials(model_provider: str, project_name: str) -> list[dict[str, Any]]:
|
|
84
|
+
"""Bedrock uses IAM, so no credential is needed."""
|
|
85
|
+
if model_provider == "Bedrock":
|
|
86
|
+
return []
|
|
87
|
+
return [
|
|
88
|
+
{"authorizerType": "ApiKeyCredentialProvider", "name": _compute_credential_name(project_name, model_provider)}
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _template_runtime(config: GenerateConfig) -> TemplateRuntimeProfile | None:
|
|
93
|
+
if not is_framework_supported_for_protocol(config.protocol or "HTTP", config.sdk): # type: ignore[arg-type]
|
|
94
|
+
return None
|
|
95
|
+
profile = get_template_profile(config.sdk)
|
|
96
|
+
return profile.runtime if profile else None
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def apply_template_runtime_defaults(config: GenerateConfig) -> GenerateConfig:
|
|
100
|
+
"""Apply the framework template's runtime settings; user-supplied values win."""
|
|
101
|
+
runtime = _template_runtime(config)
|
|
102
|
+
if runtime is None:
|
|
103
|
+
return config
|
|
104
|
+
max_lifetime = (
|
|
105
|
+
config.max_lifetime
|
|
106
|
+
if config.max_lifetime is not None
|
|
107
|
+
else max(runtime.max_lifetime, config.idle_runtime_session_timeout or 0)
|
|
108
|
+
)
|
|
109
|
+
profile = get_template_profile(config.sdk)
|
|
110
|
+
required_build = profile.required_options.get("build") if profile else None
|
|
111
|
+
return dataclasses.replace(
|
|
112
|
+
config,
|
|
113
|
+
build_type=required_build or config.build_type,
|
|
114
|
+
dockerfile=config.dockerfile or runtime.dockerfile,
|
|
115
|
+
idle_runtime_session_timeout=(
|
|
116
|
+
config.idle_runtime_session_timeout
|
|
117
|
+
if config.idle_runtime_session_timeout is not None
|
|
118
|
+
else min(runtime.idle_runtime_session_timeout, max_lifetime)
|
|
119
|
+
),
|
|
120
|
+
max_lifetime=max_lifetime,
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def _template_runtime_fields(config: GenerateConfig) -> dict[str, Any]:
|
|
125
|
+
runtime = _template_runtime(config)
|
|
126
|
+
if runtime is None:
|
|
127
|
+
return {}
|
|
128
|
+
fields: dict[str, Any] = {}
|
|
129
|
+
if runtime.additional_policies:
|
|
130
|
+
fields["additionalPolicies"] = list(runtime.additional_policies)
|
|
131
|
+
if runtime.tags:
|
|
132
|
+
fields["tags"] = dict(runtime.tags)
|
|
133
|
+
return fields
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _filesystem_configurations(config: GenerateConfig) -> dict[str, Any]:
|
|
137
|
+
from agentcore.cli.commands.shared.filesystem_utils import build_filesystem_configurations
|
|
138
|
+
|
|
139
|
+
return build_filesystem_configurations(
|
|
140
|
+
config.session_storage_mount_path,
|
|
141
|
+
config.efs_access_points,
|
|
142
|
+
config.s3_access_points,
|
|
143
|
+
config.capacity_provider_volumes,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def map_generate_config_to_agent(generate_config: GenerateConfig) -> dict[str, Any]:
|
|
148
|
+
config = apply_template_runtime_defaults(generate_config)
|
|
149
|
+
protocol = config.protocol or "HTTP"
|
|
150
|
+
# A capacity provider supplies its own network topology: no networkMode/networkConfig then.
|
|
151
|
+
network_mode = None if config.capacity_provider_configuration else (config.network_mode or DEFAULT_NETWORK_MODE)
|
|
152
|
+
|
|
153
|
+
needs_actor_header = (
|
|
154
|
+
config.language == "TypeScript" and config.sdk == "Strands" and config.memory == "longAndShortTerm"
|
|
155
|
+
)
|
|
156
|
+
allowlist = list(config.request_header_allowlist or [])
|
|
157
|
+
if needs_actor_header and ACTOR_ID_HEADER not in allowlist:
|
|
158
|
+
allowlist.append(ACTOR_ID_HEADER)
|
|
159
|
+
|
|
160
|
+
agent: dict[str, Any] = {"name": config.project_name, "build": config.build_type or "CodeZip"}
|
|
161
|
+
if config.dockerfile:
|
|
162
|
+
agent["dockerfile"] = config.dockerfile
|
|
163
|
+
agent["entrypoint"] = (
|
|
164
|
+
DEFAULT_ENTRYPOINT_BY_LANGUAGE["TypeScript"] if config.language == "TypeScript" else DEFAULT_PYTHON_ENTRYPOINT
|
|
165
|
+
)
|
|
166
|
+
agent["codeLocation"] = f"{APP_DIR}/{config.project_name}/"
|
|
167
|
+
agent["runtimeVersion"] = (
|
|
168
|
+
DEFAULT_RUNTIME_BY_LANGUAGE["TypeScript"] if config.language == "TypeScript" else DEFAULT_PYTHON_VERSION
|
|
169
|
+
)
|
|
170
|
+
if network_mode is not None:
|
|
171
|
+
agent["networkMode"] = network_mode
|
|
172
|
+
agent["protocol"] = protocol
|
|
173
|
+
if network_mode == "VPC" and config.subnets and config.security_groups:
|
|
174
|
+
network_config: dict[str, Any] = {"subnets": config.subnets, "securityGroups": config.security_groups}
|
|
175
|
+
# Only a Container build carries a vpcId.
|
|
176
|
+
if config.build_type == "Container" and config.vpc_id:
|
|
177
|
+
network_config["vpcId"] = config.vpc_id
|
|
178
|
+
agent["networkConfig"] = network_config
|
|
179
|
+
if allowlist:
|
|
180
|
+
agent["requestHeaderAllowlist"] = allowlist
|
|
181
|
+
if config.authorizer_type:
|
|
182
|
+
agent["authorizerType"] = config.authorizer_type
|
|
183
|
+
if config.authorizer_type == "CUSTOM_JWT" and config.jwt_config:
|
|
184
|
+
agent["authorizerConfiguration"] = build_authorizer_config_from_jwt_config(config.jwt_config)
|
|
185
|
+
if config.idle_runtime_session_timeout is not None or config.max_lifetime is not None:
|
|
186
|
+
lifecycle: dict[str, Any] = {}
|
|
187
|
+
if config.idle_runtime_session_timeout is not None:
|
|
188
|
+
lifecycle["idleRuntimeSessionTimeout"] = config.idle_runtime_session_timeout
|
|
189
|
+
if config.max_lifetime is not None:
|
|
190
|
+
lifecycle["maxLifetime"] = config.max_lifetime
|
|
191
|
+
agent["lifecycleConfiguration"] = lifecycle
|
|
192
|
+
if config.capacity_provider_configuration:
|
|
193
|
+
agent["capacityProviderConfiguration"] = dict(config.capacity_provider_configuration)
|
|
194
|
+
agent.update(_filesystem_configurations(config))
|
|
195
|
+
if protocol == "MCP":
|
|
196
|
+
agent["instrumentation"] = {"enableOtel": False}
|
|
197
|
+
agent.update(_template_runtime_fields(config))
|
|
198
|
+
return agent
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def map_generate_config_to_resources(config: GenerateConfig) -> GenerateConfigMappingResult:
|
|
202
|
+
return GenerateConfigMappingResult(
|
|
203
|
+
agent=map_generate_config_to_agent(config),
|
|
204
|
+
memories=map_generate_input_to_memories(config.memory, config.project_name),
|
|
205
|
+
credentials=map_model_provider_to_credentials(config.model_provider, config.project_name),
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def _compute_memory_env_var_name(memory_name: str) -> str:
|
|
210
|
+
return f"MEMORY_{memory_name.upper()}_ID"
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def _map_memory_option_to_memory_providers(memory: str, project_name: str) -> list[MemoryProviderRenderConfig]:
|
|
214
|
+
if memory == "none":
|
|
215
|
+
return []
|
|
216
|
+
memory_name = f"{project_name}Memory"
|
|
217
|
+
memories = map_generate_input_to_memories(memory, project_name)
|
|
218
|
+
strategies = [s["type"] for s in memories[0]["strategies"]] if memories else []
|
|
219
|
+
return [
|
|
220
|
+
MemoryProviderRenderConfig(
|
|
221
|
+
name=memory_name, env_var_name=_compute_memory_env_var_name(memory_name), strategies=strategies
|
|
222
|
+
)
|
|
223
|
+
]
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
def map_model_provider_to_identity_providers(
|
|
227
|
+
model_provider: str, project_name: str
|
|
228
|
+
) -> list[IdentityProviderRenderConfig]:
|
|
229
|
+
if model_provider == "Bedrock":
|
|
230
|
+
return []
|
|
231
|
+
credential_name = _compute_credential_name(project_name, model_provider)
|
|
232
|
+
return [
|
|
233
|
+
IdentityProviderRenderConfig(
|
|
234
|
+
name=credential_name, env_var_name=compute_default_credential_env_var_name(credential_name)
|
|
235
|
+
)
|
|
236
|
+
]
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def _read_project(config_base_dir: str | None) -> dict[str, Any] | None:
|
|
240
|
+
try:
|
|
241
|
+
io = ConfigIO(base_dir=config_base_dir) if config_base_dir else ConfigIO()
|
|
242
|
+
return to_jsonable(io.read_project_spec())
|
|
243
|
+
except Exception: # noqa: BLE001 - upstream treats an unreadable project as "no gateways/payments"
|
|
244
|
+
return None
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def _map_gateways_to_gateway_providers(project: dict[str, Any] | None) -> list[GatewayProviderRenderConfig]:
|
|
248
|
+
if not project:
|
|
249
|
+
return []
|
|
250
|
+
providers: list[GatewayProviderRenderConfig] = []
|
|
251
|
+
for gateway in project.get("agentCoreGateways", []):
|
|
252
|
+
provider = GatewayProviderRenderConfig(
|
|
253
|
+
name=gateway["name"],
|
|
254
|
+
env_var_name=compute_default_gateway_env_var_name(gateway["name"]),
|
|
255
|
+
auth_type=gateway.get("authorizerType"),
|
|
256
|
+
)
|
|
257
|
+
jwt = (gateway.get("authorizerConfiguration") or {}).get("customJwtAuthorizer")
|
|
258
|
+
if gateway.get("authorizerType") == "CUSTOM_JWT" and jwt:
|
|
259
|
+
cred_name = compute_managed_oauth_credential_name(gateway["name"])
|
|
260
|
+
if any(c["name"] == cred_name for c in project.get("credentials", [])):
|
|
261
|
+
provider.credential_provider_name = cred_name
|
|
262
|
+
provider.discovery_url = jwt.get("discoveryUrl")
|
|
263
|
+
scopes = jwt.get("allowedScopes")
|
|
264
|
+
if scopes:
|
|
265
|
+
provider.scopes = " ".join(scopes)
|
|
266
|
+
providers.append(provider)
|
|
267
|
+
return providers
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def map_generate_config_to_render_config(
|
|
271
|
+
generate_config: GenerateConfig,
|
|
272
|
+
identity_providers: list[IdentityProviderRenderConfig],
|
|
273
|
+
config_base_dir: str | None = None,
|
|
274
|
+
) -> AgentRenderConfig:
|
|
275
|
+
"""Map to the template render config. ``config_base_dir`` replaces upstream's cwd-based project lookup."""
|
|
276
|
+
config = apply_template_runtime_defaults(generate_config)
|
|
277
|
+
is_mcp = config.protocol == "MCP"
|
|
278
|
+
project = _read_project(config_base_dir)
|
|
279
|
+
gateway_providers = [] if is_mcp else _map_gateways_to_gateway_providers(project)
|
|
280
|
+
ts_non_strands = config.language == "TypeScript" and config.sdk != "Strands"
|
|
281
|
+
|
|
282
|
+
if is_mcp or ts_non_strands:
|
|
283
|
+
has_memory = False
|
|
284
|
+
elif config.language == "TypeScript":
|
|
285
|
+
has_memory = config.memory == "longAndShortTerm"
|
|
286
|
+
else:
|
|
287
|
+
has_memory = config.memory != "none"
|
|
288
|
+
|
|
289
|
+
auth_types: list[str] = []
|
|
290
|
+
for g in gateway_providers:
|
|
291
|
+
if g.auth_type not in auth_types:
|
|
292
|
+
auth_types.append(g.auth_type)
|
|
293
|
+
|
|
294
|
+
return AgentRenderConfig(
|
|
295
|
+
name=config.project_name,
|
|
296
|
+
sdk_framework=config.sdk, # type: ignore[arg-type]
|
|
297
|
+
target_language=config.language, # type: ignore[arg-type]
|
|
298
|
+
model_provider=config.model_provider, # type: ignore[arg-type]
|
|
299
|
+
has_memory=has_memory,
|
|
300
|
+
has_identity=False if is_mcp else len(identity_providers) > 0,
|
|
301
|
+
has_gateway=len(gateway_providers) > 0,
|
|
302
|
+
has_payment=bool(project and project.get("payments")),
|
|
303
|
+
is_vpc=config.network_mode == "VPC",
|
|
304
|
+
build_type=config.build_type, # type: ignore[arg-type]
|
|
305
|
+
memory_providers=[]
|
|
306
|
+
if (is_mcp or ts_non_strands)
|
|
307
|
+
else _map_memory_option_to_memory_providers(config.memory, config.project_name),
|
|
308
|
+
identity_providers=[] if is_mcp else identity_providers,
|
|
309
|
+
gateway_providers=gateway_providers,
|
|
310
|
+
gateway_auth_types=auth_types,
|
|
311
|
+
protocol=config.protocol, # type: ignore[arg-type]
|
|
312
|
+
dockerfile=config.dockerfile,
|
|
313
|
+
session_storage_mount_path=config.session_storage_mount_path,
|
|
314
|
+
efs_mounts=[MountRenderConfig(mount_path=ap["mountPath"]) for ap in (config.efs_access_points or [])],
|
|
315
|
+
s3_mounts=[MountRenderConfig(mount_path=ap["mountPath"]) for ap in (config.s3_access_points or [])],
|
|
316
|
+
needs_os=bool(config.session_storage_mount_path or config.efs_access_points or config.s3_access_points),
|
|
317
|
+
enable_otel=not is_mcp and config.language != "TypeScript",
|
|
318
|
+
has_config_bundle=config.with_config_bundle,
|
|
319
|
+
)
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"""Generate-wizard config types and option lists (port of src/cli/tui/screens/generate/types.ts
|
|
2
|
+
and defaults.ts). Shared by `create`, `add agent` and the interactive wizard.
|
|
3
|
+
|
|
4
|
+
Mount/capacity-provider entries are camelCase JSON dicts, as they go straight into agentcore.json.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from typing import Any, Final, Literal
|
|
9
|
+
|
|
10
|
+
from agentcore.primitives.auth_utils import JwtConfigOptions
|
|
11
|
+
from agentcore.schema import (
|
|
12
|
+
DEFAULT_MODEL_IDS,
|
|
13
|
+
DEFAULT_PYTHON_VERSION,
|
|
14
|
+
PROTOCOL_FRAMEWORK_MATRIX,
|
|
15
|
+
get_frameworks_for_language,
|
|
16
|
+
get_supported_model_providers,
|
|
17
|
+
)
|
|
18
|
+
from agentcore.schema._zod import js_regex
|
|
19
|
+
|
|
20
|
+
MemoryOption = Literal["none", "shortTerm", "longAndShortTerm"]
|
|
21
|
+
|
|
22
|
+
# defaults.ts
|
|
23
|
+
DEFAULT_NETWORK_MODE: Final = "PUBLIC"
|
|
24
|
+
DEFAULT_PYTHON_ENTRYPOINT: Final = "main.py"
|
|
25
|
+
DEFAULT_MEMORY_EXPIRY_DAYS: Final = 30
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class GenerateConfig:
|
|
30
|
+
# Note: upstream calls this `projectName`, but it is the agent name.
|
|
31
|
+
project_name: str
|
|
32
|
+
build_type: str = "CodeZip"
|
|
33
|
+
protocol: str = "HTTP"
|
|
34
|
+
sdk: str = "Strands"
|
|
35
|
+
model_provider: str = "Bedrock"
|
|
36
|
+
memory: str = "none"
|
|
37
|
+
language: str = "Python"
|
|
38
|
+
dockerfile: str | None = None
|
|
39
|
+
api_key: str | None = None
|
|
40
|
+
network_mode: str | None = None
|
|
41
|
+
subnets: list[str] | None = None
|
|
42
|
+
security_groups: list[str] | None = None
|
|
43
|
+
vpc_id: str | None = None
|
|
44
|
+
request_header_allowlist: list[str] | None = None
|
|
45
|
+
authorizer_type: str | None = None
|
|
46
|
+
jwt_config: JwtConfigOptions | None = None
|
|
47
|
+
idle_runtime_session_timeout: int | None = None
|
|
48
|
+
max_lifetime: int | None = None
|
|
49
|
+
session_storage_mount_path: str | None = None
|
|
50
|
+
efs_access_points: list[dict[str, Any]] | None = None
|
|
51
|
+
s3_access_points: list[dict[str, Any]] | None = None
|
|
52
|
+
capacity_provider_configuration: dict[str, Any] | None = None
|
|
53
|
+
capacity_provider_volumes: list[dict[str, Any]] | None = None
|
|
54
|
+
with_config_bundle: bool | None = None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@dataclass(frozen=True)
|
|
58
|
+
class Option:
|
|
59
|
+
id: str
|
|
60
|
+
title: str
|
|
61
|
+
description: str | None = None
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
LANGUAGE_OPTIONS: Final = (Option("Python", "Python"), Option("TypeScript", "TypeScript"))
|
|
65
|
+
|
|
66
|
+
BUILD_TYPE_OPTIONS: Final = (
|
|
67
|
+
Option("CodeZip", "Direct Code Deploy", "Upload code directly to AgentCore"),
|
|
68
|
+
Option("Container", "Container", "Build and deploy a Docker container"),
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
PROTOCOL_OPTIONS: Final = (
|
|
72
|
+
Option("HTTP", "HTTP", "Standard HTTP agent (default)"),
|
|
73
|
+
Option("MCP", "MCP", "Model Context Protocol tool server"),
|
|
74
|
+
Option("A2A", "A2A", "Agent-to-Agent protocol"),
|
|
75
|
+
Option("AGUI", "AG-UI", "Stream rich agent events to frontends"),
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def get_protocol_options_for_language(language: str | None = None) -> list[Option]:
|
|
80
|
+
"""TypeScript only supports HTTP."""
|
|
81
|
+
if language == "TypeScript":
|
|
82
|
+
return [o for o in PROTOCOL_OPTIONS if o.id == "HTTP"]
|
|
83
|
+
return list(PROTOCOL_OPTIONS)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
SDK_OPTIONS: Final = (
|
|
87
|
+
Option("Strands", "Strands Agents SDK", "AWS native agent framework"),
|
|
88
|
+
Option("LangChain_LangGraph", "LangChain + LangGraph", "Popular open-source frameworks"),
|
|
89
|
+
Option("GoogleADK", "Google ADK", "Google Agent Development Kit"),
|
|
90
|
+
Option("OpenAIAgents", "OpenAI Agents", "OpenAI native agent SDK"),
|
|
91
|
+
Option("VercelAI", "Vercel AI SDK", "Vercel AI SDK for TypeScript agents"),
|
|
92
|
+
Option("BedrockManagedAgents", "Bedrock Managed Agents", "Runtime environment for Bedrock Managed Agents sessions"),
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def get_sdk_options_for_protocol(protocol: str, language: str | None = None) -> list[Option]:
|
|
97
|
+
supported = PROTOCOL_FRAMEWORK_MATRIX[protocol] # type: ignore[index]
|
|
98
|
+
options = [o for o in SDK_OPTIONS if o.id in supported]
|
|
99
|
+
if language in ("Python", "TypeScript"):
|
|
100
|
+
by_language = get_frameworks_for_language(language) # type: ignore[arg-type]
|
|
101
|
+
options = [o for o in options if o.id in by_language]
|
|
102
|
+
return options
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
MODEL_PROVIDER_OPTIONS: Final = (
|
|
106
|
+
Option("Bedrock", f"Amazon Bedrock ({DEFAULT_MODEL_IDS['Bedrock']})", "AWS managed model inference"),
|
|
107
|
+
Option("Anthropic", f"Anthropic ({DEFAULT_MODEL_IDS['Anthropic']})", "Claude models via Anthropic API"),
|
|
108
|
+
Option("OpenAI", f"OpenAI ({DEFAULT_MODEL_IDS['OpenAI']})", "GPT models via OpenAI API"),
|
|
109
|
+
Option("Gemini", f"Google Gemini ({DEFAULT_MODEL_IDS['Gemini']})", "Gemini models via Google API"),
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def get_model_provider_options_for_sdk(sdk: str) -> list[Option]:
|
|
114
|
+
supported = get_supported_model_providers(sdk) # type: ignore[arg-type]
|
|
115
|
+
return [o for o in MODEL_PROVIDER_OPTIONS if o.id in supported]
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
NETWORK_MODE_OPTIONS: Final = (Option("PUBLIC", "Public"), Option("VPC", "VPC", "Attach to your VPC"))
|
|
119
|
+
|
|
120
|
+
ADVANCED_SETTING_OPTIONS: Final = (
|
|
121
|
+
Option("dockerfile", "Custom Dockerfile", "Specify a custom Dockerfile path"),
|
|
122
|
+
Option("network", "VPC networking", "Attach to your VPC with subnets & security groups"),
|
|
123
|
+
Option("headers", "Request header allowlist", "Allow custom headers through to your agent"),
|
|
124
|
+
Option("auth", "Custom auth (JWT)", "OIDC-based token validation for inbound requests"),
|
|
125
|
+
Option("lifecycle", "Lifecycle timeouts", "Idle timeout & max instance lifetime"),
|
|
126
|
+
Option("filesystem", "Filesystem mounts", "Session storage, EFS, and S3 Files mounts"),
|
|
127
|
+
Option("capacityProvider", "Capacity provider", "Run on a customer-managed EC2 compute pool (+ mount its volumes)"),
|
|
128
|
+
Option("configBundle", "Config bundle", "Manage system prompt and tool config without redeploying"),
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
MEMORY_OPTIONS: Final = (
|
|
132
|
+
Option("none", "None", "No memory"),
|
|
133
|
+
Option("shortTerm", "Short-term memory", "Context within a session"),
|
|
134
|
+
Option("longAndShortTerm", "Long-term and short-term", "Persists across sessions"),
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
_DOCKERFILE_NAME_REGEX = js_regex(r"^[a-zA-Z0-9][a-zA-Z0-9._-]*$")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def validate_dockerfile_input(value: str) -> bool | str:
|
|
141
|
+
"""True if valid, else an error message. Path inputs (containing '/') are not checked here."""
|
|
142
|
+
trimmed = value.strip()
|
|
143
|
+
if not trimmed or "/" in trimmed:
|
|
144
|
+
return True
|
|
145
|
+
if len(trimmed) > 255:
|
|
146
|
+
return "Dockerfile name must be 255 characters or fewer"
|
|
147
|
+
if not _DOCKERFILE_NAME_REGEX.search(trimmed):
|
|
148
|
+
return "Must be a valid filename (starts with alphanumeric)"
|
|
149
|
+
return True
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
__all__ = [
|
|
153
|
+
"ADVANCED_SETTING_OPTIONS",
|
|
154
|
+
"BUILD_TYPE_OPTIONS",
|
|
155
|
+
"DEFAULT_MEMORY_EXPIRY_DAYS",
|
|
156
|
+
"DEFAULT_NETWORK_MODE",
|
|
157
|
+
"DEFAULT_PYTHON_ENTRYPOINT",
|
|
158
|
+
"DEFAULT_PYTHON_VERSION",
|
|
159
|
+
"LANGUAGE_OPTIONS",
|
|
160
|
+
"MEMORY_OPTIONS",
|
|
161
|
+
"MODEL_PROVIDER_OPTIONS",
|
|
162
|
+
"NETWORK_MODE_OPTIONS",
|
|
163
|
+
"PROTOCOL_OPTIONS",
|
|
164
|
+
"SDK_OPTIONS",
|
|
165
|
+
"GenerateConfig",
|
|
166
|
+
"MemoryOption",
|
|
167
|
+
"Option",
|
|
168
|
+
"get_model_provider_options_for_sdk",
|
|
169
|
+
"get_protocol_options_for_language",
|
|
170
|
+
"get_sdk_options_for_protocol",
|
|
171
|
+
"validate_dockerfile_input",
|
|
172
|
+
]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""Write a generated agent into agentcore.json (port of write-agent-to-project.ts)."""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from agentcore.cli.constants import SCHEMA_VERSION
|
|
6
|
+
from agentcore.lib import AgentAlreadyExistsError, ConfigIO, require_config_root
|
|
7
|
+
from agentcore.lib.schemas.io.config_io import to_jsonable
|
|
8
|
+
from agentcore.operations.agent.generate.schema_mapper import (
|
|
9
|
+
map_generate_config_to_agent,
|
|
10
|
+
map_generate_input_to_memories,
|
|
11
|
+
map_model_provider_to_credentials,
|
|
12
|
+
)
|
|
13
|
+
from agentcore.operations.agent.generate.types import GenerateConfig
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def write_agent_to_project(
|
|
17
|
+
config: GenerateConfig, *, config_base_dir: str | None = None, credential_strategy: Any = None
|
|
18
|
+
) -> None:
|
|
19
|
+
"""Add the agent to runtimes[], its memory to memories[] and (unless reused) its credential.
|
|
20
|
+
|
|
21
|
+
``credential_strategy`` is a ``CredentialStrategy`` (see primitives/credential.py).
|
|
22
|
+
"""
|
|
23
|
+
base_dir = config_base_dir or require_config_root()
|
|
24
|
+
config_io = ConfigIO(base_dir=base_dir)
|
|
25
|
+
agent_name = config.project_name
|
|
26
|
+
agent = map_generate_config_to_agent(config)
|
|
27
|
+
memories = map_generate_input_to_memories(config.memory, agent_name)
|
|
28
|
+
|
|
29
|
+
if config_io.config_exists("project"):
|
|
30
|
+
project = to_jsonable(config_io.read_project_spec())
|
|
31
|
+
if any(r["name"] == agent_name for r in project["runtimes"]):
|
|
32
|
+
raise AgentAlreadyExistsError(agent_name)
|
|
33
|
+
project["runtimes"].append(agent)
|
|
34
|
+
project["memories"].extend(memories)
|
|
35
|
+
if credential_strategy is not None:
|
|
36
|
+
if not credential_strategy.reuse:
|
|
37
|
+
credentials = map_model_provider_to_credentials(config.model_provider, project["name"])
|
|
38
|
+
if credentials:
|
|
39
|
+
credentials[0]["name"] = credential_strategy.credential_name
|
|
40
|
+
project["credentials"].extend(credentials)
|
|
41
|
+
else:
|
|
42
|
+
project["credentials"].extend(map_model_provider_to_credentials(config.model_provider, project["name"]))
|
|
43
|
+
config_io.write_project_spec(project)
|
|
44
|
+
return
|
|
45
|
+
|
|
46
|
+
# Standalone generate: the agent name doubles as the project name.
|
|
47
|
+
config_io.write_project_spec(
|
|
48
|
+
{
|
|
49
|
+
"name": agent_name,
|
|
50
|
+
"version": SCHEMA_VERSION,
|
|
51
|
+
"managedBy": "CDK",
|
|
52
|
+
"runtimes": [agent],
|
|
53
|
+
"memories": memories,
|
|
54
|
+
"knowledgeBases": [],
|
|
55
|
+
"credentials": map_model_provider_to_credentials(config.model_provider, agent_name),
|
|
56
|
+
"evaluators": [],
|
|
57
|
+
"onlineEvalConfigs": [],
|
|
58
|
+
"agentCoreGateways": [],
|
|
59
|
+
"policyEngines": [],
|
|
60
|
+
"configBundles": [],
|
|
61
|
+
"abTests": [],
|
|
62
|
+
"harnesses": [],
|
|
63
|
+
"datasets": [],
|
|
64
|
+
"payments": [],
|
|
65
|
+
"capacityProviders": [],
|
|
66
|
+
}
|
|
67
|
+
)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Bedrock Agent import (port of src/cli/operations/agent/import/)."""
|
|
2
|
+
|
|
3
|
+
from agentcore.operations.agent.import_.base_translator import (
|
|
4
|
+
BaseBedrockTranslator,
|
|
5
|
+
CollaboratorContext,
|
|
6
|
+
ImportedFeatures,
|
|
7
|
+
TranslationResult,
|
|
8
|
+
TranslatorOptions,
|
|
9
|
+
sanitize_py_identifier,
|
|
10
|
+
)
|
|
11
|
+
from agentcore.operations.agent.import_.constants import BEDROCK_REGIONS, IMPORT_FRAMEWORK_OPTIONS
|
|
12
|
+
from agentcore.operations.agent.import_.execute import ExecuteImportAgentParams, execute_import_agent
|
|
13
|
+
from agentcore.operations.agent.import_.langgraph_translator import LangGraphTranslator
|
|
14
|
+
from agentcore.operations.agent.import_.pyproject_generator import generate_pyproject_toml
|
|
15
|
+
from agentcore.operations.agent.import_.strands_translator import StrandsTranslator
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"BEDROCK_REGIONS",
|
|
19
|
+
"IMPORT_FRAMEWORK_OPTIONS",
|
|
20
|
+
"BaseBedrockTranslator",
|
|
21
|
+
"CollaboratorContext",
|
|
22
|
+
"ExecuteImportAgentParams",
|
|
23
|
+
"ImportedFeatures",
|
|
24
|
+
"LangGraphTranslator",
|
|
25
|
+
"StrandsTranslator",
|
|
26
|
+
"TranslationResult",
|
|
27
|
+
"TranslatorOptions",
|
|
28
|
+
"execute_import_agent",
|
|
29
|
+
"generate_pyproject_toml",
|
|
30
|
+
"sanitize_py_identifier",
|
|
31
|
+
]
|