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,153 @@
|
|
|
1
|
+
"""Node/TypeScript CodeZip packager (port of ``packaging/node.ts``).
|
|
2
|
+
|
|
3
|
+
Upstream calls the esbuild JS API in-process; here the esbuild CLI is run with the equivalent
|
|
4
|
+
flags. It is taken from the project's ``node_modules/.bin``, else ``PATH``, else ``npx``.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import re
|
|
11
|
+
import shutil
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
from agentcore.lib.constants import get_artifact_zip_name
|
|
15
|
+
from agentcore.lib.errors.types import PackagingError
|
|
16
|
+
from agentcore.lib.packaging.helpers import (
|
|
17
|
+
create_zip_from_dir,
|
|
18
|
+
enforce_zip_size_limit,
|
|
19
|
+
ensure_dir_clean,
|
|
20
|
+
is_node_runtime,
|
|
21
|
+
resolve_node_project_paths,
|
|
22
|
+
)
|
|
23
|
+
from agentcore.lib.packaging.types import ArtifactResult, PackageOptions, spec_field
|
|
24
|
+
from agentcore.lib.utils.subprocess import run_subprocess_capture
|
|
25
|
+
|
|
26
|
+
_NODE_RUNTIME_REGEX = re.compile(r"NODE_(\d+)")
|
|
27
|
+
|
|
28
|
+
ESBUILD_VERSION_RANGE = "^0.28.0"
|
|
29
|
+
|
|
30
|
+
# Packages that are require()d dynamically and so can't be bundled; copied into _deps/.
|
|
31
|
+
DYNAMIC_REQUIRE_PACKAGES = (
|
|
32
|
+
"@fastify/sse",
|
|
33
|
+
"@fastify/websocket",
|
|
34
|
+
"duplexify",
|
|
35
|
+
"end-of-stream",
|
|
36
|
+
"fastify-plugin",
|
|
37
|
+
"inherits",
|
|
38
|
+
"once",
|
|
39
|
+
"readable-stream",
|
|
40
|
+
"safe-buffer",
|
|
41
|
+
"stream-shift",
|
|
42
|
+
"string_decoder",
|
|
43
|
+
"util-deprecate",
|
|
44
|
+
"wrappy",
|
|
45
|
+
"ws",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
DEPS_DIR = "_deps"
|
|
49
|
+
|
|
50
|
+
# Defines importMetaUrl for CJS output and makes require() fall back to _deps/<pkg>.
|
|
51
|
+
CJS_BANNER = (
|
|
52
|
+
'const importMetaUrl = require("url").pathToFileURL(__filename).href;'
|
|
53
|
+
'(function(){var M=require("module"),p=require("path"),f=require("fs"),d=p.join(__dirname,"_deps"),o=M._resolveFilename;'
|
|
54
|
+
"M._resolveFilename=function(r,P,i,O){try{return o.call(this,r,P,i,O)}catch(e){"
|
|
55
|
+
'var dp=p.join(d,r);if(f.existsSync(dp)){var pk=p.join(dp,"package.json");'
|
|
56
|
+
'if(f.existsSync(pk)){var m=JSON.parse(f.readFileSync(pk,"utf8")).main||"index.js";return p.resolve(dp,m)}'
|
|
57
|
+
'return p.resolve(dp,"index.js")}throw e}};})();'
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def extract_node_version(runtime: str) -> str:
|
|
62
|
+
"""``NODE_20`` -> ``20``."""
|
|
63
|
+
match = _NODE_RUNTIME_REGEX.search(runtime)
|
|
64
|
+
if not match:
|
|
65
|
+
raise PackagingError(f"Unsupported Node runtime value: {runtime}")
|
|
66
|
+
if not match.group(1):
|
|
67
|
+
raise PackagingError(f"Invalid Node runtime value: {runtime}")
|
|
68
|
+
return match.group(1)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _copy_dynamic_deps(src_dir: str, staging_dir: str) -> None:
|
|
72
|
+
src_node_modules = os.path.join(src_dir, "node_modules")
|
|
73
|
+
if not os.path.exists(src_node_modules):
|
|
74
|
+
return
|
|
75
|
+
for pkg in DYNAMIC_REQUIRE_PACKAGES:
|
|
76
|
+
pkg_path = os.path.join(src_node_modules, pkg)
|
|
77
|
+
if os.path.exists(pkg_path):
|
|
78
|
+
shutil.copytree(pkg_path, os.path.join(staging_dir, DEPS_DIR, pkg), dirs_exist_ok=True, symlinks=True)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _esbuild_command(src_dir: str) -> tuple[str, list[str]]:
|
|
82
|
+
local = os.path.join(src_dir, "node_modules", ".bin", "esbuild")
|
|
83
|
+
for candidate in (local, local + ".cmd"):
|
|
84
|
+
if os.path.exists(candidate):
|
|
85
|
+
return candidate, []
|
|
86
|
+
on_path = shutil.which("esbuild")
|
|
87
|
+
if on_path:
|
|
88
|
+
return on_path, []
|
|
89
|
+
return "npx", ["--yes", f"esbuild@{ESBUILD_VERSION_RANGE}"]
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def run_esbuild(entry_file: str, outfile: str, node_target: str, src_dir: str) -> None:
|
|
93
|
+
command, prefix = _esbuild_command(src_dir)
|
|
94
|
+
args = [
|
|
95
|
+
*prefix,
|
|
96
|
+
entry_file,
|
|
97
|
+
"--bundle",
|
|
98
|
+
"--platform=node",
|
|
99
|
+
"--format=cjs",
|
|
100
|
+
"--minify",
|
|
101
|
+
f"--target={node_target}",
|
|
102
|
+
f"--outfile={outfile}",
|
|
103
|
+
f"--banner:js={CJS_BANNER}",
|
|
104
|
+
"--define:import.meta.url=importMetaUrl",
|
|
105
|
+
"--log-level=warning",
|
|
106
|
+
]
|
|
107
|
+
result = run_subprocess_capture(command, args, cwd=src_dir)
|
|
108
|
+
if result.code != 0:
|
|
109
|
+
output = f"{result.stdout}\n{result.stderr}".strip()
|
|
110
|
+
raise PackagingError(f"esbuild failed to bundle {entry_file}:\n{output}")
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _package(runtime_version: str, agent_name: str, options: PackageOptions) -> ArtifactResult:
|
|
114
|
+
paths = resolve_node_project_paths(options, agent_name)
|
|
115
|
+
ensure_dir_clean(paths.staging_dir)
|
|
116
|
+
|
|
117
|
+
entry_file = os.path.join(paths.src_dir, "main.ts")
|
|
118
|
+
run_esbuild(
|
|
119
|
+
entry_file,
|
|
120
|
+
os.path.join(paths.staging_dir, "main.js"),
|
|
121
|
+
f"node{extract_node_version(runtime_version)}",
|
|
122
|
+
paths.src_dir,
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
with open(os.path.join(paths.staging_dir, "package.json"), "w", encoding="utf-8") as fh:
|
|
126
|
+
fh.write('{"type":"commonjs"}')
|
|
127
|
+
_copy_dynamic_deps(paths.src_dir, paths.staging_dir)
|
|
128
|
+
|
|
129
|
+
artifact_path = options.output_path or os.path.join(paths.artifacts_dir, get_artifact_zip_name(agent_name))
|
|
130
|
+
create_zip_from_dir(paths.staging_dir, artifact_path)
|
|
131
|
+
size_bytes = enforce_zip_size_limit(artifact_path)
|
|
132
|
+
return ArtifactResult(artifact_path=artifact_path, size_bytes=size_bytes, staging_path=paths.staging_dir)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class NodeCodeZipPackager:
|
|
136
|
+
def pack(self, spec: Any, options: PackageOptions | None = None) -> ArtifactResult:
|
|
137
|
+
options = options or PackageOptions()
|
|
138
|
+
if spec_field(spec, "build") != "CodeZip":
|
|
139
|
+
raise PackagingError("Node packager only supports CodeZip build type.")
|
|
140
|
+
runtime_version = spec_field(spec, "runtimeVersion")
|
|
141
|
+
if not runtime_version or not is_node_runtime(runtime_version):
|
|
142
|
+
raise PackagingError(f"Node packager only supports Node runtimes. Received: {runtime_version}")
|
|
143
|
+
return _package(runtime_version, options.agent_name or spec_field(spec, "name"), options)
|
|
144
|
+
|
|
145
|
+
def pack_code_zip(self, config: Any, options: PackageOptions | None = None) -> ArtifactResult:
|
|
146
|
+
options = options or PackageOptions()
|
|
147
|
+
runtime_version = spec_field(config, "runtimeVersion") or "NODE_20"
|
|
148
|
+
if not is_node_runtime(runtime_version):
|
|
149
|
+
raise PackagingError(f"Node packager only supports Node runtimes. Received: {runtime_version}")
|
|
150
|
+
return _package(runtime_version, options.agent_name or spec_field(config, "name") or "asset", options)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
NodeCodeZipPackagerSync = NodeCodeZipPackager
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"""Python CodeZip packager (port of ``packaging/python.ts``).
|
|
2
|
+
|
|
3
|
+
Dependencies are installed with ``uv pip install --target`` for aarch64 manylinux, trying each
|
|
4
|
+
platform candidate until one has wheels for every dependency.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import re
|
|
11
|
+
from collections.abc import Sequence
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
from agentcore.lib.constants import UV_INSTALL_HINT, get_artifact_zip_name
|
|
15
|
+
from agentcore.lib.errors.types import PackagingError
|
|
16
|
+
from agentcore.lib.packaging.helpers import (
|
|
17
|
+
convert_windows_scripts_to_linux,
|
|
18
|
+
copy_source_tree,
|
|
19
|
+
create_zip_from_dir,
|
|
20
|
+
enforce_zip_size_limit,
|
|
21
|
+
ensure_binary_available,
|
|
22
|
+
ensure_dir_clean,
|
|
23
|
+
is_python_runtime,
|
|
24
|
+
resolve_project_paths,
|
|
25
|
+
)
|
|
26
|
+
from agentcore.lib.packaging.types import ArtifactResult, PackageOptions, spec_field
|
|
27
|
+
from agentcore.lib.packaging.uv import detect_unavailable_platform
|
|
28
|
+
from agentcore.lib.utils.subprocess import run_subprocess_capture
|
|
29
|
+
|
|
30
|
+
_PYTHON_RUNTIME_REGEX = re.compile(r"PYTHON_(\d+)_?(\d+)?")
|
|
31
|
+
|
|
32
|
+
# AgentCore Runtime uses AL2023 (GLIBC 2.34), so any manylinux <= 2_34 works.
|
|
33
|
+
PLATFORM_CANDIDATES = ("aarch64-manylinux2014", "aarch64-manylinux_2_28", "aarch64-manylinux_2_34")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def default_python_version() -> str:
|
|
37
|
+
try:
|
|
38
|
+
from agentcore.schema import DEFAULT_PYTHON_VERSION # type: ignore[attr-defined]
|
|
39
|
+
|
|
40
|
+
return str(getattr(DEFAULT_PYTHON_VERSION, "value", DEFAULT_PYTHON_VERSION))
|
|
41
|
+
except Exception: # schema package absent or not importable
|
|
42
|
+
return "PYTHON_3_14"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def extract_python_version(runtime: str) -> str:
|
|
46
|
+
"""``PYTHON_3_12`` -> ``3.12`` (for ``uv --python-version``)."""
|
|
47
|
+
match = _PYTHON_RUNTIME_REGEX.search(runtime)
|
|
48
|
+
if not match:
|
|
49
|
+
raise PackagingError(f"Unsupported Python runtime value: {runtime}")
|
|
50
|
+
major, minor = match.group(1), match.group(2)
|
|
51
|
+
if not major or not minor:
|
|
52
|
+
raise PackagingError(f"Invalid Python runtime value: {runtime}")
|
|
53
|
+
return f"{int(major)}.{int(minor)}"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _install_with_retries(
|
|
57
|
+
project_root: str,
|
|
58
|
+
src_dir: str,
|
|
59
|
+
staging_dir: str,
|
|
60
|
+
runtime_version: str,
|
|
61
|
+
python_platforms: Sequence[str],
|
|
62
|
+
pyproject_path: str,
|
|
63
|
+
) -> str:
|
|
64
|
+
python_version = extract_python_version(runtime_version)
|
|
65
|
+
for platform in python_platforms:
|
|
66
|
+
if not platform:
|
|
67
|
+
raise PackagingError("No platform candidate available for dependency installation.")
|
|
68
|
+
ensure_dir_clean(staging_dir)
|
|
69
|
+
result = run_subprocess_capture(
|
|
70
|
+
"uv",
|
|
71
|
+
[
|
|
72
|
+
"pip",
|
|
73
|
+
"install",
|
|
74
|
+
"-r",
|
|
75
|
+
pyproject_path,
|
|
76
|
+
"--target",
|
|
77
|
+
staging_dir,
|
|
78
|
+
"--python-version",
|
|
79
|
+
python_version,
|
|
80
|
+
"--python-platform",
|
|
81
|
+
platform,
|
|
82
|
+
"--only-binary",
|
|
83
|
+
":all:",
|
|
84
|
+
],
|
|
85
|
+
cwd=project_root,
|
|
86
|
+
)
|
|
87
|
+
if result.code == 0:
|
|
88
|
+
copy_source_tree(src_dir, staging_dir)
|
|
89
|
+
convert_windows_scripts_to_linux(staging_dir)
|
|
90
|
+
return staging_dir
|
|
91
|
+
if detect_unavailable_platform(result):
|
|
92
|
+
continue
|
|
93
|
+
combined = f"{result.stdout}\n{result.stderr}".strip()
|
|
94
|
+
raise PackagingError(combined or f"uv install failed on platform {platform} with exit code {result.code}")
|
|
95
|
+
raise PackagingError("uv install failed for all platform candidates.")
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def _package(runtime_version: str, agent_name: str, options: PackageOptions) -> ArtifactResult:
|
|
99
|
+
paths = resolve_project_paths(options, agent_name)
|
|
100
|
+
platforms = [options.python_platform] if options.python_platform else list(PLATFORM_CANDIDATES)
|
|
101
|
+
|
|
102
|
+
ensure_binary_available("uv", UV_INSTALL_HINT)
|
|
103
|
+
ensure_dir_clean(paths.staging_dir)
|
|
104
|
+
|
|
105
|
+
final_staging = _install_with_retries(
|
|
106
|
+
paths.project_root, paths.src_dir, paths.staging_dir, runtime_version, platforms, paths.pyproject_path
|
|
107
|
+
)
|
|
108
|
+
artifact_path = options.output_path or os.path.join(paths.artifacts_dir, get_artifact_zip_name(agent_name))
|
|
109
|
+
create_zip_from_dir(final_staging, artifact_path)
|
|
110
|
+
size_bytes = enforce_zip_size_limit(artifact_path)
|
|
111
|
+
return ArtifactResult(artifact_path=artifact_path, size_bytes=size_bytes, staging_path=final_staging)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class PythonCodeZipPackager:
|
|
115
|
+
"""Packager for CLI usage (``pack``) and CDK-style bundling (``pack_code_zip``)."""
|
|
116
|
+
|
|
117
|
+
def pack(self, spec: Any, options: PackageOptions | None = None) -> ArtifactResult:
|
|
118
|
+
options = options or PackageOptions()
|
|
119
|
+
if spec_field(spec, "build") != "CodeZip":
|
|
120
|
+
raise PackagingError("Python packager only supports CodeZip build type.")
|
|
121
|
+
runtime_version = spec_field(spec, "runtimeVersion")
|
|
122
|
+
if not runtime_version or not is_python_runtime(runtime_version):
|
|
123
|
+
raise PackagingError(f"Python packager only supports Python runtimes. Received: {runtime_version}")
|
|
124
|
+
return _package(runtime_version, options.agent_name or spec_field(spec, "name"), options)
|
|
125
|
+
|
|
126
|
+
def pack_code_zip(self, config: Any, options: PackageOptions | None = None) -> ArtifactResult:
|
|
127
|
+
options = options or PackageOptions()
|
|
128
|
+
runtime_version = spec_field(config, "runtimeVersion") or default_python_version()
|
|
129
|
+
if not is_python_runtime(runtime_version):
|
|
130
|
+
raise PackagingError(f"Python packager only supports Python runtimes. Received: {runtime_version}")
|
|
131
|
+
return _package(runtime_version, options.agent_name or spec_field(config, "name") or "asset", options)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
# Upstream's separate sync packager is the same class here.
|
|
135
|
+
PythonCodeZipPackagerSync = PythonCodeZipPackager
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Packaging option/result types (port of ``packaging/types/packaging.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from collections.abc import Mapping
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from enum import Enum
|
|
9
|
+
from typing import Any, Protocol
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(slots=True)
|
|
13
|
+
class PackageOptions:
|
|
14
|
+
# Override for project root; defaults to cwd / discovered root.
|
|
15
|
+
project_root: str | None = None
|
|
16
|
+
# Override for source directory; defaults to the project root.
|
|
17
|
+
src_dir: str | None = None
|
|
18
|
+
# Override for pyproject.toml (Python) path.
|
|
19
|
+
pyproject_path: str | None = None
|
|
20
|
+
# Override for the artifact base directory; defaults to <projectRoot>/agentcore.
|
|
21
|
+
artifact_dir: str | None = None
|
|
22
|
+
# Python platform tag override; default tries PLATFORM_CANDIDATES.
|
|
23
|
+
python_platform: str | None = None
|
|
24
|
+
# Agent name for artifact naming and staging isolation.
|
|
25
|
+
agent_name: str | None = None
|
|
26
|
+
# Write the zip here if given.
|
|
27
|
+
output_path: str | None = None
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@dataclass(frozen=True, slots=True)
|
|
31
|
+
class ArtifactResult:
|
|
32
|
+
artifact_path: str
|
|
33
|
+
size_bytes: int
|
|
34
|
+
staging_path: str
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@dataclass(slots=True)
|
|
38
|
+
class CodeBundleConfig:
|
|
39
|
+
"""Minimal bundle config; ``AgentEnvSpec`` models satisfy the same shape."""
|
|
40
|
+
|
|
41
|
+
name: str
|
|
42
|
+
code_location: str
|
|
43
|
+
entrypoint: str
|
|
44
|
+
runtime_version: str | None = None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class RuntimePackager(Protocol):
|
|
48
|
+
def pack(self, spec: Any, options: PackageOptions | None = None) -> ArtifactResult: ...
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class CodeZipPackager(Protocol):
|
|
52
|
+
def pack_code_zip(self, config: Any, options: PackageOptions | None = None) -> ArtifactResult: ...
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _snake(name: str) -> str:
|
|
56
|
+
return re.sub(r"(?<!^)(?=[A-Z])", "_", name).lower()
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def spec_field(spec: Any, name: str, default: Any = None) -> Any:
|
|
60
|
+
"""Read a spec field by its camelCase JSON name from a dict or a model (snake_case or alias attr)."""
|
|
61
|
+
if isinstance(spec, Mapping):
|
|
62
|
+
value = spec.get(name, spec.get(_snake(name)))
|
|
63
|
+
return default if value is None else value
|
|
64
|
+
for attr in (_snake(name), name):
|
|
65
|
+
value = getattr(spec, attr, None)
|
|
66
|
+
if value is not None:
|
|
67
|
+
# Enum-valued fields (e.g. build type) compare by value.
|
|
68
|
+
return value.value if isinstance(value, Enum) else value
|
|
69
|
+
return default
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Detect "no wheel for this platform" failures from ``uv pip install`` (port of ``uv.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from dataclasses import dataclass, field
|
|
7
|
+
|
|
8
|
+
from agentcore.lib.utils.subprocess import SubprocessResult
|
|
9
|
+
|
|
10
|
+
_PLATFORM_HINT_REGEX = re.compile(r"platforms:\s*([^\n]+)", re.IGNORECASE)
|
|
11
|
+
_MANYLINUX_TOKEN = re.compile(r"(manylinux[^\s,]+)", re.IGNORECASE)
|
|
12
|
+
_NO_WHEELS_REGEX = re.compile(
|
|
13
|
+
r"(has no wheels with a matching (?:platform|Python ABI) tag|no compatible (?:wheels|tags) found|has no usable wheels)",
|
|
14
|
+
re.IGNORECASE,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@dataclass(frozen=True, slots=True)
|
|
19
|
+
class PlatformIssue:
|
|
20
|
+
message: str
|
|
21
|
+
platforms: list[str] | None = field(default=None)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def detect_unavailable_platform(result: SubprocessResult) -> PlatformIssue | None:
|
|
25
|
+
combined = f"{result.stdout}\n{result.stderr}"
|
|
26
|
+
hint = _PLATFORM_HINT_REGEX.search(combined)
|
|
27
|
+
if hint and hint.group(1):
|
|
28
|
+
hints = [m for m in _MANYLINUX_TOKEN.findall(hint.group(1)) if m]
|
|
29
|
+
if hints:
|
|
30
|
+
return PlatformIssue(message=_extract_relevant_block(combined, _PLATFORM_HINT_REGEX), platforms=hints)
|
|
31
|
+
|
|
32
|
+
if _NO_WHEELS_REGEX.search(combined):
|
|
33
|
+
return PlatformIssue(message=_extract_relevant_block(combined, _NO_WHEELS_REGEX))
|
|
34
|
+
|
|
35
|
+
return None
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _extract_relevant_block(text: str, pattern: re.Pattern[str], context: int = 3) -> str:
|
|
39
|
+
lines = re.split(r"\r?\n", text)
|
|
40
|
+
index = next((i for i, line in enumerate(lines) if pattern.search(line)), -1)
|
|
41
|
+
if index == -1:
|
|
42
|
+
return text.strip()
|
|
43
|
+
start = max(0, index - context)
|
|
44
|
+
end = min(len(lines), index + context + 1)
|
|
45
|
+
return "\n".join(line.strip() for line in lines[start:end]).strip()
|
agentcore/lib/result.py
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""Rust-style ``Result`` for fallible operations (port of ``src/lib/result.ts``).
|
|
2
|
+
|
|
3
|
+
Upstream uses a discriminated union whose success branch spreads its data onto the result
|
|
4
|
+
object. Here ``Ok`` wraps the data in ``value`` and ``Err`` wraps the exception in ``error``;
|
|
5
|
+
both expose ``success`` so ``if result.success:`` narrows as it does upstream.
|
|
6
|
+
``serialize_result`` reproduces the flat JSON shape the TypeScript CLI prints.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import dataclasses
|
|
12
|
+
from collections.abc import Mapping
|
|
13
|
+
from dataclasses import dataclass, field
|
|
14
|
+
from typing import Any, Generic, Literal, TypeAlias, TypeVar, overload
|
|
15
|
+
|
|
16
|
+
from agentcore.lib.errors.types import BaseError
|
|
17
|
+
|
|
18
|
+
T = TypeVar("T")
|
|
19
|
+
E = TypeVar("E", bound=BaseException)
|
|
20
|
+
|
|
21
|
+
_MISSING: Any = object()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass(frozen=True, slots=True)
|
|
25
|
+
class Ok(Generic[T]):
|
|
26
|
+
value: T = None # type: ignore[assignment]
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def success(self) -> Literal[True]:
|
|
30
|
+
return True
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass(frozen=True, slots=True)
|
|
34
|
+
class Err(Generic[E]):
|
|
35
|
+
error: E
|
|
36
|
+
# Extra fields carried alongside a failure (upstream's `{ success: false, error, ...rest }`).
|
|
37
|
+
extra: Mapping[str, Any] = field(default_factory=dict)
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def success(self) -> Literal[False]:
|
|
41
|
+
return False
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
Result: TypeAlias = Ok[T] | Err[E]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def ok(value: T = None) -> Ok[T]: # type: ignore[assignment]
|
|
48
|
+
return Ok(value)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def err(error: E, **extra: Any) -> Err[E]:
|
|
52
|
+
return Err(error, extra)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
failure_result = err
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@overload
|
|
59
|
+
def unwrap_result(result: Ok[T] | Err[Any]) -> T: ...
|
|
60
|
+
@overload
|
|
61
|
+
def unwrap_result(result: Ok[T] | Err[Any], default: T) -> T: ...
|
|
62
|
+
def unwrap_result(result: Ok[T] | Err[Any], default: Any = _MISSING) -> Any:
|
|
63
|
+
"""Return the success value, else ``default`` if given, else raise the contained error."""
|
|
64
|
+
if isinstance(result, Ok):
|
|
65
|
+
return result.value
|
|
66
|
+
if default is not _MISSING:
|
|
67
|
+
return default
|
|
68
|
+
raise result.error
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _data_dict(value: Any) -> dict[str, Any]:
|
|
72
|
+
if value is None:
|
|
73
|
+
return {}
|
|
74
|
+
if isinstance(value, Mapping):
|
|
75
|
+
return dict(value)
|
|
76
|
+
model_dump = getattr(value, "model_dump", None)
|
|
77
|
+
if callable(model_dump):
|
|
78
|
+
return model_dump(mode="json", by_alias=True)
|
|
79
|
+
if dataclasses.is_dataclass(value) and not isinstance(value, type):
|
|
80
|
+
return dataclasses.asdict(value)
|
|
81
|
+
return {"value": value}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def serialize_result(result: Ok[Any] | Err[Any] | Mapping[str, Any]) -> dict[str, Any]:
|
|
85
|
+
"""Convert a result to its JSON-serialisable form.
|
|
86
|
+
|
|
87
|
+
Failures replace ``error`` with its message and, for typed ``BaseError``s, add
|
|
88
|
+
``errorName`` and ``errorSource``. Plain dict results (``{"success": ..., "error": exc}``)
|
|
89
|
+
are accepted too.
|
|
90
|
+
"""
|
|
91
|
+
if isinstance(result, Ok):
|
|
92
|
+
return {"success": True, **_data_dict(result.value)}
|
|
93
|
+
if isinstance(result, Err):
|
|
94
|
+
error, rest = result.error, {"success": False, **result.extra}
|
|
95
|
+
else:
|
|
96
|
+
if result.get("success"):
|
|
97
|
+
return dict(result)
|
|
98
|
+
rest = {k: v for k, v in result.items() if k != "error"}
|
|
99
|
+
error = result.get("error")
|
|
100
|
+
serialized: dict[str, Any] = {**rest, "error": str(error) if error is not None else None}
|
|
101
|
+
if isinstance(error, BaseError):
|
|
102
|
+
serialized["errorName"] = error.name
|
|
103
|
+
serialized["errorSource"] = error.error_source
|
|
104
|
+
return serialized
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Schema I/O (config files on disk)."""
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from agentcore.lib.schemas.io.config_io import ConfigIO, create_config_io, get_schema_url_for_version
|
|
2
|
+
from agentcore.lib.schemas.io.path_resolver import (
|
|
3
|
+
PathConfig,
|
|
4
|
+
PathResolver,
|
|
5
|
+
default_path_config,
|
|
6
|
+
find_config_root,
|
|
7
|
+
find_project_root,
|
|
8
|
+
get_session_project_root,
|
|
9
|
+
get_working_directory,
|
|
10
|
+
require_config_root,
|
|
11
|
+
set_session_project_root,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"ConfigIO",
|
|
16
|
+
"PathConfig",
|
|
17
|
+
"PathResolver",
|
|
18
|
+
"create_config_io",
|
|
19
|
+
"default_path_config",
|
|
20
|
+
"find_config_root",
|
|
21
|
+
"find_project_root",
|
|
22
|
+
"get_schema_url_for_version",
|
|
23
|
+
"get_session_project_root",
|
|
24
|
+
"get_working_directory",
|
|
25
|
+
"require_config_root",
|
|
26
|
+
"set_session_project_root",
|
|
27
|
+
]
|