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,195 @@
|
|
|
1
|
+
"""`create` flag validation (port of src/cli/commands/create/validate.ts).
|
|
2
|
+
|
|
3
|
+
``options`` is a dict keyed by upstream option names; it is normalized in place like upstream.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import os
|
|
7
|
+
from typing import Any, Final
|
|
8
|
+
|
|
9
|
+
from agentcore.cli.commands.add._common import ValidationResult, first_issue
|
|
10
|
+
from agentcore.cli.commands.add.validate import apply_lifecycle, session_storage_mount_path_issue
|
|
11
|
+
from agentcore.cli.commands.shared import filesystem_utils as fs
|
|
12
|
+
from agentcore.cli.commands.shared.vpc_utils import validate_vpc_options
|
|
13
|
+
from agentcore.schema import (
|
|
14
|
+
BUILD_TYPES,
|
|
15
|
+
MAX_EFS_MOUNTS,
|
|
16
|
+
MAX_S3_MOUNTS,
|
|
17
|
+
MODEL_PROVIDERS,
|
|
18
|
+
PROTOCOL_MODES,
|
|
19
|
+
SDK_FRAMEWORKS,
|
|
20
|
+
TARGET_LANGUAGES,
|
|
21
|
+
AgentName,
|
|
22
|
+
ProjectName,
|
|
23
|
+
get_frameworks_for_language,
|
|
24
|
+
get_supported_frameworks_for_protocol,
|
|
25
|
+
get_supported_model_providers,
|
|
26
|
+
is_framework_supported_for_language,
|
|
27
|
+
match_enum_value,
|
|
28
|
+
match_sdk_framework,
|
|
29
|
+
)
|
|
30
|
+
from agentcore.templates import apply_template_option_defaults, validate_template_options
|
|
31
|
+
|
|
32
|
+
MEMORY_OPTIONS: Final = ("none", "shortTerm", "longAndShortTerm")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def validate_folder_not_exists(name: str, cwd: str) -> bool | str:
|
|
36
|
+
if os.path.exists(os.path.join(cwd, name)):
|
|
37
|
+
return f"A folder named '{name}' already exists in this directory"
|
|
38
|
+
return True
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def validate_mount_pairs(options: dict[str, Any]) -> ValidationResult | None:
|
|
42
|
+
"""EFS / S3 Files pair checks shared by the agent and harness create paths."""
|
|
43
|
+
for arn_key, path_key, label, validator, maximum in (
|
|
44
|
+
("efsAccessPointArn", "efsMountPath", "EFS", fs.validate_efs_access_point_arn, MAX_EFS_MOUNTS),
|
|
45
|
+
("s3AccessPointArn", "s3MountPath", "S3 Files", fs.validate_s3_files_access_point_arn, MAX_S3_MOUNTS),
|
|
46
|
+
):
|
|
47
|
+
arns, paths = options.get(arn_key) or [], options.get(path_key) or []
|
|
48
|
+
if not arns and not paths:
|
|
49
|
+
continue
|
|
50
|
+
pairs = fs.zip_access_point_pairs(arns, paths, label)
|
|
51
|
+
if not pairs.success:
|
|
52
|
+
return ValidationResult(False, pairs.error)
|
|
53
|
+
check = fs.validate_access_point_mounts(pairs.mounts, validator)
|
|
54
|
+
if not check.success:
|
|
55
|
+
return ValidationResult(False, check.error)
|
|
56
|
+
if len(arns) > maximum:
|
|
57
|
+
return ValidationResult(False, f"Maximum {maximum} {label} mounts allowed (got {len(arns)})")
|
|
58
|
+
if options.get("networkMode") != "VPC":
|
|
59
|
+
return ValidationResult(
|
|
60
|
+
False,
|
|
61
|
+
f"{label} filesystem mounts require VPC network mode. Add --network-mode VPC --subnets <ids> "
|
|
62
|
+
"--security-groups <ids>.",
|
|
63
|
+
)
|
|
64
|
+
return None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def validate_create_options(options: dict[str, Any], cwd: str | None = None) -> ValidationResult:
|
|
68
|
+
if not options.get("name") and not (options.get("agent") is False and options.get("projectName")):
|
|
69
|
+
return ValidationResult(False, "--name is required")
|
|
70
|
+
|
|
71
|
+
project_name = options.get("projectName") or options["name"]
|
|
72
|
+
issue = first_issue(ProjectName, project_name)
|
|
73
|
+
if issue:
|
|
74
|
+
return ValidationResult(False, issue)
|
|
75
|
+
|
|
76
|
+
folder = validate_folder_not_exists(options.get("directory") or project_name, cwd or os.getcwd())
|
|
77
|
+
if folder is not True:
|
|
78
|
+
return ValidationResult(False, folder) # type: ignore[arg-type]
|
|
79
|
+
|
|
80
|
+
if options.get("agent") is False:
|
|
81
|
+
return ValidationResult(True)
|
|
82
|
+
|
|
83
|
+
issue = first_issue(AgentName, options.get("name"))
|
|
84
|
+
if issue:
|
|
85
|
+
return ValidationResult(False, issue)
|
|
86
|
+
|
|
87
|
+
if options.get("type") == "import":
|
|
88
|
+
if not options.get("agentId"):
|
|
89
|
+
return ValidationResult(False, "--agent-id is required for import")
|
|
90
|
+
if not options.get("agentAliasId"):
|
|
91
|
+
return ValidationResult(False, "--agent-alias-id is required for import")
|
|
92
|
+
if not options.get("region"):
|
|
93
|
+
return ValidationResult(False, "--region is required for import")
|
|
94
|
+
if not options.get("framework"):
|
|
95
|
+
return ValidationResult(False, "--framework is required for import (Strands or LangChain_LangGraph)")
|
|
96
|
+
fw = match_enum_value(SDK_FRAMEWORKS, options["framework"]) or options["framework"]
|
|
97
|
+
options["framework"] = fw
|
|
98
|
+
if fw not in ("Strands", "LangChain_LangGraph"):
|
|
99
|
+
return ValidationResult(False, f"Import only supports Strands or LangChain_LangGraph, got: {fw}")
|
|
100
|
+
if options.get("memory") is None:
|
|
101
|
+
options["memory"] = "none"
|
|
102
|
+
if options["memory"] not in MEMORY_OPTIONS:
|
|
103
|
+
return ValidationResult(
|
|
104
|
+
False, f"Invalid memory option: {options['memory']}. Use none, shortTerm, or longAndShortTerm"
|
|
105
|
+
)
|
|
106
|
+
return ValidationResult(True)
|
|
107
|
+
|
|
108
|
+
for key, values in (("protocol", PROTOCOL_MODES), ("language", TARGET_LANGUAGES)):
|
|
109
|
+
if options.get(key):
|
|
110
|
+
options[key] = match_enum_value(values, options[key]) or options[key]
|
|
111
|
+
if options.get("framework"):
|
|
112
|
+
options["framework"] = match_sdk_framework(options["framework"]) or options["framework"]
|
|
113
|
+
for key, values in (("modelProvider", MODEL_PROVIDERS), ("build", BUILD_TYPES)):
|
|
114
|
+
if options.get(key):
|
|
115
|
+
options[key] = match_enum_value(values, options[key]) or options[key]
|
|
116
|
+
|
|
117
|
+
apply_template_option_defaults(options.get("framework"), options)
|
|
118
|
+
template_error = validate_template_options(options.get("framework"), options)
|
|
119
|
+
if template_error:
|
|
120
|
+
return ValidationResult(False, template_error)
|
|
121
|
+
|
|
122
|
+
protocol = "HTTP"
|
|
123
|
+
if options.get("protocol"):
|
|
124
|
+
if options["protocol"] not in PROTOCOL_MODES:
|
|
125
|
+
return ValidationResult(False, f"Invalid protocol: {options['protocol']}. Use HTTP, MCP, A2A, or AGUI")
|
|
126
|
+
protocol = options["protocol"]
|
|
127
|
+
|
|
128
|
+
if options.get("build") and options["build"] not in BUILD_TYPES:
|
|
129
|
+
return ValidationResult(False, f"Invalid build type: {options['build']}. Use CodeZip or Container")
|
|
130
|
+
|
|
131
|
+
if protocol != "HTTP" and options.get("language") == "TypeScript":
|
|
132
|
+
return ValidationResult(
|
|
133
|
+
False, f"{protocol} protocol is not yet supported for TypeScript. Use --protocol HTTP or --language Python."
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
if protocol == "MCP":
|
|
137
|
+
if options.get("framework"):
|
|
138
|
+
return ValidationResult(False, "--framework is not applicable for MCP protocol")
|
|
139
|
+
if options.get("modelProvider"):
|
|
140
|
+
return ValidationResult(False, "--model-provider is not applicable for MCP protocol")
|
|
141
|
+
if options.get("memory") and options["memory"] != "none":
|
|
142
|
+
return ValidationResult(False, "--memory is not applicable for MCP protocol")
|
|
143
|
+
if options.get("language") and options["language"] not in TARGET_LANGUAGES:
|
|
144
|
+
return ValidationResult(False, f"Invalid language: {options['language']}")
|
|
145
|
+
return ValidationResult(True)
|
|
146
|
+
|
|
147
|
+
if not (options.get("framework") and options.get("modelProvider") and options.get("memory")):
|
|
148
|
+
return ValidationResult(
|
|
149
|
+
False, "Use --no-agent for project-only, or provide all: --framework, --model-provider, --memory"
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
language, framework, provider = options.get("language"), options["framework"], options["modelProvider"]
|
|
153
|
+
if not language:
|
|
154
|
+
return ValidationResult(False, "--language is required when creating an agent")
|
|
155
|
+
if language not in TARGET_LANGUAGES:
|
|
156
|
+
return ValidationResult(False, f"Invalid language: {language}. Use Python or TypeScript")
|
|
157
|
+
if framework not in SDK_FRAMEWORKS:
|
|
158
|
+
return ValidationResult(False, f"Invalid framework: {framework}")
|
|
159
|
+
if protocol != "HTTP" and framework not in get_supported_frameworks_for_protocol(protocol): # type: ignore[arg-type]
|
|
160
|
+
return ValidationResult(False, f"{framework} does not support {protocol} protocol")
|
|
161
|
+
if provider not in MODEL_PROVIDERS:
|
|
162
|
+
return ValidationResult(False, f"Invalid model provider: {provider}")
|
|
163
|
+
if language in ("Python", "TypeScript") and not is_framework_supported_for_language(language, framework): # type: ignore[arg-type]
|
|
164
|
+
supported = ", ".join(get_frameworks_for_language(language)) # type: ignore[arg-type]
|
|
165
|
+
return ValidationResult(
|
|
166
|
+
False, f"Framework {framework} is not yet available for {language}. Supported: {supported}."
|
|
167
|
+
)
|
|
168
|
+
if provider not in get_supported_model_providers(framework): # type: ignore[arg-type]
|
|
169
|
+
return ValidationResult(False, f"{framework} does not support {provider}")
|
|
170
|
+
if options["memory"] not in MEMORY_OPTIONS:
|
|
171
|
+
return ValidationResult(
|
|
172
|
+
False, f"Invalid memory option: {options['memory']}. Use none, shortTerm, or longAndShortTerm"
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
vpc = validate_vpc_options(options, options.get("build"))
|
|
176
|
+
if not vpc.valid:
|
|
177
|
+
return ValidationResult(False, vpc.error)
|
|
178
|
+
|
|
179
|
+
if failure := apply_lifecycle(options):
|
|
180
|
+
return failure
|
|
181
|
+
|
|
182
|
+
if language == "TypeScript":
|
|
183
|
+
if options.get("sessionStorageMountPath"):
|
|
184
|
+
return ValidationResult(False, "--session-storage-mount-path is not supported for TypeScript agents")
|
|
185
|
+
if options.get("efsAccessPointArn") or options.get("efsMountPath"):
|
|
186
|
+
return ValidationResult(False, "--efs-access-point-arn is not supported for TypeScript agents")
|
|
187
|
+
if options.get("s3AccessPointArn") or options.get("s3MountPath"):
|
|
188
|
+
return ValidationResult(False, "--s3-access-point-arn is not supported for TypeScript agents")
|
|
189
|
+
|
|
190
|
+
if options.get("sessionStorageMountPath"):
|
|
191
|
+
issue = session_storage_mount_path_issue(options["sessionStorageMountPath"])
|
|
192
|
+
if issue:
|
|
193
|
+
return ValidationResult(False, f"--session-storage-mount-path: {issue}")
|
|
194
|
+
|
|
195
|
+
return validate_mount_pairs(options) or ValidationResult(True)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"""Interactive `agentcore create`: prompt-based port of tui/screens/create (CreateScreen + useCreateFlow).
|
|
2
|
+
|
|
3
|
+
Order: existing-project check -> "Project name" -> "What would you like to build?"
|
|
4
|
+
(Harness / Agent / Skip) -> the add-agent wizard (agent) or the harness primitive's wizard (harness)
|
|
5
|
+
-> project scaffolding with step progress -> created summary.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
|
|
10
|
+
import typer
|
|
11
|
+
|
|
12
|
+
from agentcore.cli import interactive
|
|
13
|
+
from agentcore.cli.commands.add._common import first_issue
|
|
14
|
+
from agentcore.cli.commands.create.action import create_project
|
|
15
|
+
from agentcore.cli.commands.create.validate import validate_folder_not_exists
|
|
16
|
+
from agentcore.cli.errors import get_error_message
|
|
17
|
+
from agentcore.lib import APP_DIR, CONFIG_DIR, find_config_root, get_working_directory
|
|
18
|
+
from agentcore.schema import DEFAULT_MODEL_IDS, ProjectName
|
|
19
|
+
|
|
20
|
+
CREATE_TYPE_CHOICES = (
|
|
21
|
+
interactive.Choice("Harness (recommended)", "harness", "Managed config-based agent loop, no code required"),
|
|
22
|
+
interactive.Choice("Agent", "agent", "Start with a template or bring your own code hosted on AgentCore Runtime"),
|
|
23
|
+
interactive.Choice("Skip", "skip", "I'll add resources later"),
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _on_progress(step: str, status: str) -> None:
|
|
28
|
+
if status == "done":
|
|
29
|
+
typer.echo(f"\x1b[32m✓\x1b[0m {step}")
|
|
30
|
+
elif status == "error":
|
|
31
|
+
typer.echo(f"\x1b[31m✗\x1b[0m {step}")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def run_create_wizard() -> None:
|
|
35
|
+
cwd = get_working_directory()
|
|
36
|
+
existing = find_config_root(cwd)
|
|
37
|
+
if existing:
|
|
38
|
+
typer.echo("A project already exists at this location.", err=True)
|
|
39
|
+
typer.echo(f"Found: {existing}", err=True)
|
|
40
|
+
typer.echo("Use add agent to create a new agent in the existing project.", err=True)
|
|
41
|
+
raise typer.Exit(1)
|
|
42
|
+
|
|
43
|
+
typer.echo("Create a new AgentCore project")
|
|
44
|
+
typer.echo("This will create a directory with your project name.")
|
|
45
|
+
|
|
46
|
+
def validate_name(value: str) -> str | None:
|
|
47
|
+
issue = first_issue(ProjectName, value)
|
|
48
|
+
if issue:
|
|
49
|
+
return issue
|
|
50
|
+
check = validate_folder_not_exists(value, cwd)
|
|
51
|
+
return None if check is True else check # type: ignore[return-value]
|
|
52
|
+
|
|
53
|
+
project_name = interactive.text("Project name", validate=validate_name)
|
|
54
|
+
kind = interactive.select("What would you like to build?", list(CREATE_TYPE_CHOICES))
|
|
55
|
+
|
|
56
|
+
agent_options = None
|
|
57
|
+
if kind == "agent":
|
|
58
|
+
from agentcore.cli.commands.add.agent_wizard import run_add_agent_wizard
|
|
59
|
+
|
|
60
|
+
agent_options = run_add_agent_wizard([], project_name, [], os.path.join(cwd, project_name))
|
|
61
|
+
if agent_options is None:
|
|
62
|
+
typer.echo("Cancelled.")
|
|
63
|
+
raise typer.Exit(0)
|
|
64
|
+
|
|
65
|
+
result = create_project(project_name, cwd, on_progress=_on_progress)
|
|
66
|
+
if not result.success:
|
|
67
|
+
typer.echo("Project creation failed.", err=True)
|
|
68
|
+
typer.echo(get_error_message(result.error), err=True)
|
|
69
|
+
raise typer.Exit(1)
|
|
70
|
+
project_root = result.value["projectPath"]
|
|
71
|
+
config_base_dir = os.path.join(project_root, CONFIG_DIR)
|
|
72
|
+
|
|
73
|
+
try:
|
|
74
|
+
if agent_options is not None:
|
|
75
|
+
_add_agent(agent_options, config_base_dir)
|
|
76
|
+
elif kind == "harness":
|
|
77
|
+
_add_harness()
|
|
78
|
+
except typer.Exit:
|
|
79
|
+
raise
|
|
80
|
+
except Exception as exc: # noqa: BLE001
|
|
81
|
+
typer.echo("Project creation failed.", err=True)
|
|
82
|
+
typer.echo(get_error_message(exc), err=True)
|
|
83
|
+
raise typer.Exit(1) from None
|
|
84
|
+
|
|
85
|
+
typer.echo("")
|
|
86
|
+
typer.echo("Created:")
|
|
87
|
+
typer.echo(f" {project_name}/")
|
|
88
|
+
if agent_options is not None:
|
|
89
|
+
typer.echo(f" app/{agent_options.name}/ Agent code location")
|
|
90
|
+
typer.echo(" agentcore/ Config and CDK project")
|
|
91
|
+
if agent_options is not None and agent_options.type != "byo" and agent_options.protocol != "MCP":
|
|
92
|
+
typer.echo(
|
|
93
|
+
f"Model: {DEFAULT_MODEL_IDS.get(agent_options.model_provider, '')} via {agent_options.model_provider}"
|
|
94
|
+
)
|
|
95
|
+
if agent_options is not None and agent_options.type == "byo":
|
|
96
|
+
typer.echo(f"Copy your agent code to {agent_options.code_location} before deploying.")
|
|
97
|
+
typer.echo(f"Ensure {agent_options.entrypoint} is the entrypoint file in that folder.")
|
|
98
|
+
typer.echo("")
|
|
99
|
+
typer.echo("\x1b[32mProject created successfully!\x1b[0m")
|
|
100
|
+
typer.echo("")
|
|
101
|
+
typer.echo("To continue, navigate to your new project:")
|
|
102
|
+
typer.echo(f" cd {project_name}")
|
|
103
|
+
typer.echo(" agentcore")
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def _add_agent(options, config_base_dir: str) -> None:
|
|
107
|
+
from agentcore.operations.node import setup_node_project
|
|
108
|
+
from agentcore.primitives.agent import AgentPrimitive
|
|
109
|
+
|
|
110
|
+
_on_progress("Add agent to project", "start")
|
|
111
|
+
result = AgentPrimitive().add(options, config_base_dir)
|
|
112
|
+
if not result.success:
|
|
113
|
+
_on_progress("Add agent to project", "error")
|
|
114
|
+
raise result.error
|
|
115
|
+
_on_progress("Add agent to project", "done")
|
|
116
|
+
if options.language == "TypeScript" and options.type == "create":
|
|
117
|
+
setup_node_project(os.path.join(os.path.dirname(config_base_dir), APP_DIR, options.name))
|
|
118
|
+
_on_progress("Set up Node environment", "done")
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _add_harness() -> None:
|
|
122
|
+
from agentcore.primitives.registry import all_primitives
|
|
123
|
+
|
|
124
|
+
harness = next((p for p in all_primitives() if p.kind == "harness"), None)
|
|
125
|
+
if harness is None:
|
|
126
|
+
raise Exception("Harness creation is not available in this build: `add harness` is not ported yet.")
|
|
127
|
+
harness.add_interactive()
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"""`agentcore dataset download|publish-version|remove-version` (port of commands/dataset/command.tsx).
|
|
2
|
+
|
|
3
|
+
Dataset content is synced to the service automatically during `agentcore deploy`; the local JSONL
|
|
4
|
+
file is the DRAFT working copy.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
|
|
9
|
+
import typer
|
|
10
|
+
|
|
11
|
+
from agentcore.aws import agentcore_datasets as datasets_api
|
|
12
|
+
from agentcore.cli.commands._jobs_common import require_project
|
|
13
|
+
from agentcore.cli.groups import group
|
|
14
|
+
from agentcore.cli.run_command import run_cli_command
|
|
15
|
+
from agentcore.lib import ConfigIO
|
|
16
|
+
from agentcore.operations.dataset import delete_dataset_version, publish_dataset, pull_dataset, resolve_dataset
|
|
17
|
+
|
|
18
|
+
dataset_app = group("dataset")
|
|
19
|
+
dataset_app.info.help = "Manage dataset content and versions"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def confirm(question: str) -> bool:
|
|
23
|
+
"""readline-style y/N prompt (upstream reads one line from stdin)."""
|
|
24
|
+
typer.echo(question, nl=False)
|
|
25
|
+
try:
|
|
26
|
+
answer = input()
|
|
27
|
+
except EOFError:
|
|
28
|
+
answer = ""
|
|
29
|
+
return answer.lower() == "y"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _json(payload: dict) -> None:
|
|
33
|
+
typer.echo(json.dumps(payload, separators=(",", ":"), ensure_ascii=False))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@dataset_app.command("download", help="Download dataset from service to local file")
|
|
37
|
+
def download(
|
|
38
|
+
name: str | None = typer.Option(None, "--name", help="Dataset name"),
|
|
39
|
+
version: str | None = typer.Option(None, "--version", help="Version to pull (default: DRAFT)"),
|
|
40
|
+
yes: bool = typer.Option(False, "--yes", help="Skip overwrite confirmation"),
|
|
41
|
+
as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
|
|
42
|
+
) -> None:
|
|
43
|
+
require_project()
|
|
44
|
+
|
|
45
|
+
def run() -> None:
|
|
46
|
+
resolved = resolve_dataset(name)
|
|
47
|
+
config_base_dir = ConfigIO().get_config_root()
|
|
48
|
+
if not yes and not as_json:
|
|
49
|
+
typer.echo(f"⚠ This will overwrite: {resolved.location}")
|
|
50
|
+
typer.echo(f" (pulling {f'version {version}' if version else 'DRAFT'})")
|
|
51
|
+
if not confirm("? Continue? (y/N) "):
|
|
52
|
+
typer.echo("Skipped.")
|
|
53
|
+
return
|
|
54
|
+
result = pull_dataset(
|
|
55
|
+
region=resolved.region,
|
|
56
|
+
dataset_id=resolved.dataset_id,
|
|
57
|
+
local_file_path=resolved.location,
|
|
58
|
+
config_base_dir=config_base_dir,
|
|
59
|
+
version=version,
|
|
60
|
+
)
|
|
61
|
+
if as_json:
|
|
62
|
+
_json({"success": True, **{k: v for k, v in result.items() if v is not None}})
|
|
63
|
+
else:
|
|
64
|
+
typer.secho(f"✓ {result['exampleCount']} examples written to {resolved.location}", fg=typer.colors.GREEN)
|
|
65
|
+
pulled = "DRAFT" if result["version"] == "DRAFT" else f"version {result['version']}"
|
|
66
|
+
typer.secho(f" Pulled from: {pulled}", dim=True)
|
|
67
|
+
|
|
68
|
+
run_cli_command(as_json, run)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@dataset_app.command("publish-version", help="Publish DRAFT as a new immutable version")
|
|
72
|
+
def publish_version(
|
|
73
|
+
name: str | None = typer.Option(None, "--name", help="Dataset name"),
|
|
74
|
+
as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
|
|
75
|
+
) -> None:
|
|
76
|
+
require_project()
|
|
77
|
+
|
|
78
|
+
def run() -> None:
|
|
79
|
+
resolved = resolve_dataset(name)
|
|
80
|
+
info = datasets_api.get_dataset(region=resolved.region, dataset_id=resolved.dataset_id)
|
|
81
|
+
if info.get("draftStatus") == "UNMODIFIED" and not as_json:
|
|
82
|
+
typer.echo("⚠ DRAFT has no unpublished changes (draftStatus: UNMODIFIED)")
|
|
83
|
+
if not confirm("? Publish anyway? (y/N) "):
|
|
84
|
+
typer.echo("Skipped.")
|
|
85
|
+
return
|
|
86
|
+
result = publish_dataset(region=resolved.region, dataset_id=resolved.dataset_id)
|
|
87
|
+
if as_json:
|
|
88
|
+
_json({"success": True, **result})
|
|
89
|
+
else:
|
|
90
|
+
typer.secho(
|
|
91
|
+
f"✓ Published version {result['version']} ({result['exampleCount']} examples)", fg=typer.colors.GREEN
|
|
92
|
+
)
|
|
93
|
+
typer.secho(f" draftStatus: {result['draftStatus']}", dim=True)
|
|
94
|
+
|
|
95
|
+
run_cli_command(as_json, run)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@dataset_app.command("remove-version", help="Delete a specific published version")
|
|
99
|
+
def remove_version(
|
|
100
|
+
version_id: str = typer.Argument(..., metavar="<version-id>", help="Version number to remove"),
|
|
101
|
+
name: str | None = typer.Option(None, "--name", help="Dataset name"),
|
|
102
|
+
as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
|
|
103
|
+
) -> None:
|
|
104
|
+
require_project()
|
|
105
|
+
|
|
106
|
+
def run() -> None:
|
|
107
|
+
resolved = resolve_dataset(name)
|
|
108
|
+
if not as_json:
|
|
109
|
+
typer.echo(f'⚠ This will permanently delete version {version_id} of dataset "{resolved.name}".')
|
|
110
|
+
if not confirm("? Continue? (y/N) "):
|
|
111
|
+
typer.echo("Skipped.")
|
|
112
|
+
return
|
|
113
|
+
delete_dataset_version(region=resolved.region, dataset_id=resolved.dataset_id, version=version_id)
|
|
114
|
+
if as_json:
|
|
115
|
+
_json({"success": True, "name": resolved.name, "deletedVersion": version_id})
|
|
116
|
+
else:
|
|
117
|
+
typer.secho(f'✓ Deleted version {version_id} of dataset "{resolved.name}"', fg=typer.colors.GREEN)
|
|
118
|
+
|
|
119
|
+
run_cli_command(as_json, run)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""`agentcore deploy` (port of src/cli/commands/deploy)."""
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
from agentcore.cli.commands.deploy.actions import (
|
|
6
|
+
ValidatedDeployOptions,
|
|
7
|
+
compute_harness_version_drift,
|
|
8
|
+
handle_deploy,
|
|
9
|
+
run_deploy,
|
|
10
|
+
run_diff,
|
|
11
|
+
select_target_stack,
|
|
12
|
+
)
|
|
13
|
+
from agentcore.cli.commands.deploy.types import DeployOptions, DeployResult
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"DeployOptions",
|
|
17
|
+
"DeployResult",
|
|
18
|
+
"ValidatedDeployOptions",
|
|
19
|
+
"compute_harness_version_drift",
|
|
20
|
+
"handle_deploy",
|
|
21
|
+
"register",
|
|
22
|
+
"run_deploy",
|
|
23
|
+
"run_diff",
|
|
24
|
+
"select_target_stack",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def register(app: typer.Typer) -> None:
|
|
29
|
+
from agentcore.cli.commands.deploy.command import register_deploy
|
|
30
|
+
|
|
31
|
+
register_deploy(app)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""``requireProject`` guard (plain-text port of ``tui/guards/project.tsx``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
import typer
|
|
8
|
+
|
|
9
|
+
from agentcore.lib.schemas.io.path_resolver import find_config_root, get_working_directory
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def require_project() -> None:
|
|
13
|
+
cwd = get_working_directory()
|
|
14
|
+
config_root = find_config_root(cwd)
|
|
15
|
+
if not config_root:
|
|
16
|
+
typer.echo("No agentcore project found.")
|
|
17
|
+
typer.echo("Run agentcore create to fix this.")
|
|
18
|
+
raise typer.Exit(1)
|
|
19
|
+
project_root = os.path.realpath(os.path.dirname(config_root))
|
|
20
|
+
resolved_cwd = os.path.realpath(cwd)
|
|
21
|
+
if resolved_cwd != project_root:
|
|
22
|
+
typer.echo("Please run this command from your project root directory.")
|
|
23
|
+
typer.echo(f"You are in: {resolved_cwd}\nProject root: {project_root}")
|
|
24
|
+
typer.echo(f"Run cd {project_root} to fix this.")
|
|
25
|
+
raise typer.Exit(1)
|