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.
Files changed (655) hide show
  1. agentcore/__init__.py +1 -0
  2. agentcore/agent_inspector/NOTICE +9 -0
  3. agentcore/agent_inspector/favicon.svg +60 -0
  4. agentcore/agent_inspector/index.css +1 -0
  5. agentcore/agent_inspector/index.html +14 -0
  6. agentcore/agent_inspector/index.js +289 -0
  7. agentcore/assets/AGENTS.md +60 -0
  8. agentcore/assets/README.md +108 -0
  9. agentcore/assets/agents/AGENTS.md +218 -0
  10. agentcore/assets/cdk/.prettierrc +8 -0
  11. agentcore/assets/cdk/README.md +26 -0
  12. agentcore/assets/cdk/bin/cdk.ts +216 -0
  13. agentcore/assets/cdk/cdk.json +88 -0
  14. agentcore/assets/cdk/gitignore.template +9 -0
  15. agentcore/assets/cdk/jest.config.js +9 -0
  16. agentcore/assets/cdk/lib/cdk-stack.ts +291 -0
  17. agentcore/assets/cdk/npmignore.template +6 -0
  18. agentcore/assets/cdk/package.json +30 -0
  19. agentcore/assets/cdk/test/cdk.test.ts +31 -0
  20. agentcore/assets/cdk/tsconfig.json +28 -0
  21. agentcore/assets/container/python/Dockerfile +47 -0
  22. agentcore/assets/container/python/dockerignore.template +27 -0
  23. agentcore/assets/container/typescript/Dockerfile +25 -0
  24. agentcore/assets/container/typescript/dockerignore.template +24 -0
  25. agentcore/assets/datasets/predefined-v1.jsonl +3 -0
  26. agentcore/assets/datasets/simulated-v1.jsonl +3 -0
  27. agentcore/assets/evaluators/autoevals-lambda/execution-role-policy.json +15 -0
  28. agentcore/assets/evaluators/autoevals-lambda/lambda_function.py +37 -0
  29. agentcore/assets/evaluators/autoevals-lambda/pyproject.toml +22 -0
  30. agentcore/assets/evaluators/deepeval-lambda/execution-role-policy.json +15 -0
  31. agentcore/assets/evaluators/deepeval-lambda/lambda_function.py +29 -0
  32. agentcore/assets/evaluators/deepeval-lambda/pyproject.toml +19 -0
  33. agentcore/assets/evaluators/python-lambda/execution-role-policy.json +10 -0
  34. agentcore/assets/evaluators/python-lambda/lambda_function.py +19 -0
  35. agentcore/assets/evaluators/python-lambda/pyproject.toml +15 -0
  36. agentcore/assets/harness/invoke.py.template +74 -0
  37. agentcore/assets/mcp/python/README.md +27 -0
  38. agentcore/assets/mcp/python/pyproject.toml +22 -0
  39. agentcore/assets/mcp/python/server.py +117 -0
  40. agentcore/assets/mcp/python-lambda/README.md +22 -0
  41. agentcore/assets/mcp/python-lambda/handler.py +144 -0
  42. agentcore/assets/mcp/python-lambda/pyproject.toml +15 -0
  43. agentcore/assets/python/a2a/googleadk/base/README.md +22 -0
  44. agentcore/assets/python/a2a/googleadk/base/gitignore.template +41 -0
  45. agentcore/assets/python/a2a/googleadk/base/main.py +124 -0
  46. agentcore/assets/python/a2a/googleadk/base/model/__init__.py +1 -0
  47. agentcore/assets/python/a2a/googleadk/base/model/load.py +41 -0
  48. agentcore/assets/python/a2a/googleadk/base/pyproject.toml +22 -0
  49. agentcore/assets/python/a2a/langchain_langgraph/base/README.md +22 -0
  50. agentcore/assets/python/a2a/langchain_langgraph/base/gitignore.template +41 -0
  51. agentcore/assets/python/a2a/langchain_langgraph/base/main.py +144 -0
  52. agentcore/assets/python/a2a/langchain_langgraph/base/model/__init__.py +1 -0
  53. agentcore/assets/python/a2a/langchain_langgraph/base/model/load.py +123 -0
  54. agentcore/assets/python/a2a/langchain_langgraph/base/pyproject.toml +26 -0
  55. agentcore/assets/python/a2a/strands/base/README.md +22 -0
  56. agentcore/assets/python/a2a/strands/base/gitignore.template +41 -0
  57. agentcore/assets/python/a2a/strands/base/main.py +113 -0
  58. agentcore/assets/python/a2a/strands/base/model/__init__.py +1 -0
  59. agentcore/assets/python/a2a/strands/base/model/load.py +123 -0
  60. agentcore/assets/python/a2a/strands/base/pyproject.toml +23 -0
  61. agentcore/assets/python/a2a/strands/capabilities/memory/__init__.py +1 -0
  62. agentcore/assets/python/a2a/strands/capabilities/memory/session.py +46 -0
  63. agentcore/assets/python/agui/googleadk/base/README.md +30 -0
  64. agentcore/assets/python/agui/googleadk/base/gitignore.template +41 -0
  65. agentcore/assets/python/agui/googleadk/base/main.py +91 -0
  66. agentcore/assets/python/agui/googleadk/base/model/__init__.py +1 -0
  67. agentcore/assets/python/agui/googleadk/base/model/load.py +41 -0
  68. agentcore/assets/python/agui/googleadk/base/pyproject.toml +25 -0
  69. agentcore/assets/python/agui/langchain_langgraph/base/README.md +22 -0
  70. agentcore/assets/python/agui/langchain_langgraph/base/gitignore.template +41 -0
  71. agentcore/assets/python/agui/langchain_langgraph/base/main.py +130 -0
  72. agentcore/assets/python/agui/langchain_langgraph/base/model/__init__.py +1 -0
  73. agentcore/assets/python/agui/langchain_langgraph/base/model/load.py +123 -0
  74. agentcore/assets/python/agui/langchain_langgraph/base/pyproject.toml +31 -0
  75. agentcore/assets/python/agui/strands/base/README.md +22 -0
  76. agentcore/assets/python/agui/strands/base/gitignore.template +41 -0
  77. agentcore/assets/python/agui/strands/base/main.py +105 -0
  78. agentcore/assets/python/agui/strands/base/model/__init__.py +1 -0
  79. agentcore/assets/python/agui/strands/base/model/load.py +123 -0
  80. agentcore/assets/python/agui/strands/base/pyproject.toml +27 -0
  81. agentcore/assets/python/agui/strands/capabilities/memory/__init__.py +1 -0
  82. agentcore/assets/python/agui/strands/capabilities/memory/session.py +46 -0
  83. agentcore/assets/python/http/autogen/base/README.md +45 -0
  84. agentcore/assets/python/http/autogen/base/gitignore.template +41 -0
  85. agentcore/assets/python/http/autogen/base/main.py +145 -0
  86. agentcore/assets/python/http/autogen/base/mcp_client/__init__.py +1 -0
  87. agentcore/assets/python/http/autogen/base/mcp_client/client.py +28 -0
  88. agentcore/assets/python/http/autogen/base/model/__init__.py +1 -0
  89. agentcore/assets/python/http/autogen/base/model/load.py +136 -0
  90. agentcore/assets/python/http/autogen/base/pyproject.toml +34 -0
  91. agentcore/assets/python/http/bma/base/Dockerfile +41 -0
  92. agentcore/assets/python/http/bma/base/README.md +178 -0
  93. agentcore/assets/python/http/bma/base/client.py +200 -0
  94. agentcore/assets/python/http/bma/base/lifecycle/server.py +641 -0
  95. agentcore/assets/python/http/bma/base/otel/collector.yaml +69 -0
  96. agentcore/assets/python/http/bma/base/plugins/acr-report/.codex-plugin/plugin.json +6 -0
  97. agentcore/assets/python/http/bma/base/plugins/acr-report/skills/acr-report/SKILL.md +16 -0
  98. agentcore/assets/python/http/bma/base/policies/bma-acr-policy.json +11 -0
  99. agentcore/assets/python/http/bma/base/policies/bma-session-policy.json +35 -0
  100. agentcore/assets/python/http/bma/base/policies/bma-session-trust.json +20 -0
  101. agentcore/assets/python/http/bma/base/pyproject.toml +21 -0
  102. agentcore/assets/python/http/googleadk/base/README.md +45 -0
  103. agentcore/assets/python/http/googleadk/base/gitignore.template +41 -0
  104. agentcore/assets/python/http/googleadk/base/main.py +207 -0
  105. agentcore/assets/python/http/googleadk/base/mcp_client/__init__.py +1 -0
  106. agentcore/assets/python/http/googleadk/base/mcp_client/client.py +75 -0
  107. agentcore/assets/python/http/googleadk/base/model/__init__.py +1 -0
  108. agentcore/assets/python/http/googleadk/base/model/load.py +41 -0
  109. agentcore/assets/python/http/googleadk/base/pyproject.toml +24 -0
  110. agentcore/assets/python/http/langchain_langgraph/base/README.md +45 -0
  111. agentcore/assets/python/http/langchain_langgraph/base/gitignore.template +41 -0
  112. agentcore/assets/python/http/langchain_langgraph/base/main.py +227 -0
  113. agentcore/assets/python/http/langchain_langgraph/base/mcp_client/__init__.py +1 -0
  114. agentcore/assets/python/http/langchain_langgraph/base/mcp_client/client.py +79 -0
  115. agentcore/assets/python/http/langchain_langgraph/base/model/__init__.py +1 -0
  116. agentcore/assets/python/http/langchain_langgraph/base/model/load.py +123 -0
  117. agentcore/assets/python/http/langchain_langgraph/base/pyproject.toml +38 -0
  118. agentcore/assets/python/http/openaiagents/base/README.md +45 -0
  119. agentcore/assets/python/http/openaiagents/base/gitignore.template +41 -0
  120. agentcore/assets/python/http/openaiagents/base/main.py +200 -0
  121. agentcore/assets/python/http/openaiagents/base/mcp_client/__init__.py +1 -0
  122. agentcore/assets/python/http/openaiagents/base/mcp_client/client.py +74 -0
  123. agentcore/assets/python/http/openaiagents/base/model/__init__.py +1 -0
  124. agentcore/assets/python/http/openaiagents/base/model/load.py +37 -0
  125. agentcore/assets/python/http/openaiagents/base/pyproject.toml +21 -0
  126. agentcore/assets/python/http/strands/base/README.md +46 -0
  127. agentcore/assets/python/http/strands/base/gitignore.template +41 -0
  128. agentcore/assets/python/http/strands/base/main.py +714 -0
  129. agentcore/assets/python/http/strands/base/mcp_client/__init__.py +1 -0
  130. agentcore/assets/python/http/strands/base/mcp_client/client.py +116 -0
  131. agentcore/assets/python/http/strands/base/model/__init__.py +1 -0
  132. agentcore/assets/python/http/strands/base/model/load.py +239 -0
  133. agentcore/assets/python/http/strands/base/model/mantle_compat.py +21 -0
  134. agentcore/assets/python/http/strands/base/pyproject.toml +31 -0
  135. agentcore/assets/python/http/strands/base/skills/fetcher.py +279 -0
  136. agentcore/assets/python/http/strands/capabilities/execution-limits/hooks/execution_limits.py +54 -0
  137. agentcore/assets/python/http/strands/capabilities/memory/__init__.py +1 -0
  138. agentcore/assets/python/http/strands/capabilities/memory/session.py +47 -0
  139. agentcore/assets/python/http/strands/capabilities/payments/__init__.py +4 -0
  140. agentcore/assets/python/http/strands/capabilities/payments/payments.py +142 -0
  141. agentcore/assets/python/mcp/standalone/base/README.md +36 -0
  142. agentcore/assets/python/mcp/standalone/base/gitignore.template +41 -0
  143. agentcore/assets/python/mcp/standalone/base/main.py +83 -0
  144. agentcore/assets/python/mcp/standalone/base/pyproject.toml +16 -0
  145. agentcore/assets/typescript/.gitkeep +0 -0
  146. agentcore/assets/typescript/http/strands/base/README.md +42 -0
  147. agentcore/assets/typescript/http/strands/base/gitignore.template +22 -0
  148. agentcore/assets/typescript/http/strands/base/main.ts +149 -0
  149. agentcore/assets/typescript/http/strands/base/mcp_client/client.ts +11 -0
  150. agentcore/assets/typescript/http/strands/base/model/load.ts +102 -0
  151. agentcore/assets/typescript/http/strands/base/package.json +38 -0
  152. agentcore/assets/typescript/http/strands/base/tsconfig.json +19 -0
  153. agentcore/assets/typescript/http/strands/capabilities/memory/memory.ts +52 -0
  154. agentcore/assets/typescript/http/vercelai/base/README.md +42 -0
  155. agentcore/assets/typescript/http/vercelai/base/gitignore.template +22 -0
  156. agentcore/assets/typescript/http/vercelai/base/main.ts +70 -0
  157. agentcore/assets/typescript/http/vercelai/base/model/load.ts +121 -0
  158. agentcore/assets/typescript/http/vercelai/base/package.json +35 -0
  159. agentcore/assets/typescript/http/vercelai/base/tsconfig.json +19 -0
  160. agentcore/aws/__init__.py +263 -0
  161. agentcore/aws/_aws_errors.py +72 -0
  162. agentcore/aws/_http.py +176 -0
  163. agentcore/aws/_util.py +37 -0
  164. agentcore/aws/account.py +165 -0
  165. agentcore/aws/agentcore.py +971 -0
  166. agentcore/aws/agentcore_ab_tests.py +230 -0
  167. agentcore/aws/agentcore_batch_evaluation.py +227 -0
  168. agentcore/aws/agentcore_config_bundles.py +220 -0
  169. agentcore/aws/agentcore_control.py +994 -0
  170. agentcore/aws/agentcore_datasets.py +222 -0
  171. agentcore/aws/agentcore_harness.py +330 -0
  172. agentcore/aws/agentcore_payments.py +430 -0
  173. agentcore/aws/agentcore_recommendation.py +140 -0
  174. agentcore/aws/agui_parser.py +131 -0
  175. agentcore/aws/agui_types.py +342 -0
  176. agentcore/aws/api_client.py +87 -0
  177. agentcore/aws/arn.py +18 -0
  178. agentcore/aws/aws_context.py +23 -0
  179. agentcore/aws/bedrock.py +44 -0
  180. agentcore/aws/bedrock_agent.py +129 -0
  181. agentcore/aws/bedrock_import.py +252 -0
  182. agentcore/aws/bedrock_import_types.py +111 -0
  183. agentcore/aws/cloudwatch.py +136 -0
  184. agentcore/aws/connect_shell.py +266 -0
  185. agentcore/aws/iam.py +41 -0
  186. agentcore/aws/partition.py +58 -0
  187. agentcore/aws/policy_generation.py +116 -0
  188. agentcore/aws/region.py +54 -0
  189. agentcore/aws/retry.py +27 -0
  190. agentcore/aws/shell_framer.py +136 -0
  191. agentcore/aws/stage_endpoint.py +39 -0
  192. agentcore/aws/target_region.py +54 -0
  193. agentcore/aws/transaction_search.py +97 -0
  194. agentcore/cdk/__init__.py +10 -0
  195. agentcore/cdk/constants.py +13 -0
  196. agentcore/cdk/local_cdk_project.py +48 -0
  197. agentcore/cdk/toolkit.py +706 -0
  198. agentcore/cli/__init__.py +0 -0
  199. agentcore/cli/commands/__init__.py +0 -0
  200. agentcore/cli/commands/_jobs_common.py +39 -0
  201. agentcore/cli/commands/_run_wizards.py +639 -0
  202. agentcore/cli/commands/add/__init__.py +37 -0
  203. agentcore/cli/commands/add/_commander.py +52 -0
  204. agentcore/cli/commands/add/_common.py +47 -0
  205. agentcore/cli/commands/add/agent_wizard.py +528 -0
  206. agentcore/cli/commands/add/auth_options.py +154 -0
  207. agentcore/cli/commands/add/skill_action.py +105 -0
  208. agentcore/cli/commands/add/skill_command.py +87 -0
  209. agentcore/cli/commands/add/tool_action.py +160 -0
  210. agentcore/cli/commands/add/tool_command.py +117 -0
  211. agentcore/cli/commands/add/validate.py +333 -0
  212. agentcore/cli/commands/capacity_provider/__init__.py +86 -0
  213. agentcore/cli/commands/capacity_provider/action.py +114 -0
  214. agentcore/cli/commands/capacity_provider/constants.py +22 -0
  215. agentcore/cli/commands/config.py +91 -0
  216. agentcore/cli/commands/config_bundle.py +251 -0
  217. agentcore/cli/commands/create/__init__.py +643 -0
  218. agentcore/cli/commands/create/action.py +406 -0
  219. agentcore/cli/commands/create/dependencies.py +91 -0
  220. agentcore/cli/commands/create/harness_validate.py +82 -0
  221. agentcore/cli/commands/create/validate.py +195 -0
  222. agentcore/cli/commands/create/wizard.py +127 -0
  223. agentcore/cli/commands/dataset.py +119 -0
  224. agentcore/cli/commands/deploy/__init__.py +31 -0
  225. agentcore/cli/commands/deploy/_guards.py +25 -0
  226. agentcore/cli/commands/deploy/actions.py +840 -0
  227. agentcore/cli/commands/deploy/command.py +349 -0
  228. agentcore/cli/commands/deploy/progress.py +115 -0
  229. agentcore/cli/commands/deploy/types.py +68 -0
  230. agentcore/cli/commands/deploy/utils.py +43 -0
  231. agentcore/cli/commands/deploy/validate.py +21 -0
  232. agentcore/cli/commands/dev/__init__.py +5 -0
  233. agentcore/cli/commands/dev/_deps.py +50 -0
  234. agentcore/cli/commands/dev/browser_mode.py +270 -0
  235. agentcore/cli/commands/dev/command.py +450 -0
  236. agentcore/cli/commands/dev/terminal_mode.py +379 -0
  237. agentcore/cli/commands/exec/__init__.py +29 -0
  238. agentcore/cli/commands/exec/action.py +442 -0
  239. agentcore/cli/commands/exec/command.py +206 -0
  240. agentcore/cli/commands/exec/types.py +35 -0
  241. agentcore/cli/commands/export/__init__.py +114 -0
  242. agentcore/cli/commands/export/constants.py +21 -0
  243. agentcore/cli/commands/export/fetch_harness_spec.py +234 -0
  244. agentcore/cli/commands/export/harness_action.py +385 -0
  245. agentcore/cli/commands/export/harness_mapper.py +868 -0
  246. agentcore/cli/commands/export/harness_resolver.py +95 -0
  247. agentcore/cli/commands/export/types.py +90 -0
  248. agentcore/cli/commands/export/wizard.py +97 -0
  249. agentcore/cli/commands/feedback/__init__.py +69 -0
  250. agentcore/cli/commands/feedback/action.py +30 -0
  251. agentcore/cli/commands/feedback/consent_prompt.py +35 -0
  252. agentcore/cli/commands/feedback/wizard.py +49 -0
  253. agentcore/cli/commands/fetch/__init__.py +69 -0
  254. agentcore/cli/commands/fetch/action.py +62 -0
  255. agentcore/cli/commands/help.py +65 -0
  256. agentcore/cli/commands/import_/__init__.py +167 -0
  257. agentcore/cli/commands/import_/_js.py +72 -0
  258. agentcore/cli/commands/import_/actions.py +457 -0
  259. agentcore/cli/commands/import_/constants.py +45 -0
  260. agentcore/cli/commands/import_/import_evaluator.py +140 -0
  261. agentcore/cli/commands/import_/import_gateway.py +520 -0
  262. agentcore/cli/commands/import_/import_memory.py +128 -0
  263. agentcore/cli/commands/import_/import_online_eval.py +165 -0
  264. agentcore/cli/commands/import_/import_pipeline.py +145 -0
  265. agentcore/cli/commands/import_/import_runtime.py +214 -0
  266. agentcore/cli/commands/import_/import_utils.py +410 -0
  267. agentcore/cli/commands/import_/phase1_update.py +110 -0
  268. agentcore/cli/commands/import_/phase2_import.py +206 -0
  269. agentcore/cli/commands/import_/resource_import.py +228 -0
  270. agentcore/cli/commands/import_/template_utils.py +148 -0
  271. agentcore/cli/commands/import_/types.py +150 -0
  272. agentcore/cli/commands/import_/yaml_parser.py +265 -0
  273. agentcore/cli/commands/init.py +196 -0
  274. agentcore/cli/commands/invoke/__init__.py +32 -0
  275. agentcore/cli/commands/invoke/_deps.py +73 -0
  276. agentcore/cli/commands/invoke/action.py +840 -0
  277. agentcore/cli/commands/invoke/command.py +490 -0
  278. agentcore/cli/commands/invoke/constants.py +40 -0
  279. agentcore/cli/commands/invoke/guards.py +23 -0
  280. agentcore/cli/commands/invoke/interactive.py +604 -0
  281. agentcore/cli/commands/invoke/resolve.py +149 -0
  282. agentcore/cli/commands/invoke/resolve_prompt.py +60 -0
  283. agentcore/cli/commands/invoke/types.py +61 -0
  284. agentcore/cli/commands/invoke/validate.py +33 -0
  285. agentcore/cli/commands/job_actions.py +239 -0
  286. agentcore/cli/commands/job_history.py +380 -0
  287. agentcore/cli/commands/logs/__init__.py +53 -0
  288. agentcore/cli/commands/logs/action.py +159 -0
  289. agentcore/cli/commands/logs/filter_pattern.py +17 -0
  290. agentcore/cli/commands/logs/guards.py +51 -0
  291. agentcore/cli/commands/logs_evals.py +42 -0
  292. agentcore/cli/commands/package.py +118 -0
  293. agentcore/cli/commands/remove/__init__.py +172 -0
  294. agentcore/cli/commands/remove/skill_command.py +131 -0
  295. agentcore/cli/commands/remove/tool_command.py +59 -0
  296. agentcore/cli/commands/run.py +808 -0
  297. agentcore/cli/commands/run_ingest.py +97 -0
  298. agentcore/cli/commands/shared/__init__.py +0 -0
  299. agentcore/cli/commands/shared/arn_utils.py +9 -0
  300. agentcore/cli/commands/shared/filesystem_utils.py +421 -0
  301. agentcore/cli/commands/shared/header_utils.py +87 -0
  302. agentcore/cli/commands/shared/indexed_key_parser.py +76 -0
  303. agentcore/cli/commands/shared/lifecycle_utils.py +72 -0
  304. agentcore/cli/commands/shared/region_utils.py +20 -0
  305. agentcore/cli/commands/shared/vpc_utils.py +99 -0
  306. agentcore/cli/commands/status/__init__.py +30 -0
  307. agentcore/cli/commands/status/_guards.py +25 -0
  308. agentcore/cli/commands/status/action.py +741 -0
  309. agentcore/cli/commands/status/command.py +321 -0
  310. agentcore/cli/commands/status/constants.py +36 -0
  311. agentcore/cli/commands/status/format_knowledge_base.py +111 -0
  312. agentcore/cli/commands/telemetry.py +79 -0
  313. agentcore/cli/commands/traces/__init__.py +155 -0
  314. agentcore/cli/commands/traces/action.py +123 -0
  315. agentcore/cli/commands/update/__init__.py +63 -0
  316. agentcore/cli/commands/update/action.py +164 -0
  317. agentcore/cli/commands/validate.py +165 -0
  318. agentcore/cli/constants.py +96 -0
  319. agentcore/cli/errors.py +118 -0
  320. agentcore/cli/external_requirements/__init__.py +67 -0
  321. agentcore/cli/external_requirements/checks.py +280 -0
  322. agentcore/cli/external_requirements/detect.py +55 -0
  323. agentcore/cli/external_requirements/versions.py +57 -0
  324. agentcore/cli/groups.py +23 -0
  325. agentcore/cli/interactive.py +85 -0
  326. agentcore/cli/main.py +137 -0
  327. agentcore/cli/naming.py +11 -0
  328. agentcore/cli/notices.py +42 -0
  329. agentcore/cli/project.py +34 -0
  330. agentcore/cli/run_command.py +27 -0
  331. agentcore/cli/tree.py +135 -0
  332. agentcore/cli/update_notifier.py +123 -0
  333. agentcore/cli/variadic.py +50 -0
  334. agentcore/cloudformation/__init__.py +84 -0
  335. agentcore/cloudformation/bootstrap.py +64 -0
  336. agentcore/cloudformation/logical_ids.py +37 -0
  337. agentcore/cloudformation/outputs.py +566 -0
  338. agentcore/cloudformation/stack_discovery.py +75 -0
  339. agentcore/cloudformation/stack_events.py +107 -0
  340. agentcore/cloudformation/stack_status.py +98 -0
  341. agentcore/cloudformation/types.py +44 -0
  342. agentcore/lib/__init__.py +68 -0
  343. agentcore/lib/constants.py +77 -0
  344. agentcore/lib/dependency_management/__init__.py +23 -0
  345. agentcore/lib/dependency_management/messages.py +92 -0
  346. agentcore/lib/dependency_management/plan.py +98 -0
  347. agentcore/lib/dependency_management/semver.py +137 -0
  348. agentcore/lib/dependency_management/sync.py +139 -0
  349. agentcore/lib/dependency_management/types.py +56 -0
  350. agentcore/lib/errors/__init__.py +5 -0
  351. agentcore/lib/errors/types.py +352 -0
  352. agentcore/lib/errors/validation.py +121 -0
  353. agentcore/lib/packaging/__init__.py +81 -0
  354. agentcore/lib/packaging/build_args.py +23 -0
  355. agentcore/lib/packaging/build_context.py +26 -0
  356. agentcore/lib/packaging/build_context_dockerignore.py +45 -0
  357. agentcore/lib/packaging/container.py +95 -0
  358. agentcore/lib/packaging/helpers.py +289 -0
  359. agentcore/lib/packaging/node.py +153 -0
  360. agentcore/lib/packaging/python.py +135 -0
  361. agentcore/lib/packaging/types.py +69 -0
  362. agentcore/lib/packaging/uv.py +45 -0
  363. agentcore/lib/result.py +104 -0
  364. agentcore/lib/schemas/__init__.py +1 -0
  365. agentcore/lib/schemas/io/__init__.py +27 -0
  366. agentcore/lib/schemas/io/config_io.py +458 -0
  367. agentcore/lib/schemas/io/global_config.py +239 -0
  368. agentcore/lib/schemas/io/path_resolver.py +132 -0
  369. agentcore/lib/secrets/__init__.py +18 -0
  370. agentcore/lib/secrets/cipher.py +70 -0
  371. agentcore/lib/secrets/key_provider.py +163 -0
  372. agentcore/lib/secrets/sensitive_keys.py +55 -0
  373. agentcore/lib/time_constants.py +4 -0
  374. agentcore/lib/utils/__init__.py +47 -0
  375. agentcore/lib/utils/aws_account.py +15 -0
  376. agentcore/lib/utils/credentials.py +68 -0
  377. agentcore/lib/utils/dotenv.py +32 -0
  378. agentcore/lib/utils/env.py +105 -0
  379. agentcore/lib/utils/json_format.py +29 -0
  380. agentcore/lib/utils/json_rpc.py +22 -0
  381. agentcore/lib/utils/platform.py +33 -0
  382. agentcore/lib/utils/polling.py +86 -0
  383. agentcore/lib/utils/subprocess.py +135 -0
  384. agentcore/lib/utils/time_parser.py +48 -0
  385. agentcore/lib/utils/validation.py +106 -0
  386. agentcore/logging/__init__.py +10 -0
  387. agentcore/logging/_common.py +77 -0
  388. agentcore/logging/cdk_io_host.py +36 -0
  389. agentcore/logging/create_logger.py +107 -0
  390. agentcore/logging/dev_logger.py +63 -0
  391. agentcore/logging/exec_logger.py +159 -0
  392. agentcore/logging/invoke_logger.py +154 -0
  393. agentcore/logging/remove_logger.py +95 -0
  394. agentcore/operations/__init__.py +0 -0
  395. agentcore/operations/agent/__init__.py +0 -0
  396. agentcore/operations/agent/config_bundle_defaults.py +31 -0
  397. agentcore/operations/agent/generate/__init__.py +28 -0
  398. agentcore/operations/agent/generate/schema_mapper.py +319 -0
  399. agentcore/operations/agent/generate/types.py +172 -0
  400. agentcore/operations/agent/generate/write_agent_to_project.py +67 -0
  401. agentcore/operations/agent/import_/__init__.py +31 -0
  402. agentcore/operations/agent/import_/base_translator.py +449 -0
  403. agentcore/operations/agent/import_/constants.py +23 -0
  404. agentcore/operations/agent/import_/execute.py +127 -0
  405. agentcore/operations/agent/import_/langgraph_translator.py +294 -0
  406. agentcore/operations/agent/import_/pyproject_generator.py +73 -0
  407. agentcore/operations/agent/import_/strands_translator.py +289 -0
  408. agentcore/operations/config_bundle/__init__.py +1 -0
  409. agentcore/operations/config_bundle/bundle_name_variants.py +9 -0
  410. agentcore/operations/config_bundle/diff_versions.py +52 -0
  411. agentcore/operations/config_bundle/resolve_bundle.py +65 -0
  412. agentcore/operations/connectors/__init__.py +3 -0
  413. agentcore/operations/connectors/translators.py +63 -0
  414. agentcore/operations/dataset/__init__.py +21 -0
  415. agentcore/operations/dataset/delete.py +7 -0
  416. agentcore/operations/dataset/publish.py +16 -0
  417. agentcore/operations/dataset/pull.py +21 -0
  418. agentcore/operations/dataset/push.py +201 -0
  419. agentcore/operations/dataset/resolve_dataset.py +65 -0
  420. agentcore/operations/dataset/status.py +18 -0
  421. agentcore/operations/dataset/wait.py +25 -0
  422. agentcore/operations/deploy/__init__.py +152 -0
  423. agentcore/operations/deploy/backfill_vpc_id.py +90 -0
  424. agentcore/operations/deploy/change_detection.py +84 -0
  425. agentcore/operations/deploy/constants.py +58 -0
  426. agentcore/operations/deploy/dependency_sync.py +105 -0
  427. agentcore/operations/deploy/ensure_target.py +30 -0
  428. agentcore/operations/deploy/gateway_status.py +44 -0
  429. agentcore/operations/deploy/managed_memory_notice.py +36 -0
  430. agentcore/operations/deploy/payment_connector_authorization.py +106 -0
  431. agentcore/operations/deploy/post_deploy_datasets.py +96 -0
  432. agentcore/operations/deploy/post_deploy_knowledge_bases.py +104 -0
  433. agentcore/operations/deploy/post_deploy_observability.py +28 -0
  434. agentcore/operations/deploy/post_deploy_online_evals.py +60 -0
  435. agentcore/operations/deploy/pre_deploy_identity.py +505 -0
  436. agentcore/operations/deploy/preflight.py +385 -0
  437. agentcore/operations/deploy/region_override.py +45 -0
  438. agentcore/operations/deploy/teardown.py +153 -0
  439. agentcore/operations/dev/__init__.py +61 -0
  440. agentcore/operations/dev/_http.py +79 -0
  441. agentcore/operations/dev/_server.py +165 -0
  442. agentcore/operations/dev/codezip_dev_server.py +151 -0
  443. agentcore/operations/dev/config.py +128 -0
  444. agentcore/operations/dev/constants.py +9 -0
  445. agentcore/operations/dev/container_dev_server.py +237 -0
  446. agentcore/operations/dev/container_runtime.py +37 -0
  447. agentcore/operations/dev/dev_server.py +244 -0
  448. agentcore/operations/dev/gateway_env.py +25 -0
  449. agentcore/operations/dev/invoke.py +214 -0
  450. agentcore/operations/dev/invoke_a2a.py +204 -0
  451. agentcore/operations/dev/invoke_agui.py +88 -0
  452. agentcore/operations/dev/invoke_mcp.py +145 -0
  453. agentcore/operations/dev/invoke_types.py +30 -0
  454. agentcore/operations/dev/load_dev_env.py +26 -0
  455. agentcore/operations/dev/memory_env.py +19 -0
  456. agentcore/operations/dev/otel/__init__.py +5 -0
  457. agentcore/operations/dev/otel/collector.py +234 -0
  458. agentcore/operations/dev/otel/transforms.py +331 -0
  459. agentcore/operations/dev/payment_env.py +50 -0
  460. agentcore/operations/dev/server.py +28 -0
  461. agentcore/operations/dev/sse_transform.py +30 -0
  462. agentcore/operations/dev/utils.py +152 -0
  463. agentcore/operations/dev/web_ui/__init__.py +31 -0
  464. agentcore/operations/dev/web_ui/constants.py +25 -0
  465. agentcore/operations/dev/web_ui/handlers/__init__.py +36 -0
  466. agentcore/operations/dev/web_ui/handlers/_common.py +36 -0
  467. agentcore/operations/dev/web_ui/handlers/_deployed.py +37 -0
  468. agentcore/operations/dev/web_ui/handlers/a2a_proxy.py +37 -0
  469. agentcore/operations/dev/web_ui/handlers/cloudwatch_traces.py +71 -0
  470. agentcore/operations/dev/web_ui/handlers/harness_invocation.py +89 -0
  471. agentcore/operations/dev/web_ui/handlers/harness_utils.py +95 -0
  472. agentcore/operations/dev/web_ui/handlers/invocations.py +327 -0
  473. agentcore/operations/dev/web_ui/handlers/mcp_proxy.py +119 -0
  474. agentcore/operations/dev/web_ui/handlers/memory.py +84 -0
  475. agentcore/operations/dev/web_ui/handlers/resources.py +351 -0
  476. agentcore/operations/dev/web_ui/handlers/start.py +182 -0
  477. agentcore/operations/dev/web_ui/handlers/status.py +25 -0
  478. agentcore/operations/dev/web_ui/handlers/traces.py +50 -0
  479. agentcore/operations/dev/web_ui/run_web_ui.py +60 -0
  480. agentcore/operations/dev/web_ui/web_server.py +297 -0
  481. agentcore/operations/eval/__init__.py +8 -0
  482. agentcore/operations/eval/list_eval_runs.py +18 -0
  483. agentcore/operations/eval/logs_eval.py +119 -0
  484. agentcore/operations/eval/pause_resume.py +90 -0
  485. agentcore/operations/eval/run_eval.py +354 -0
  486. agentcore/operations/eval/shared/__init__.py +0 -0
  487. agentcore/operations/eval/shared/dataset_loader.py +68 -0
  488. agentcore/operations/eval/shared/dataset_session_provider.py +122 -0
  489. agentcore/operations/eval/shared/evaluator_runner.py +89 -0
  490. agentcore/operations/eval/shared/scenario_executor.py +71 -0
  491. agentcore/operations/eval/shared/span_collector.py +255 -0
  492. agentcore/operations/eval/storage.py +67 -0
  493. agentcore/operations/feedback/__init__.py +21 -0
  494. agentcore/operations/feedback/aperture_client.py +98 -0
  495. agentcore/operations/feedback/build_payload.py +97 -0
  496. agentcore/operations/feedback/constants.py +26 -0
  497. agentcore/operations/feedback/submit_feedback.py +150 -0
  498. agentcore/operations/fetch_access/__init__.py +36 -0
  499. agentcore/operations/fetch_access/_target.py +17 -0
  500. agentcore/operations/fetch_access/fetch_gateway_token.py +75 -0
  501. agentcore/operations/fetch_access/fetch_harness_token.py +72 -0
  502. agentcore/operations/fetch_access/fetch_runtime_token.py +76 -0
  503. agentcore/operations/fetch_access/list_agents.py +18 -0
  504. agentcore/operations/fetch_access/list_gateways.py +26 -0
  505. agentcore/operations/fetch_access/list_harnesses.py +23 -0
  506. agentcore/operations/fetch_access/oauth_token.py +162 -0
  507. agentcore/operations/fetch_access/types.py +34 -0
  508. agentcore/operations/harness/__init__.py +1 -0
  509. agentcore/operations/harness/orphan.py +84 -0
  510. agentcore/operations/harness/skill_utils.py +56 -0
  511. agentcore/operations/identity/__init__.py +33 -0
  512. agentcore/operations/identity/api_key_credential_provider.py +68 -0
  513. agentcore/operations/identity/oauth2_credential_provider.py +95 -0
  514. agentcore/operations/ingest/__init__.py +184 -0
  515. agentcore/operations/init/__init__.py +3 -0
  516. agentcore/operations/init/files.py +59 -0
  517. agentcore/operations/insights/__init__.py +21 -0
  518. agentcore/operations/insights/insights_storage.py +67 -0
  519. agentcore/operations/insights/run_insights.py +148 -0
  520. agentcore/operations/invoke/__init__.py +5 -0
  521. agentcore/operations/invoke/resolve_agent_context.py +85 -0
  522. agentcore/operations/jobs/__init__.py +38 -0
  523. agentcore/operations/jobs/ab_test/__init__.py +0 -0
  524. agentcore/operations/jobs/ab_test/build_options.py +126 -0
  525. agentcore/operations/jobs/ab_test/format.py +121 -0
  526. agentcore/operations/jobs/ab_test/handler.py +412 -0
  527. agentcore/operations/jobs/ab_test/promote.py +142 -0
  528. agentcore/operations/jobs/ab_test/resolve.py +221 -0
  529. agentcore/operations/jobs/batch_evaluation/__init__.py +0 -0
  530. agentcore/operations/jobs/batch_evaluation/build_source.py +68 -0
  531. agentcore/operations/jobs/batch_evaluation/dataset_phase1.py +95 -0
  532. agentcore/operations/jobs/batch_evaluation/format.py +58 -0
  533. agentcore/operations/jobs/batch_evaluation/handler.py +203 -0
  534. agentcore/operations/jobs/insights/__init__.py +0 -0
  535. agentcore/operations/jobs/insights/format.py +65 -0
  536. agentcore/operations/jobs/insights/handler.py +178 -0
  537. agentcore/operations/jobs/recommendation/__init__.py +0 -0
  538. agentcore/operations/jobs/recommendation/apply_to_bundle.py +76 -0
  539. agentcore/operations/jobs/recommendation/build_config.py +271 -0
  540. agentcore/operations/jobs/recommendation/fetch_session_spans.py +93 -0
  541. agentcore/operations/jobs/recommendation/format.py +77 -0
  542. agentcore/operations/jobs/recommendation/handler.py +331 -0
  543. agentcore/operations/jobs/shared/__init__.py +0 -0
  544. agentcore/operations/jobs/shared/constants.py +85 -0
  545. agentcore/operations/jobs/shared/engine.py +187 -0
  546. agentcore/operations/jobs/shared/format.py +104 -0
  547. agentcore/operations/jobs/shared/region.py +34 -0
  548. agentcore/operations/jobs/shared/resolve_agent_state.py +30 -0
  549. agentcore/operations/jobs/shared/storage.py +117 -0
  550. agentcore/operations/jobs/shared/wait.py +30 -0
  551. agentcore/operations/knowledge_base/__init__.py +33 -0
  552. agentcore/operations/knowledge_base/connector_config.py +105 -0
  553. agentcore/operations/knowledge_base/hydrate_data_sources.py +59 -0
  554. agentcore/operations/mcp/__init__.py +4 -0
  555. agentcore/operations/memory/__init__.py +13 -0
  556. agentcore/operations/memory/_records.py +72 -0
  557. agentcore/operations/memory/list_memory_records.py +45 -0
  558. agentcore/operations/memory/retrieve_memory_records.py +52 -0
  559. agentcore/operations/node/__init__.py +15 -0
  560. agentcore/operations/node/setup.py +36 -0
  561. agentcore/operations/python/__init__.py +17 -0
  562. agentcore/operations/python/setup.py +47 -0
  563. agentcore/operations/resolve_agent.py +159 -0
  564. agentcore/operations/session/__init__.py +86 -0
  565. agentcore/operations/traces/__init__.py +29 -0
  566. agentcore/operations/traces/get_trace.py +202 -0
  567. agentcore/operations/traces/insights_query.py +74 -0
  568. agentcore/operations/traces/list_traces.py +46 -0
  569. agentcore/operations/traces/trace_url.py +25 -0
  570. agentcore/operations/traces/types.py +55 -0
  571. agentcore/primitives/__init__.py +0 -0
  572. agentcore/primitives/_gateway_target_wizard.py +293 -0
  573. agentcore/primitives/_gateway_validation.py +442 -0
  574. agentcore/primitives/_harness_cli.py +557 -0
  575. agentcore/primitives/_harness_validation.py +163 -0
  576. agentcore/primitives/_harness_wizard.py +726 -0
  577. agentcore/primitives/_knowledge_base_wizard.py +259 -0
  578. agentcore/primitives/_payment_wizard.py +331 -0
  579. agentcore/primitives/_policy_form.py +160 -0
  580. agentcore/primitives/agent.py +817 -0
  581. agentcore/primitives/auth_utils.py +77 -0
  582. agentcore/primitives/base.py +178 -0
  583. agentcore/primitives/capacity_provider.py +501 -0
  584. agentcore/primitives/config_bundle.py +329 -0
  585. agentcore/primitives/credential.py +387 -0
  586. agentcore/primitives/credential_utils.py +45 -0
  587. agentcore/primitives/dataset.py +211 -0
  588. agentcore/primitives/deployed_gateways.py +34 -0
  589. agentcore/primitives/evaluator.py +909 -0
  590. agentcore/primitives/gateway.py +496 -0
  591. agentcore/primitives/gateway_target.py +988 -0
  592. agentcore/primitives/harness.py +706 -0
  593. agentcore/primitives/knowledge_base.py +477 -0
  594. agentcore/primitives/memory.py +387 -0
  595. agentcore/primitives/online_eval_config.py +365 -0
  596. agentcore/primitives/online_insights.py +275 -0
  597. agentcore/primitives/payment_connector.py +427 -0
  598. agentcore/primitives/payment_eligible.py +20 -0
  599. agentcore/primitives/payment_manager.py +605 -0
  600. agentcore/primitives/payment_validation.py +68 -0
  601. agentcore/primitives/policy.py +622 -0
  602. agentcore/primitives/policy_engine.py +358 -0
  603. agentcore/primitives/registry.py +56 -0
  604. agentcore/primitives/runtime_endpoint.py +361 -0
  605. agentcore/primitives/secret_flag_warning.py +17 -0
  606. agentcore/schema/__init__.py +14 -0
  607. agentcore/schema/_zod.py +395 -0
  608. agentcore/schema/constants.py +306 -0
  609. agentcore/schema/schemas/__init__.py +40 -0
  610. agentcore/schema/schemas/agent_env.py +545 -0
  611. agentcore/schema/schemas/agentcore_project.py +530 -0
  612. agentcore/schema/schemas/auth.py +286 -0
  613. agentcore/schema/schemas/aws_targets.py +72 -0
  614. agentcore/schema/schemas/connections.py +187 -0
  615. agentcore/schema/schemas/deployed_state.py +322 -0
  616. agentcore/schema/schemas/mcp.py +650 -0
  617. agentcore/schema/schemas/mcp_defs.py +54 -0
  618. agentcore/schema/schemas/primitives/__init__.py +52 -0
  619. agentcore/schema/schemas/primitives/ab_test.py +162 -0
  620. agentcore/schema/schemas/primitives/capacity_provider.py +214 -0
  621. agentcore/schema/schemas/primitives/config_bundle.py +48 -0
  622. agentcore/schema/schemas/primitives/dataset.py +55 -0
  623. agentcore/schema/schemas/primitives/evaluator.py +171 -0
  624. agentcore/schema/schemas/primitives/harness.py +710 -0
  625. agentcore/schema/schemas/primitives/knowledge_base.py +90 -0
  626. agentcore/schema/schemas/primitives/memory.py +113 -0
  627. agentcore/schema/schemas/primitives/online_eval_config.py +77 -0
  628. agentcore/schema/schemas/primitives/payment.py +114 -0
  629. agentcore/schema/schemas/primitives/policy.py +83 -0
  630. agentcore/schema/schemas/primitives/tags.py +50 -0
  631. agentcore/schema/schemas/zod_util.py +5 -0
  632. agentcore/schema/types/__init__.py +3 -0
  633. agentcore/schema/types/path.py +16 -0
  634. agentcore/templates/__init__.py +115 -0
  635. agentcore/templates/_handlebars.py +782 -0
  636. agentcore/templates/_js.py +164 -0
  637. agentcore/templates/base_renderer.py +107 -0
  638. agentcore/templates/cdk_renderer.py +129 -0
  639. agentcore/templates/evaluator_renderer.py +39 -0
  640. agentcore/templates/gateway_target_renderer.py +69 -0
  641. agentcore/templates/llm_context/README.md +16 -0
  642. agentcore/templates/llm_context/agentcore.ts +685 -0
  643. agentcore/templates/llm_context/aws-targets.ts +51 -0
  644. agentcore/templates/profiles.py +151 -0
  645. agentcore/templates/render.py +92 -0
  646. agentcore/templates/renderers.py +83 -0
  647. agentcore/templates/schema_assets.py +23 -0
  648. agentcore/templates/template_root.py +28 -0
  649. agentcore/templates/types.py +192 -0
  650. agentcore_cli-0.31.1.dist-info/METADATA +84 -0
  651. agentcore_cli-0.31.1.dist-info/RECORD +655 -0
  652. agentcore_cli-0.31.1.dist-info/WHEEL +4 -0
  653. agentcore_cli-0.31.1.dist-info/entry_points.txt +2 -0
  654. agentcore_cli-0.31.1.dist-info/licenses/LICENSE +175 -0
  655. agentcore_cli-0.31.1.dist-info/licenses/NOTICE +88 -0
