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,165 @@
1
+ """`agentcore import online-eval` (port of commands/import/import-online-eval.ts)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ import typer
8
+
9
+ from agentcore.aws import agentcore_control
10
+ from agentcore.aws.partition import arn_prefix
11
+ from agentcore.cli.constants import ANSI
12
+ from agentcore.lib.errors.types import ValidationError
13
+ from agentcore.lib.result import Err, Ok
14
+
15
+ from .import_runtime import print_failure, print_success
16
+ from .import_utils import ImportedResource, fail_result, find_resource_in_deployed_state, parse_and_validate_arn
17
+ from .resource_import import execute_resource_import
18
+ from .types import BeforeWriteContext, ImportResourceOptions, ImportResourceResult, ResourceImportDescriptor
19
+
20
+
21
+ def extract_agent_name(service_names: list[str]) -> str | None:
22
+ """Agent name from service names of the form ``{agentName}.DEFAULT``."""
23
+ if not service_names:
24
+ return None
25
+ name = service_names[0]
26
+ dot = name.rfind(".")
27
+ return name if dot == -1 else name[:dot]
28
+
29
+
30
+ def to_online_eval_config_spec(
31
+ detail: dict[str, Any], local_name: str, agent_name: str, evaluator_arns: list[str]
32
+ ) -> Ok[dict[str, Any]] | Err[Exception]:
33
+ if detail.get("samplingPercentage") is None:
34
+ return Err(
35
+ ValidationError(
36
+ f'Online eval config "{detail.get("configName")}" has no sampling configuration. Cannot import.'
37
+ )
38
+ )
39
+ config: dict[str, Any] = {
40
+ "name": local_name,
41
+ "agent": agent_name,
42
+ "evaluators": evaluator_arns,
43
+ "samplingRate": detail["samplingPercentage"],
44
+ }
45
+ if detail.get("description"):
46
+ config["description"] = detail["description"]
47
+ if detail.get("executionStatus") == "ENABLED":
48
+ config["enableOnCreate"] = True
49
+ return Ok({"config": config})
50
+
51
+
52
+ def build_evaluator_arns(evaluator_ids: list[str], region: str, account: str) -> list[str]:
53
+ return [f"{arn_prefix(region)}:bedrock-agentcore:{region}:{account}:evaluator/{i}" for i in evaluator_ids]
54
+
55
+
56
+ def create_online_eval_descriptor() -> ResourceImportDescriptor[Any, Any]:
57
+ state: dict[str, Any] = {"agent": "", "evaluators": []}
58
+
59
+ def add(detail: Any, local_name: str, spec: dict[str, Any]) -> ImportResourceResult:
60
+ result = to_online_eval_config_spec(detail, local_name, state["agent"], state["evaluators"])
61
+ if not result.success:
62
+ return ImportResourceResult(
63
+ success=False, error=result.error, resource_type="online-eval", resource_name=local_name
64
+ )
65
+ spec.setdefault("onlineEvalConfigs", []).append(result.value["config"])
66
+ return ImportResourceResult(success=True, resource_type="online-eval", resource_name=local_name)
67
+
68
+ def before_write(c: BeforeWriteContext[Any]) -> ImportResourceResult | None:
69
+ c.logger.start_step("Resolve references")
70
+ aws_agent = extract_agent_name(c.detail.get("serviceNames") or [])
71
+ if not aws_agent:
72
+ return fail_result(
73
+ c.logger,
74
+ "Could not determine agent name from online eval config. The config has no data source service names.",
75
+ "online-eval",
76
+ c.local_name,
77
+ )
78
+ names = {r["name"] for r in c.project_spec.get("runtimes") or []}
79
+ agent: str | None = None
80
+ if aws_agent in names:
81
+ agent = aws_agent
82
+ else:
83
+ prefix = f"{c.ctx.project_name}_"
84
+ if aws_agent.startswith(prefix) and aws_agent[len(prefix) :] in names:
85
+ agent = aws_agent[len(prefix) :]
86
+
87
+ if not agent:
88
+ c.on_progress(f'Agent "{aws_agent}" not found by name, checking deployed state...')
89
+ runtimes = agentcore_control.list_all_agent_runtimes(region=c.target["region"])
90
+ match = next((r for r in runtimes if r["agentRuntimeName"] == aws_agent), None)
91
+ if match:
92
+ local = find_resource_in_deployed_state(
93
+ c.ctx.config_io, c.target.get("name") or "default", "runtime", match["agentRuntimeId"]
94
+ )
95
+ if local and local in names:
96
+ agent = local
97
+ c.on_progress(f'Resolved AWS runtime "{aws_agent}" to local name "{agent}"')
98
+
99
+ if not agent:
100
+ return fail_result(
101
+ c.logger,
102
+ f'Online eval config references agent "{aws_agent}" which is not in this project. Import or add the '
103
+ "agent first with `agentcore import runtime` or `agentcore add agent`.",
104
+ "online-eval",
105
+ c.local_name,
106
+ )
107
+
108
+ evaluator_ids = c.detail.get("evaluatorIds") or []
109
+ if not evaluator_ids:
110
+ return fail_result(
111
+ c.logger, "Online eval config has no evaluators configured. Cannot import.", "online-eval", c.local_name
112
+ )
113
+ state["evaluators"] = build_evaluator_arns(evaluator_ids, c.target["region"], c.target["account"])
114
+ state["agent"] = agent
115
+ c.on_progress(f"Agent: {agent}, Evaluators: {', '.join(state['evaluators'])}")
116
+ c.logger.end_step("success")
117
+ return None
118
+
119
+ return ResourceImportDescriptor(
120
+ resource_type="online-eval",
121
+ display_name="online eval config",
122
+ log_command="import-online-eval",
123
+ list_resources=lambda region: agentcore_control.list_all_online_evaluation_configs(region=region),
124
+ get_detail=lambda region, cid: agentcore_control.get_online_evaluation_config(region=region, config_id=cid),
125
+ parse_resource_id=lambda arn, target: parse_and_validate_arn(arn, "online-eval", target).resource_id,
126
+ extract_summary_id=lambda s: s["onlineEvaluationConfigId"],
127
+ format_list_item=lambda s, i: (
128
+ f" {ANSI.dim}[{i + 1}]{ANSI.reset} {s['onlineEvaluationConfigName']} — {s['status']} "
129
+ f"({s['executionStatus']})\n {ANSI.dim}{s['onlineEvaluationConfigArn']}{ANSI.reset}"
130
+ ),
131
+ format_auto_select_message=lambda s: (
132
+ f"Found 1 config: {s['onlineEvaluationConfigName']} ({s['onlineEvaluationConfigId']}). Auto-selecting."
133
+ ),
134
+ extract_detail_name=lambda d: d["configName"],
135
+ extract_detail_arn=lambda d: d["configArn"],
136
+ ready_status="ACTIVE",
137
+ extract_detail_status=lambda d: d["status"],
138
+ get_existing_names=lambda spec: [c["name"] for c in spec.get("onlineEvalConfigs") or []],
139
+ add_to_project_spec=add,
140
+ cfn_resource_type="AWS::BedrockAgentCore::OnlineEvaluationConfig",
141
+ cfn_name_property="OnlineEvaluationConfigName",
142
+ cfn_identifier_key="OnlineEvaluationConfigId",
143
+ build_deployed_state_entry=lambda name, cid, d: ImportedResource("online-eval", name, cid, d["configArn"]),
144
+ before_config_write=before_write,
145
+ )
146
+
147
+
148
+ def handle_import_online_eval(options: ImportResourceOptions) -> ImportResourceResult:
149
+ return execute_resource_import(create_online_eval_descriptor(), options)
150
+
151
+
152
+ def register_import_online_eval(import_app: typer.Typer) -> None:
153
+ @import_app.command(
154
+ "online-eval", help="Import an existing AgentCore Online Evaluation Config from your AWS account"
155
+ )
156
+ def import_online_eval(
157
+ arn: str | None = typer.Option(None, "--arn", help="Online evaluation config ARN to import"),
158
+ name: str | None = typer.Option(None, "--name", help="Local name for the imported online eval config"),
159
+ yes: bool = typer.Option(False, "-y", "--yes", help="Auto-confirm prompts"),
160
+ ) -> None:
161
+ result = handle_import_online_eval(ImportResourceOptions(arn=arn, name=name, yes=yes or None))
162
+ if result.success:
163
+ print_success("Online eval config", result, [])
164
+ else:
165
+ print_failure(result)
@@ -0,0 +1,145 @@
1
+ """Shared CDK import pipeline (port of commands/import/import-pipeline.ts).
2
+
3
+ build -> synth -> bootstrap -> publish assets -> phase 1 -> phase 2 -> update deployed state.
4
+
5
+ The CDK build/synth/bootstrap steps belong to the deploy area; they are reached through the small
6
+ :class:`CdkDriver` interface (default: :class:`DeployCdkDriver`, backed by
7
+ ``agentcore.operations.deploy.preflight``) so tests and future refactors can swap it.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import json
13
+ import os
14
+ from collections.abc import Callable
15
+ from dataclasses import dataclass
16
+ from typing import Any, Protocol
17
+
18
+ from . import phase1_update, phase2_import
19
+ from .import_utils import ImportedResource, update_deployed_state
20
+ from .template_utils import CfnTemplate
21
+ from .types import ResourceToImport
22
+
23
+
24
+ class CdkSynthSession(Protocol):
25
+ assembly_directory: str
26
+
27
+ def bootstrap_if_needed(self, target: dict[str, Any], on_progress: Callable[[str], None]) -> None: ...
28
+
29
+ def dispose(self) -> None: ...
30
+
31
+
32
+ class CdkDriver(Protocol):
33
+ def build_and_synth(self, project_root: str) -> CdkSynthSession: ...
34
+
35
+
36
+ class _DeploySynthSession:
37
+ def __init__(self, wrapper: Any, assembly_directory: str) -> None:
38
+ self._wrapper = wrapper
39
+ self.assembly_directory = assembly_directory
40
+
41
+ def bootstrap_if_needed(self, target: dict[str, Any], on_progress: Callable[[str], None]) -> None:
42
+ from types import SimpleNamespace
43
+
44
+ from agentcore.operations.deploy.preflight import bootstrap_environment, check_bootstrap_needed
45
+
46
+ ns = SimpleNamespace(**target)
47
+ if check_bootstrap_needed([ns]).needs_bootstrap:
48
+ on_progress("Bootstrapping AWS environment...")
49
+ bootstrap_environment(self._wrapper, ns)
50
+ on_progress("CDK bootstrap complete")
51
+
52
+ def dispose(self) -> None:
53
+ self._wrapper.dispose()
54
+
55
+
56
+ class DeployCdkDriver:
57
+ """Default driver backed by the deploy area's preflight helpers.
58
+
59
+ Calls buildCdkProject / synthesizeCdk / checkBootstrapNeeded / bootstrapEnvironment from
60
+ operations/deploy through this adapter so tests can swap in a fake.
61
+ """
62
+
63
+ def build_and_synth(self, project_root: str) -> CdkSynthSession:
64
+ from agentcore.cdk.local_cdk_project import LocalCdkProject
65
+ from agentcore.cdk.toolkit import silent_io_host
66
+ from agentcore.operations.deploy.preflight import build_cdk_project, synthesize_cdk
67
+
68
+ project = LocalCdkProject(project_root)
69
+ build_cdk_project(project)
70
+ synth = synthesize_cdk(project, io_host=silent_io_host)
71
+ info = synth.toolkit_wrapper.synth()
72
+ return _DeploySynthSession(synth.toolkit_wrapper, info.assembly_directory)
73
+
74
+
75
+ # Module-level so tests can replace it.
76
+ cdk_driver: CdkDriver = DeployCdkDriver()
77
+
78
+
79
+ @dataclass
80
+ class CdkImportPipelineResult:
81
+ success: bool
82
+ error: str | None = None
83
+ no_resources: bool = False
84
+ """True when build_resources_to_import returned nothing; callers decide whether that is an error."""
85
+
86
+
87
+ def execute_cdk_import_pipeline(
88
+ project_root: str,
89
+ stack_name: str,
90
+ target: dict[str, Any],
91
+ config_io: Any,
92
+ target_name: str,
93
+ on_progress: Callable[[str], None],
94
+ build_resources_to_import: Callable[[CfnTemplate, CfnTemplate], list[ResourceToImport]],
95
+ deployed_state_entries: list[ImportedResource],
96
+ ) -> CdkImportPipelineResult:
97
+ on_progress("Building CDK project...")
98
+ on_progress("Synthesizing CloudFormation template...")
99
+ session = cdk_driver.build_and_synth(project_root)
100
+ assembly = session.assembly_directory
101
+
102
+ synth_path = os.path.join(assembly, f"{stack_name}.template.json")
103
+ try:
104
+ with open(synth_path, encoding="utf-8") as fh:
105
+ synth_template: CfnTemplate = json.load(fh)
106
+ except (OSError, ValueError):
107
+ files = [f for f in os.listdir(assembly) if f.endswith(".template.json")]
108
+ if not files:
109
+ session.dispose()
110
+ return CdkImportPipelineResult(False, "No CloudFormation template found in CDK assembly")
111
+ with open(os.path.join(assembly, files[0]), encoding="utf-8") as fh:
112
+ synth_template = json.load(fh)
113
+
114
+ on_progress("Checking CDK bootstrap status...")
115
+ session.bootstrap_if_needed(target, on_progress)
116
+ session.dispose()
117
+
118
+ on_progress("Publishing CDK assets to S3...")
119
+ phase2_import.publish_cdk_assets(assembly, target["region"], on_progress)
120
+
121
+ on_progress("Phase 1: Deploying companion resources (IAM roles, policies)...")
122
+ phase1 = phase1_update.execute_phase1(target["region"], stack_name, synth_template, on_progress)
123
+ if not phase1.success:
124
+ return CdkImportPipelineResult(False, f"Phase 1 failed: {phase1.error}")
125
+
126
+ on_progress("Reading deployed template...")
127
+ deployed_template = phase1_update.get_deployed_template(target["region"], stack_name)
128
+ if not deployed_template:
129
+ return CdkImportPipelineResult(False, "Could not read deployed template after Phase 1")
130
+
131
+ resources = build_resources_to_import(synth_template, deployed_template)
132
+ if not resources:
133
+ return CdkImportPipelineResult(True, no_resources=True)
134
+
135
+ on_progress(f"Phase 2: Importing {len(resources)} resource(s) via CloudFormation IMPORT...")
136
+ phase2 = phase2_import.execute_phase2(
137
+ target["region"], stack_name, deployed_template, synth_template, resources, assembly, on_progress
138
+ )
139
+ if not phase2.success:
140
+ return CdkImportPipelineResult(False, f"Phase 2 failed: {phase2.error}")
141
+
142
+ on_progress("Updating deployed state...")
143
+ update_deployed_state(config_io, target_name, stack_name, deployed_state_entries)
144
+ on_progress("Deployed state updated")
145
+ return CdkImportPipelineResult(True)
@@ -0,0 +1,214 @@
1
+ """`agentcore import runtime` (port of commands/import/import-runtime.ts)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import re
7
+ import shutil
8
+ import sys
9
+ from typing import Any
10
+
11
+ import typer
12
+
13
+ from agentcore.aws import agentcore_control
14
+ from agentcore.cli.constants import ANSI
15
+
16
+ from .import_utils import copy_agent_source, fail_result, parse_and_validate_arn, strip_reserved_tags
17
+ from .resource_import import execute_resource_import
18
+ from .types import BeforeWriteContext, ImportResourceResult, ResourceImportDescriptor, RuntimeImportOptions
19
+
20
+ _SOURCE_FILE = re.compile(r"\.(py|ts|js)$")
21
+
22
+
23
+ def extract_entrypoint(entry_point: list[str] | None) -> str | None:
24
+ """First entry that looks like a source file (skips wrappers like ``opentelemetry-instrument``)."""
25
+ if not entry_point:
26
+ return None
27
+ return next((e for e in entry_point if _SOURCE_FILE.search(e)), None)
28
+
29
+
30
+ def to_agent_env_spec(runtime: dict[str, Any], local_name: str, code_location: str, entrypoint: str) -> dict[str, Any]:
31
+ runtime_version = (
32
+ runtime.get("runtimeVersion")
33
+ if runtime["build"] == "Container"
34
+ else (runtime.get("runtimeVersion") or "PYTHON_3_12")
35
+ )
36
+ spec: dict[str, Any] = {"name": local_name}
37
+ if runtime.get("description"):
38
+ spec["description"] = runtime["description"]
39
+ spec.update(
40
+ {
41
+ "build": runtime["build"],
42
+ "entrypoint": entrypoint,
43
+ "codeLocation": code_location,
44
+ "runtimeVersion": runtime_version,
45
+ "protocol": runtime.get("protocol"),
46
+ "networkMode": runtime.get("networkMode"),
47
+ "instrumentation": {"enableOtel": True},
48
+ }
49
+ )
50
+ spec = {k: v for k, v in spec.items() if v is not None}
51
+ if runtime.get("networkMode") == "VPC" and runtime.get("networkConfig"):
52
+ spec["networkConfig"] = runtime["networkConfig"]
53
+ if runtime.get("roleArn") and runtime["roleArn"] != "imported":
54
+ spec["executionRoleArn"] = runtime["roleArn"]
55
+ if runtime.get("authorizerType"):
56
+ spec["authorizerType"] = runtime["authorizerType"]
57
+ if runtime.get("authorizerConfiguration"):
58
+ spec["authorizerConfiguration"] = runtime["authorizerConfiguration"]
59
+ if runtime.get("environmentVariables"):
60
+ spec["envVars"] = [{"name": k, "value": v} for k, v in runtime["environmentVariables"].items()]
61
+ tags = strip_reserved_tags(runtime.get("tags"))
62
+ if tags:
63
+ spec["tags"] = tags
64
+ if runtime.get("lifecycleConfiguration"):
65
+ spec["lifecycleConfiguration"] = runtime["lifecycleConfiguration"]
66
+ if runtime.get("requestHeaderAllowlist"):
67
+ spec["requestHeaderAllowlist"] = runtime["requestHeaderAllowlist"]
68
+ return spec
69
+
70
+
71
+ def create_runtime_descriptor(options: RuntimeImportOptions) -> ResourceImportDescriptor[Any, Any]:
72
+ state: dict[str, Any] = {"entrypoint": "", "code_location": "", "copied_app_dir": None}
73
+
74
+ def before_write(c: BeforeWriteContext[Any]) -> ImportResourceResult | None:
75
+ c.logger.start_step("Resolve entrypoint")
76
+ entrypoint = options.entrypoint or extract_entrypoint(c.detail.get("entryPoint"))
77
+ if not entrypoint:
78
+ return fail_result(
79
+ c.logger,
80
+ "Could not determine entrypoint from runtime configuration.\n Please re-run with --entrypoint "
81
+ "<file> to specify it manually.",
82
+ "runtime",
83
+ c.local_name,
84
+ )
85
+ c.on_progress(f"Entrypoint: {entrypoint}")
86
+ c.logger.end_step("success")
87
+
88
+ c.logger.start_step("Validate source path")
89
+ if not options.code:
90
+ return fail_result(
91
+ c.logger,
92
+ "Source path is required for runtime import. Use --code <path> to specify the agent source code "
93
+ "directory.",
94
+ "runtime",
95
+ c.local_name,
96
+ )
97
+ source_path = os.path.abspath(options.code)
98
+ if not os.path.exists(source_path):
99
+ return fail_result(c.logger, f"Source path does not exist: {source_path}", "runtime", c.local_name)
100
+ if not os.path.exists(os.path.join(source_path, entrypoint)):
101
+ return fail_result(
102
+ c.logger,
103
+ f"Entrypoint file '{entrypoint}' not found in {source_path}. Ensure --code points to the directory "
104
+ "containing your entrypoint file.",
105
+ "runtime",
106
+ c.local_name,
107
+ )
108
+ c.logger.end_step("success")
109
+
110
+ c.logger.start_step("Copy agent source")
111
+ state["code_location"] = f"app/{c.local_name}/"
112
+ state["entrypoint"] = entrypoint
113
+ state["copied_app_dir"] = os.path.join(c.ctx.project_root, "app", c.local_name)
114
+ copy_agent_source(source_path, c.local_name, c.ctx.project_root, c.detail["build"], entrypoint, c.on_progress)
115
+ c.logger.end_step("success")
116
+ return None
117
+
118
+ def add_to_spec(detail: Any, local_name: str, spec: dict[str, Any]) -> ImportResourceResult:
119
+ spec.setdefault("runtimes", []).append(
120
+ to_agent_env_spec(detail, local_name, state["code_location"], state["entrypoint"])
121
+ )
122
+ return ImportResourceResult(success=True, resource_type="runtime", resource_name=local_name)
123
+
124
+ def rollback_extra() -> None:
125
+ path = state["copied_app_dir"]
126
+ if path and os.path.exists(path):
127
+ try:
128
+ shutil.rmtree(path)
129
+ except OSError as exc:
130
+ print(f"Warning: Could not clean up {path}: {exc}", file=sys.stderr)
131
+
132
+ from .import_utils import ImportedResource
133
+
134
+ return ResourceImportDescriptor(
135
+ resource_type="runtime",
136
+ display_name="runtime",
137
+ log_command="import-runtime",
138
+ list_resources=lambda region: agentcore_control.list_all_agent_runtimes(region=region),
139
+ get_detail=lambda region, rid: agentcore_control.get_agent_runtime_detail(region=region, runtime_id=rid),
140
+ parse_resource_id=lambda arn, target: parse_and_validate_arn(arn, "runtime", target).resource_id,
141
+ extract_summary_id=lambda s: s["agentRuntimeId"],
142
+ format_list_item=lambda s, i: (
143
+ f" {ANSI.dim}[{i + 1}]{ANSI.reset} {s['agentRuntimeName']} — {s['status']}\n"
144
+ f" {ANSI.dim}{s['agentRuntimeArn']}{ANSI.reset}"
145
+ ),
146
+ format_auto_select_message=lambda s: (
147
+ f"Found 1 runtime: {s['agentRuntimeName']} ({s['agentRuntimeId']}). Auto-selecting."
148
+ ),
149
+ extract_detail_name=lambda d: d["agentRuntimeName"],
150
+ extract_detail_arn=lambda d: d["agentRuntimeArn"],
151
+ ready_status="READY",
152
+ extract_detail_status=lambda d: d["status"],
153
+ get_existing_names=lambda spec: [r["name"] for r in spec.get("runtimes", [])],
154
+ add_to_project_spec=add_to_spec,
155
+ cfn_resource_type="AWS::BedrockAgentCore::Runtime",
156
+ cfn_name_property="AgentRuntimeName",
157
+ cfn_identifier_key="AgentRuntimeId",
158
+ build_deployed_state_entry=lambda name, rid, d: ImportedResource("runtime", name, rid, d["agentRuntimeArn"]),
159
+ before_config_write=before_write,
160
+ rollback_extra=rollback_extra,
161
+ )
162
+
163
+
164
+ def handle_import_runtime(options: RuntimeImportOptions) -> ImportResourceResult:
165
+ return execute_resource_import(create_runtime_descriptor(options), options)
166
+
167
+
168
+ def print_success(label: str, result: ImportResourceResult, next_steps: list[tuple[str, str]]) -> None:
169
+ typer.echo("")
170
+ typer.echo(f"{ANSI.green}{label} imported successfully!{ANSI.reset}")
171
+ typer.echo(f" Name: {result.resource_name}")
172
+ typer.echo(f" ID: {result.resource_id}")
173
+ typer.echo("")
174
+ if next_steps:
175
+ typer.echo(f"{ANSI.dim}Next steps:{ANSI.reset}")
176
+ for cmd, desc in next_steps:
177
+ typer.echo(f" {cmd}{ANSI.dim}{desc}{ANSI.reset}")
178
+ typer.echo("")
179
+
180
+
181
+ def print_failure(result: ImportResourceResult) -> None:
182
+ typer.echo(f"\n{ANSI.red}[error]{ANSI.reset} {result.error}", err=True)
183
+ if result.log_path:
184
+ typer.echo(f"Log: {result.log_path}", err=True)
185
+ raise typer.Exit(1)
186
+
187
+
188
+ RUNTIME_NEXT_STEPS = [
189
+ ("agentcore deploy ", "Deploy the imported stack"),
190
+ ("agentcore status ", "Verify resource status"),
191
+ ("agentcore invoke ", "Test your agent"),
192
+ ]
193
+
194
+
195
+ def register_import_runtime(import_app: typer.Typer) -> None:
196
+ @import_app.command("runtime", help="Import an existing AgentCore Runtime from your AWS account")
197
+ def import_runtime(
198
+ arn: str | None = typer.Option(None, "--arn", help="Runtime ARN to import"),
199
+ code: str | None = typer.Option(
200
+ None, "--code", help="Path to the directory containing the entrypoint file (e.g., the folder with main.py)"
201
+ ),
202
+ entrypoint: str | None = typer.Option(
203
+ None, "--entrypoint", help="Entrypoint file (auto-detected from runtime, e.g. main.py)"
204
+ ),
205
+ name: str | None = typer.Option(None, "--name", help="Local name for the imported runtime"),
206
+ yes: bool = typer.Option(False, "-y", "--yes", help="Auto-confirm prompts"),
207
+ ) -> None:
208
+ result = handle_import_runtime(
209
+ RuntimeImportOptions(arn=arn, code=code, entrypoint=entrypoint, name=name, yes=yes or None)
210
+ )
211
+ if result.success:
212
+ print_success("Runtime", result, RUNTIME_NEXT_STEPS)
213
+ else:
214
+ print_failure(result)