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,59 @@
|
|
|
1
|
+
"""Hydrate KB data-source ids after deploy (port of ``operations/knowledge-base/hydrate-data-sources.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import hashlib
|
|
6
|
+
import re
|
|
7
|
+
from collections.abc import Mapping, Sequence
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from agentcore.aws import bedrock_agent
|
|
11
|
+
|
|
12
|
+
_DS_SUFFIX = re.compile(r"_ds_([0-9a-f]+)$")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def uri_hash_prefix(uri: str) -> str:
|
|
16
|
+
"""First 8 hex chars of SHA-256(uri) — must stay byte-equivalent to the L3's DS naming."""
|
|
17
|
+
return hashlib.sha256(uri.encode("utf-8")).hexdigest()[:8]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _get(obj: Any, camel: str, snake: str) -> Any:
|
|
21
|
+
return obj.get(camel) if isinstance(obj, Mapping) else getattr(obj, snake, None)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def hydrate_knowledge_base_data_sources(
|
|
25
|
+
*, knowledge_bases: Mapping[str, dict[str, Any]], knowledge_base_specs: Sequence[Any], region: str
|
|
26
|
+
) -> None:
|
|
27
|
+
"""Fill ``dataSources`` (in place) for KB records whose CFN outputs carried none.
|
|
28
|
+
|
|
29
|
+
Falls back to ``ListDataSources`` and pairs each deployed DS with its local spec by the URI-hash
|
|
30
|
+
suffix the L3 puts in every data source name.
|
|
31
|
+
"""
|
|
32
|
+
specs_by_name = {_get(s, "name", "name"): s for s in knowledge_base_specs}
|
|
33
|
+
for name, deployed in knowledge_bases.items():
|
|
34
|
+
if deployed.get("dataSources"):
|
|
35
|
+
continue
|
|
36
|
+
spec = specs_by_name.get(name)
|
|
37
|
+
if spec is None:
|
|
38
|
+
continue
|
|
39
|
+
summaries = bedrock_agent.list_data_sources(region=region, knowledge_base_id=deployed["knowledgeBaseId"])
|
|
40
|
+
id_by_hash: dict[str, str] = {}
|
|
41
|
+
for summary in summaries:
|
|
42
|
+
ds_id, ds_name = summary.get("dataSourceId"), summary.get("name")
|
|
43
|
+
if not ds_id or not ds_name:
|
|
44
|
+
continue
|
|
45
|
+
match = _DS_SUFFIX.search(ds_name)
|
|
46
|
+
if match:
|
|
47
|
+
id_by_hash[match.group(1)] = ds_id
|
|
48
|
+
hydrated = []
|
|
49
|
+
for local_ds in _get(spec, "dataSources", "data_sources") or []:
|
|
50
|
+
if _get(local_ds, "type", "type") != "S3":
|
|
51
|
+
continue
|
|
52
|
+
uri = _get(local_ds, "uri", "uri")
|
|
53
|
+
ds_id = id_by_hash.get(uri_hash_prefix(uri))
|
|
54
|
+
if ds_id:
|
|
55
|
+
hydrated.append({"dataSourceId": ds_id, "uri": uri})
|
|
56
|
+
deployed["dataSources"] = hydrated
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
__all__ = ["hydrate_knowledge_base_data_sources", "uri_hash_prefix"]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Memory record operations (port of src/cli/operations/memory)."""
|
|
2
|
+
|
|
3
|
+
from agentcore.operations.memory._records import MemoryRecordEntry
|
|
4
|
+
from agentcore.operations.memory.list_memory_records import ListMemoryRecordsResult, list_memory_records
|
|
5
|
+
from agentcore.operations.memory.retrieve_memory_records import RetrieveMemoryRecordsResult, retrieve_memory_records
|
|
6
|
+
|
|
7
|
+
__all__ = [
|
|
8
|
+
"ListMemoryRecordsResult",
|
|
9
|
+
"MemoryRecordEntry",
|
|
10
|
+
"RetrieveMemoryRecordsResult",
|
|
11
|
+
"list_memory_records",
|
|
12
|
+
"retrieve_memory_records",
|
|
13
|
+
]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""Shared helpers for the memory record operations."""
|
|
2
|
+
|
|
3
|
+
from datetime import UTC, datetime
|
|
4
|
+
from typing import Any, TypedDict
|
|
5
|
+
|
|
6
|
+
from agentcore.aws._aws_errors import aws_error_name
|
|
7
|
+
from agentcore.aws.agentcore import _create_agentcore_client
|
|
8
|
+
from agentcore.lib.errors.types import ResourceNotFoundError, ValidationError, to_error
|
|
9
|
+
from agentcore.lib.result import Err
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MemoryRecordEntry(TypedDict):
|
|
13
|
+
memoryRecordId: str
|
|
14
|
+
content: str | None
|
|
15
|
+
memoryStrategyId: str
|
|
16
|
+
namespaces: list[str]
|
|
17
|
+
createdAt: str
|
|
18
|
+
score: float | None
|
|
19
|
+
metadata: dict[str, str]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def create_client(region: str) -> Any:
|
|
23
|
+
return _create_agentcore_client(region)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def check_namespace(namespace: str | None, namespace_path: str | None) -> Err[Exception] | None:
|
|
27
|
+
"""Exactly one of namespace / namespace_path; empty strings count as not provided."""
|
|
28
|
+
if namespace and namespace_path:
|
|
29
|
+
return Err(ValidationError("'namespace' and 'namespacePath' are mutually exclusive."))
|
|
30
|
+
if not namespace and not namespace_path:
|
|
31
|
+
return Err(ValidationError("Either 'namespace' or 'namespacePath' must be provided."))
|
|
32
|
+
return None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def namespace_params(namespace: str | None, namespace_path: str | None) -> dict[str, str]:
|
|
36
|
+
return {"namespace": namespace} if namespace else {"namespacePath": namespace_path or ""}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _iso(value: Any) -> str:
|
|
40
|
+
"""Like JS Date.toISOString(): UTC with millisecond precision and a Z suffix."""
|
|
41
|
+
if value is None:
|
|
42
|
+
return "unknown"
|
|
43
|
+
if isinstance(value, datetime):
|
|
44
|
+
if value.tzinfo is not None:
|
|
45
|
+
value = value.astimezone(UTC)
|
|
46
|
+
return value.strftime("%Y-%m-%dT%H:%M:%S.") + f"{value.microsecond // 1000:03d}Z"
|
|
47
|
+
return str(value)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def to_entries(summaries: list[dict[str, Any]] | None) -> list[MemoryRecordEntry]:
|
|
51
|
+
return [
|
|
52
|
+
{
|
|
53
|
+
"memoryRecordId": r.get("memoryRecordId") or "unknown",
|
|
54
|
+
"content": (r.get("content") or {}).get("text"),
|
|
55
|
+
"memoryStrategyId": r.get("memoryStrategyId") or "unknown",
|
|
56
|
+
"namespaces": list(r.get("namespaces") or []),
|
|
57
|
+
"createdAt": _iso(r.get("createdAt")),
|
|
58
|
+
"score": r.get("score"),
|
|
59
|
+
"metadata": {k: (v or {}).get("stringValue") or "" for k, v in (r.get("metadata") or {}).items()},
|
|
60
|
+
}
|
|
61
|
+
for r in summaries or []
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def map_error(exc: BaseException, memory_id: str) -> Err[Exception]:
|
|
66
|
+
if aws_error_name(exc) == "ResourceNotFoundException":
|
|
67
|
+
return Err(ResourceNotFoundError(f"Memory '{memory_id}' not found. It may not have been deployed yet."))
|
|
68
|
+
return Err(to_error(exc)) # type: ignore[arg-type]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def drop_none(params: dict[str, Any]) -> dict[str, Any]:
|
|
72
|
+
return {k: v for k, v in params.items() if v is not None}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""List memory records of a deployed memory (port of list-memory-records.ts)."""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from agentcore.lib.result import Err, Ok
|
|
6
|
+
from agentcore.operations.memory import _records
|
|
7
|
+
from agentcore.operations.memory._records import MemoryRecordEntry
|
|
8
|
+
|
|
9
|
+
ListMemoryRecordsResult = Ok[dict[str, Any]] | Err[Exception]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def list_memory_records(
|
|
13
|
+
*,
|
|
14
|
+
region: str,
|
|
15
|
+
memory_id: str,
|
|
16
|
+
namespace: str | None = None,
|
|
17
|
+
namespace_path: str | None = None,
|
|
18
|
+
memory_strategy_id: str | None = None,
|
|
19
|
+
max_results: int = 50,
|
|
20
|
+
next_token: str | None = None,
|
|
21
|
+
) -> ListMemoryRecordsResult:
|
|
22
|
+
"""Exactly one of ``namespace`` (exact) or ``namespace_path`` (path prefix) must be given.
|
|
23
|
+
|
|
24
|
+
Returns ``Ok({"records": [...], "nextToken": ...})``.
|
|
25
|
+
"""
|
|
26
|
+
invalid = _records.check_namespace(namespace, namespace_path)
|
|
27
|
+
if invalid is not None:
|
|
28
|
+
return invalid
|
|
29
|
+
client = _records.create_client(region)
|
|
30
|
+
try:
|
|
31
|
+
response = client.list_memory_records(
|
|
32
|
+
**_records.drop_none(
|
|
33
|
+
{
|
|
34
|
+
"memoryId": memory_id,
|
|
35
|
+
**_records.namespace_params(namespace, namespace_path),
|
|
36
|
+
"memoryStrategyId": memory_strategy_id,
|
|
37
|
+
"maxResults": max_results,
|
|
38
|
+
"nextToken": next_token,
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
records: list[MemoryRecordEntry] = _records.to_entries(response.get("memoryRecordSummaries"))
|
|
43
|
+
return Ok({"records": records, "nextToken": response.get("nextToken")})
|
|
44
|
+
except Exception as exc: # noqa: BLE001
|
|
45
|
+
return _records.map_error(exc, memory_id)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Semantic search over memory records (port of retrieve-memory-records.ts)."""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from agentcore.lib.result import Err, Ok
|
|
6
|
+
from agentcore.operations.memory import _records
|
|
7
|
+
|
|
8
|
+
RetrieveMemoryRecordsResult = Ok[dict[str, Any]] | Err[Exception]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def retrieve_memory_records(
|
|
12
|
+
*,
|
|
13
|
+
region: str,
|
|
14
|
+
memory_id: str,
|
|
15
|
+
search_query: str,
|
|
16
|
+
namespace: str | None = None,
|
|
17
|
+
namespace_path: str | None = None,
|
|
18
|
+
memory_strategy_id: str | None = None,
|
|
19
|
+
top_k: int | None = None,
|
|
20
|
+
max_results: int | None = None,
|
|
21
|
+
next_token: str | None = None,
|
|
22
|
+
) -> RetrieveMemoryRecordsResult:
|
|
23
|
+
"""Exactly one of ``namespace`` or ``namespace_path`` must be given.
|
|
24
|
+
|
|
25
|
+
Returns ``Ok({"records": [...], "nextToken": ...})``.
|
|
26
|
+
"""
|
|
27
|
+
invalid = _records.check_namespace(namespace, namespace_path)
|
|
28
|
+
if invalid is not None:
|
|
29
|
+
return invalid
|
|
30
|
+
client = _records.create_client(region)
|
|
31
|
+
try:
|
|
32
|
+
response = client.retrieve_memory_records(
|
|
33
|
+
**_records.drop_none(
|
|
34
|
+
{
|
|
35
|
+
"memoryId": memory_id,
|
|
36
|
+
**_records.namespace_params(namespace, namespace_path),
|
|
37
|
+
"searchCriteria": _records.drop_none(
|
|
38
|
+
{"searchQuery": search_query, "memoryStrategyId": memory_strategy_id, "topK": top_k}
|
|
39
|
+
),
|
|
40
|
+
"maxResults": max_results,
|
|
41
|
+
"nextToken": next_token,
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
)
|
|
45
|
+
return Ok(
|
|
46
|
+
{
|
|
47
|
+
"records": _records.to_entries(response.get("memoryRecordSummaries")),
|
|
48
|
+
"nextToken": response.get("nextToken"),
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
except Exception as exc: # noqa: BLE001
|
|
52
|
+
return _records.map_error(exc, memory_id)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from agentcore.operations.node.setup import (
|
|
2
|
+
NodeSetupResult,
|
|
3
|
+
NodeSetupStatus,
|
|
4
|
+
check_npm_available,
|
|
5
|
+
install_node_dependencies,
|
|
6
|
+
setup_node_project,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"NodeSetupResult",
|
|
11
|
+
"NodeSetupStatus",
|
|
12
|
+
"check_npm_available",
|
|
13
|
+
"install_node_dependencies",
|
|
14
|
+
"setup_node_project",
|
|
15
|
+
]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Node project setup (port of src/cli/operations/node/setup.ts)."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from typing import Literal
|
|
6
|
+
|
|
7
|
+
from agentcore.lib import check_subprocess, run_subprocess_capture
|
|
8
|
+
|
|
9
|
+
NodeSetupStatus = Literal["success", "npm_not_found", "install_failed"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class NodeSetupResult:
|
|
14
|
+
status: NodeSetupStatus
|
|
15
|
+
error: str | None = None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def check_npm_available() -> bool:
|
|
19
|
+
return check_subprocess("npm", ["--version"])
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def install_node_dependencies(project_dir: str) -> NodeSetupResult:
|
|
23
|
+
"""`npm install` (not `npm ci`): fresh scaffolds don't ship a lockfile."""
|
|
24
|
+
result = run_subprocess_capture("npm", ["install"], cwd=project_dir)
|
|
25
|
+
if result.code == 0:
|
|
26
|
+
return NodeSetupResult("success")
|
|
27
|
+
return NodeSetupResult("install_failed", result.stderr or result.stdout)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def setup_node_project(project_dir: str) -> NodeSetupResult:
|
|
31
|
+
"""Run `npm install`. A no-op when AGENTCORE_SKIP_INSTALL is set."""
|
|
32
|
+
if os.environ.get("AGENTCORE_SKIP_INSTALL"):
|
|
33
|
+
return NodeSetupResult("success")
|
|
34
|
+
if not check_npm_available():
|
|
35
|
+
return NodeSetupResult("npm_not_found", "'npm' not found. Install Node.js from https://nodejs.org/")
|
|
36
|
+
return install_node_dependencies(project_dir)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from agentcore.operations.python.setup import (
|
|
2
|
+
PythonSetupResult,
|
|
3
|
+
PythonSetupStatus,
|
|
4
|
+
check_uv_available,
|
|
5
|
+
create_venv,
|
|
6
|
+
install_dependencies,
|
|
7
|
+
setup_python_project,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"PythonSetupResult",
|
|
12
|
+
"PythonSetupStatus",
|
|
13
|
+
"check_uv_available",
|
|
14
|
+
"create_venv",
|
|
15
|
+
"install_dependencies",
|
|
16
|
+
"setup_python_project",
|
|
17
|
+
]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Python project setup with uv (port of src/cli/operations/python/setup.ts)."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from typing import Literal
|
|
6
|
+
|
|
7
|
+
from agentcore.lib import check_subprocess, run_subprocess_capture
|
|
8
|
+
|
|
9
|
+
PythonSetupStatus = Literal["success", "uv_not_found", "venv_failed", "install_failed"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class PythonSetupResult:
|
|
14
|
+
status: PythonSetupStatus
|
|
15
|
+
error: str | None = None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def check_uv_available() -> bool:
|
|
19
|
+
return check_subprocess("uv", ["--version"])
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def create_venv(project_dir: str, venv_name: str = ".venv") -> PythonSetupResult:
|
|
23
|
+
result = run_subprocess_capture("uv", ["venv", venv_name], cwd=project_dir)
|
|
24
|
+
if result.code == 0:
|
|
25
|
+
return PythonSetupResult("success")
|
|
26
|
+
return PythonSetupResult("venv_failed", result.stderr or result.stdout)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def install_dependencies(project_dir: str) -> PythonSetupResult:
|
|
30
|
+
result = run_subprocess_capture("uv", ["sync"], cwd=project_dir)
|
|
31
|
+
if result.code == 0:
|
|
32
|
+
return PythonSetupResult("success")
|
|
33
|
+
return PythonSetupResult("install_failed", result.stderr or result.stdout)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def setup_python_project(project_dir: str, venv_name: str = ".venv") -> PythonSetupResult:
|
|
37
|
+
"""Create a venv and install dependencies. A no-op when AGENTCORE_SKIP_INSTALL is set."""
|
|
38
|
+
if os.environ.get("AGENTCORE_SKIP_INSTALL"):
|
|
39
|
+
return PythonSetupResult("success")
|
|
40
|
+
if not check_uv_available():
|
|
41
|
+
return PythonSetupResult(
|
|
42
|
+
"uv_not_found", "uv command not found. Install it with: curl -LsSf https://astral.sh/uv/install.sh | sh"
|
|
43
|
+
)
|
|
44
|
+
venv = create_venv(project_dir, venv_name)
|
|
45
|
+
if venv.status != "success":
|
|
46
|
+
return venv
|
|
47
|
+
return install_dependencies(project_dir)
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""Port of src/cli/operations/resolve-agent.ts: pick the deployed runtime/harness a command targets."""
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from agentcore.aws.agentcore_harness import get_harness
|
|
8
|
+
from agentcore.lib.schemas.io.config_io import ConfigIO
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class DeployedProjectConfig:
|
|
13
|
+
project: Any
|
|
14
|
+
deployed_state: Any
|
|
15
|
+
aws_targets: list[Any]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@dataclass
|
|
19
|
+
class ResolvedAgent:
|
|
20
|
+
agent_name: str
|
|
21
|
+
target_name: str
|
|
22
|
+
region: str
|
|
23
|
+
account_id: str
|
|
24
|
+
runtime_id: str
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@dataclass
|
|
28
|
+
class ResolveResult:
|
|
29
|
+
"""``{success: true, agent}`` / ``{success: false, error}``."""
|
|
30
|
+
|
|
31
|
+
success: bool
|
|
32
|
+
agent: ResolvedAgent | None = None
|
|
33
|
+
error: str | None = None
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def load_deployed_project_config(config_io: ConfigIO | None = None) -> DeployedProjectConfig:
|
|
37
|
+
config_io = config_io or ConfigIO()
|
|
38
|
+
return DeployedProjectConfig(
|
|
39
|
+
project=config_io.read_project_spec(),
|
|
40
|
+
deployed_state=config_io.read_deployed_state(),
|
|
41
|
+
aws_targets=config_io.read_aws_deployment_targets(),
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _first_target(context: DeployedProjectConfig) -> tuple[str, Any, Any] | ResolveResult:
|
|
46
|
+
targets = context.deployed_state.targets or {}
|
|
47
|
+
if not targets:
|
|
48
|
+
return ResolveResult(False, error="No deployed targets found. Run `agentcore deploy` first.")
|
|
49
|
+
name = next(iter(targets))
|
|
50
|
+
config = next((t for t in context.aws_targets if t.name == name), None)
|
|
51
|
+
if config is None:
|
|
52
|
+
return ResolveResult(False, error=f"Target config '{name}' not found in aws-targets")
|
|
53
|
+
return name, targets[name], config
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def resolve_agent(context: DeployedProjectConfig, runtime: str | None = None) -> ResolveResult:
|
|
57
|
+
project = context.project
|
|
58
|
+
runtimes = project.runtimes or []
|
|
59
|
+
if not runtimes:
|
|
60
|
+
return ResolveResult(False, error="No runtimes defined in agentcore.json")
|
|
61
|
+
names = [r.name for r in runtimes]
|
|
62
|
+
if not runtime and len(runtimes) > 1:
|
|
63
|
+
return ResolveResult(False, error=f"Multiple runtimes found. Use --runtime to specify one: {', '.join(names)}")
|
|
64
|
+
spec = next((r for r in runtimes if r.name == runtime), None) if runtime else runtimes[0]
|
|
65
|
+
if runtime and spec is None:
|
|
66
|
+
return ResolveResult(False, error=f"Runtime '{runtime}' not found. Available: {', '.join(names)}")
|
|
67
|
+
if spec is None:
|
|
68
|
+
return ResolveResult(False, error="No runtimes defined in agentcore.json")
|
|
69
|
+
|
|
70
|
+
first = _first_target(context)
|
|
71
|
+
if isinstance(first, ResolveResult):
|
|
72
|
+
return first
|
|
73
|
+
target_name, target_state, target_config = first
|
|
74
|
+
resources = target_state.resources if target_state else None
|
|
75
|
+
agent_state = ((resources.runtimes if resources else None) or {}).get(spec.name)
|
|
76
|
+
if not agent_state:
|
|
77
|
+
return ResolveResult(
|
|
78
|
+
False,
|
|
79
|
+
error=f"Runtime '{spec.name}' is not deployed to target '{target_name}'. Run 'agentcore deploy' first.",
|
|
80
|
+
)
|
|
81
|
+
return ResolveResult(
|
|
82
|
+
True,
|
|
83
|
+
agent=ResolvedAgent(
|
|
84
|
+
agent_name=spec.name,
|
|
85
|
+
target_name=target_name,
|
|
86
|
+
region=target_config.region,
|
|
87
|
+
account_id=target_config.account,
|
|
88
|
+
runtime_id=agent_state.runtime_id,
|
|
89
|
+
),
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def resolve_harness(context: DeployedProjectConfig, harness_name: str) -> ResolveResult:
|
|
94
|
+
harnesses = context.project.harnesses or []
|
|
95
|
+
spec = next((h for h in harnesses if h.name == harness_name), None)
|
|
96
|
+
if spec is None:
|
|
97
|
+
available = [h.name for h in harnesses]
|
|
98
|
+
return ResolveResult(
|
|
99
|
+
False,
|
|
100
|
+
error=f"Harness '{harness_name}' not found. Available: {', '.join(available)}"
|
|
101
|
+
if available
|
|
102
|
+
else "No harnesses defined in agentcore.json",
|
|
103
|
+
)
|
|
104
|
+
first = _first_target(context)
|
|
105
|
+
if isinstance(first, ResolveResult):
|
|
106
|
+
return first
|
|
107
|
+
target_name, target_state, target_config = first
|
|
108
|
+
resources = target_state.resources if target_state else None
|
|
109
|
+
harness_state = ((resources.harnesses if resources else None) or {}).get(harness_name)
|
|
110
|
+
if not harness_state:
|
|
111
|
+
return ResolveResult(
|
|
112
|
+
False,
|
|
113
|
+
error=f"Harness '{harness_name}' is not deployed to target '{target_name}'. Run 'agentcore deploy' first.",
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
runtime_id: str | None = None
|
|
117
|
+
if harness_state.agent_runtime_arn:
|
|
118
|
+
match = re.search(r"runtime/([^/]+)", harness_state.agent_runtime_arn)
|
|
119
|
+
if match:
|
|
120
|
+
runtime_id = match.group(1)
|
|
121
|
+
if not runtime_id:
|
|
122
|
+
try:
|
|
123
|
+
get_harness(region=target_config.region, harness_id=harness_state.harness_id)
|
|
124
|
+
runtime_id = harness_state.harness_id
|
|
125
|
+
except Exception as exc: # noqa: BLE001 - reported as a resolution error, as upstream
|
|
126
|
+
return ResolveResult(False, error=f"Failed to resolve runtime for harness '{harness_name}': {exc}")
|
|
127
|
+
if not runtime_id:
|
|
128
|
+
return ResolveResult(
|
|
129
|
+
False,
|
|
130
|
+
error=f"Could not resolve runtime ID for harness '{harness_name}'. Re-deploy to populate agentRuntimeArn.",
|
|
131
|
+
)
|
|
132
|
+
return ResolveResult(
|
|
133
|
+
True,
|
|
134
|
+
agent=ResolvedAgent(
|
|
135
|
+
agent_name=harness_name,
|
|
136
|
+
target_name=target_name,
|
|
137
|
+
region=target_config.region,
|
|
138
|
+
account_id=target_config.account,
|
|
139
|
+
runtime_id=runtime_id,
|
|
140
|
+
),
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def resolve_agent_or_harness(
|
|
145
|
+
context: DeployedProjectConfig, runtime: str | None = None, harness: str | None = None
|
|
146
|
+
) -> ResolveResult:
|
|
147
|
+
if harness and runtime:
|
|
148
|
+
return ResolveResult(False, error="Cannot specify both --harness and --runtime")
|
|
149
|
+
if harness:
|
|
150
|
+
return resolve_harness(context, harness)
|
|
151
|
+
if runtime or (context.project.runtimes or []):
|
|
152
|
+
return resolve_agent(context, runtime)
|
|
153
|
+
harnesses = context.project.harnesses or []
|
|
154
|
+
if not harnesses:
|
|
155
|
+
return ResolveResult(False, error="No runtimes or harnesses defined in agentcore.json")
|
|
156
|
+
if len(harnesses) > 1:
|
|
157
|
+
names = ", ".join(h.name for h in harnesses)
|
|
158
|
+
return ResolveResult(False, error=f"Multiple harnesses found. Use --harness to specify one: {names}")
|
|
159
|
+
return resolve_harness(context, harnesses[0].name)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""Session ID helpers (port of src/cli/operations/session/index.ts)."""
|
|
2
|
+
|
|
3
|
+
import uuid
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
from agentcore.lib.schemas.io.config_io import ConfigIO
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def generate_session_id() -> str:
|
|
10
|
+
"""New UUID v4 session ID."""
|
|
11
|
+
return str(uuid.uuid4())
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class SessionInfo:
|
|
16
|
+
session_id: str | None
|
|
17
|
+
agent_name: str
|
|
18
|
+
runtime_arn: str
|
|
19
|
+
target_name: str
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _select_target(deployed_state, target_name: str | None) -> str | None:
|
|
23
|
+
names = list(deployed_state.targets or {})
|
|
24
|
+
if not names:
|
|
25
|
+
return None
|
|
26
|
+
return target_name if target_name is not None else names[0]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_session_id(
|
|
30
|
+
agent_name: str, target_name: str | None = None, config_io: ConfigIO | None = None
|
|
31
|
+
) -> SessionInfo | None:
|
|
32
|
+
config_io = config_io or ConfigIO()
|
|
33
|
+
deployed_state = config_io.read_deployed_state()
|
|
34
|
+
aws_targets = config_io.read_aws_deployment_targets()
|
|
35
|
+
selected = _select_target(deployed_state, target_name)
|
|
36
|
+
if selected is None:
|
|
37
|
+
return None
|
|
38
|
+
target_state = deployed_state.targets.get(selected)
|
|
39
|
+
target_config = next((t for t in aws_targets if t.name == selected), None)
|
|
40
|
+
runtimes = target_state.resources.runtimes if target_state and target_state.resources else None
|
|
41
|
+
if not target_config or not runtimes:
|
|
42
|
+
return None
|
|
43
|
+
agent_state = runtimes.get(agent_name)
|
|
44
|
+
if not agent_state:
|
|
45
|
+
return None
|
|
46
|
+
return SessionInfo(agent_state.session_id, agent_name, agent_state.runtime_arn, selected)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def save_session_id(
|
|
50
|
+
agent_name: str, session_id: str, target_name: str | None = None, config_io: ConfigIO | None = None
|
|
51
|
+
) -> None:
|
|
52
|
+
config_io = config_io or ConfigIO()
|
|
53
|
+
deployed_state = config_io.read_deployed_state()
|
|
54
|
+
selected = _select_target(deployed_state, target_name)
|
|
55
|
+
if selected is None:
|
|
56
|
+
raise RuntimeError("No deployed targets found")
|
|
57
|
+
target_state = deployed_state.targets.get(selected)
|
|
58
|
+
runtimes = target_state.resources.runtimes if target_state and target_state.resources else None
|
|
59
|
+
if not runtimes or agent_name not in runtimes:
|
|
60
|
+
raise RuntimeError(f"Agent '{agent_name}' not found in deployed state")
|
|
61
|
+
runtimes[agent_name].session_id = session_id
|
|
62
|
+
config_io.write_deployed_state(deployed_state)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def clear_session_id(agent_name: str, target_name: str | None = None, config_io: ConfigIO | None = None) -> None:
|
|
66
|
+
config_io = config_io or ConfigIO()
|
|
67
|
+
deployed_state = config_io.read_deployed_state()
|
|
68
|
+
selected = _select_target(deployed_state, target_name)
|
|
69
|
+
if selected is None:
|
|
70
|
+
return
|
|
71
|
+
target_state = deployed_state.targets.get(selected)
|
|
72
|
+
runtimes = target_state.resources.runtimes if target_state and target_state.resources else None
|
|
73
|
+
if not runtimes or agent_name not in runtimes:
|
|
74
|
+
return
|
|
75
|
+
runtimes[agent_name].session_id = None
|
|
76
|
+
config_io.write_deployed_state(deployed_state)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def get_or_create_session_id(agent_name: str, target_name: str | None = None, config_io: ConfigIO | None = None) -> str:
|
|
80
|
+
config_io = config_io or ConfigIO()
|
|
81
|
+
info = get_session_id(agent_name, target_name, config_io)
|
|
82
|
+
if info and info.session_id:
|
|
83
|
+
return info.session_id
|
|
84
|
+
new_id = generate_session_id()
|
|
85
|
+
save_session_id(agent_name, new_id, target_name, config_io)
|
|
86
|
+
return new_id
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Trace listing/download via CloudWatch Logs Insights (port of src/cli/operations/traces)."""
|
|
2
|
+
|
|
3
|
+
from agentcore.operations.traces.get_trace import fetch_trace_records, get_trace
|
|
4
|
+
from agentcore.operations.traces.insights_query import InsightsQueryResult, run_insights_query
|
|
5
|
+
from agentcore.operations.traces.list_traces import list_traces
|
|
6
|
+
from agentcore.operations.traces.trace_url import build_trace_console_url
|
|
7
|
+
from agentcore.operations.traces.types import (
|
|
8
|
+
CloudWatchSpanRecord,
|
|
9
|
+
CloudWatchTraceRecord,
|
|
10
|
+
FetchTraceRecordsValue,
|
|
11
|
+
GetTraceValue,
|
|
12
|
+
ListTracesValue,
|
|
13
|
+
TraceEntry,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"CloudWatchSpanRecord",
|
|
18
|
+
"CloudWatchTraceRecord",
|
|
19
|
+
"FetchTraceRecordsValue",
|
|
20
|
+
"GetTraceValue",
|
|
21
|
+
"InsightsQueryResult",
|
|
22
|
+
"ListTracesValue",
|
|
23
|
+
"TraceEntry",
|
|
24
|
+
"build_trace_console_url",
|
|
25
|
+
"fetch_trace_records",
|
|
26
|
+
"get_trace",
|
|
27
|
+
"list_traces",
|
|
28
|
+
"run_insights_query",
|
|
29
|
+
]
|