@@ -0,0 +1,96 @@
1
+ """CLI constants (port of the parts of ``src/cli/constants.ts`` used so far).
2
+
3
+ Keep this a flat module of constants; other areas append what they need.
4
+ """
5
+
6
+ import os
7
+ import sys
8
+ from typing import Final
9
+
10
+ from agentcore.cdk.constants import CDK_APP_ENTRY, CDK_PROJECT_DIR
11
+
12
+ # Max length AWS BedrockAgentCore allows for a runtime name (combined projectName_agentName).
13
+ MAX_RUNTIME_NAME_LENGTH: Final = 48
14
+
15
+ # Max length of a gateway name (deployed as `${projectName}-${gatewayName}`).
16
+ MAX_GATEWAY_NAME_LENGTH: Final = 48
17
+
18
+ # Current schema version for AgentCore configuration files.
19
+ SCHEMA_VERSION: Final = 1
20
+
21
+ # Default runtime endpoint name used in log group paths and console URLs.
22
+ DEFAULT_ENDPOINT_NAME: Final = "DEFAULT"
23
+
24
+ TELEMETRY_ENDPOINT: Final = "https://telemetry.agentcore.aws.dev"
25
+
26
+ # Base image for generated Python Dockerfiles.
27
+ PYTHON_BASE_IMAGE: Final = "public.ecr.aws/docker/library/python:3.12-slim-trixie"
28
+
29
+ # Command descriptions used in CLI help.
30
+ COMMAND_DESCRIPTIONS: Final[dict[str, str]] = {
31
+ "program": "Build and deploy Agentic AI applications on AgentCore",
32
+ "add": "Add resources to project config.",
33
+ "create": "Create a new AgentCore project",
34
+ "deploy": "Deploy project infrastructure to AWS via CDK.",
35
+ "dev": "Launch local dev server, or invoke an agent locally.",
36
+ "exec": "Open an interactive shell or run a one-shot command in a deployed agent container.",
37
+ "invoke": "Invoke a deployed agent endpoint.",
38
+ "logs": "Stream or search agent runtime logs.",
39
+ "package": "Package agent artifacts without deploying.",
40
+ "remove": "Remove resources from project config.",
41
+ "status": "Show deployed resource details and status.",
42
+ "traces": "View and download agent traces.",
43
+ "evals": "View saved eval and batch eval results from past runs.",
44
+ "feedback": "Send feedback about the AgentCore CLI to the team.",
45
+ "fetch": "Fetch access info for deployed resources.",
46
+ "pause": "Pause a deployed resource (online eval config, A/B test).",
47
+ "resume": "Resume a paused resource (online eval config, A/B test).",
48
+ "recommend": "Run optimization recommendations for system prompts and tool descriptions.",
49
+ "recommendations": "View recommendation history from past runs.",
50
+ "run": "Run evaluations, batch evaluations, or optimization recommendations.",
51
+ "stop": "Stop a running batch evaluation or A/B test.",
52
+ "import": "Import a runtime, memory, or starter toolkit into this project. [experimental]",
53
+ "telemetry": "Manage anonymous usage analytics preferences.",
54
+ "update": "Check for and install CLI updates",
55
+ "validate": "Validate agentcore/ config files.",
56
+ "config-bundle": "Manage configuration bundle versions and diffs.",
57
+ "archive": "Archive (delete) a batch evaluation or recommendation on the service and clear local history.",
58
+ "config": "Adjust global configuration settings such as telemetry opt-out status",
59
+ "export": "Export a harness to a Strands runtime agent.",
60
+ }
61
+
62
+ # Color gating: ANSI codes only when both streams are TTYs (FORCE_COLOR / NO_COLOR override).
63
+ _STYLING_ENABLED: Final = bool(os.environ.get("FORCE_COLOR")) or (
64
+ not os.environ.get("NO_COLOR") and sys.stdout.isatty() and sys.stderr.isatty()
65
+ )
66
+
67
+
68
+ def _style(code: str) -> str:
69
+ return code if _STYLING_ENABLED else ""
70
+
71
+
72
+ class ANSI:
73
+ red: Final = _style("\x1b[31m")
74
+ green: Final = _style("\x1b[32m")
75
+ yellow: Final = _style("\x1b[33m")
76
+ cyan: Final = _style("\x1b[36m")
77
+ dim: Final = _style("\x1b[2m")
78
+ reset: Final = _style("\x1b[0m")
79
+ clear_line: Final = "\x1b[K"
80
+ enter_alt_screen: Final = "\x1b[?1049h\x1b[H"
81
+ exit_alt_screen: Final = "\x1b[?1049l"
82
+ show_cursor: Final = "\x1b[?25h"
83
+
84
+
85
+ __all__ = [
86
+ "ANSI",
87
+ "CDK_APP_ENTRY",
88
+ "CDK_PROJECT_DIR",
89
+ "COMMAND_DESCRIPTIONS",
90
+ "DEFAULT_ENDPOINT_NAME",
91
+ "MAX_GATEWAY_NAME_LENGTH",
92
+ "MAX_RUNTIME_NAME_LENGTH",
93
+ "PYTHON_BASE_IMAGE",
94
+ "SCHEMA_VERSION",
95
+ "TELEMETRY_ENDPOINT",
96
+ ]
@@ -0,0 +1,118 @@
1
+ """Error classification helpers (port of src/cli/errors.ts).
2
+
3
+ Upstream inspects AWS SDK v3 errors via ``err.name`` / ``err.Code``. For botocore the
4
+ equivalent is ``ClientError.response["Error"]["Code"]``; ``_error_code`` covers both.
5
+ """
6
+
7
+ from typing import Any
8
+
9
+ EXPIRED_TOKEN_ERROR_CODES = frozenset(
10
+ {
11
+ "ExpiredToken",
12
+ "ExpiredTokenException",
13
+ "TokenRefreshRequired",
14
+ "CredentialsExpired",
15
+ "InvalidIdentityToken",
16
+ "UnauthorizedAccess",
17
+ # AccessDenied / AccessDeniedException are authorization errors, not expired tokens.
18
+ "InvalidClientTokenId",
19
+ "SignatureDoesNotMatch",
20
+ "RequestExpired",
21
+ }
22
+ )
23
+
24
+
25
+ def get_error_message(err: Any) -> str:
26
+ return str(err)
27
+
28
+
29
+ def _error_code(err: Any) -> str | None:
30
+ response = getattr(err, "response", None)
31
+ if isinstance(response, dict):
32
+ code = (response.get("Error") or {}).get("Code")
33
+ if isinstance(code, str):
34
+ return code
35
+ for attr in ("name", "Code", "code"):
36
+ value = getattr(err, attr, None)
37
+ if isinstance(value, str):
38
+ return value
39
+ return None
40
+
41
+
42
+ def is_access_denied_error(err: Any) -> bool:
43
+ return err is not None and _error_code(err) in ("AccessDeniedException", "AccessDenied")
44
+
45
+
46
+ def is_no_credentials_error(err: Any) -> bool:
47
+ if err is None:
48
+ return False
49
+ if type(err).__name__ in ("AwsCredentialsError", "NoCredentialsError"):
50
+ return True
51
+ message = get_error_message(err).lower()
52
+ return any(
53
+ p in message
54
+ for p in (
55
+ "no aws credentials",
56
+ "could not load credentials",
57
+ "credentials not found",
58
+ "unable to locate credentials",
59
+ )
60
+ )
61
+
62
+
63
+ def is_expired_token_error(err: Any) -> bool:
64
+ if err is None:
65
+ return False
66
+ if _error_code(err) in EXPIRED_TOKEN_ERROR_CODES:
67
+ return True
68
+ if type(err).__name__ == "TokenRetrievalError": # botocore: SSO token expired
69
+ return True
70
+ cause = getattr(err, "__cause__", None)
71
+ if cause is not None: # upstream checks a wrapped error instead of the outer message
72
+ return is_expired_token_error(cause)
73
+ message = get_error_message(err).lower()
74
+ return any(
75
+ p in message
76
+ for p in (
77
+ "expired token",
78
+ "token has expired",
79
+ "credentials have expired",
80
+ "security token included in the request is expired",
81
+ "the security token included in the request is invalid",
82
+ )
83
+ )
84
+
85
+
86
+ def is_quota_exceeded_error(err: Any) -> bool:
87
+ if err is None:
88
+ return False
89
+ if _error_code(err) in ("ServiceQuotaExceededException", "LimitExceededException", "TooManyRequestsException"):
90
+ return True
91
+ message = get_error_message(err).lower()
92
+ return any(p in message for p in ("quota exceeded", "limit exceeded", "too many", "maximum number", "maxmanagers"))
93
+
94
+
95
+ def is_stack_in_progress_error(err: Any) -> bool:
96
+ message = get_error_message(err).lower()
97
+ return ("is in" in message and "state and cannot be updated" in message) or any(
98
+ p in message
99
+ for p in (
100
+ "update_in_progress",
101
+ "create_in_progress",
102
+ "delete_in_progress",
103
+ "rollback_in_progress",
104
+ "stack is currently being updated",
105
+ )
106
+ )
107
+
108
+
109
+ def is_changeset_in_progress_error(err: Any) -> bool:
110
+ message = get_error_message(err).lower()
111
+ return any(
112
+ p in message
113
+ for p in (
114
+ "invalidchangesetstatus",
115
+ "changeset is currently in progress",
116
+ "an operation on this changeset is currently in progress",
117
+ )
118
+ )
@@ -0,0 +1,67 @@
1
+ """External tool requirements: Node, uv, AWS CLI, container runtimes (port of ``src/cli/external-requirements``)."""
2
+
3
+ from agentcore.cli.external_requirements.checks import (
4
+ CheckSeverity,
5
+ CliToolCheck,
6
+ CliToolsCheckResult,
7
+ DependencyCheckResult,
8
+ NpmCacheCheckResult,
9
+ VersionCheckResult,
10
+ check_aws_cli_version,
11
+ check_create_dependencies,
12
+ check_dependency_versions,
13
+ check_node_version,
14
+ check_npm_cache_ownership,
15
+ check_uv_version,
16
+ format_npm_cache_error,
17
+ format_version_error,
18
+ get_aws_login_guidance,
19
+ requires_container_runtime,
20
+ requires_uv,
21
+ )
22
+ from agentcore.cli.external_requirements.detect import (
23
+ ContainerRuntimeInfo,
24
+ DetectionResult,
25
+ detect_container_runtime,
26
+ require_container_runtime,
27
+ )
28
+ from agentcore.cli.external_requirements.versions import (
29
+ AWS_CLI_MIN_VERSION,
30
+ NODE_MIN_VERSION,
31
+ SemVer,
32
+ compare_sem_ver,
33
+ format_sem_ver,
34
+ parse_sem_ver,
35
+ sem_ver_gte,
36
+ )
37
+
38
+ __all__ = [
39
+ "AWS_CLI_MIN_VERSION",
40
+ "NODE_MIN_VERSION",
41
+ "CheckSeverity",
42
+ "CliToolCheck",
43
+ "CliToolsCheckResult",
44
+ "ContainerRuntimeInfo",
45
+ "DependencyCheckResult",
46
+ "DetectionResult",
47
+ "NpmCacheCheckResult",
48
+ "SemVer",
49
+ "VersionCheckResult",
50
+ "check_aws_cli_version",
51
+ "check_create_dependencies",
52
+ "check_dependency_versions",
53
+ "check_node_version",
54
+ "check_npm_cache_ownership",
55
+ "check_uv_version",
56
+ "compare_sem_ver",
57
+ "detect_container_runtime",
58
+ "format_npm_cache_error",
59
+ "format_sem_ver",
60
+ "format_version_error",
61
+ "get_aws_login_guidance",
62
+ "parse_sem_ver",
63
+ "require_container_runtime",
64
+ "requires_container_runtime",
65
+ "requires_uv",
66
+ "sem_ver_gte",
67
+ ]
@@ -0,0 +1,280 @@
1
+ """External dependency version checks (port of ``external-requirements/checks.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import re
7
+ from dataclasses import dataclass, field
8
+ from typing import Any, Literal
9
+
10
+ from agentcore.cli.external_requirements import detect as _detect
11
+ from agentcore.cli.external_requirements.versions import (
12
+ AWS_CLI_MIN_VERSION,
13
+ NODE_MIN_VERSION,
14
+ format_sem_ver,
15
+ parse_sem_ver,
16
+ sem_ver_gte,
17
+ )
18
+ from agentcore.lib.utils.platform import is_windows
19
+ from agentcore.lib.utils.subprocess import check_subprocess, run_subprocess_capture
20
+
21
+ AWS_CLI_INSTALL_URL = "https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html"
22
+
23
+
24
+ @dataclass(frozen=True)
25
+ class VersionCheckResult:
26
+ satisfied: bool
27
+ current: str | None
28
+ required: str
29
+ binary: str
30
+
31
+
32
+ def _parse_node_version(output: str) -> str | None:
33
+ match = re.search(r"v?(\d+\.\d+\.\d+)", output.strip())
34
+ return match.group(1) if match else None
35
+
36
+
37
+ def _check_min_version(binary: str, args: list[str], parse, minimum) -> VersionCheckResult: # type: ignore[no-untyped-def]
38
+ required = format_sem_ver(minimum)
39
+ result = run_subprocess_capture(binary, args)
40
+ if result.code != 0:
41
+ return VersionCheckResult(False, None, required, binary)
42
+ version_str = parse(result.stdout)
43
+ if not version_str:
44
+ return VersionCheckResult(False, None, required, binary)
45
+ current = parse_sem_ver(version_str)
46
+ if current is None:
47
+ return VersionCheckResult(False, version_str, required, binary)
48
+ return VersionCheckResult(sem_ver_gte(current, minimum), version_str, required, binary)
49
+
50
+
51
+ def check_node_version() -> VersionCheckResult:
52
+ """Node.js >= 18 (required for CDK synth)."""
53
+ return _check_min_version("node", ["--version"], _parse_node_version, NODE_MIN_VERSION)
54
+
55
+
56
+ def check_uv_version() -> VersionCheckResult:
57
+ """uv available in PATH (any version)."""
58
+ result = run_subprocess_capture("uv", ["--version"])
59
+ if result.code != 0:
60
+ return VersionCheckResult(False, None, "any", "uv")
61
+ match = re.search(r"uv\s+(\d+\.\d+\.\d+)", result.stdout.strip())
62
+ return VersionCheckResult(True, match.group(1) if match else "unknown", "any", "uv")
63
+
64
+
65
+ def _parse_aws_cli_version(output: str) -> str | None:
66
+ match = re.search(r"aws-cli/(\d+\.\d+\.\d+)", output.strip())
67
+ return match.group(1) if match else None
68
+
69
+
70
+ def check_aws_cli_version() -> VersionCheckResult:
71
+ """AWS CLI >= 2.32.0 (required for `aws login`)."""
72
+ return _check_min_version("aws", ["--version"], _parse_aws_cli_version, AWS_CLI_MIN_VERSION)
73
+
74
+
75
+ _aws_login_guidance: str | None = None
76
+
77
+
78
+ def get_aws_login_guidance() -> str:
79
+ """Version-aware guidance for authenticating with AWS (cached for the process lifetime)."""
80
+ global _aws_login_guidance
81
+ if _aws_login_guidance:
82
+ return _aws_login_guidance
83
+ check = check_aws_cli_version()
84
+ minimum = format_sem_ver(AWS_CLI_MIN_VERSION)
85
+ if check.current is None:
86
+ _aws_login_guidance = f"Install AWS CLI (v{minimum}+) from {AWS_CLI_INSTALL_URL} and run: aws login"
87
+ elif not check.satisfied:
88
+ _aws_login_guidance = (
89
+ f"Update AWS CLI from v{check.current} to v{minimum}+ ({AWS_CLI_INSTALL_URL}) and run: aws login"
90
+ )
91
+ else:
92
+ _aws_login_guidance = "Run: aws login"
93
+ return _aws_login_guidance
94
+
95
+
96
+ def reset_aws_login_guidance_cache() -> None:
97
+ """Testing hook (upstream resets module state between tests)."""
98
+ global _aws_login_guidance
99
+ _aws_login_guidance = None
100
+
101
+
102
+ def format_version_error(result: VersionCheckResult) -> str:
103
+ if result.current is None:
104
+ if result.binary == "uv":
105
+ return "'uv' not found. Install from https://github.com/astral-sh/uv#installation"
106
+ return f"'{result.binary}' not found. Install {result.binary} >= {result.required}"
107
+ return f"{result.binary} {result.current} is below minimum required version {result.required}"
108
+
109
+
110
+ @dataclass(frozen=True)
111
+ class NpmCacheCheckResult:
112
+ satisfied: bool
113
+ owner: str | None
114
+ cache_dir: str
115
+
116
+
117
+ def check_npm_cache_ownership() -> NpmCacheCheckResult:
118
+ """``~/.npm`` must be owned by the current user (a past `sudo npm install` breaks npm)."""
119
+ cache_dir = os.path.join(os.path.expanduser("~"), ".npm")
120
+ if is_windows or not hasattr(os, "getuid"):
121
+ return NpmCacheCheckResult(True, None, cache_dir)
122
+ try:
123
+ stats = os.stat(cache_dir)
124
+ except OSError:
125
+ return NpmCacheCheckResult(True, None, cache_dir)
126
+ if stats.st_uid != os.getuid():
127
+ owner_result = run_subprocess_capture("id", ["-un", str(stats.st_uid)])
128
+ owner = owner_result.stdout.strip() if owner_result.code == 0 else f"uid={stats.st_uid}"
129
+ return NpmCacheCheckResult(False, owner, cache_dir)
130
+ return NpmCacheCheckResult(True, None, cache_dir)
131
+
132
+
133
+ def format_npm_cache_error(result: NpmCacheCheckResult) -> str:
134
+ return (
135
+ f"npm cache directory ({result.cache_dir}) is owned by '{result.owner}' instead of the current user. "
136
+ "This was likely caused by a previous 'sudo npm install'. "
137
+ f"Fix: sudo chown -R $(whoami) {result.cache_dir}"
138
+ )
139
+
140
+
141
+ def _runtimes(project_spec: Any) -> list[Any]:
142
+ return list(getattr(project_spec, "runtimes", None) or [])
143
+
144
+
145
+ def requires_uv(project_spec: Any) -> bool:
146
+ """Any Python CodeZip agent needs uv."""
147
+ return any(agent.build == "CodeZip" for agent in _runtimes(project_spec))
148
+
149
+
150
+ def requires_container_runtime(project_spec: Any) -> bool:
151
+ return any(agent.build == "Container" for agent in _runtimes(project_spec))
152
+
153
+
154
+ @dataclass
155
+ class DependencyCheckResult:
156
+ passed: bool
157
+ node_check: VersionCheckResult
158
+ uv_check: VersionCheckResult | None
159
+ npm_cache_check: NpmCacheCheckResult
160
+ container_runtime_available: bool
161
+ errors: list[str] = field(default_factory=list)
162
+
163
+
164
+ def check_dependency_versions(project_spec: Any) -> DependencyCheckResult:
165
+ """Node >= 18 always; uv when there are CodeZip agents; npm cache ownership; container runtime (warn)."""
166
+ errors: list[str] = []
167
+ node_check = check_node_version()
168
+ if not node_check.satisfied:
169
+ errors.append(format_version_error(node_check))
170
+
171
+ uv_check = None
172
+ if requires_uv(project_spec):
173
+ uv_check = check_uv_version()
174
+ if not uv_check.satisfied:
175
+ errors.append(format_version_error(uv_check))
176
+
177
+ npm_cache_check = check_npm_cache_ownership()
178
+ if not npm_cache_check.satisfied:
179
+ errors.append(format_npm_cache_error(npm_cache_check))
180
+
181
+ container_runtime_available = True
182
+ if requires_container_runtime(project_spec):
183
+ # Warning only: deploy still works via CodeBuild.
184
+ container_runtime_available = _detect.detect_container_runtime().runtime is not None
185
+
186
+ return DependencyCheckResult(
187
+ passed=not errors,
188
+ node_check=node_check,
189
+ uv_check=uv_check,
190
+ npm_cache_check=npm_cache_check,
191
+ container_runtime_available=container_runtime_available,
192
+ errors=errors,
193
+ )
194
+
195
+
196
+ CheckSeverity = Literal["error", "warn"]
197
+
198
+
199
+ @dataclass(frozen=True)
200
+ class CliToolCheck:
201
+ binary: str
202
+ severity: CheckSeverity
203
+ available: bool
204
+ install_hint: str | None = None
205
+
206
+
207
+ @dataclass
208
+ class CliToolsCheckResult:
209
+ passed: bool
210
+ checks: list[CliToolCheck]
211
+ errors: list[str]
212
+ warnings: list[str]
213
+
214
+
215
+ def _check_binary_available(binary: str) -> bool:
216
+ strategies = [
217
+ lambda: check_subprocess("where", [binary]) if is_windows else check_subprocess("which", [binary]),
218
+ lambda: check_subprocess(binary, ["--version"]),
219
+ lambda: check_subprocess(binary, ["-v"]),
220
+ ]
221
+ return any(strategy() for strategy in strategies)
222
+
223
+
224
+ def check_create_dependencies(language: str | None = None) -> CliToolsCheckResult:
225
+ """CLI tools for `create`: uv (Python only, error), npm (error), aws (warn)."""
226
+ checks: list[CliToolCheck] = []
227
+ errors: list[str] = []
228
+ warnings: list[str] = []
229
+
230
+ if language == "Python":
231
+ uv_available = _check_binary_available("uv")
232
+ checks.append(
233
+ CliToolCheck("uv", "error", uv_available, "Install from https://github.com/astral-sh/uv#installation")
234
+ )
235
+ if not uv_available:
236
+ errors.append(
237
+ "'uv' is required for Python projects. Install from https://github.com/astral-sh/uv#installation"
238
+ )
239
+
240
+ npm_available = _check_binary_available("npm")
241
+ checks.append(CliToolCheck("npm", "error", npm_available, "Install Node.js from https://nodejs.org/"))
242
+ if not npm_available:
243
+ errors.append("'npm' is required. Install Node.js from https://nodejs.org/")
244
+
245
+ if npm_available:
246
+ npm_cache_check = check_npm_cache_ownership()
247
+ if not npm_cache_check.satisfied:
248
+ errors.append(format_npm_cache_error(npm_cache_check))
249
+
250
+ aws_available = _check_binary_available("aws")
251
+ checks.append(CliToolCheck("aws", "warn", aws_available, "Install from https://aws.amazon.com/cli/"))
252
+ if not aws_available:
253
+ warnings.append(
254
+ f"'aws' CLI not found. Required for 'aws login'. Install v{format_sem_ver(AWS_CLI_MIN_VERSION)}+ "
255
+ f"from {AWS_CLI_INSTALL_URL}"
256
+ )
257
+
258
+ return CliToolsCheckResult(passed=not errors, checks=checks, errors=errors, warnings=warnings)
259
+
260
+
261
+ __all__ = [
262
+ "AWS_CLI_INSTALL_URL",
263
+ "CheckSeverity",
264
+ "CliToolCheck",
265
+ "CliToolsCheckResult",
266
+ "DependencyCheckResult",
267
+ "NpmCacheCheckResult",
268
+ "VersionCheckResult",
269
+ "check_aws_cli_version",
270
+ "check_create_dependencies",
271
+ "check_dependency_versions",
272
+ "check_node_version",
273
+ "check_npm_cache_ownership",
274
+ "check_uv_version",
275
+ "format_npm_cache_error",
276
+ "format_version_error",
277
+ "get_aws_login_guidance",
278
+ "requires_container_runtime",
279
+ "requires_uv",
280
+ ]
@@ -0,0 +1,55 @@
1
+ """Container runtime detection (port of ``external-requirements/detect.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ from dataclasses import dataclass
7
+
8
+ from agentcore.lib.constants import CONTAINER_RUNTIMES, ContainerRuntime
9
+ from agentcore.lib.utils.platform import is_windows
10
+ from agentcore.lib.utils.subprocess import check_subprocess, run_subprocess_capture
11
+
12
+
13
+ @dataclass(frozen=True)
14
+ class ContainerRuntimeInfo:
15
+ runtime: ContainerRuntime
16
+ binary: str
17
+ version: str
18
+
19
+
20
+ @dataclass(frozen=True)
21
+ class DetectionResult:
22
+ runtime: ContainerRuntimeInfo | None
23
+
24
+
25
+ def detect_container_runtime() -> DetectionResult:
26
+ """First installed runtime (docker, podman, finch) that can actually build containers."""
27
+ for runtime in CONTAINER_RUNTIMES:
28
+ exists = check_subprocess("where", [runtime]) if is_windows else check_subprocess("which", [runtime])
29
+ if not exists:
30
+ continue
31
+ result = run_subprocess_capture(runtime, ["--version"])
32
+ if result.code != 0:
33
+ continue
34
+ # Some shims answer --version but can't build; they may exit 0 on failure, so check stderr too.
35
+ build_check = run_subprocess_capture(runtime, ["build", "--help"])
36
+ if build_check.code != 0:
37
+ continue
38
+ if build_check.stderr and re.search(r"unknown command|not found", build_check.stderr, re.IGNORECASE):
39
+ continue
40
+ version = (result.stdout.strip().split("\n") or ["unknown"])[0] or "unknown"
41
+ return DetectionResult(ContainerRuntimeInfo(runtime=runtime, binary=runtime, version=version))
42
+ return DetectionResult(None)
43
+
44
+
45
+ def require_container_runtime() -> ContainerRuntimeInfo:
46
+ runtime = detect_container_runtime().runtime
47
+ if runtime is None:
48
+ raise RuntimeError(
49
+ "No container runtime found. Install Docker (https://docker.com), "
50
+ "Podman (https://podman.io), or Finch (https://runfinch.com)."
51
+ )
52
+ return runtime
53
+
54
+
55
+ __all__ = ["ContainerRuntimeInfo", "DetectionResult", "detect_container_runtime", "require_container_runtime"]
@@ -0,0 +1,57 @@
1
+ """Semantic version parsing and comparison (port of ``external-requirements/versions.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ from dataclasses import dataclass
7
+
8
+
9
+ @dataclass(frozen=True, order=True)
10
+ class SemVer:
11
+ major: int
12
+ minor: int
13
+ patch: int
14
+
15
+
16
+ _SEMVER_RE = re.compile(r"^(\d+)\.(\d+)\.(\d+)")
17
+
18
+
19
+ def parse_sem_ver(version: str) -> SemVer | None:
20
+ """Parse ``"v18.0.0"`` / ``"18.0.0"`` / ``"0.9.2-beta"``; None when not semver-like."""
21
+ match = _SEMVER_RE.match(re.sub(r"^v", "", version))
22
+ if not match:
23
+ return None
24
+ return SemVer(int(match.group(1)), int(match.group(2)), int(match.group(3)))
25
+
26
+
27
+ def compare_sem_ver(a: SemVer, b: SemVer) -> int:
28
+ if a.major != b.major:
29
+ return a.major - b.major
30
+ if a.minor != b.minor:
31
+ return a.minor - b.minor
32
+ return a.patch - b.patch
33
+
34
+
35
+ def sem_ver_gte(a: SemVer, b: SemVer) -> bool:
36
+ return compare_sem_ver(a, b) >= 0
37
+
38
+
39
+ def format_sem_ver(v: SemVer) -> str:
40
+ return f"{v.major}.{v.minor}.{v.patch}"
41
+
42
+
43
+ # Minimum Node.js version required for CDK synth (ES2022 target).
44
+ NODE_MIN_VERSION = SemVer(18, 0, 0)
45
+
46
+ # Minimum AWS CLI version required for `aws login`.
47
+ AWS_CLI_MIN_VERSION = SemVer(2, 32, 0)
48
+
49
+ __all__ = [
50
+ "AWS_CLI_MIN_VERSION",
51
+ "NODE_MIN_VERSION",
52
+ "SemVer",
53
+ "compare_sem_ver",
54
+ "format_sem_ver",
55
+ "parse_sem_ver",
56
+ "sem_ver_gte",
57
+ ]