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,136 @@
|
|
|
1
|
+
"""Channel-prefixed binary framing for interactive shells (port of ``shell-framer.ts``).
|
|
2
|
+
|
|
3
|
+
Wire format: a 1-byte channel ID followed by payload bytes (identical to k8s
|
|
4
|
+
``v5.channel.k8s.io``). Oversized stdin payloads raise the builtin :class:`ValueError`, which plays
|
|
5
|
+
the role of upstream's local ``ValueError`` class.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import re
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from enum import IntEnum
|
|
14
|
+
from typing import Any, Literal, NotRequired, TypedDict
|
|
15
|
+
|
|
16
|
+
MAX_FRAME_SIZE = 65536
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ShellChannel(IntEnum):
|
|
20
|
+
STDIN = 0x00
|
|
21
|
+
STDOUT = 0x01
|
|
22
|
+
STDERR = 0x02
|
|
23
|
+
STATUS = 0x03
|
|
24
|
+
RESIZE = 0x04
|
|
25
|
+
HEARTBEAT = 0x05
|
|
26
|
+
CLOSE = 0xFF
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@dataclass(frozen=True, slots=True)
|
|
30
|
+
class ShellFrame:
|
|
31
|
+
channel: ShellChannel | int
|
|
32
|
+
"""Channel byte; unknown channels are passed through as plain ints."""
|
|
33
|
+
payload: bytes
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def text(self) -> str:
|
|
37
|
+
"""UTF-8 text of the payload."""
|
|
38
|
+
return self.payload.decode("utf-8", errors="replace")
|
|
39
|
+
|
|
40
|
+
def json(self) -> Any:
|
|
41
|
+
"""Parse the payload as JSON (raises ``ValueError`` on invalid JSON)."""
|
|
42
|
+
return json.loads(self.payload.decode("utf-8", errors="replace"))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _channel(value: int) -> ShellChannel | int:
|
|
46
|
+
try:
|
|
47
|
+
return ShellChannel(value)
|
|
48
|
+
except ValueError:
|
|
49
|
+
return value
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class ShellFramer:
|
|
53
|
+
"""Stateless encoder/decoder for the shell framing protocol."""
|
|
54
|
+
|
|
55
|
+
def decode(self, raw: bytes) -> ShellFrame:
|
|
56
|
+
if len(raw) == 0:
|
|
57
|
+
raise ValueError("Empty frame")
|
|
58
|
+
return ShellFrame(channel=_channel(raw[0]), payload=bytes(raw[1:]))
|
|
59
|
+
|
|
60
|
+
def encode_stdin(self, text: str) -> bytes:
|
|
61
|
+
return self.encode_stdin_raw(text.encode("utf-8"))
|
|
62
|
+
|
|
63
|
+
def encode_stdin_raw(self, chunk: bytes) -> bytes:
|
|
64
|
+
"""Encode raw bytes (ESC sequences, arrow keys, non-UTF-8 input) as a STDIN frame."""
|
|
65
|
+
if len(chunk) > MAX_FRAME_SIZE:
|
|
66
|
+
raise ValueError(
|
|
67
|
+
f"stdin payload {len(chunk)} bytes exceeds MAX_FRAME_SIZE {MAX_FRAME_SIZE}; chunk large pastes"
|
|
68
|
+
)
|
|
69
|
+
return bytes([ShellChannel.STDIN]) + bytes(chunk)
|
|
70
|
+
|
|
71
|
+
def encode_resize(self, cols: int, rows: int) -> bytes:
|
|
72
|
+
payload = json.dumps({"width": cols, "height": rows}, separators=(",", ":")).encode("utf-8")
|
|
73
|
+
return bytes([ShellChannel.RESIZE]) + payload
|
|
74
|
+
|
|
75
|
+
def encode_heartbeat(self) -> bytes:
|
|
76
|
+
return bytes([ShellChannel.HEARTBEAT])
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# --- STATUS frame parsing ---
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class StatusConfirmation(TypedDict):
|
|
83
|
+
type: Literal["confirmation"]
|
|
84
|
+
shellId: str
|
|
85
|
+
reconnected: bool
|
|
86
|
+
bytesDropped: NotRequired[int]
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class StatusTermination(TypedDict):
|
|
90
|
+
type: Literal["termination"]
|
|
91
|
+
exitCode: int | None
|
|
92
|
+
signal: str | None
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class StatusUnknown(TypedDict):
|
|
96
|
+
type: Literal["unknown"]
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
StatusFrameResult = StatusConfirmation | StatusTermination | StatusUnknown
|
|
100
|
+
|
|
101
|
+
_LEADING_INT = re.compile(r"^\s*([+-]?\d+)")
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _parse_int(value: str) -> int | None:
|
|
105
|
+
# JS parseInt(value, 10): leading integer prefix, NaN (-> None) otherwise.
|
|
106
|
+
match = _LEADING_INT.match(value)
|
|
107
|
+
return int(match.group(1)) if match else None
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def parse_status_frame(frame: ShellFrame) -> StatusFrameResult:
|
|
111
|
+
"""Classify a STATUS frame: confirmation frames carry ``metadata.shellId``; termination frames don't."""
|
|
112
|
+
try:
|
|
113
|
+
status = frame.json()
|
|
114
|
+
except ValueError:
|
|
115
|
+
return {"type": "unknown"}
|
|
116
|
+
if not isinstance(status, dict):
|
|
117
|
+
status = {}
|
|
118
|
+
|
|
119
|
+
metadata = status.get("metadata") if isinstance(status.get("metadata"), dict) else {}
|
|
120
|
+
shell_id = metadata.get("shellId")
|
|
121
|
+
if shell_id:
|
|
122
|
+
result: StatusConfirmation = {
|
|
123
|
+
"type": "confirmation",
|
|
124
|
+
"shellId": shell_id,
|
|
125
|
+
"reconnected": metadata.get("reconnected") if metadata.get("reconnected") is not None else False,
|
|
126
|
+
}
|
|
127
|
+
if "bytesDropped" in metadata and metadata["bytesDropped"] is not None:
|
|
128
|
+
result["bytesDropped"] = metadata["bytesDropped"]
|
|
129
|
+
return result
|
|
130
|
+
|
|
131
|
+
details = status.get("details") if isinstance(status.get("details"), dict) else {}
|
|
132
|
+
causes = details.get("causes") or []
|
|
133
|
+
exit_code_str = next((c.get("message") for c in causes if c.get("reason") == "ExitCode"), None)
|
|
134
|
+
signal = next((c.get("message") for c in causes if c.get("reason") == "Signal"), None)
|
|
135
|
+
exit_code = _parse_int(str(exit_code_str)) if exit_code_str is not None else None
|
|
136
|
+
return {"type": "termination", "exitCode": exit_code, "signal": signal}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""AgentCore endpoint resolution with ``AGENTCORE_STAGE`` overrides (port of ``stage-endpoint.ts``).
|
|
2
|
+
|
|
3
|
+
Set ``AGENTCORE_STAGE=beta|gamma`` to target pre-release environments.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
|
|
10
|
+
from agentcore.aws.partition import dns_suffix
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _stage() -> str | None:
|
|
14
|
+
stage = os.environ.get("AGENTCORE_STAGE")
|
|
15
|
+
return stage.lower() if stage is not None else None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def is_prerelease_stage() -> bool:
|
|
19
|
+
return _stage() in ("beta", "gamma")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def data_plane_endpoint(region: str) -> str:
|
|
23
|
+
"""HTTPS endpoint of the ``bedrock-agentcore`` data plane (``elcapdp`` in pre-release)."""
|
|
24
|
+
stage = _stage()
|
|
25
|
+
if stage == "beta":
|
|
26
|
+
return f"https://beta.{region}.elcapdp.genesis-primitives.aws.dev"
|
|
27
|
+
if stage == "gamma":
|
|
28
|
+
return f"https://gamma.{region}.elcapdp.genesis-primitives.aws.dev"
|
|
29
|
+
return f"https://bedrock-agentcore.{region}.{dns_suffix(region)}"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def control_plane_endpoint(region: str) -> str:
|
|
33
|
+
"""HTTPS endpoint of the ``bedrock-agentcore-control`` plane (``elcapcp`` in pre-release)."""
|
|
34
|
+
stage = _stage()
|
|
35
|
+
if stage == "beta":
|
|
36
|
+
return f"https://beta.{region}.elcapcp.genesis-primitives.aws.dev"
|
|
37
|
+
if stage == "gamma":
|
|
38
|
+
return f"https://gamma.{region}.elcapcp.genesis-primitives.aws.dev"
|
|
39
|
+
return f"https://bedrock-agentcore-control.{region}.{dns_suffix(region)}"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Make a deployment target's region authoritative for downstream AWS calls (port of ``target-region.ts``).
|
|
2
|
+
|
|
3
|
+
boto3 (and the CDK toolkit subprocess) resolve region from ``AWS_REGION`` / ``AWS_DEFAULT_REGION``
|
|
4
|
+
when no explicit region is given. ``aws-targets.json`` is the source of truth, so the target's
|
|
5
|
+
region is promoted onto the environment for the operation and the previous values restored after.
|
|
6
|
+
See https://github.com/aws/agentcore-cli/issues/924.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
from collections.abc import Callable, Iterator
|
|
13
|
+
from contextlib import contextmanager
|
|
14
|
+
from typing import TypeVar
|
|
15
|
+
|
|
16
|
+
T = TypeVar("T")
|
|
17
|
+
|
|
18
|
+
RestoreEnv = Callable[[], None]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def apply_target_region_to_env(region: str) -> RestoreEnv:
|
|
22
|
+
"""Set ``AWS_REGION``/``AWS_DEFAULT_REGION`` to ``region``; returns a function that restores them."""
|
|
23
|
+
prev_region = os.environ.get("AWS_REGION")
|
|
24
|
+
prev_default_region = os.environ.get("AWS_DEFAULT_REGION")
|
|
25
|
+
os.environ["AWS_REGION"] = region
|
|
26
|
+
os.environ["AWS_DEFAULT_REGION"] = region
|
|
27
|
+
|
|
28
|
+
def restore() -> None:
|
|
29
|
+
for key, prev in (("AWS_REGION", prev_region), ("AWS_DEFAULT_REGION", prev_default_region)):
|
|
30
|
+
if prev is None:
|
|
31
|
+
os.environ.pop(key, None)
|
|
32
|
+
else:
|
|
33
|
+
os.environ[key] = prev
|
|
34
|
+
|
|
35
|
+
return restore
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def with_target_region(region: str, fn: Callable[[], T]) -> T:
|
|
39
|
+
"""Run ``fn`` with ``region`` applied to the environment, restoring prior values afterwards."""
|
|
40
|
+
restore = apply_target_region_to_env(region)
|
|
41
|
+
try:
|
|
42
|
+
return fn()
|
|
43
|
+
finally:
|
|
44
|
+
restore()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@contextmanager
|
|
48
|
+
def target_region(region: str) -> Iterator[None]:
|
|
49
|
+
"""Context-manager form of :func:`with_target_region`."""
|
|
50
|
+
restore = apply_target_region_to_env(region)
|
|
51
|
+
try:
|
|
52
|
+
yield
|
|
53
|
+
finally:
|
|
54
|
+
restore()
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Enable CloudWatch Transaction Search (port of ``transaction-search.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from agentcore.aws._aws_errors import get_error_message, is_access_denied_error
|
|
6
|
+
from agentcore.aws.account import create_aws_client
|
|
7
|
+
from agentcore.aws.partition import arn_prefix
|
|
8
|
+
from agentcore.lib.errors.types import AccessDeniedError
|
|
9
|
+
from agentcore.lib.result import Result, err, ok
|
|
10
|
+
from agentcore.lib.utils.json_format import to_json_string
|
|
11
|
+
|
|
12
|
+
RESOURCE_POLICY_NAME = "TransactionSearchXRayAccess"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _failure(exc: Exception, access_denied_prefix: str, generic_prefix: str) -> Result:
|
|
16
|
+
message = get_error_message(exc)
|
|
17
|
+
if is_access_denied_error(exc):
|
|
18
|
+
return err(AccessDeniedError(f"{access_denied_prefix}: {message}", cause=exc))
|
|
19
|
+
error = RuntimeError(f"{generic_prefix}: {message}")
|
|
20
|
+
error.__cause__ = exc
|
|
21
|
+
return err(error)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def enable_transaction_search(region: str, account_id: str, index_percentage: float = 100) -> Result:
|
|
25
|
+
"""Idempotently enable Transaction Search; safe to call on every deploy.
|
|
26
|
+
|
|
27
|
+
1. Start Application Signals discovery.
|
|
28
|
+
2. Create the CloudWatch Logs resource policy for X-Ray (if missing).
|
|
29
|
+
3. Route trace segments to CloudWatch Logs.
|
|
30
|
+
4. Index ``index_percentage`` % of spans on the built-in ``Default`` rule.
|
|
31
|
+
"""
|
|
32
|
+
# Step 1: Application Signals (creates the service-linked role).
|
|
33
|
+
try:
|
|
34
|
+
create_aws_client("application-signals", region).start_discovery()
|
|
35
|
+
except Exception as exc: # noqa: BLE001
|
|
36
|
+
return _failure(
|
|
37
|
+
exc, "Insufficient permissions to enable Application Signals", "Failed to enable Application Signals"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# Step 2: CloudWatch Logs resource policy for X-Ray.
|
|
41
|
+
try:
|
|
42
|
+
logs = create_aws_client("logs", region)
|
|
43
|
+
policies = logs.describe_resource_policies().get("resourcePolicies") or []
|
|
44
|
+
if not any(p.get("policyName") == RESOURCE_POLICY_NAME for p in policies):
|
|
45
|
+
prefix = arn_prefix(region)
|
|
46
|
+
policy_document = to_json_string(
|
|
47
|
+
{
|
|
48
|
+
"Version": "2012-10-17",
|
|
49
|
+
"Statement": [
|
|
50
|
+
{
|
|
51
|
+
"Sid": "TransactionSearchXRayAccess",
|
|
52
|
+
"Effect": "Allow",
|
|
53
|
+
"Principal": {"Service": "xray.amazonaws.com"},
|
|
54
|
+
"Action": "logs:PutLogEvents",
|
|
55
|
+
"Resource": [
|
|
56
|
+
f"{prefix}:logs:{region}:{account_id}:log-group:aws/spans:*",
|
|
57
|
+
f"{prefix}:logs:{region}:{account_id}:log-group:/aws/application-signals/data:*",
|
|
58
|
+
],
|
|
59
|
+
"Condition": {
|
|
60
|
+
"ArnLike": {"aws:SourceArn": f"{prefix}:xray:{region}:{account_id}:*"},
|
|
61
|
+
"StringEquals": {"aws:SourceAccount": account_id},
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
indent=None,
|
|
67
|
+
)
|
|
68
|
+
logs.put_resource_policy(policyName=RESOURCE_POLICY_NAME, policyDocument=policy_document)
|
|
69
|
+
except Exception as exc: # noqa: BLE001
|
|
70
|
+
return _failure(
|
|
71
|
+
exc,
|
|
72
|
+
"Insufficient permissions to configure CloudWatch Logs policy",
|
|
73
|
+
"Failed to configure CloudWatch Logs policy",
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
xray = create_aws_client("xray", region)
|
|
77
|
+
|
|
78
|
+
# Step 3: trace segment destination.
|
|
79
|
+
try:
|
|
80
|
+
if xray.get_trace_segment_destination().get("Destination") != "CloudWatchLogs":
|
|
81
|
+
xray.update_trace_segment_destination(Destination="CloudWatchLogs")
|
|
82
|
+
except Exception as exc: # noqa: BLE001
|
|
83
|
+
return _failure(
|
|
84
|
+
exc, "Insufficient permissions to configure trace destination", "Failed to configure trace destination"
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
# Step 4: indexing on the built-in Default rule (always exists).
|
|
88
|
+
try:
|
|
89
|
+
xray.update_indexing_rule(
|
|
90
|
+
Name="Default", Rule={"Probabilistic": {"DesiredSamplingPercentage": index_percentage}}
|
|
91
|
+
)
|
|
92
|
+
except Exception as exc: # noqa: BLE001
|
|
93
|
+
return _failure(
|
|
94
|
+
exc, "Insufficient permissions to configure indexing rules", "Failed to configure indexing rules"
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
return ok()
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""The vended CDK project (port of upstream ``src/cli/cdk``).
|
|
2
|
+
|
|
3
|
+
Only the project-management part is ported here. Upstream's ``toolkit-lib/`` wraps the JavaScript
|
|
4
|
+
``@aws-cdk/toolkit-lib`` API (synth/deploy/diff/destroy) and belongs with deploy orchestration.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from agentcore.cdk.constants import CDK_APP_ENTRY, CDK_PROJECT_DIR
|
|
8
|
+
from agentcore.cdk.local_cdk_project import LocalCdkProject
|
|
9
|
+
|
|
10
|
+
__all__ = ["CDK_APP_ENTRY", "CDK_PROJECT_DIR", "LocalCdkProject"]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""CDK project location constants (from upstream ``src/cli/constants.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Final
|
|
6
|
+
|
|
7
|
+
# Directory of the CDK project generated by `agentcore create`, relative to CONFIG_DIR (agentcore/cdk/).
|
|
8
|
+
CDK_PROJECT_DIR: Final = "cdk"
|
|
9
|
+
|
|
10
|
+
# CDK app entry point relative to the CDK project directory (the compiled JS in dist/).
|
|
11
|
+
CDK_APP_ENTRY: Final = "dist/bin/cdk.js"
|
|
12
|
+
|
|
13
|
+
__all__ = ["CDK_APP_ENTRY", "CDK_PROJECT_DIR"]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""The local CDK project vended by `agentcore create` (port of ``local-cdk-project.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from agentcore.cdk.constants import CDK_PROJECT_DIR
|
|
9
|
+
from agentcore.lib import CONFIG_DIR, run_subprocess_capture
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class LocalCdkProject:
|
|
13
|
+
"""Validates, installs, and builds the CDK project at ``<base_dir>/agentcore/cdk``."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, base_dir: str | os.PathLike[str] | None = None) -> None:
|
|
16
|
+
self.project_dir = Path(base_dir if base_dir is not None else os.getcwd()) / CONFIG_DIR / CDK_PROJECT_DIR
|
|
17
|
+
|
|
18
|
+
@classmethod
|
|
19
|
+
def from_path(cls, project_dir: str | os.PathLike[str]) -> LocalCdkProject:
|
|
20
|
+
"""Create from an explicit CDK project directory."""
|
|
21
|
+
instance = cls.__new__(cls)
|
|
22
|
+
instance.project_dir = Path(project_dir)
|
|
23
|
+
return instance
|
|
24
|
+
|
|
25
|
+
def exists(self) -> bool:
|
|
26
|
+
return self.project_dir.exists() and (self.project_dir / "package.json").exists()
|
|
27
|
+
|
|
28
|
+
def validate(self) -> None:
|
|
29
|
+
"""Raise if the project is missing or has no package.json."""
|
|
30
|
+
if not self.project_dir.exists():
|
|
31
|
+
raise FileNotFoundError(f"CDK project not found at {self.project_dir}. Run 'agentcore create' first.")
|
|
32
|
+
if not (self.project_dir / "package.json").exists():
|
|
33
|
+
raise FileNotFoundError(f"Invalid CDK project: missing package.json in {self.project_dir}")
|
|
34
|
+
|
|
35
|
+
def install(self) -> None:
|
|
36
|
+
"""Run ``npm install``."""
|
|
37
|
+
result = run_subprocess_capture("npm", ["install"], cwd=self.project_dir)
|
|
38
|
+
if result.code != 0:
|
|
39
|
+
raise RuntimeError(result.stderr or result.stdout or f"npm exited with code {result.code}")
|
|
40
|
+
|
|
41
|
+
def build(self) -> None:
|
|
42
|
+
"""Compile the TypeScript project (``npm run build``)."""
|
|
43
|
+
result = run_subprocess_capture("npm", ["run", "build"], cwd=self.project_dir)
|
|
44
|
+
if result.code != 0:
|
|
45
|
+
raise RuntimeError(result.stderr or result.stdout or f"npm run build exited with code {result.code}")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
__all__ = ["LocalCdkProject"]
|