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,164 @@
|
|
|
1
|
+
"""JavaScript value semantics needed to render Handlebars templates exactly like upstream.
|
|
2
|
+
|
|
3
|
+
Template data is plain Python (dict / list / str / int / float / bool / None). ``None`` stands for
|
|
4
|
+
JavaScript ``undefined`` (unset optional fields are omitted from the data), except inside containers
|
|
5
|
+
passed to ``JSON.stringify`` where it serializes as ``null``.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import math
|
|
12
|
+
import re
|
|
13
|
+
from collections.abc import Mapping
|
|
14
|
+
from decimal import Decimal
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
# Characters matched by JavaScript `\s`.
|
|
18
|
+
_JS_WHITESPACE_CODEPOINTS = (
|
|
19
|
+
0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x20, 0xA0, 0x1680, *range(0x2000, 0x200B),
|
|
20
|
+
0x2028, 0x2029, 0x202F, 0x205F, 0x3000, 0xFEFF,
|
|
21
|
+
) # fmt: skip
|
|
22
|
+
JS_WHITESPACE = "".join(map(chr, _JS_WHITESPACE_CODEPOINTS))
|
|
23
|
+
JS_WS = "[" + re.escape(JS_WHITESPACE) + "]"
|
|
24
|
+
|
|
25
|
+
_ARRAY_INDEX_RE = re.compile(r"0|[1-9][0-9]*")
|
|
26
|
+
_MAX_ARRAY_INDEX = 2**32 - 2
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def is_number(value: object) -> bool:
|
|
30
|
+
return isinstance(value, (int, float)) and not isinstance(value, bool)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def js_truthy(value: object) -> bool:
|
|
34
|
+
"""``Boolean(value)``: empty containers are truthy, ``0``/``NaN``/``""``/null/undefined are not."""
|
|
35
|
+
if value is None or value is False:
|
|
36
|
+
return False
|
|
37
|
+
if is_number(value):
|
|
38
|
+
return not (value == 0 or (isinstance(value, float) and math.isnan(value)))
|
|
39
|
+
if isinstance(value, str):
|
|
40
|
+
return value != ""
|
|
41
|
+
return True
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def hb_is_empty(value: object) -> bool:
|
|
45
|
+
"""Handlebars ``Utils.isEmpty``: falsy (except 0) or an empty array."""
|
|
46
|
+
if not js_truthy(value) and not (is_number(value) and value == 0):
|
|
47
|
+
return True
|
|
48
|
+
return isinstance(value, (list, tuple)) and len(value) == 0
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def _js_type(value: object) -> str:
|
|
52
|
+
if value is None:
|
|
53
|
+
return "undefined"
|
|
54
|
+
if isinstance(value, bool):
|
|
55
|
+
return "boolean"
|
|
56
|
+
if is_number(value):
|
|
57
|
+
return "number"
|
|
58
|
+
if isinstance(value, str):
|
|
59
|
+
return "string"
|
|
60
|
+
return "object"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def js_strict_equals(a: object, b: object) -> bool:
|
|
64
|
+
"""``a === b``."""
|
|
65
|
+
kind = _js_type(a)
|
|
66
|
+
if kind != _js_type(b):
|
|
67
|
+
return False
|
|
68
|
+
if kind == "object":
|
|
69
|
+
return a is b
|
|
70
|
+
return a == b # NaN != NaN, matching JS.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def js_same_value_zero(a: object, b: object) -> bool:
|
|
74
|
+
"""SameValueZero, as used by ``Array.prototype.includes``."""
|
|
75
|
+
if is_number(a) and is_number(b) and math.isnan(a) and math.isnan(b): # type: ignore[arg-type]
|
|
76
|
+
return True
|
|
77
|
+
return js_strict_equals(a, b)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def js_number_to_string(value: float) -> str:
|
|
81
|
+
"""``Number.prototype.toString()`` (ECMAScript Number::toString with radix 10)."""
|
|
82
|
+
if isinstance(value, int):
|
|
83
|
+
if abs(value) < 2**53:
|
|
84
|
+
return str(value)
|
|
85
|
+
value = float(value)
|
|
86
|
+
if math.isnan(value):
|
|
87
|
+
return "NaN"
|
|
88
|
+
if math.isinf(value):
|
|
89
|
+
return "Infinity" if value > 0 else "-Infinity"
|
|
90
|
+
if value == 0:
|
|
91
|
+
return "0"
|
|
92
|
+
sign = "-" if value < 0 else ""
|
|
93
|
+
# repr() yields the shortest round-tripping digits, the same digits JavaScript picks.
|
|
94
|
+
_, digit_tuple, exponent = Decimal(repr(abs(value))).as_tuple()
|
|
95
|
+
digits = "".join(map(str, digit_tuple)).rstrip("0")
|
|
96
|
+
assert isinstance(exponent, int)
|
|
97
|
+
exponent += len("".join(map(str, digit_tuple))) - len(digits)
|
|
98
|
+
k = len(digits)
|
|
99
|
+
n = k + exponent # value = 0.digits * 10**n
|
|
100
|
+
if k <= n <= 21:
|
|
101
|
+
body = digits + "0" * (n - k)
|
|
102
|
+
elif 0 < n <= 21:
|
|
103
|
+
body = digits[:n] + "." + digits[n:]
|
|
104
|
+
elif -6 < n <= 0:
|
|
105
|
+
body = "0." + "0" * (-n) + digits
|
|
106
|
+
else:
|
|
107
|
+
e = n - 1
|
|
108
|
+
exp = f"e{'+' if e >= 0 else '-'}{abs(e)}"
|
|
109
|
+
body = digits + exp if k == 1 else digits[0] + "." + digits[1:] + exp
|
|
110
|
+
return sign + body
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def js_to_string(value: object) -> str:
|
|
114
|
+
"""``String(value)`` for template data."""
|
|
115
|
+
if value is None:
|
|
116
|
+
return "undefined"
|
|
117
|
+
if isinstance(value, bool):
|
|
118
|
+
return "true" if value else "false"
|
|
119
|
+
if is_number(value):
|
|
120
|
+
return js_number_to_string(value) # type: ignore[arg-type]
|
|
121
|
+
if isinstance(value, str):
|
|
122
|
+
return value
|
|
123
|
+
if isinstance(value, (list, tuple)):
|
|
124
|
+
return ",".join("" if item is None else js_to_string(item) for item in value)
|
|
125
|
+
return "[object Object]"
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def js_object_keys(obj: Mapping[Any, Any]) -> list[str]:
|
|
129
|
+
"""``Object.keys`` order: array-index keys ascending, then string keys in insertion order."""
|
|
130
|
+
keys = [k if isinstance(k, str) else js_to_string(k) for k in obj]
|
|
131
|
+
index_keys = sorted((k for k in keys if _ARRAY_INDEX_RE.fullmatch(k) and int(k) <= _MAX_ARRAY_INDEX), key=int)
|
|
132
|
+
index_set = set(index_keys)
|
|
133
|
+
return index_keys + [k for k in keys if k not in index_set]
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _json_value(value: object) -> str:
|
|
137
|
+
if value is None:
|
|
138
|
+
return "null"
|
|
139
|
+
if isinstance(value, bool):
|
|
140
|
+
return "true" if value else "false"
|
|
141
|
+
if is_number(value):
|
|
142
|
+
if isinstance(value, float) and not math.isfinite(value):
|
|
143
|
+
return "null"
|
|
144
|
+
return js_number_to_string(value) # type: ignore[arg-type]
|
|
145
|
+
if isinstance(value, str):
|
|
146
|
+
# Python's escaping with ensure_ascii=False matches JSON.stringify (\b\f\n\r\t, \u00xx).
|
|
147
|
+
return json.dumps(value, ensure_ascii=False)
|
|
148
|
+
if isinstance(value, (list, tuple)):
|
|
149
|
+
return "[" + ",".join(_json_value(item) for item in value) + "]"
|
|
150
|
+
if isinstance(value, Mapping):
|
|
151
|
+
lookup = {(k if isinstance(k, str) else js_to_string(k)): v for k, v in value.items()}
|
|
152
|
+
return "{" + ",".join(f"{_json_value(k)}:{_json_value(lookup[k])}" for k in js_object_keys(value)) + "}"
|
|
153
|
+
raise TypeError(f"Cannot JSON.stringify value of type {type(value).__name__}")
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def json_stringify(value: object) -> str | None:
|
|
157
|
+
"""``JSON.stringify(value)`` (compact). Returns None for undefined (top-level ``None``)."""
|
|
158
|
+
if value is None:
|
|
159
|
+
return None
|
|
160
|
+
return _json_value(value)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def utf16_len(char: str) -> int:
|
|
164
|
+
return 2 if ord(char) > 0xFFFF else 1
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""Base class of the agent template renderers (port of ``BaseRenderer.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from importlib.resources.abc import Traversable
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from agentcore.lib import APP_DIR
|
|
11
|
+
from agentcore.templates.render import copy_and_render_dir
|
|
12
|
+
from agentcore.templates.types import AgentRenderConfig
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclass(frozen=True)
|
|
16
|
+
class RendererContext:
|
|
17
|
+
output_dir: str
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BaseRenderer:
|
|
21
|
+
def __init__(
|
|
22
|
+
self,
|
|
23
|
+
config: AgentRenderConfig,
|
|
24
|
+
sdk_name: str,
|
|
25
|
+
base_template_dir: Traversable,
|
|
26
|
+
protocol_mode: str | None = None,
|
|
27
|
+
) -> None:
|
|
28
|
+
self.config = config
|
|
29
|
+
self.sdk_name = sdk_name
|
|
30
|
+
self.base_template_dir = base_template_dir
|
|
31
|
+
self.protocol_mode = (protocol_mode or config.protocol or "HTTP").lower()
|
|
32
|
+
|
|
33
|
+
def should_render_memory(self) -> bool:
|
|
34
|
+
return self.config.has_memory
|
|
35
|
+
|
|
36
|
+
def should_render_payment(self) -> bool:
|
|
37
|
+
return self.config.has_payment
|
|
38
|
+
|
|
39
|
+
def should_render_execution_limits(self) -> bool:
|
|
40
|
+
# Upstream: !!(maxIterations ?? maxTokens ?? timeoutSeconds) -- the first non-null value decides.
|
|
41
|
+
first = next(
|
|
42
|
+
(
|
|
43
|
+
v
|
|
44
|
+
for v in (self.config.max_iterations, self.config.max_tokens, self.config.timeout_seconds)
|
|
45
|
+
if v is not None
|
|
46
|
+
),
|
|
47
|
+
None,
|
|
48
|
+
)
|
|
49
|
+
return bool(first)
|
|
50
|
+
|
|
51
|
+
def get_template_dir(self) -> Traversable:
|
|
52
|
+
language = self.config.target_language.lower()
|
|
53
|
+
return self.base_template_dir / language / self.protocol_mode / self.sdk_name
|
|
54
|
+
|
|
55
|
+
def template_data(self, context: RendererContext) -> dict[str, Any]:
|
|
56
|
+
return {
|
|
57
|
+
**self.config.to_template_data(),
|
|
58
|
+
"outputDir": context.output_dir,
|
|
59
|
+
"projectName": self.config.name,
|
|
60
|
+
"Name": self.config.name,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
def render(self, context: RendererContext) -> None:
|
|
64
|
+
template_dir = self.get_template_dir()
|
|
65
|
+
# Agents are placed in app/<agentName>/.
|
|
66
|
+
project_dir = Path(context.output_dir) / APP_DIR / self.config.name
|
|
67
|
+
data = self.template_data(context)
|
|
68
|
+
|
|
69
|
+
copy_and_render_dir(template_dir / "base", project_dir, data)
|
|
70
|
+
|
|
71
|
+
# Capability templates render only when the SDK ships them.
|
|
72
|
+
if self.should_render_memory():
|
|
73
|
+
memory_dir = template_dir / "capabilities" / "memory"
|
|
74
|
+
if memory_dir.is_dir():
|
|
75
|
+
copy_and_render_dir(memory_dir, project_dir / "memory", data)
|
|
76
|
+
|
|
77
|
+
if self.should_render_payment():
|
|
78
|
+
payments_dir = template_dir / "capabilities" / "payments"
|
|
79
|
+
if payments_dir.is_dir():
|
|
80
|
+
capabilities_dir = project_dir / "capabilities"
|
|
81
|
+
capabilities_dir.mkdir(parents=True, exist_ok=True)
|
|
82
|
+
init_path = capabilities_dir / "__init__.py"
|
|
83
|
+
if not init_path.exists():
|
|
84
|
+
init_path.write_text("")
|
|
85
|
+
copy_and_render_dir(payments_dir, capabilities_dir / "payments", data)
|
|
86
|
+
|
|
87
|
+
if self.should_render_execution_limits():
|
|
88
|
+
limits_dir = template_dir / "capabilities" / "execution-limits"
|
|
89
|
+
if limits_dir.is_dir():
|
|
90
|
+
copy_and_render_dir(limits_dir, project_dir, data)
|
|
91
|
+
|
|
92
|
+
# Container builds get a Dockerfile and .dockerignore.
|
|
93
|
+
if self.config.build_type == "Container":
|
|
94
|
+
language = self.config.target_language.lower()
|
|
95
|
+
container_dir = self.base_template_dir / "container" / language
|
|
96
|
+
if container_dir.is_dir():
|
|
97
|
+
exclude = {"Dockerfile"} if self.config.dockerfile else None
|
|
98
|
+
enable_otel = self.config.enable_otel if self.config.enable_otel is not None else True
|
|
99
|
+
copy_and_render_dir(
|
|
100
|
+
container_dir,
|
|
101
|
+
project_dir,
|
|
102
|
+
{**data, "entrypoint": "main", "enableOtel": enable_otel},
|
|
103
|
+
exclude=exclude,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
__all__ = ["BaseRenderer", "RendererContext"]
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"""Vends the CDK project into a new AgentCore project (port of ``CDKRenderer.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
import time
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Protocol
|
|
10
|
+
|
|
11
|
+
from agentcore.cdk.constants import CDK_PROJECT_DIR
|
|
12
|
+
from agentcore.lib import CONFIG_DIR, run_subprocess_capture
|
|
13
|
+
from agentcore.templates.render import copy_dir
|
|
14
|
+
from agentcore.templates.schema_assets import LLM_CONTEXT_FILES
|
|
15
|
+
from agentcore.templates.template_root import get_template_path
|
|
16
|
+
|
|
17
|
+
LLM_CONTEXT_DIR = ".llm-context"
|
|
18
|
+
BUNDLED_CDK_TARBALL = "bundled-agentcore-cdk.tgz"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class CreateLogger(Protocol):
|
|
22
|
+
"""The progress-logging subset of upstream's ``CreateLogger`` used here."""
|
|
23
|
+
|
|
24
|
+
def log_sub_step(self, message: str) -> None: ...
|
|
25
|
+
|
|
26
|
+
def log_command(self, command: str, args: list[str]) -> None: ...
|
|
27
|
+
|
|
28
|
+
def log_command_output(self, output: str) -> None: ...
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class CDKRendererContext:
|
|
33
|
+
# The project root; the CDK project is created at <project_root>/agentcore/cdk/.
|
|
34
|
+
project_root: str | os.PathLike[str]
|
|
35
|
+
logger: CreateLogger | None = None
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class CDKRenderer:
|
|
39
|
+
"""Creates ``<project_root>/agentcore/cdk/`` and writes AGENTS.md, README.md and ``.llm-context/``."""
|
|
40
|
+
|
|
41
|
+
def __init__(self) -> None:
|
|
42
|
+
self.template_dir = get_template_path("cdk")
|
|
43
|
+
self.agents_template_dir = get_template_path("agents")
|
|
44
|
+
self.assets_dir = get_template_path()
|
|
45
|
+
|
|
46
|
+
def render(self, context: CDKRendererContext) -> Path:
|
|
47
|
+
logger = context.logger
|
|
48
|
+
project_root = Path(context.project_root)
|
|
49
|
+
config_dir = project_root / CONFIG_DIR
|
|
50
|
+
output_dir = config_dir / CDK_PROJECT_DIR
|
|
51
|
+
|
|
52
|
+
_sub_step(logger, "Copying CDK project template...")
|
|
53
|
+
copy_dir(self.template_dir, output_dir)
|
|
54
|
+
_sub_step(logger, "CDK template copied")
|
|
55
|
+
|
|
56
|
+
_sub_step(logger, "Copying AGENTS.md template...")
|
|
57
|
+
(project_root / "AGENTS.md").write_bytes((self.agents_template_dir / "AGENTS.md").read_bytes())
|
|
58
|
+
_sub_step(logger, "AGENTS.md copied")
|
|
59
|
+
|
|
60
|
+
_sub_step(logger, "Copying README.md template...")
|
|
61
|
+
(project_root / "README.md").write_bytes((self.assets_dir / "README.md").read_bytes())
|
|
62
|
+
_sub_step(logger, "README.md copied")
|
|
63
|
+
|
|
64
|
+
_sub_step(logger, "Writing LLM context files...")
|
|
65
|
+
self._write_llm_context(config_dir)
|
|
66
|
+
_sub_step(logger, "LLM context files written")
|
|
67
|
+
|
|
68
|
+
# Skip slow npm operations in test mode.
|
|
69
|
+
if os.environ.get("AGENTCORE_SKIP_INSTALL"):
|
|
70
|
+
return output_dir
|
|
71
|
+
|
|
72
|
+
_sub_step(logger, "Running npm install (this may take a while)...")
|
|
73
|
+
started = time.monotonic()
|
|
74
|
+
self._run_npm(output_dir, ["install"], logger, "npm install failed with code {code}: {stderr}")
|
|
75
|
+
_sub_step(logger, f"npm install completed ({time.monotonic() - started:.1f}s)")
|
|
76
|
+
|
|
77
|
+
# A CLI built with a bundled CDK constructs tarball overrides the registry version.
|
|
78
|
+
self._install_bundled_cdk_if_present(output_dir, logger)
|
|
79
|
+
|
|
80
|
+
_sub_step(logger, "Running npm run format...")
|
|
81
|
+
self._run_npm(output_dir, ["run", "format"], logger, "npm run format failed with code {code}: {stderr}")
|
|
82
|
+
_sub_step(logger, "Formatting completed")
|
|
83
|
+
|
|
84
|
+
return output_dir
|
|
85
|
+
|
|
86
|
+
@staticmethod
|
|
87
|
+
def _run_npm(cwd: Path, args: list[str], logger: CreateLogger | None, error: str, log_command: bool = True) -> None:
|
|
88
|
+
if logger and log_command:
|
|
89
|
+
logger.log_command("npm", args)
|
|
90
|
+
result = run_subprocess_capture("npm", args, cwd=cwd)
|
|
91
|
+
if logger:
|
|
92
|
+
if result.stdout:
|
|
93
|
+
logger.log_command_output(result.stdout)
|
|
94
|
+
if result.stderr:
|
|
95
|
+
logger.log_command_output(result.stderr)
|
|
96
|
+
if result.code != 0:
|
|
97
|
+
raise RuntimeError(error.format(code=result.code, stderr=result.stderr))
|
|
98
|
+
|
|
99
|
+
def _install_bundled_cdk_if_present(self, cdk_project_dir: Path, logger: CreateLogger | None) -> None:
|
|
100
|
+
bundled = self.assets_dir / BUNDLED_CDK_TARBALL
|
|
101
|
+
if not bundled.is_file():
|
|
102
|
+
return
|
|
103
|
+
# Copied into the project so the file: reference in package.json stays valid for later installs.
|
|
104
|
+
(cdk_project_dir / BUNDLED_CDK_TARBALL).write_bytes(bundled.read_bytes())
|
|
105
|
+
_sub_step(logger, "Installing bundled @aws/agentcore-cdk override...")
|
|
106
|
+
self._run_npm(
|
|
107
|
+
cdk_project_dir,
|
|
108
|
+
["install", f"./{BUNDLED_CDK_TARBALL}"],
|
|
109
|
+
logger,
|
|
110
|
+
"Failed to install bundled @aws/agentcore-cdk: {stderr}",
|
|
111
|
+
log_command=False,
|
|
112
|
+
)
|
|
113
|
+
_sub_step(logger, "Bundled @aws/agentcore-cdk installed")
|
|
114
|
+
|
|
115
|
+
@staticmethod
|
|
116
|
+
def _write_llm_context(config_dir: Path) -> None:
|
|
117
|
+
llm_context_dir = config_dir / LLM_CONTEXT_DIR
|
|
118
|
+
llm_context_dir.mkdir(parents=True, exist_ok=True)
|
|
119
|
+
for filename, content in LLM_CONTEXT_FILES.items():
|
|
120
|
+
with open(llm_context_dir / filename, "w", encoding="utf-8", newline="") as fh:
|
|
121
|
+
fh.write(content)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def _sub_step(logger: CreateLogger | None, message: str) -> None:
|
|
125
|
+
if logger:
|
|
126
|
+
logger.log_sub_step(message)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
__all__ = ["LLM_CONTEXT_DIR", "CDKRenderer", "CDKRendererContext", "CreateLogger"]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Evaluator project templates (port of ``EvaluatorRenderer.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from typing import Any, TypedDict
|
|
7
|
+
|
|
8
|
+
from agentcore.templates.render import copy_and_render_dir
|
|
9
|
+
from agentcore.templates.template_root import get_template_path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def render_code_based_evaluator_template(evaluator_name: str, output_dir: str | os.PathLike[str]) -> None:
|
|
13
|
+
"""Render the code-based (Lambda) evaluator template; ``{{ Name }}`` is the evaluator name."""
|
|
14
|
+
copy_and_render_dir(get_template_path("evaluators", "python-lambda"), output_dir, {"Name": evaluator_name})
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ThirdPartyEvaluatorTemplateData(TypedDict, total=False):
|
|
18
|
+
Name: str
|
|
19
|
+
EvaluatorClass: str
|
|
20
|
+
EvaluatorParams: str
|
|
21
|
+
# True when the LLM judge runs on Bedrock instead of the library's default (OpenAI).
|
|
22
|
+
ModelProviderBedrock: bool
|
|
23
|
+
# Bedrock model ID (required when ModelProviderBedrock is true).
|
|
24
|
+
Model: str
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def render_third_party_evaluator_template(
|
|
28
|
+
template_dir_name: str,
|
|
29
|
+
data: ThirdPartyEvaluatorTemplateData | dict[str, Any],
|
|
30
|
+
output_dir: str | os.PathLike[str],
|
|
31
|
+
) -> None:
|
|
32
|
+
copy_and_render_dir(get_template_path("evaluators", template_dir_name), output_dir, dict(data))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
__all__ = [
|
|
36
|
+
"ThirdPartyEvaluatorTemplateData",
|
|
37
|
+
"render_code_based_evaluator_template",
|
|
38
|
+
"render_third_party_evaluator_template",
|
|
39
|
+
]
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Gateway target (MCP tool) project templates (port of ``GatewayTargetRenderer.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from typing import Literal
|
|
7
|
+
|
|
8
|
+
from agentcore.schema import ToolDefinition
|
|
9
|
+
from agentcore.templates.render import copy_and_render_dir
|
|
10
|
+
from agentcore.templates.template_root import get_template_path
|
|
11
|
+
|
|
12
|
+
ComputeHost = Literal["Lambda", "AgentCoreRuntime"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _tool(name: str, description: str, input_schema: dict[str, object]) -> ToolDefinition:
|
|
16
|
+
return ToolDefinition.model_validate({"name": name, "description": description, "inputSchema": input_schema})
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# Tools of the Lambda template, each with a complete inputSchema for gateway integration.
|
|
20
|
+
LAMBDA_TEMPLATE_TOOLS: tuple[ToolDefinition, ...] = (
|
|
21
|
+
_tool(
|
|
22
|
+
"lookup_ip",
|
|
23
|
+
"Look up geolocation and network info for an IP address",
|
|
24
|
+
{
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {"ip_address": {"type": "string", "description": "IPv4 or IPv6 address to look up"}},
|
|
27
|
+
"required": ["ip_address"],
|
|
28
|
+
},
|
|
29
|
+
),
|
|
30
|
+
_tool("get_random_user", "Generate a random user profile for testing or mock data", {"type": "object"}),
|
|
31
|
+
_tool(
|
|
32
|
+
"fetch_post",
|
|
33
|
+
"Fetch a post by ID from JSONPlaceholder API",
|
|
34
|
+
{
|
|
35
|
+
"type": "object",
|
|
36
|
+
"properties": {"post_id": {"type": "integer", "description": "The post ID (1-100)"}},
|
|
37
|
+
"required": ["post_id"],
|
|
38
|
+
},
|
|
39
|
+
),
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get_template_tool_definitions(tool_name: str, host: ComputeHost) -> list[ToolDefinition]:
|
|
44
|
+
"""Tool definitions for a template: the Lambda tools prefixed with ``tool_name``, or one generic tool."""
|
|
45
|
+
if host == "Lambda":
|
|
46
|
+
# The prefix avoids conflicts when several Lambda tools are added to the same project.
|
|
47
|
+
return [tool.model_copy(update={"name": f"{tool_name}_{tool.name}"}) for tool in LAMBDA_TEMPLATE_TOOLS]
|
|
48
|
+
return [_tool(tool_name, f"Tool for {tool_name}", {"type": "object"})]
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def render_gateway_target_template(
|
|
52
|
+
tool_name: str,
|
|
53
|
+
output_dir: str | os.PathLike[str],
|
|
54
|
+
language: str,
|
|
55
|
+
host: ComputeHost = "AgentCoreRuntime",
|
|
56
|
+
) -> None:
|
|
57
|
+
"""Render a gateway target project; ``{{ Name }}`` is the tool name. Only Python is supported."""
|
|
58
|
+
if language != "Python":
|
|
59
|
+
raise ValueError(f"Gateway target templates for {language} are not yet supported.")
|
|
60
|
+
template_subdir = "python-lambda" if host == "Lambda" else "python"
|
|
61
|
+
copy_and_render_dir(get_template_path("mcp", template_subdir), output_dir, {"Name": tool_name})
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
__all__ = [
|
|
65
|
+
"LAMBDA_TEMPLATE_TOOLS",
|
|
66
|
+
"ComputeHost",
|
|
67
|
+
"get_template_tool_definitions",
|
|
68
|
+
"render_gateway_target_template",
|
|
69
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# LLM Context Files
|
|
2
|
+
|
|
3
|
+
**DO NOT EDIT THESE FILES** - They are read-only reference for AI coding assistants.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| File | JSON Config | Purpose |
|
|
8
|
+
| ---------------- | ------------------ | ------------------------------------- |
|
|
9
|
+
| `agentcore.ts` | `agentcore.json` | Project resources, including gateways |
|
|
10
|
+
| `aws-targets.ts` | `aws-targets.json` | Deployment targets (account + region) |
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
When editing AgentCore JSON config files, reference the corresponding `.ts` file here for type definitions, exact enum
|
|
15
|
+
values, defaults, and validation constraints (marked with `@regex`, `@min`, and `@max`). Run `agentcore validate` after
|
|
16
|
+
making changes.
|