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,23 @@
1
+ """Shared command groups (`run`, `pause`, `logs`, ...).
2
+
3
+ Groups whose subcommands come from several feature areas are created once here; any command
4
+ module attaches to them with ``group("run").command("eval")(...)``. `cli/main.py` mounts every
5
+ group created this way.
6
+ """
7
+
8
+ import typer
9
+
10
+ from agentcore.cli.tree import GROUPS
11
+
12
+ _groups: dict[str, typer.Typer] = {}
13
+
14
+
15
+ def group(name: str) -> typer.Typer:
16
+ if name not in _groups:
17
+ help_text = GROUPS[name][0] if name in GROUPS else None
18
+ _groups[name] = typer.Typer(help=help_text, no_args_is_help=True)
19
+ return _groups[name]
20
+
21
+
22
+ def created_groups() -> dict[str, typer.Typer]:
23
+ return dict(_groups)
@@ -0,0 +1,85 @@
1
+ """Interactive prompts that replace upstream's Ink TUI screens.
2
+
3
+ Upstream runs a full-screen wizard when a command gets no flags. The Python port asks the
4
+ same questions as sequential prompts. Every prompt exits cleanly (code 130) on Ctrl-C/Esc.
5
+ """
6
+
7
+ import sys
8
+ from collections.abc import Callable, Sequence
9
+ from dataclasses import dataclass
10
+ from typing import Any, TypeVar
11
+
12
+ import questionary
13
+ import typer
14
+
15
+ T = TypeVar("T")
16
+
17
+
18
+ def require_tty() -> None:
19
+ """Port of tui/guards/tty.ts: interactive flows must not hang in CI or piped stdin."""
20
+ if not sys.stdin.isatty() or not sys.stdout.isatty():
21
+ typer.echo(
22
+ "Error: This command requires an interactive terminal. Use --help to see non-interactive flags.",
23
+ err=True,
24
+ )
25
+ raise typer.Exit(1)
26
+
27
+
28
+ def _answer(question: questionary.Question) -> Any:
29
+ value = question.ask()
30
+ if value is None: # questionary returns None on Ctrl-C / Esc
31
+ raise typer.Exit(130)
32
+ return value
33
+
34
+
35
+ @dataclass(frozen=True)
36
+ class Choice:
37
+ title: str
38
+ value: Any
39
+ description: str | None = None
40
+ disabled: str | None = None
41
+
42
+
43
+ def select(message: str, choices: Sequence[Choice | str], default: Any = None) -> Any:
44
+ qchoices = [
45
+ c
46
+ if isinstance(c, str)
47
+ else questionary.Choice(c.title, value=c.value, description=c.description, disabled=c.disabled)
48
+ for c in choices
49
+ ]
50
+ return _answer(questionary.select(message, choices=qchoices, default=default))
51
+
52
+
53
+ def checkbox(message: str, choices: Sequence[Choice | str], checked: Sequence[Any] = ()) -> list[Any]:
54
+ qchoices = [
55
+ questionary.Choice(c, value=c, checked=c in checked)
56
+ if isinstance(c, str)
57
+ else questionary.Choice(c.title, value=c.value, description=c.description, checked=c.value in checked)
58
+ for c in choices
59
+ ]
60
+ return _answer(questionary.checkbox(message, choices=qchoices))
61
+
62
+
63
+ def text(
64
+ message: str,
65
+ default: str = "",
66
+ validate: Callable[[str], str | None] | None = None,
67
+ secret: bool = False,
68
+ ) -> str:
69
+ """``validate`` returns an error message, or None when the value is acceptable."""
70
+
71
+ def _validate(value: str) -> bool | str:
72
+ if validate is None:
73
+ return True
74
+ error = validate(value)
75
+ return True if error is None else error
76
+
77
+ prompt = questionary.password if secret else questionary.text
78
+ kwargs: dict[str, Any] = {"validate": _validate}
79
+ if not secret:
80
+ kwargs["default"] = default
81
+ return _answer(prompt(message, **kwargs))
82
+
83
+
84
+ def confirm(message: str, default: bool = False) -> bool:
85
+ return _answer(questionary.confirm(message, default=default))
agentcore/cli/main.py ADDED
@@ -0,0 +1,137 @@
1
+ """Entry point for the `agentcore` command (port of src/cli/cli.ts).
2
+
3
+ Commands are discovered: every module in ``agentcore.cli.commands`` that defines
4
+ ``register(app)`` is registered, and add/remove subcommands come from the primitive registry.
5
+ Anything in ``agentcore.cli.tree`` still unregistered after that becomes a stub.
6
+ """
7
+
8
+ import importlib
9
+ import pkgutil
10
+
11
+ import typer
12
+ from rich.console import Console
13
+
14
+ import agentcore.cli.commands as commands_package
15
+ from agentcore import __version__
16
+ from agentcore.cli.groups import created_groups
17
+ from agentcore.cli.tree import GROUPS, PROGRAM_DESCRIPTION, RESOURCE_KINDS, TOP_LEVEL
18
+ from agentcore.primitives.registry import all_primitives
19
+
20
+ err = Console(stderr=True)
21
+
22
+ # Unported stubs accept any arguments so `--help` and argument parsing never get in the way.
23
+ STUB_SETTINGS = {"allow_extra_args": True, "ignore_unknown_options": True}
24
+
25
+ app = typer.Typer(
26
+ name="agentcore",
27
+ help=PROGRAM_DESCRIPTION,
28
+ no_args_is_help=True,
29
+ context_settings={"help_option_names": ["-h", "--help"]},
30
+ # Upstream help text uses literal "[non-interactive]" tags, which Rich markup would swallow.
31
+ rich_markup_mode=None,
32
+ )
33
+ add_app = typer.Typer(help="Add resources to project config.", no_args_is_help=True)
34
+ remove_app = typer.Typer(help="Remove resources from project config.", no_args_is_help=True)
35
+
36
+
37
+ def _stub(path: str):
38
+ def command(ctx: typer.Context) -> None:
39
+ err.print(f"[yellow]`agentcore {path}` is not ported to Python yet.[/yellow]")
40
+ raise typer.Exit(2)
41
+
42
+ return command
43
+
44
+
45
+ def _command_names(typer_app: typer.Typer) -> set[str]:
46
+ names = {c.name for c in typer_app.registered_commands if c.name}
47
+ return names | {g.name for g in typer_app.registered_groups if g.name}
48
+
49
+
50
+ def _group(typer_app: typer.Typer, name: str) -> typer.Typer | None:
51
+ for info in typer_app.registered_groups:
52
+ if info.name == name:
53
+ return info.typer_instance
54
+ return None
55
+
56
+
57
+ def _register_commands() -> None:
58
+ for info in sorted(pkgutil.iter_modules(commands_package.__path__), key=lambda m: m.name):
59
+ if info.name.startswith("_"):
60
+ continue
61
+ module = importlib.import_module(f"{commands_package.__name__}.{info.name}")
62
+ register = getattr(module, "register", None)
63
+ if callable(register):
64
+ register(app)
65
+
66
+
67
+ def _register_primitives() -> None:
68
+ from agentcore.cli.commands.add import install_add_shell
69
+ from agentcore.cli.commands.remove import install_remove_shell
70
+
71
+ # Bare `agentcore add` / `agentcore remove` menus and `remove all`.
72
+ install_add_shell(add_app)
73
+ install_remove_shell(remove_app)
74
+ for primitive in all_primitives():
75
+ primitive.register_commands(add_app, remove_app)
76
+
77
+
78
+ def _stub_missing(typer_app: typer.Typer, prefix: str, commands: dict[str, str]) -> None:
79
+ existing = _command_names(typer_app)
80
+ for name, help_text in commands.items():
81
+ if name not in existing:
82
+ path = f"{prefix} {name}".strip()
83
+ typer_app.command(name, help=help_text, context_settings=STUB_SETTINGS)(_stub(path))
84
+
85
+
86
+ def _register_stubs() -> None:
87
+ _stub_missing(app, "", TOP_LEVEL)
88
+
89
+ taken = _command_names(app)
90
+ for group, (help_text, subcommands) in GROUPS.items():
91
+ if group in taken:
92
+ # A partly ported group gets stubs for just its missing subcommands.
93
+ if (sub := _group(app, group)) is not None:
94
+ _stub_missing(sub, group, subcommands)
95
+ continue
96
+ if not subcommands:
97
+ _stub_missing(app, "", {group: help_text})
98
+ continue
99
+ sub = typer.Typer(help=help_text, no_args_is_help=True)
100
+ _stub_missing(sub, group, subcommands)
101
+ app.add_typer(sub, name=group)
102
+
103
+ labels = {kind: ("an" if label[0] in "aeiou" else "a", label) for kind, label in RESOURCE_KINDS.items()}
104
+ _stub_missing(add_app, "add", {k: f"Add {a} {label} to the project" for k, (a, label) in labels.items()})
105
+ _stub_missing(
106
+ remove_app,
107
+ "remove",
108
+ {k: f"Remove {a} {label} from the project" for k, (a, label) in labels.items()}
109
+ | {"all": "Remove all resources from the project"},
110
+ )
111
+
112
+
113
+ def _version_callback(value: bool) -> None:
114
+ if value:
115
+ typer.echo(__version__)
116
+ raise typer.Exit()
117
+
118
+
119
+ @app.callback()
120
+ def main(
121
+ version: bool = typer.Option(
122
+ False, "--version", "-V", callback=_version_callback, is_eager=True, help="Show version"
123
+ ),
124
+ ) -> None:
125
+ # Background update check, with its notice printed at exit (upstream checkForUpdate in cli.ts).
126
+ from agentcore.cli.notices import install_post_command_notices
127
+
128
+ install_post_command_notices()
129
+
130
+
131
+ _register_commands()
132
+ _register_primitives()
133
+ for _name, _group_app in created_groups().items():
134
+ app.add_typer(_group_app, name=_name)
135
+ app.add_typer(add_app, name="add")
136
+ app.add_typer(remove_app, name="remove")
137
+ _register_stubs()
@@ -0,0 +1,11 @@
1
+ """Wizard naming helpers (port of src/cli/tui/utils/naming.ts)."""
2
+
3
+
4
+ def generate_unique_name(base_name: str, existing_names: list[str], separator: str = "") -> str:
5
+ """Append a numeric suffix when needed: MyAgent -> MyAgent1 -> MyAgent2."""
6
+ if base_name not in existing_names:
7
+ return base_name
8
+ counter = 1
9
+ while f"{base_name}{separator}{counter}" in existing_names:
10
+ counter += 1
11
+ return f"{base_name}{separator}{counter}"
@@ -0,0 +1,42 @@
1
+ """Post-command notices (port of src/cli/notices.ts).
2
+
3
+ The telemetry notice is not ported (telemetry is out of scope for the Python port).
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import atexit
9
+ import os
10
+ import sys
11
+
12
+ from agentcore.cli.update_notifier import BackgroundUpdateCheck, print_update_notification, should_check_for_updates
13
+
14
+
15
+ def print_post_command_notices(update_check: BackgroundUpdateCheck | None) -> None:
16
+ result = update_check.result() if update_check is not None else None
17
+ if result is not None and result.update_available:
18
+ print_update_notification(result)
19
+
20
+
21
+ _installed = False
22
+
23
+
24
+ def install_post_command_notices(argv: list[str] | None = None) -> BackgroundUpdateCheck | None:
25
+ """Start the background update check now and print its notice when the process exits.
26
+
27
+ Only for a real ``agentcore`` invocation (the console script), never on import from tests or
28
+ other programs, and never when ``AGENTCORE_DISABLE_UPDATE_CHECK`` is set.
29
+ """
30
+ global _installed
31
+ argv = list(sys.argv if argv is None else argv)
32
+ if _installed or not argv or os.path.basename(argv[0]) not in ("agentcore", "agentcore.exe"):
33
+ return None
34
+ if not should_check_for_updates(argv):
35
+ return None
36
+ _installed = True
37
+ check = BackgroundUpdateCheck().start()
38
+ atexit.register(print_post_command_notices, check)
39
+ return check
40
+
41
+
42
+ __all__ = ["install_post_command_notices", "print_post_command_notices"]
@@ -0,0 +1,34 @@
1
+ """Default project spec (port of ``src/cli/project.ts``)."""
2
+
3
+ from typing import Any
4
+
5
+ from agentcore.cli.constants import SCHEMA_VERSION
6
+ from agentcore.lib import get_schema_url_for_version
7
+
8
+
9
+ def create_default_project_spec(project_name: str) -> dict[str, Any]:
10
+ """Create a default AgentCore project spec (camelCase JSON dict) with standard defaults."""
11
+ return {
12
+ "$schema": get_schema_url_for_version(SCHEMA_VERSION),
13
+ "name": project_name,
14
+ "version": SCHEMA_VERSION,
15
+ "managedBy": "CDK",
16
+ "runtimes": [],
17
+ "memories": [],
18
+ "knowledgeBases": [],
19
+ "credentials": [],
20
+ "evaluators": [],
21
+ "onlineEvalConfigs": [],
22
+ "agentCoreGateways": [],
23
+ "policyEngines": [],
24
+ "harnesses": [],
25
+ "configBundles": [],
26
+ "abTests": [],
27
+ "datasets": [],
28
+ "payments": [],
29
+ "capacityProviders": [],
30
+ "tags": {
31
+ "agentcore:created-by": "agentcore-cli",
32
+ "agentcore:project-name": project_name,
33
+ },
34
+ }
@@ -0,0 +1,27 @@
1
+ """Port of ``runCliCommand`` (src/cli/telemetry/cli-command-run.ts) without telemetry.
2
+
3
+ Runs a non-interactive command body; on any exception prints ``{"success":false,"error":...}``
4
+ (with ``--json``) or the message on stderr, and exits 1. Exits 0 on success.
5
+ """
6
+
7
+ import json
8
+ from collections.abc import Callable
9
+ from typing import Any
10
+
11
+ import typer
12
+
13
+ from agentcore.cli.errors import get_error_message
14
+
15
+
16
+ def run_cli_command(as_json: bool, fn: Callable[[], Any]) -> None:
17
+ try:
18
+ fn()
19
+ except typer.Exit:
20
+ raise
21
+ except Exception as exc: # noqa: BLE001 - top-level command boundary, as upstream
22
+ if as_json:
23
+ typer.echo(json.dumps({"success": False, "error": get_error_message(exc)}, separators=(",", ":")))
24
+ else:
25
+ typer.echo(get_error_message(exc), err=True)
26
+ raise typer.Exit(1) from None
27
+ raise typer.Exit(0)
agentcore/cli/tree.py ADDED
@@ -0,0 +1,135 @@
1
+ """Declarative map of the upstream command tree (src/cli/commands, src/cli/primitives).
2
+
3
+ Commands not yet ported are registered from this table as stubs so `--help` shows the full
4
+ surface. When a command is ported, register it in its own module under `cli/commands/`
5
+ and drop it from here.
6
+ """
7
+
8
+ # Mirrors COMMAND_DESCRIPTIONS in src/cli/constants.ts.
9
+ PROGRAM_DESCRIPTION = "Build and deploy Agentic AI applications on AgentCore"
10
+
11
+ TOP_LEVEL: dict[str, str] = {
12
+ "create": "Create a new AgentCore project",
13
+ "dev": "Launch local dev server, or invoke an agent locally.",
14
+ "deploy": "Deploy project infrastructure to AWS via CDK.",
15
+ "exec": "Open an interactive shell or run a one-shot command in a deployed agent container.",
16
+ "invoke": "Invoke a deployed agent endpoint.",
17
+ "package": "Package agent artifacts without deploying.",
18
+ "status": "Show deployed resource details and status.",
19
+ "feedback": "Send feedback about the AgentCore CLI to the team.",
20
+ "view": "View A/B test or insights jobs.",
21
+ }
22
+
23
+ GROUPS: dict[str, tuple[str, dict[str, str]]] = {
24
+ "archive": (
25
+ "Archive (delete) a batch evaluation or recommendation on the service and clear local history.",
26
+ {
27
+ "batch-evaluation": "Archive a batch evaluation.",
28
+ "recommendation": "Archive a recommendation.",
29
+ "ab-test": "Delete an A/B test on the service and clear local history.",
30
+ "insights": "Delete an insights job on the service and clear local history.",
31
+ },
32
+ ),
33
+ "batch-evaluations": ("View batch evaluation history.", {"history": "View past batch evaluation runs."}),
34
+ "capacity-provider": (
35
+ "Manage capacity provider sessions.",
36
+ {"delete-session": "Delete a capacity provider session."},
37
+ ),
38
+ "config-bundle": (
39
+ "Manage configuration bundle versions and diffs.",
40
+ {
41
+ "versions": "List version history for a bundle.",
42
+ "diff": "Diff two versions of a bundle.",
43
+ "create-branch": "Create a new branch on an existing bundle.",
44
+ },
45
+ ),
46
+ "dataset": (
47
+ "Manage dataset versions.",
48
+ {
49
+ "download": "Download a dataset version locally.",
50
+ "publish-version": "Publish a new dataset version.",
51
+ "remove-version": "Remove a dataset version.",
52
+ },
53
+ ),
54
+ "evals": ("View saved eval and batch eval results from past runs.", {"history": "View past eval runs."}),
55
+ "export": ("Export a harness to a Strands runtime agent.", {"harness": "Export a harness config to app/."}),
56
+ "fetch": ("Fetch access info for deployed resources.", {"access": "Fetch access info for a deployed resource."}),
57
+ "help": ("Show help topics.", {"modes": "Explain interactive vs non-interactive modes."}),
58
+ "import": (
59
+ "Import a runtime, memory, or starter toolkit into this project. [experimental]",
60
+ {
61
+ "runtime": "Import an existing runtime.",
62
+ "memory": "Import an existing memory.",
63
+ "gateway": "Import an existing gateway.",
64
+ "evaluator": "Import an existing evaluator.",
65
+ "online-eval": "Import an existing online eval config.",
66
+ },
67
+ ),
68
+ "logs": ("Stream or search agent runtime logs.", {"evals": "Stream or search online eval logs."}),
69
+ "pause": (
70
+ "Pause a deployed resource (online eval config, A/B test).",
71
+ {
72
+ "online-eval": "Pause a deployed online eval config.",
73
+ "ab-test": "Pause traffic splitting for a running A/B test.",
74
+ "online-insights": "Pause a deployed online insights config.",
75
+ },
76
+ ),
77
+ "promote": ("Promote a winning variant.", {"ab-test": "Apply the winning A/B variant to agentcore.json."}),
78
+ "recommendations": (
79
+ "View recommendation history from past runs.",
80
+ {"history": "View past recommendation runs."},
81
+ ),
82
+ "resume": (
83
+ "Resume a paused resource (online eval config, A/B test).",
84
+ {
85
+ "online-eval": "Resume a paused online eval config.",
86
+ "ab-test": "Resume a paused A/B test.",
87
+ "online-insights": "Resume a paused online insights config.",
88
+ },
89
+ ),
90
+ "run": (
91
+ "Run evaluations, batch evaluations, or optimization recommendations.",
92
+ {
93
+ "eval": "Run on-demand evaluation against agent traces.",
94
+ "batch-evaluation": "Run evaluators across all sessions.",
95
+ "insights": "Run on-demand failure analysis across recent sessions.",
96
+ "recommendation": "Optimize prompts and tool descriptions.",
97
+ "ingest": "Ingest knowledge base data sources.",
98
+ "ab-test": "Start an A/B test on a gateway.",
99
+ },
100
+ ),
101
+ "stop": (
102
+ "Stop a running batch evaluation or A/B test.",
103
+ {"ab-test": "Stop a running A/B test.", "batch-evaluation": "Stop a running batch evaluation."},
104
+ ),
105
+ "traces": (
106
+ "View and download agent traces.",
107
+ {"list": "List recent traces for a deployed agent.", "get": "Download a trace to a JSON file."},
108
+ ),
109
+ "update": ("Check for and install CLI updates", {"cli": "Update the CLI."}),
110
+ }
111
+
112
+ # Resource kinds registered by src/cli/primitives/registry.ts (ALL_PRIMITIVES), plus the
113
+ # standalone `add/remove tool|skill` commands.
114
+ RESOURCE_KINDS: dict[str, str] = {
115
+ "agent": "agent",
116
+ "harness": "harness",
117
+ "memory": "memory",
118
+ "dataset": "dataset",
119
+ "credential": "credential",
120
+ "evaluator": "evaluator",
121
+ "online-eval": "online eval config",
122
+ "online-insights": "online insights config",
123
+ "gateway": "gateway",
124
+ "gateway-target": "gateway target",
125
+ "knowledge-base": "knowledge base",
126
+ "policy-engine": "policy engine",
127
+ "policy": "policy",
128
+ "config-bundle": "config bundle",
129
+ "runtime-endpoint": "runtime endpoint",
130
+ "payment-manager": "payment manager",
131
+ "payment-connector": "payment connector",
132
+ "capacity-provider": "capacity provider",
133
+ "tool": "harness tool",
134
+ "skill": "harness skill",
135
+ }
@@ -0,0 +1,123 @@
1
+ """Background update check (port of src/cli/update-notifier.ts).
2
+
3
+ Deliberate deviation: this port is distributed on PyPI as ``agentcore-cli``, so the latest version
4
+ comes from ``https://pypi.org/pypi/agentcore-cli/json`` and the suggested install command is
5
+ pip / pipx / uv tool depending on how the CLI was installed. The cache file and its one-day check
6
+ interval match upstream. Set ``AGENTCORE_DISABLE_UPDATE_CHECK=1`` to skip the background check.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import json
12
+ import os
13
+ import sys
14
+ import threading
15
+ import time
16
+ from dataclasses import dataclass
17
+
18
+ from agentcore import __version__
19
+ from agentcore.lib.time_constants import ONE_DAY_MS
20
+
21
+ CHECK_INTERVAL_MS = ONE_DAY_MS
22
+ CACHE_FILE = "update-check.json"
23
+ DISABLE_ENV = "AGENTCORE_DISABLE_UPDATE_CHECK"
24
+
25
+
26
+ def get_config_dir() -> str:
27
+ return os.environ.get("AGENTCORE_CONFIG_DIR") or os.path.join(os.path.expanduser("~"), ".agentcore")
28
+
29
+
30
+ @dataclass
31
+ class UpdateCheckResult:
32
+ update_available: bool
33
+ latest_version: str
34
+
35
+
36
+ def _read_cache() -> dict | None:
37
+ try:
38
+ with open(os.path.join(get_config_dir(), CACHE_FILE), encoding="utf-8") as fh:
39
+ data = json.load(fh)
40
+ return data if isinstance(data, dict) else None
41
+ except (OSError, ValueError):
42
+ return None
43
+
44
+
45
+ def _write_cache(data: dict) -> None:
46
+ try:
47
+ directory = get_config_dir()
48
+ os.makedirs(directory, exist_ok=True)
49
+ with open(os.path.join(directory, CACHE_FILE), "w", encoding="utf-8") as fh:
50
+ fh.write(json.dumps(data, separators=(",", ":")))
51
+ except OSError:
52
+ pass # silently ignore cache write failures
53
+
54
+
55
+ def _now_ms() -> int:
56
+ return int(time.time() * 1000)
57
+
58
+
59
+ def check_for_update() -> UpdateCheckResult | None:
60
+ """Cached for a day; ``None`` on any failure."""
61
+ from agentcore.cli.commands.update.action import compare_versions, fetch_latest_version
62
+
63
+ try:
64
+ cache = _read_cache()
65
+ now = _now_ms()
66
+ if cache and isinstance(cache.get("lastCheck"), (int, float)) and now - cache["lastCheck"] < CHECK_INTERVAL_MS:
67
+ latest = str(cache["latestVersion"])
68
+ return UpdateCheckResult(compare_versions(__version__, latest) > 0, latest)
69
+ latest = fetch_latest_version()
70
+ _write_cache({"lastCheck": now, "latestVersion": latest})
71
+ return UpdateCheckResult(compare_versions(__version__, latest) > 0, latest)
72
+ except Exception: # noqa: BLE001
73
+ return None
74
+
75
+
76
+ def print_update_notification(result: UpdateCheckResult) -> None:
77
+ from agentcore.cli.commands.update.action import get_install_command_display
78
+ from agentcore.cli.constants import ANSI
79
+
80
+ yellow, cyan, reset = ANSI.yellow, ANSI.cyan, ANSI.reset
81
+ sys.stderr.write(
82
+ f"\n{yellow}Update available:{reset} {__version__} → {cyan}{result.latest_version}{reset}\n"
83
+ f"Run {cyan}`{get_install_command_display()}`{reset} to update.\n"
84
+ )
85
+
86
+
87
+ class BackgroundUpdateCheck:
88
+ """Non-blocking ``checkForUpdate()`` promise: started before the command, awaited after it."""
89
+
90
+ def __init__(self) -> None:
91
+ self._result: UpdateCheckResult | None = None
92
+ self._thread = threading.Thread(target=self._run, name="agentcore-update-check", daemon=True)
93
+
94
+ def _run(self) -> None:
95
+ self._result = check_for_update()
96
+
97
+ def start(self) -> BackgroundUpdateCheck:
98
+ self._thread.start()
99
+ return self
100
+
101
+ def result(self, timeout: float | None = 5.0) -> UpdateCheckResult | None:
102
+ self._thread.join(timeout)
103
+ return None if self._thread.is_alive() else self._result
104
+
105
+
106
+ def should_check_for_updates(argv: list[str]) -> bool:
107
+ """Upstream skips the check for `update` itself; --help/--version exit before notices print."""
108
+ if os.environ.get(DISABLE_ENV):
109
+ return False
110
+ args = argv[1:]
111
+ if args and args[0] == "update":
112
+ return False
113
+ return not any(a in ("-h", "--help", "-V", "--version") for a in args)
114
+
115
+
116
+ __all__ = [
117
+ "CHECK_INTERVAL_MS",
118
+ "BackgroundUpdateCheck",
119
+ "UpdateCheckResult",
120
+ "check_for_update",
121
+ "print_update_notification",
122
+ "should_check_for_updates",
123
+ ]
@@ -0,0 +1,50 @@
1
+ """Commander-style variadic options (``-e a b c``) for Typer commands.
2
+
3
+ Commander's ``.option('-e, --evaluator <names...>')`` consumes every following argument up to the
4
+ next option-looking token. Click only supports repeating the flag (``-e a -e b``). ``variadic(...)``
5
+ returns a command class that rewrites ``-e a b c`` into ``-e a -e b -e c`` before Click parses, so
6
+ both spellings work.
7
+ """
8
+
9
+ from collections.abc import Iterable
10
+
11
+ from typer.core import TyperCommand
12
+
13
+
14
+ def expand_variadic(args: list[str], flags: frozenset[str]) -> list[str]:
15
+ out: list[str] = []
16
+ i = 0
17
+ while i < len(args):
18
+ arg = args[i]
19
+ if arg == "--":
20
+ out.extend(args[i:])
21
+ break
22
+ if arg in flags:
23
+ i += 1
24
+ values = []
25
+ while i < len(args) and not (args[i].startswith("-") and len(args[i]) > 1):
26
+ values.append(args[i])
27
+ i += 1
28
+ if not values:
29
+ out.append(arg) # let Click report the missing value
30
+ for value in values:
31
+ out += [arg, value]
32
+ continue
33
+ out.append(arg)
34
+ i += 1
35
+ return out
36
+
37
+
38
+ def variadic(*flags: str) -> type[TyperCommand]:
39
+ """A TyperCommand subclass treating ``flags`` as variadic options."""
40
+ flag_set = frozenset(flags)
41
+
42
+ class VariadicCommand(TyperCommand):
43
+ def parse_args(self, ctx, args: list[str]): # type: ignore[no-untyped-def]
44
+ return super().parse_args(ctx, expand_variadic(list(args), flag_set))
45
+
46
+ return VariadicCommand
47
+
48
+
49
+ def flags_of(*groups: Iterable[str]) -> tuple[str, ...]:
50
+ return tuple(f for g in groups for f in g)