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,137 @@
|
|
|
1
|
+
"""Strict semver parsing/comparison with node-semver semantics (port of ``semver.ts``).
|
|
2
|
+
|
|
3
|
+
PEP 440 (``packaging.version``) orders prereleases differently and accepts other syntax, so
|
|
4
|
+
node-semver's ``parse`` (non-loose) and ``compare`` are reimplemented here.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import re
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from functools import total_ordering
|
|
12
|
+
from typing import Literal
|
|
13
|
+
|
|
14
|
+
_MAX_LENGTH = 256
|
|
15
|
+
_MAX_SAFE_INTEGER = 2**53 - 1
|
|
16
|
+
|
|
17
|
+
_NUM = r"0|[1-9]\d*"
|
|
18
|
+
_PRERELEASE_ID = rf"(?:{_NUM}|\d*[a-zA-Z-][a-zA-Z0-9-]*)"
|
|
19
|
+
_FULL = re.compile(
|
|
20
|
+
rf"^v?({_NUM})\.({_NUM})\.({_NUM})"
|
|
21
|
+
rf"(?:-({_PRERELEASE_ID}(?:\.{_PRERELEASE_ID})*))?"
|
|
22
|
+
r"(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$"
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@total_ordering
|
|
27
|
+
@dataclass(frozen=True, slots=True)
|
|
28
|
+
class SemVer:
|
|
29
|
+
major: int
|
|
30
|
+
minor: int
|
|
31
|
+
patch: int
|
|
32
|
+
prerelease: tuple[int | str, ...] = ()
|
|
33
|
+
build: tuple[str, ...] = ()
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def version(self) -> str:
|
|
37
|
+
v = f"{self.major}.{self.minor}.{self.patch}"
|
|
38
|
+
return v + ("-" + ".".join(str(p) for p in self.prerelease) if self.prerelease else "")
|
|
39
|
+
|
|
40
|
+
def __str__(self) -> str:
|
|
41
|
+
return self.version
|
|
42
|
+
|
|
43
|
+
def compare(self, other: SemVer) -> int:
|
|
44
|
+
return compare(self, other)
|
|
45
|
+
|
|
46
|
+
def __eq__(self, other: object) -> bool:
|
|
47
|
+
return isinstance(other, SemVer) and compare(self, other) == 0
|
|
48
|
+
|
|
49
|
+
def __lt__(self, other: SemVer) -> bool:
|
|
50
|
+
return compare(self, other) < 0
|
|
51
|
+
|
|
52
|
+
def __hash__(self) -> int:
|
|
53
|
+
return hash((self.major, self.minor, self.patch, self.prerelease))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def parse(version: str) -> SemVer | None:
|
|
57
|
+
"""node-semver ``parse(version, { loose: false })``: ``None`` if invalid."""
|
|
58
|
+
if not isinstance(version, str) or len(version) > _MAX_LENGTH:
|
|
59
|
+
return None
|
|
60
|
+
match = _FULL.match(version.strip())
|
|
61
|
+
if not match:
|
|
62
|
+
return None
|
|
63
|
+
major, minor, patch = (int(match.group(i)) for i in (1, 2, 3))
|
|
64
|
+
if max(major, minor, patch) > _MAX_SAFE_INTEGER:
|
|
65
|
+
return None
|
|
66
|
+
prerelease: tuple[int | str, ...] = ()
|
|
67
|
+
if match.group(4):
|
|
68
|
+
prerelease = tuple(
|
|
69
|
+
int(p) if p.isdigit() and int(p) <= _MAX_SAFE_INTEGER else p for p in match.group(4).split(".")
|
|
70
|
+
)
|
|
71
|
+
build = tuple(match.group(5).split(".")) if match.group(5) else ()
|
|
72
|
+
return SemVer(major, minor, patch, prerelease, build)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _cmp(a: int | str, b: int | str) -> int:
|
|
76
|
+
return (a > b) - (a < b) # type: ignore[operator]
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _compare_identifiers(a: int | str, b: int | str) -> int:
|
|
80
|
+
a_num, b_num = isinstance(a, int), isinstance(b, int)
|
|
81
|
+
if a_num and b_num:
|
|
82
|
+
return _cmp(a, b)
|
|
83
|
+
if a_num:
|
|
84
|
+
return -1
|
|
85
|
+
if b_num:
|
|
86
|
+
return 1
|
|
87
|
+
return _cmp(a, b)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def compare(a: SemVer, b: SemVer) -> int:
|
|
91
|
+
"""-1/0/1 by main version then prerelease precedence; build metadata ignored."""
|
|
92
|
+
main = _cmp((a.major, a.minor, a.patch), (b.major, b.minor, b.patch)) # type: ignore[arg-type]
|
|
93
|
+
if main:
|
|
94
|
+
return main
|
|
95
|
+
if a.prerelease and not b.prerelease:
|
|
96
|
+
return -1
|
|
97
|
+
if not a.prerelease and b.prerelease:
|
|
98
|
+
return 1
|
|
99
|
+
for x, y in zip(a.prerelease, b.prerelease, strict=False):
|
|
100
|
+
c = _compare_identifiers(x, y)
|
|
101
|
+
if c:
|
|
102
|
+
return c
|
|
103
|
+
return _cmp(len(a.prerelease), len(b.prerelease))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
ParsedVersion = SemVer
|
|
107
|
+
SpecifierKind = Literal["exact", "tilde", "caret"]
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@dataclass(frozen=True, slots=True)
|
|
111
|
+
class ParsedSpecifier:
|
|
112
|
+
kind: Literal["exact", "tilde", "caret", "unsupported"]
|
|
113
|
+
raw: str
|
|
114
|
+
version: SemVer | None = None
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def parse_version(version: str) -> SemVer | None:
|
|
118
|
+
# npm accepts a leading 'v' or 'V'; node-semver only the lowercase form.
|
|
119
|
+
normalized = re.sub(r"^V", "v", version.strip())
|
|
120
|
+
return parse(normalized)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def parse_specifier(raw: str) -> ParsedSpecifier:
|
|
124
|
+
"""Classify an npm specifier as exact / tilde / caret, or unsupported (file:, git:, tags, ranges)."""
|
|
125
|
+
trimmed = raw.strip()
|
|
126
|
+
kind: SpecifierKind = "exact"
|
|
127
|
+
version_part = trimmed
|
|
128
|
+
if trimmed.startswith("~"):
|
|
129
|
+
kind, version_part = "tilde", trimmed[1:]
|
|
130
|
+
elif trimmed.startswith("^"):
|
|
131
|
+
kind, version_part = "caret", trimmed[1:]
|
|
132
|
+
elif trimmed.startswith("="):
|
|
133
|
+
version_part = trimmed[1:]
|
|
134
|
+
version = parse_version(version_part)
|
|
135
|
+
if version is None:
|
|
136
|
+
return ParsedSpecifier(kind="unsupported", raw=raw)
|
|
137
|
+
return ParsedSpecifier(kind=kind, raw=raw, version=version)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"""Sync a vended CDK project's managed dependencies (port of ``sync.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
from typing import Any, Literal
|
|
8
|
+
|
|
9
|
+
from agentcore.lib.dependency_management.messages import (
|
|
10
|
+
DEFAULT_CLI_INSTALL_COMMAND,
|
|
11
|
+
format_cli_upgrade_error,
|
|
12
|
+
format_skew_warning,
|
|
13
|
+
format_skipped_warning,
|
|
14
|
+
format_sync_notice,
|
|
15
|
+
)
|
|
16
|
+
from agentcore.lib.dependency_management.plan import compute_sync_plan
|
|
17
|
+
from agentcore.lib.dependency_management.types import DependencySyncResult
|
|
18
|
+
from agentcore.lib.errors.types import CliVersionTooOldError, DependencySyncError
|
|
19
|
+
from agentcore.lib.utils.json_format import to_json_string
|
|
20
|
+
from agentcore.lib.utils.subprocess import run_subprocess_capture
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _read_manifest(path: str, description: str) -> tuple[dict[str, Any], str]:
|
|
24
|
+
try:
|
|
25
|
+
with open(path, encoding="utf-8") as fh:
|
|
26
|
+
raw = fh.read()
|
|
27
|
+
except OSError as exc:
|
|
28
|
+
raise DependencySyncError(f"Could not read {description} at {path}: {exc}", cause=exc) from exc
|
|
29
|
+
try:
|
|
30
|
+
return json.loads(raw), raw
|
|
31
|
+
except ValueError as exc:
|
|
32
|
+
raise DependencySyncError(f"Could not parse {description} at {path}: {exc}", cause=exc) from exc
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _write_text(path: str, content: str) -> None:
|
|
36
|
+
with open(path, "w", encoding="utf-8", newline="") as fh:
|
|
37
|
+
fh.write(content)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def sync_managed_dependencies(
|
|
41
|
+
*,
|
|
42
|
+
vended_package_json_path: str,
|
|
43
|
+
project_dir: str,
|
|
44
|
+
disabled: bool = False,
|
|
45
|
+
mode: Literal["apply", "check"] = "apply",
|
|
46
|
+
treat_skew_as_warning: bool = False,
|
|
47
|
+
install_command: str = DEFAULT_CLI_INSTALL_COMMAND,
|
|
48
|
+
) -> DependencySyncResult:
|
|
49
|
+
"""Pin the CDK project's managed dependencies to the versions this CLI release was tested with.
|
|
50
|
+
|
|
51
|
+
The vended package.json is the source of truth; other dependencies are untouched. A managed
|
|
52
|
+
dependency newer than the CLI expects raises ``CliVersionTooOldError`` (a warning when
|
|
53
|
+
``disabled`` / ``treat_skew_as_warning`` / check mode). When anything changed or
|
|
54
|
+
``node_modules`` is missing, ``npm install`` runs; on failure the original package.json is
|
|
55
|
+
restored so a retry recomputes the same plan. ``mode="check"`` never writes or installs.
|
|
56
|
+
"""
|
|
57
|
+
check_only = mode == "check"
|
|
58
|
+
project_package_json = os.path.join(project_dir, "package.json")
|
|
59
|
+
|
|
60
|
+
vended, _ = _read_manifest(vended_package_json_path, "the vended CDK package.json")
|
|
61
|
+
project, project_raw = _read_manifest(project_package_json, "the project's CDK package.json")
|
|
62
|
+
|
|
63
|
+
plan = compute_sync_plan(vended, project)
|
|
64
|
+
|
|
65
|
+
# `disabled` wins over check mode: an opted-out sync never writes.
|
|
66
|
+
outcome = "opted-out" if disabled else "check-only" if check_only else "synced"
|
|
67
|
+
result = DependencySyncResult(
|
|
68
|
+
outcome=outcome,
|
|
69
|
+
opted_out=disabled,
|
|
70
|
+
check_only=check_only,
|
|
71
|
+
migrated_from_caret=plan.migrated_from_caret,
|
|
72
|
+
reinstalled=False,
|
|
73
|
+
skew_warning=False,
|
|
74
|
+
changes=plan.changes,
|
|
75
|
+
restored=plan.restored,
|
|
76
|
+
skipped=plan.skipped,
|
|
77
|
+
warnings=[format_skipped_warning(s) for s in plan.skipped],
|
|
78
|
+
notice=None,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
if plan.skew:
|
|
82
|
+
if not disabled and not treat_skew_as_warning and not check_only:
|
|
83
|
+
raise CliVersionTooOldError(format_cli_upgrade_error(plan.skew, install_command))
|
|
84
|
+
result.skew_warning = True
|
|
85
|
+
result.warnings.append(format_skew_warning(plan.skew, install_command))
|
|
86
|
+
|
|
87
|
+
if disabled:
|
|
88
|
+
return result
|
|
89
|
+
|
|
90
|
+
has_planned_changes = bool(plan.changes or plan.restored)
|
|
91
|
+
|
|
92
|
+
if check_only:
|
|
93
|
+
result.notice = format_sync_notice(
|
|
94
|
+
migrated_from_caret=result.migrated_from_caret,
|
|
95
|
+
changes=result.changes,
|
|
96
|
+
restored=result.restored,
|
|
97
|
+
reinstalled=False,
|
|
98
|
+
applied=False,
|
|
99
|
+
)
|
|
100
|
+
return result
|
|
101
|
+
|
|
102
|
+
if has_planned_changes:
|
|
103
|
+
# Mutate the parsed manifest in place so user key order and unknown fields survive.
|
|
104
|
+
for change in plan.changes:
|
|
105
|
+
project.setdefault(change.section, {})[change.name] = change.to
|
|
106
|
+
for restored in plan.restored:
|
|
107
|
+
project.setdefault(restored.section, {})[restored.name] = restored.to
|
|
108
|
+
try:
|
|
109
|
+
_write_text(project_package_json, to_json_string(project, 2) + "\n")
|
|
110
|
+
except OSError as exc:
|
|
111
|
+
raise DependencySyncError(f"Failed to update the CDK project's dependencies: {exc}", cause=exc) from exc
|
|
112
|
+
|
|
113
|
+
# npm reconciles the edited manifest against the existing lockfile incrementally, so
|
|
114
|
+
# node_modules and the lockfile are never deleted.
|
|
115
|
+
needs_install = has_planned_changes or not os.path.exists(os.path.join(project_dir, "node_modules"))
|
|
116
|
+
if not needs_install:
|
|
117
|
+
return result
|
|
118
|
+
|
|
119
|
+
install = run_subprocess_capture("npm", ["install"], cwd=project_dir)
|
|
120
|
+
if install.code != 0:
|
|
121
|
+
# Restore the pre-rewrite manifest so a retry recomputes the same plan and re-installs,
|
|
122
|
+
# instead of deploying against a stale tree. Best-effort.
|
|
123
|
+
if has_planned_changes:
|
|
124
|
+
try:
|
|
125
|
+
_write_text(project_package_json, project_raw)
|
|
126
|
+
except OSError:
|
|
127
|
+
pass
|
|
128
|
+
raise DependencySyncError(
|
|
129
|
+
f"npm install failed after updating managed dependencies (exit {'null' if install.code is None else install.code}): {install.stderr}"
|
|
130
|
+
)
|
|
131
|
+
result.reinstalled = True
|
|
132
|
+
result.notice = format_sync_notice(
|
|
133
|
+
migrated_from_caret=result.migrated_from_caret,
|
|
134
|
+
changes=result.changes,
|
|
135
|
+
restored=result.restored,
|
|
136
|
+
reinstalled=True,
|
|
137
|
+
applied=True,
|
|
138
|
+
)
|
|
139
|
+
return result
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from typing import Any, Literal
|
|
5
|
+
|
|
6
|
+
DependencySection = Literal["dependencies", "devDependencies"]
|
|
7
|
+
|
|
8
|
+
# A package.json document; unknown fields are preserved verbatim.
|
|
9
|
+
PackageManifest = dict[str, Any]
|
|
10
|
+
|
|
11
|
+
# - synced: apply mode ran; check-only: plan computed, nothing written; opted-out: disabled via
|
|
12
|
+
# global config; skipped: CLI skipped the sync (AGENTCORE_SKIP_INSTALL); failure-suppressed:
|
|
13
|
+
# failure downgraded on a teardown deploy; failed: the sync failed the deploy.
|
|
14
|
+
DependencySyncOutcome = Literal["synced", "check-only", "opted-out", "skipped", "failure-suppressed", "failed"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass(frozen=True, slots=True)
|
|
18
|
+
class DependencyChange:
|
|
19
|
+
name: str
|
|
20
|
+
section: DependencySection
|
|
21
|
+
from_: str
|
|
22
|
+
to: str
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass(frozen=True, slots=True)
|
|
26
|
+
class RestoredDependency:
|
|
27
|
+
name: str
|
|
28
|
+
section: DependencySection
|
|
29
|
+
to: str
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass(frozen=True, slots=True)
|
|
33
|
+
class SkippedDependency:
|
|
34
|
+
name: str
|
|
35
|
+
raw: str
|
|
36
|
+
reason: str
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass(slots=True)
|
|
40
|
+
class DependencySyncResult:
|
|
41
|
+
outcome: DependencySyncOutcome
|
|
42
|
+
# Dependency management disabled via global config: nothing written.
|
|
43
|
+
opted_out: bool
|
|
44
|
+
# mode="check": plan computed, nothing written or installed.
|
|
45
|
+
check_only: bool
|
|
46
|
+
# Project predated pinning (caret ranges on managed deps rewritten).
|
|
47
|
+
migrated_from_caret: bool
|
|
48
|
+
# `npm install` ran (manifest changed, or node_modules was missing).
|
|
49
|
+
reinstalled: bool
|
|
50
|
+
# Newer-than-CLI managed dep found but downgraded to a warning.
|
|
51
|
+
skew_warning: bool
|
|
52
|
+
changes: list[DependencyChange] = field(default_factory=list)
|
|
53
|
+
restored: list[RestoredDependency] = field(default_factory=list)
|
|
54
|
+
skipped: list[SkippedDependency] = field(default_factory=list)
|
|
55
|
+
warnings: list[str] = field(default_factory=list)
|
|
56
|
+
notice: str | None = None
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from agentcore.lib.errors.types import * # noqa: F403
|
|
2
|
+
from agentcore.lib.errors.types import __all__ as _types_all
|
|
3
|
+
from agentcore.lib.errors.validation import format_path, format_validation_errors, format_zod_errors
|
|
4
|
+
|
|
5
|
+
__all__ = [*_types_all, "format_path", "format_validation_errors", "format_zod_errors"]
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
"""Typed error hierarchy (port of ``src/lib/errors/types.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Iterable, Mapping
|
|
6
|
+
from typing import Any, ClassVar, Literal
|
|
7
|
+
|
|
8
|
+
from agentcore.lib.errors.validation import format_validation_errors
|
|
9
|
+
|
|
10
|
+
ErrorSource = Literal["user", "client", "service", "unknown"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class BaseError(Exception):
|
|
14
|
+
"""Root of the CLI error taxonomy.
|
|
15
|
+
|
|
16
|
+
``error_source`` classifies the failure ("user" | "client" | "service" | "unknown");
|
|
17
|
+
each subclass declares a ``default_source`` that callers may override.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
default_source: ClassVar[ErrorSource] = "unknown"
|
|
21
|
+
|
|
22
|
+
def __init__(self, message: str, *, error_source: ErrorSource | None = None, cause: BaseException | None = None):
|
|
23
|
+
super().__init__(message)
|
|
24
|
+
self.message = message
|
|
25
|
+
self.error_source: ErrorSource = error_source or self.default_source
|
|
26
|
+
if cause is not None:
|
|
27
|
+
self.__cause__ = cause
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def name(self) -> str:
|
|
31
|
+
return type(self).__name__
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def cause(self) -> BaseException | None:
|
|
35
|
+
return self.__cause__
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def to_error(err: object) -> BaseException:
|
|
39
|
+
"""Coerce an arbitrary raised value into an exception instance."""
|
|
40
|
+
return err if isinstance(err, BaseException) else Exception(str(err))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _cause_message(cause: object) -> str:
|
|
44
|
+
return str(cause)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# --- User errors ---
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class NoProjectError(BaseError):
|
|
51
|
+
default_source = "user"
|
|
52
|
+
|
|
53
|
+
def __init__(self, message: str | None = None, **kwargs: Any):
|
|
54
|
+
super().__init__(message or 'No agentcore project found. Run "agentcore create" first.', **kwargs)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class AgentAlreadyExistsError(BaseError):
|
|
58
|
+
default_source = "user"
|
|
59
|
+
|
|
60
|
+
def __init__(self, agent_name: str, **kwargs: Any):
|
|
61
|
+
super().__init__(f'An agent named "{agent_name}" already exists in the schema.', **kwargs)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class AccessDeniedError(BaseError):
|
|
65
|
+
default_source = "user"
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class SecretEncryptionError(BaseError):
|
|
69
|
+
"""A secret could not be encrypted before writing to disk (e.g. machine key unavailable)."""
|
|
70
|
+
|
|
71
|
+
default_source = "client"
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class SecretDecryptionError(BaseError):
|
|
75
|
+
"""A stored secret could not be decrypted (missing/changed key or corrupt ciphertext)."""
|
|
76
|
+
|
|
77
|
+
default_source = "user"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class DependencyCheckError(BaseError):
|
|
81
|
+
default_source = "user"
|
|
82
|
+
|
|
83
|
+
def __init__(self, errors: Iterable[str], **kwargs: Any):
|
|
84
|
+
super().__init__("\n".join(errors), **kwargs)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class ResourceNotFoundError(BaseError):
|
|
88
|
+
default_source = "user"
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class JobNotFoundError(BaseError):
|
|
92
|
+
default_source = "user"
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class ValidationError(BaseError):
|
|
96
|
+
default_source = "user"
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class StaleCdkConstructError(BaseError):
|
|
100
|
+
"""CDK synth rejected keys the CLI writes: the project's bundled construct is older than the CLI."""
|
|
101
|
+
|
|
102
|
+
default_source = "user"
|
|
103
|
+
|
|
104
|
+
def __init__(self, rejected_keys: Iterable[str], installed_version: str | None, **kwargs: Any):
|
|
105
|
+
key_list = ", ".join(f'"{k}"' for k in rejected_keys)
|
|
106
|
+
version_part = f" (currently {installed_version})" if installed_version else ""
|
|
107
|
+
super().__init__(
|
|
108
|
+
f"CDK synth rejected {key_list}, which this CLI writes but the project's installed "
|
|
109
|
+
f"@aws/agentcore-cdk{version_part} does not recognize. If you did not hand-edit "
|
|
110
|
+
"agentcore.json, the bundled CDK constructs are likely behind the CLI. Run "
|
|
111
|
+
"`npm update @aws/agentcore-cdk` in agentcore/cdk/, then re-run `agentcore deploy`.",
|
|
112
|
+
**kwargs,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class CliVersionTooOldError(BaseError):
|
|
117
|
+
default_source = "user"
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class DependencySyncError(BaseError):
|
|
121
|
+
default_source = "client"
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class AwsCredentialsError(BaseError):
|
|
125
|
+
"""AWS credentials missing/invalid. Carries a short (interactive) and detailed (CLI) message."""
|
|
126
|
+
|
|
127
|
+
default_source = "user"
|
|
128
|
+
|
|
129
|
+
def __init__(self, short_message: str, detailed_message: str | None = None, **kwargs: Any):
|
|
130
|
+
super().__init__(detailed_message or short_message, **kwargs)
|
|
131
|
+
self.short_message = short_message
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class MissingCredentialsError(BaseError):
|
|
135
|
+
default_source = "user"
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class PackagingError(BaseError):
|
|
139
|
+
default_source = "user"
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class ArtifactSizeError(PackagingError):
|
|
143
|
+
def __init__(self, limit_bytes: int, actual_bytes: int, **kwargs: Any):
|
|
144
|
+
super().__init__(f"Packaged artifact exceeds {limit_bytes} bytes (actual: {actual_bytes}).", **kwargs)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class MissingDependencyError(PackagingError):
|
|
148
|
+
def __init__(self, binary: str, install_hint: str | None = None, **kwargs: Any):
|
|
149
|
+
super().__init__(
|
|
150
|
+
f"{binary} is required. {install_hint}" if install_hint else f"{binary} is required.", **kwargs
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class MissingProjectFileError(PackagingError):
|
|
155
|
+
def __init__(self, file_path: str, **kwargs: Any):
|
|
156
|
+
super().__init__(f"Required project file not found: {file_path}", **kwargs)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class UnsupportedLanguageError(PackagingError):
|
|
160
|
+
def __init__(self, language: str, **kwargs: Any):
|
|
161
|
+
super().__init__(f"{language} packaging is not supported yet.", **kwargs)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
# --- Config errors (user) ---
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class ConfigError(BaseError):
|
|
168
|
+
"""Base class for config-file errors."""
|
|
169
|
+
|
|
170
|
+
default_source = "user"
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class ConfigNotFoundError(ConfigError):
|
|
174
|
+
def __init__(self, file_path: str, file_type: str):
|
|
175
|
+
super().__init__(f"{file_type} config file not found at: {file_path}")
|
|
176
|
+
self.file_path = file_path
|
|
177
|
+
self.file_type = file_type
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class ConfigReadError(ConfigError):
|
|
181
|
+
def __init__(self, file_path: str, cause: object):
|
|
182
|
+
super().__init__(
|
|
183
|
+
f"Failed to read config file at {file_path}: {_cause_message(cause)}",
|
|
184
|
+
cause=cause if isinstance(cause, BaseException) else None,
|
|
185
|
+
)
|
|
186
|
+
self.file_path = file_path
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class ConfigWriteError(ConfigError):
|
|
190
|
+
def __init__(self, file_path: str, cause: object):
|
|
191
|
+
super().__init__(
|
|
192
|
+
f"Failed to write config file at {file_path}: {_cause_message(cause)}",
|
|
193
|
+
cause=cause if isinstance(cause, BaseException) else None,
|
|
194
|
+
)
|
|
195
|
+
self.file_path = file_path
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class ConfigValidationError(ConfigError):
|
|
199
|
+
"""Schema validation failed.
|
|
200
|
+
|
|
201
|
+
``validation_error`` is a ``pydantic.ValidationError`` or a list of pydantic-style issue
|
|
202
|
+
dicts (``{"type", "loc", "msg", ...}``).
|
|
203
|
+
"""
|
|
204
|
+
|
|
205
|
+
def __init__(self, file_path: str, file_type: str, validation_error: Any):
|
|
206
|
+
issues = _issues_of(validation_error)
|
|
207
|
+
super().__init__(f"{file_path}:\n{format_validation_errors(issues)}")
|
|
208
|
+
self.file_path = file_path
|
|
209
|
+
self.file_type = file_type
|
|
210
|
+
self.validation_error = validation_error
|
|
211
|
+
self.issues = issues
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _issues_of(validation_error: Any) -> list[Mapping[str, Any]]:
|
|
215
|
+
errors = getattr(validation_error, "errors", None)
|
|
216
|
+
if callable(errors):
|
|
217
|
+
return list(errors())
|
|
218
|
+
return list(validation_error or [])
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class ConfigParseError(ConfigError):
|
|
222
|
+
def __init__(self, file_path: str, cause: object):
|
|
223
|
+
super().__init__(
|
|
224
|
+
f"Failed to parse JSON in config file at {file_path}: {_cause_message(cause)}",
|
|
225
|
+
cause=cause if isinstance(cause, BaseException) else None,
|
|
226
|
+
)
|
|
227
|
+
self.file_path = file_path
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
class GitInitError(BaseError):
|
|
231
|
+
default_source = "client"
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
# --- Service errors ---
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class ConflictError(BaseError):
|
|
238
|
+
default_source = "user"
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
class TimeoutError(BaseError): # noqa: A001 - mirrors the upstream class name
|
|
242
|
+
default_source = "service"
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
class DevServerError(BaseError):
|
|
246
|
+
default_source = "client"
|
|
247
|
+
|
|
248
|
+
def __init__(self, status_code: int, body: str, **kwargs: Any):
|
|
249
|
+
super().__init__(body or f"Server returned {status_code}", **kwargs)
|
|
250
|
+
self.status_code = status_code
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
class DevServerConnectionError(BaseError):
|
|
254
|
+
default_source = "client"
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class ServiceError(BaseError):
|
|
258
|
+
default_source = "service"
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class ThrottlingError(BaseError):
|
|
262
|
+
default_source = "service"
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class ServiceQuotaError(BaseError):
|
|
266
|
+
default_source = "service"
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
class PollTimeoutError(BaseError):
|
|
270
|
+
default_source = "service"
|
|
271
|
+
|
|
272
|
+
def __init__(self, timeout_ms: float, **kwargs: Any):
|
|
273
|
+
super().__init__(f"Polling timed out after {_fmt_num(timeout_ms)}ms", **kwargs)
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
class PollExhaustedError(BaseError):
|
|
277
|
+
default_source = "service"
|
|
278
|
+
|
|
279
|
+
def __init__(self, max_attempts: int, **kwargs: Any):
|
|
280
|
+
super().__init__(f"Polling exhausted after {max_attempts} attempts", **kwargs)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class IngestionError(BaseError):
|
|
284
|
+
default_source = "service"
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class ShellKickedError(BaseError):
|
|
288
|
+
default_source = "service"
|
|
289
|
+
|
|
290
|
+
def __init__(self, **kwargs: Any):
|
|
291
|
+
super().__init__("Shell session was taken over by another client (close code 4000)", **kwargs)
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
class UserCancellationError(BaseError):
|
|
295
|
+
default_source = "user"
|
|
296
|
+
|
|
297
|
+
def __init__(self, **kwargs: Any):
|
|
298
|
+
super().__init__("User cancelled", **kwargs)
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
class ExportHarnessError(BaseError):
|
|
302
|
+
default_source = "client"
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
def _fmt_num(value: float) -> str:
|
|
306
|
+
return str(int(value)) if float(value).is_integer() else str(value)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
__all__ = [
|
|
310
|
+
"AccessDeniedError",
|
|
311
|
+
"AgentAlreadyExistsError",
|
|
312
|
+
"ArtifactSizeError",
|
|
313
|
+
"AwsCredentialsError",
|
|
314
|
+
"BaseError",
|
|
315
|
+
"CliVersionTooOldError",
|
|
316
|
+
"ConfigError",
|
|
317
|
+
"ConfigNotFoundError",
|
|
318
|
+
"ConfigParseError",
|
|
319
|
+
"ConfigReadError",
|
|
320
|
+
"ConfigValidationError",
|
|
321
|
+
"ConfigWriteError",
|
|
322
|
+
"ConflictError",
|
|
323
|
+
"DependencyCheckError",
|
|
324
|
+
"DependencySyncError",
|
|
325
|
+
"DevServerConnectionError",
|
|
326
|
+
"DevServerError",
|
|
327
|
+
"ErrorSource",
|
|
328
|
+
"ExportHarnessError",
|
|
329
|
+
"GitInitError",
|
|
330
|
+
"IngestionError",
|
|
331
|
+
"JobNotFoundError",
|
|
332
|
+
"MissingCredentialsError",
|
|
333
|
+
"MissingDependencyError",
|
|
334
|
+
"MissingProjectFileError",
|
|
335
|
+
"NoProjectError",
|
|
336
|
+
"PackagingError",
|
|
337
|
+
"PollExhaustedError",
|
|
338
|
+
"PollTimeoutError",
|
|
339
|
+
"ResourceNotFoundError",
|
|
340
|
+
"SecretDecryptionError",
|
|
341
|
+
"SecretEncryptionError",
|
|
342
|
+
"ServiceError",
|
|
343
|
+
"ServiceQuotaError",
|
|
344
|
+
"ShellKickedError",
|
|
345
|
+
"StaleCdkConstructError",
|
|
346
|
+
"ThrottlingError",
|
|
347
|
+
"TimeoutError",
|
|
348
|
+
"UnsupportedLanguageError",
|
|
349
|
+
"UserCancellationError",
|
|
350
|
+
"ValidationError",
|
|
351
|
+
"to_error",
|
|
352
|
+
]
|