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,349 @@
1
+ """`agentcore deploy` registration and output (port of ``commands/deploy/command.tsx``).
2
+
3
+ Any of ``--json``/``--target``/``--dry-run``/``--yes``/``--verbose`` selects non-interactive CLI
4
+ mode. Otherwise upstream renders the Ink deploy screen; here the same decisions (target, credential
5
+ source, teardown and bootstrap confirmation, token-expired retry) are asked as prompts.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import json
11
+ import sys
12
+ from typing import Any
13
+
14
+ import typer
15
+
16
+ from agentcore.cli import interactive
17
+ from agentcore.cli.commands.deploy._guards import require_project
18
+ from agentcore.cli.commands.deploy.actions import ValidatedDeployOptions, handle_deploy
19
+ from agentcore.cli.commands.deploy.progress import SPINNER_FRAMES, create_spinner_progress
20
+ from agentcore.cli.commands.deploy.types import DeployOptions, DeployResult
21
+ from agentcore.cli.commands.deploy.validate import validate_deploy_options
22
+ from agentcore.cli.constants import ANSI, COMMAND_DESCRIPTIONS
23
+ from agentcore.cli.errors import get_error_message, is_expired_token_error, is_no_credentials_error
24
+ from agentcore.lib.utils.credentials import SecureCredentials
25
+
26
+ __all__ = ["SPINNER_FRAMES", "execute_deploy", "handle_deploy_cli", "print_deploy_result", "register_deploy"]
27
+
28
+
29
+ def _emit_json(payload: dict[str, Any]) -> None:
30
+ typer.echo(json.dumps(payload, separators=(",", ":"), ensure_ascii=False))
31
+
32
+
33
+ def handle_deploy_cli(options: DeployOptions) -> None:
34
+ validation = validate_deploy_options(options)
35
+ if not validation.valid:
36
+ if options.json:
37
+ _emit_json({"success": False, "error": validation.error})
38
+ else:
39
+ typer.echo(validation.error, err=True)
40
+ raise typer.Exit(1)
41
+
42
+ try:
43
+ result = execute_deploy(options)
44
+ except Exception as exc: # noqa: BLE001
45
+ result = DeployResult(success=False, error=exc)
46
+
47
+ if not result.success:
48
+ if options.json:
49
+ _emit_json(result.to_json())
50
+ else:
51
+ # Sync warnings may explain the failure; the notice was already printed live.
52
+ for warning in result.dependency_sync_result.warnings if result.dependency_sync_result else []:
53
+ typer.echo(f"⚠ {warning}", err=True)
54
+ typer.echo(str(result.error), err=True)
55
+ if result.log_path:
56
+ typer.echo(f"Log: {result.log_path}", err=True)
57
+ raise typer.Exit(1)
58
+
59
+ print_deploy_result(result, options)
60
+ raise typer.Exit(2 if result.post_deploy_warnings else 0)
61
+
62
+
63
+ def execute_deploy(options: DeployOptions) -> DeployResult:
64
+ spinner = create_spinner_progress() if options.progress else None
65
+
66
+ def on_resource_event(message: str) -> None:
67
+ typer.echo(message)
68
+
69
+ def on_notice(message: str) -> None:
70
+ if spinner:
71
+ spinner.cleanup()
72
+ typer.echo(f"\n{message}\n")
73
+
74
+ try:
75
+ return handle_deploy(
76
+ ValidatedDeployOptions(
77
+ target=options.target or "default",
78
+ auto_confirm=options.yes,
79
+ verbose=options.verbose or options.diff,
80
+ plan=options.plan,
81
+ diff=options.diff,
82
+ on_progress=spinner.on_progress if spinner else None,
83
+ on_resource_event=on_resource_event if options.verbose else None,
84
+ # Never under --json: stdout must stay pure JSON.
85
+ on_notice=None if options.json else on_notice,
86
+ )
87
+ )
88
+ finally:
89
+ if spinner:
90
+ spinner.cleanup()
91
+
92
+
93
+ def print_deploy_result(result: DeployResult, options: DeployOptions) -> None:
94
+ if options.json:
95
+ _emit_json(result.to_json())
96
+ return
97
+
98
+ # Informational only: never flips the exit code.
99
+ for warning in result.dependency_sync_result.warnings if result.dependency_sync_result else []:
100
+ typer.echo(f"⚠ {warning}", err=True)
101
+
102
+ if options.diff:
103
+ typer.echo(f"\n✓ Diff complete for '{result.target_name}' (stack: {result.stack_name})")
104
+ elif options.plan:
105
+ typer.echo(f"\n✓ Dry run complete for '{result.target_name}' (stack: {result.stack_name})")
106
+ typer.echo("\nRun `agentcore deploy` to deploy.")
107
+ else:
108
+ typer.echo(f"\n✓ Deployed to '{result.target_name}' (stack: {result.stack_name})")
109
+ if result.outputs:
110
+ typer.echo("\nOutputs:")
111
+ for key, value in result.outputs.items():
112
+ typer.echo(f" {key}: {value}")
113
+ if result.post_deploy_warnings:
114
+ typer.echo("\n⚠ Post-deploy warnings:")
115
+ for warning in result.post_deploy_warnings:
116
+ typer.echo(f" {warning}")
117
+ for note in result.notes or []:
118
+ typer.echo(f"\nNote: {note}")
119
+ if result.next_steps:
120
+ typer.echo(f"Next: {' | '.join(result.next_steps)}")
121
+
122
+ if result.log_path:
123
+ typer.echo(f"\nLog: {result.log_path}")
124
+
125
+
126
+ # ---------------------------------------------------------------------------
127
+ # Interactive mode (replaces the Ink DeployScreen)
128
+ # ---------------------------------------------------------------------------
129
+
130
+
131
+ def _select_target() -> str | None:
132
+ """useAwsTargetConfig: populate aws-targets.json when empty, choose among several targets."""
133
+ from agentcore.aws import aws_context
134
+ from agentcore.lib.errors.types import ConfigNotFoundError
135
+ from agentcore.lib.schemas.io.config_io import ConfigIO
136
+
137
+ config_io = ConfigIO()
138
+ try:
139
+ targets = config_io.read_aws_deployment_targets()
140
+ except ConfigNotFoundError:
141
+ targets = []
142
+
143
+ if not targets:
144
+ ctx = aws_context.detect_aws_context()
145
+ account = ctx.account_id
146
+ region = ctx.region
147
+ if account and interactive.confirm(f"Deploy to account {account} in region {region}?", default=True):
148
+ pass
149
+ else:
150
+ account = interactive.text(
151
+ "AWS account ID",
152
+ default=account or "",
153
+ validate=lambda v: None if v.isdigit() and len(v) == 12 else "Account ID must be 12 digits",
154
+ )
155
+ region = interactive.text("AWS region", default=region or "us-east-1")
156
+ config_io.write_aws_deployment_targets([{"name": "default", "account": account, "region": region}])
157
+ return "default"
158
+
159
+ if len(targets) == 1:
160
+ return targets[0].name
161
+ return interactive.select(
162
+ "Select deployment target",
163
+ [interactive.Choice(f"{t.name} ({t.region}:{t.account})", t.name) for t in targets],
164
+ )
165
+
166
+
167
+ def _credential_prompt(options: ValidatedDeployOptions) -> None:
168
+ """CredentialSourcePrompt: use .env.local, enter values now (not saved), or skip identity setup."""
169
+ from agentcore.lib.schemas.io.config_io import ConfigIO
170
+ from agentcore.operations.deploy import pre_deploy_identity as pdi
171
+
172
+ try:
173
+ spec = ConfigIO().read_project_spec()
174
+ except Exception: # noqa: BLE001
175
+ return
176
+ if not (pdi.has_identity_api_providers(spec) or pdi.has_identity_o_auth_providers(spec)):
177
+ return
178
+ credentials = pdi.get_all_credentials(spec)
179
+ typer.echo("Credentials required:")
180
+ for cred in credentials:
181
+ typer.echo(f" {cred.env_var_name}")
182
+ choice = interactive.select(
183
+ "How should credentials be provided?",
184
+ [
185
+ interactive.Choice("Use values from agentcore/.env.local", "env"),
186
+ interactive.Choice("Enter values now (not saved)", "manual"),
187
+ interactive.Choice("Skip credential setup", "skip"),
188
+ ],
189
+ )
190
+ if choice == "manual":
191
+ values = {}
192
+ for cred in credentials:
193
+ value = interactive.text(cred.env_var_name, secret=True)
194
+ if value:
195
+ values[cred.env_var_name] = value
196
+ options.runtime_credentials = SecureCredentials(values)
197
+ elif choice == "skip":
198
+ options.skip_identity_setup = True
199
+
200
+
201
+ def handle_deploy_interactive(diff_mode: bool = False) -> None:
202
+ from agentcore.cli.external_requirements import check_dependency_versions
203
+ from agentcore.lib.schemas.io.config_io import ConfigIO
204
+ from agentcore.operations.deploy.constants import BOOTSTRAP_EXPLAINER, BOOTSTRAP_TITLE
205
+
206
+ target = _select_target()
207
+ if not target:
208
+ raise typer.Exit(1)
209
+
210
+ # The TUI preflight also checks Node/uv/npm-cache before building.
211
+ try:
212
+ deps = check_dependency_versions(ConfigIO().read_project_spec())
213
+ if not deps.passed:
214
+ typer.echo("\n".join(deps.errors), err=True)
215
+ raise typer.Exit(1)
216
+ except typer.Exit:
217
+ raise
218
+ except Exception: # noqa: BLE001 - project errors surface in the deploy itself
219
+ pass
220
+
221
+ while True:
222
+ spinner = create_spinner_progress()
223
+ state = {"step": ""}
224
+
225
+ def on_progress(step: str, status: str, _spinner=spinner, state=state) -> None: # type: ignore[no-untyped-def]
226
+ if status == "start":
227
+ state["step"] = step
228
+ _spinner.on_progress(step, status) # type: ignore[arg-type]
229
+
230
+ def on_deploy_message(msg: Any, _spinner=spinner, state=state) -> None: # type: ignore[no-untyped-def]
231
+ if msg.progress and state["step"]:
232
+ _spinner.on_progress(
233
+ f"{state['step']} ({msg.progress.completed}/{msg.progress.total} resources)", "start"
234
+ )
235
+
236
+ def on_notice(message: str, _spinner=spinner) -> None: # type: ignore[no-untyped-def]
237
+ _spinner.cleanup()
238
+ typer.echo(f"\nNote: {message}\n")
239
+
240
+ def confirm_teardown(_spinner=spinner) -> bool: # type: ignore[no-untyped-def]
241
+ _spinner.cleanup()
242
+ typer.echo(
243
+ "This will delete all AWS resources and the CloudFormation stack for this target. "
244
+ "This action cannot be undone."
245
+ )
246
+ return interactive.confirm("Tear down all deployed resources?", default=False)
247
+
248
+ def confirm_bootstrap(_spinner=spinner) -> bool: # type: ignore[no-untyped-def]
249
+ _spinner.cleanup()
250
+ typer.echo(f"{BOOTSTRAP_TITLE}\n{BOOTSTRAP_EXPLAINER}")
251
+ return interactive.confirm("Bootstrap now?", default=True)
252
+
253
+ options = ValidatedDeployOptions(
254
+ target=target,
255
+ diff=diff_mode,
256
+ verbose=diff_mode,
257
+ on_progress=on_progress,
258
+ on_deploy_message=on_deploy_message,
259
+ on_notice=on_notice,
260
+ confirm_teardown=confirm_teardown,
261
+ confirm_bootstrap=confirm_bootstrap,
262
+ )
263
+ if not diff_mode:
264
+ _credential_prompt(options)
265
+ try:
266
+ result = handle_deploy(options)
267
+ finally:
268
+ spinner.cleanup()
269
+
270
+ if result.success:
271
+ if result.dependency_sync_result and result.dependency_sync_result.notice:
272
+ typer.echo(result.dependency_sync_result.notice)
273
+ print_deploy_result(result, DeployOptions(target=target, diff=diff_mode))
274
+ if not diff_mode:
275
+ raise typer.Exit(2 if result.post_deploy_warnings else 0)
276
+ return
277
+
278
+ typer.echo(f"{ANSI.red}{result.error}{ANSI.reset}", err=True)
279
+ if result.log_path:
280
+ typer.echo(f"Log: {result.log_path}", err=True)
281
+ if is_expired_token_error(result.error) or is_no_credentials_error(result.error):
282
+ from agentcore.cli.external_requirements import get_aws_login_guidance
283
+
284
+ typer.echo(f"\nYour AWS credentials are expired or missing. {get_aws_login_guidance()}", err=True)
285
+ if interactive.confirm("Retry after re-authenticating?", default=True):
286
+ continue
287
+ raise typer.Exit(1)
288
+
289
+
290
+ # ---------------------------------------------------------------------------
291
+ # Registration
292
+ # ---------------------------------------------------------------------------
293
+
294
+
295
+ def deploy_command(
296
+ target: str | None = typer.Option(
297
+ None, "--target", help='Deployment target name (default: "default") [non-interactive]'
298
+ ),
299
+ yes: bool = typer.Option(
300
+ False, "-y", "--yes", help="Auto-confirm prompts, read credentials from env [non-interactive]"
301
+ ),
302
+ verbose: bool = typer.Option(
303
+ False, "-v", "--verbose", help="Show resource-level deployment events [non-interactive]"
304
+ ),
305
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON [non-interactive]"),
306
+ dry_run: bool = typer.Option(False, "--dry-run", help="Preview deployment without deploying [non-interactive]"),
307
+ diff: bool = typer.Option(False, "--diff", help="Show CDK diff without deploying [non-interactive]"),
308
+ region: str | None = typer.Option(
309
+ None, "--region", help="AWS region to deploy the target to (e.g. us-east-1) [non-interactive]"
310
+ ),
311
+ ) -> None:
312
+ try:
313
+ require_project()
314
+ if region:
315
+ from agentcore.operations.deploy.region_override import apply_region_override
316
+
317
+ apply_region_override(region, target or "default")
318
+ if as_json or target or dry_run or yes or verbose or region:
319
+ handle_deploy_cli(
320
+ DeployOptions(
321
+ target=target or "default",
322
+ yes=yes,
323
+ verbose=verbose,
324
+ json=as_json,
325
+ plan=dry_run,
326
+ diff=diff,
327
+ progress=not as_json,
328
+ )
329
+ )
330
+ elif diff:
331
+ interactive.require_tty()
332
+ handle_deploy_interactive(diff_mode=True)
333
+ else:
334
+ interactive.require_tty()
335
+ handle_deploy_interactive()
336
+ except typer.Exit:
337
+ raise
338
+ except Exception as exc: # noqa: BLE001 - top-level command boundary
339
+ if as_json:
340
+ _emit_json({"success": False, "error": get_error_message(exc)})
341
+ else:
342
+ print(f"{ANSI.red}Error: {get_error_message(exc)}{ANSI.reset}", file=sys.stdout)
343
+ raise typer.Exit(1) from None
344
+
345
+
346
+ def register_deploy(app: typer.Typer) -> None:
347
+ description = COMMAND_DESCRIPTIONS["deploy"]
348
+ app.command("deploy", help=description)(deploy_command)
349
+ app.command("dp", help=description, hidden=True)(deploy_command)
@@ -0,0 +1,115 @@
1
+ """Spinner progress for CLI deploys (port of ``commands/deploy/progress.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import sys
6
+ import threading
7
+ from collections.abc import Callable
8
+ from dataclasses import dataclass
9
+ from typing import Literal
10
+
11
+ from agentcore.cli.constants import ANSI
12
+ from agentcore.lib.schemas.io.config_io import ConfigIO
13
+
14
+ SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
15
+
16
+ StepStatus = Literal["start", "success", "error", "warn"]
17
+
18
+
19
+ @dataclass
20
+ class SpinnerProgress:
21
+ on_progress: Callable[[str, StepStatus], None]
22
+ cleanup: Callable[[], None]
23
+
24
+
25
+ def create_spinner_progress(stream=None) -> SpinnerProgress: # type: ignore[no-untyped-def]
26
+ """``⠋ step...`` while running, then ``✓ step`` / ``✗ step`` / yellow ``⚠ step``."""
27
+ out = stream or sys.stdout
28
+ state: dict[str, object] = {"stop": None, "thread": None}
29
+ lock = threading.Lock()
30
+
31
+ def clear_spinner() -> None:
32
+ stop = state["stop"]
33
+ if stop is not None:
34
+ stop.set() # type: ignore[attr-defined]
35
+ thread = state["thread"]
36
+ if thread is not None:
37
+ thread.join() # type: ignore[attr-defined]
38
+ state["stop"] = state["thread"] = None
39
+ with lock:
40
+ out.write(f"\r{ANSI.clear_line}")
41
+ out.flush()
42
+
43
+ def on_progress(step: str, status: StepStatus) -> None:
44
+ clear_spinner()
45
+ if status == "start":
46
+ stop = threading.Event()
47
+ with lock:
48
+ out.write(f"{SPINNER_FRAMES[0]} {step}...")
49
+ out.flush()
50
+
51
+ def spin() -> None:
52
+ i = 0
53
+ while not stop.wait(0.08):
54
+ i = (i + 1) % len(SPINNER_FRAMES)
55
+ with lock:
56
+ out.write(f"\r{SPINNER_FRAMES[i]} {step}...")
57
+ out.flush()
58
+
59
+ thread = threading.Thread(target=spin, daemon=True)
60
+ state["stop"], state["thread"] = stop, thread
61
+ thread.start()
62
+ elif status == "success":
63
+ print(f"✓ {step}", file=out, flush=True)
64
+ elif status == "warn":
65
+ print(f"{ANSI.yellow}⚠ {step}{ANSI.reset}", file=out, flush=True)
66
+ else:
67
+ print(f"✗ {step}", file=out, flush=True)
68
+
69
+ return SpinnerProgress(on_progress=on_progress, cleanup=clear_spinner)
70
+
71
+
72
+ def run_cli_deploy() -> None:
73
+ """Deploy used by `dev` before starting the server (failures never block the dev server)."""
74
+ from agentcore.cli.commands.deploy.actions import ValidatedDeployOptions, handle_deploy
75
+ from agentcore.operations.deploy.change_detection import can_skip_deploy
76
+ from agentcore.operations.deploy.ensure_target import ensure_default_deployment_target
77
+
78
+ print("Deploying project resources...")
79
+ spinner = create_spinner_progress()
80
+ try:
81
+ config_io = ConfigIO()
82
+ ensure_default_deployment_target(config_io)
83
+ if can_skip_deploy(config_io):
84
+ spinner.on_progress("No changes detected — skipping deploy", "success")
85
+ spinner.cleanup()
86
+ print()
87
+ return
88
+ result = handle_deploy(
89
+ ValidatedDeployOptions(target="default", auto_confirm=True, on_progress=spinner.on_progress)
90
+ )
91
+ spinner.cleanup()
92
+ sync = result.dependency_sync_result
93
+ if sync and sync.notice:
94
+ print(f"\n{sync.notice}\n")
95
+ for warning in sync.warnings if sync else []:
96
+ print(f"{ANSI.yellow}⚠ {warning}{ANSI.reset}", file=sys.stderr)
97
+ if result.success:
98
+ print("Deploy complete.")
99
+ if result.log_path:
100
+ print(f"Deploy log: {result.log_path}")
101
+ print()
102
+ else:
103
+ print(
104
+ f"{ANSI.yellow}Deploy failed: {result.error}. Starting dev server anyway...{ANSI.reset}",
105
+ file=sys.stderr,
106
+ )
107
+ if result.log_path:
108
+ print(f"Deploy log: {result.log_path}", file=sys.stderr)
109
+ print()
110
+ except Exception as exc: # noqa: BLE001
111
+ spinner.cleanup()
112
+ print(f"{ANSI.yellow}Deploy failed: {exc}. Starting dev server anyway...{ANSI.reset}\n", file=sys.stderr)
113
+
114
+
115
+ __all__ = ["SPINNER_FRAMES", "SpinnerProgress", "create_spinner_progress", "run_cli_deploy"]
@@ -0,0 +1,68 @@
1
+ """Deploy option/result types (port of ``commands/deploy/types.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass, field
6
+ from typing import Any
7
+
8
+ from agentcore.lib.dependency_management.types import DependencySyncResult
9
+ from agentcore.lib.errors.types import BaseError
10
+ from agentcore.operations.deploy.dependency_sync import dependency_sync_result_to_json
11
+
12
+
13
+ @dataclass
14
+ class DeployOptions:
15
+ target: str | None = None
16
+ yes: bool = False
17
+ progress: bool = False
18
+ verbose: bool = False
19
+ json: bool = False
20
+ plan: bool = False
21
+ diff: bool = False
22
+
23
+
24
+ @dataclass
25
+ class DeployResult:
26
+ """``Result<{targetName, stackName, outputs, nextSteps, notes, postDeployWarnings}> & {logPath, dependencySyncResult}``."""
27
+
28
+ success: bool
29
+ error: BaseException | None = None
30
+ target_name: str | None = None
31
+ stack_name: str | None = None
32
+ outputs: dict[str, str] | None = None
33
+ next_steps: list[str] | None = None
34
+ notes: list[str] | None = None
35
+ post_deploy_warnings: list[str] | None = None
36
+ log_path: str | None = None
37
+ dependency_sync_result: DependencySyncResult | None = None
38
+ extra: dict[str, Any] = field(default_factory=dict)
39
+
40
+ def to_json(self) -> dict[str, Any]:
41
+ """Keys in upstream's object order; ``None`` (undefined) dropped. Failures as ``serializeResult``."""
42
+ sync = dependency_sync_result_to_json(self.dependency_sync_result) if self.dependency_sync_result else None
43
+ if self.success:
44
+ data: dict[str, Any] = {
45
+ "success": True,
46
+ "targetName": self.target_name,
47
+ "stackName": self.stack_name,
48
+ "outputs": self.outputs,
49
+ "logPath": self.log_path,
50
+ "nextSteps": self.next_steps,
51
+ "notes": self.notes,
52
+ "postDeployWarnings": self.post_deploy_warnings,
53
+ "dependencySyncResult": sync,
54
+ }
55
+ else:
56
+ data = {
57
+ "success": False,
58
+ "logPath": self.log_path,
59
+ "dependencySyncResult": sync,
60
+ "error": str(self.error) if self.error is not None else None,
61
+ }
62
+ if isinstance(self.error, BaseError):
63
+ data["errorName"] = self.error.name
64
+ data["errorSource"] = self.error.error_source
65
+ return {k: v for k, v in data.items() if v is not None}
66
+
67
+
68
+ __all__ = ["DeployOptions", "DeployResult"]
@@ -0,0 +1,43 @@
1
+ """Deploy telemetry attributes (port of ``commands/deploy/utils.ts``; telemetry itself is not ported)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ DEFAULT_DEPLOY_ATTRS: dict[str, Any] = {
8
+ "runtime_count": 0,
9
+ "harness_count": 0,
10
+ "memory_count": 0,
11
+ "credential_count": 0,
12
+ "evaluator_count": 0,
13
+ "online_eval_count": 0,
14
+ "gateway_count": 0,
15
+ "gateway_target_count": 0,
16
+ "policy_engine_count": 0,
17
+ "policy_count": 0,
18
+ "deploy_mode": "deploy",
19
+ }
20
+
21
+
22
+ def compute_deploy_attrs(project_spec: Any, mode: str) -> dict[str, Any]:
23
+ def items(name: str) -> list[Any]:
24
+ return list(getattr(project_spec, name, None) or [])
25
+
26
+ gateways = items("agent_core_gateways")
27
+ engines = items("policy_engines")
28
+ return {
29
+ "runtime_count": len(items("runtimes")),
30
+ "harness_count": len(items("harnesses")),
31
+ "memory_count": len(items("memories")),
32
+ "credential_count": len(items("credentials")),
33
+ "evaluator_count": len(items("evaluators")),
34
+ "online_eval_count": len(items("online_eval_configs")),
35
+ "gateway_count": len(gateways),
36
+ "gateway_target_count": sum(len(getattr(g, "targets", None) or []) for g in gateways),
37
+ "policy_engine_count": len(engines),
38
+ "policy_count": sum(len(getattr(pe, "policies", None) or []) for pe in engines),
39
+ "deploy_mode": mode,
40
+ }
41
+
42
+
43
+ __all__ = ["DEFAULT_DEPLOY_ATTRS", "compute_deploy_attrs"]
@@ -0,0 +1,21 @@
1
+ """Deploy option validation (port of ``commands/deploy/validate.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+
7
+ from agentcore.cli.commands.deploy.types import DeployOptions
8
+
9
+
10
+ @dataclass(frozen=True)
11
+ class ValidationResult:
12
+ valid: bool
13
+ error: str | None = None
14
+
15
+
16
+ def validate_deploy_options(_options: DeployOptions) -> ValidationResult:
17
+ # Target is always set (defaulted to 'default' by the command handler).
18
+ return ValidationResult(valid=True)
19
+
20
+
21
+ __all__ = ["ValidationResult", "validate_deploy_options"]
@@ -0,0 +1,5 @@
1
+ """`agentcore dev` (port of src/cli/commands/dev)."""
2
+
3
+ from agentcore.cli.commands.dev.command import register
4
+
5
+ __all__ = ["register"]
@@ -0,0 +1,50 @@
1
+ """Bridges to other feature areas (deploy, status, project guard), resolved lazily.
2
+
3
+ Upstream imports `runCliDeploy` (commands/deploy/progress) and `isDeploySkippable`
4
+ (operations/deploy/change-detection) directly; here they are looked up at call time so `dev`
5
+ keeps working while those areas are still being ported.
6
+ """
7
+
8
+ import subprocess
9
+ import sys
10
+
11
+ DESCRIPTION = "Launch local dev server, or invoke an agent locally."
12
+ """COMMAND_DESCRIPTIONS.dev from upstream cli/constants.ts."""
13
+
14
+ # ANSI escapes from upstream cli/constants.ts (ANSI.*), used by dev output.
15
+ ANSI_YELLOW = "\x1b[33m"
16
+ ANSI_RESET = "\x1b[0m"
17
+
18
+
19
+ def run_cli_deploy() -> None:
20
+ try:
21
+ from agentcore.cli.commands.deploy.progress import run_cli_deploy as deploy # type: ignore[import-not-found]
22
+ except ImportError:
23
+ deploy = None
24
+ if deploy is not None:
25
+ deploy()
26
+ return
27
+ # Fallback until the deploy port exposes run_cli_deploy: run `agentcore deploy --yes`.
28
+ print("Deploying project resources...")
29
+ code = subprocess.call(
30
+ [sys.executable, "-c", "from agentcore.cli.main import app; app()", "deploy", "--yes"],
31
+ )
32
+ if code != 0:
33
+ raise RuntimeError("Deploy failed.")
34
+
35
+
36
+ def is_deploy_skippable() -> bool:
37
+ try:
38
+ from agentcore.operations.deploy.change_detection import is_deploy_skippable as skippable
39
+ except ImportError:
40
+ return False
41
+ try:
42
+ return bool(skippable())
43
+ except Exception: # noqa: BLE001 - when unsure, deploy (as upstream's catch-all)
44
+ return False
45
+
46
+
47
+ def require_project() -> None:
48
+ from agentcore.cli.commands.logs.guards import require_project as guard
49
+
50
+ guard()