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,149 @@
1
+ """Port of commands/invoke/resolve.ts: resolve which deployed runtime an invoke targets."""
2
+
3
+ from dataclasses import dataclass
4
+ from typing import Any
5
+
6
+ from agentcore.aws._http import encode_uri_component
7
+ from agentcore.cli.commands.invoke import _deps
8
+ from agentcore.lib.errors.types import ResourceNotFoundError, ValidationError
9
+ from agentcore.operations.session import generate_session_id
10
+
11
+
12
+ @dataclass
13
+ class ResolveInvokeResult:
14
+ """``{success: true, ...ResolvedInvokeTarget}`` or ``{success: false, error}``."""
15
+
16
+ success: bool
17
+ error: Exception | None = None
18
+ agent_spec: Any = None
19
+ target_name: str | None = None
20
+ target_config: Any = None
21
+ region: str | None = None
22
+ runtime_arn: str | None = None
23
+ bearer_token: str | None = None
24
+ session_id: str | None = None
25
+ baggage: str | None = None
26
+
27
+
28
+ def build_config_bundle_baggage(project: Any, target_state: Any, agent_name: str) -> str | None:
29
+ """W3C baggage for the config bundle whose components reference ``{{runtime:<agent>}}``, if deployed."""
30
+ key = f"{{{{runtime:{agent_name}}}}}"
31
+ bundle_spec = next(
32
+ (b for b in (project.config_bundles or []) if key in (b.components or {})),
33
+ None,
34
+ )
35
+ if bundle_spec is None:
36
+ return None
37
+ resources = target_state.resources if target_state else None
38
+ deployed = (resources.config_bundles if resources else None) or {}
39
+ state = deployed.get(bundle_spec.name)
40
+ if state and state.bundle_arn and state.version_id:
41
+ return (
42
+ f"aws.agentcore.configbundle_arn={encode_uri_component(state.bundle_arn)},"
43
+ f"aws.agentcore.configbundle_version={encode_uri_component(state.version_id)}"
44
+ )
45
+ return None
46
+
47
+
48
+ def resolve_invoke_target(
49
+ *,
50
+ project: Any,
51
+ deployed_state: Any,
52
+ aws_targets: list[Any],
53
+ agent_name: str | None = None,
54
+ target_name: str | None = None,
55
+ bearer_token: str | None = None,
56
+ session_id: str | None = None,
57
+ config_io: Any = None,
58
+ ) -> ResolveInvokeResult:
59
+ targets = deployed_state.targets or {}
60
+ target_names = list(targets)
61
+ if not target_names:
62
+ return ResolveInvokeResult(
63
+ False, error=ResourceNotFoundError("No deployed targets found. Run `agentcore deploy` first.")
64
+ )
65
+
66
+ selected = target_name if target_name is not None else target_names[0]
67
+ if target_name and target_name not in target_names:
68
+ return ResolveInvokeResult(
69
+ False,
70
+ error=ResourceNotFoundError(f"Target '{target_name}' not found. Available: {', '.join(target_names)}"),
71
+ )
72
+
73
+ target_state = targets.get(selected)
74
+ target_config = next((t for t in aws_targets if t.name == selected), None)
75
+ if target_config is None:
76
+ return ResolveInvokeResult(
77
+ False, error=ResourceNotFoundError(f"Target config '{selected}' not found in aws-targets")
78
+ )
79
+
80
+ runtimes = project.runtimes or []
81
+ if not runtimes:
82
+ return ResolveInvokeResult(False, error=ValidationError("No agents defined in configuration"))
83
+
84
+ agent_names = [a.name for a in runtimes]
85
+ if not agent_name and len(runtimes) > 1:
86
+ return ResolveInvokeResult(
87
+ False,
88
+ error=ValidationError(f"Multiple runtimes found. Use --runtime to specify one: {', '.join(agent_names)}"),
89
+ )
90
+
91
+ agent_spec = next((a for a in runtimes if a.name == agent_name), None) if agent_name else runtimes[0]
92
+ if agent_name and agent_spec is None:
93
+ return ResolveInvokeResult(
94
+ False,
95
+ error=ResourceNotFoundError(f"Agent '{agent_name}' not found. Available: {', '.join(agent_names)}"),
96
+ )
97
+ if agent_spec is None:
98
+ return ResolveInvokeResult(False, error=ValidationError("No agents defined in configuration"))
99
+
100
+ resources = target_state.resources if target_state else None
101
+ agent_state = ((resources.runtimes if resources else None) or {}).get(agent_spec.name)
102
+ if not agent_state:
103
+ return ResolveInvokeResult(
104
+ False, error=ValidationError(f"Agent '{agent_spec.name}' is not deployed to target '{selected}'")
105
+ )
106
+
107
+ baggage = build_config_bundle_baggage(project, target_state, agent_spec.name)
108
+
109
+ token = bearer_token
110
+ if agent_spec.authorizer_type == "CUSTOM_JWT" and not token:
111
+ if _deps.can_fetch_runtime_token(agent_spec.name, config_io=config_io):
112
+ try:
113
+ token = _deps.token_of(
114
+ _deps.fetch_runtime_token(agent_spec.name, config_io=config_io, deploy_target=selected)
115
+ )
116
+ except Exception as exc: # noqa: BLE001 - surfaced as a validation error, as upstream
117
+ return ResolveInvokeResult(
118
+ False,
119
+ error=ValidationError(
120
+ f"CUSTOM_JWT agent requires a bearer token. Auto-fetch failed: {exc}\n"
121
+ "Provide one manually with --bearer-token.",
122
+ cause=exc,
123
+ ),
124
+ )
125
+ else:
126
+ return ResolveInvokeResult(
127
+ False,
128
+ error=ValidationError(
129
+ f"Agent '{agent_spec.name}' is configured for CUSTOM_JWT but no bearer token is available.\n"
130
+ "Either provide --bearer-token or re-add the agent with --client-id and --client-secret to "
131
+ "enable auto-fetch."
132
+ ),
133
+ )
134
+
135
+ sid = session_id
136
+ if token and not sid:
137
+ sid = generate_session_id()
138
+
139
+ return ResolveInvokeResult(
140
+ True,
141
+ agent_spec=agent_spec,
142
+ target_name=selected,
143
+ target_config=target_config,
144
+ region=target_config.region,
145
+ runtime_arn=agent_state.runtime_arn,
146
+ bearer_token=token,
147
+ session_id=sid,
148
+ baggage=baggage,
149
+ )
@@ -0,0 +1,60 @@
1
+ """Port of commands/invoke/resolve-prompt.ts."""
2
+
3
+ import re
4
+ import sys
5
+ from dataclasses import dataclass
6
+ from typing import IO
7
+
8
+
9
+ @dataclass
10
+ class PromptSources:
11
+ flag: str | None = None
12
+ """Value from --prompt."""
13
+ positional: str | None = None
14
+ file: str | None = None
15
+ """Path from --prompt-file."""
16
+ stdin_piped: bool = False
17
+
18
+
19
+ @dataclass
20
+ class ResolvedPrompt:
21
+ success: bool
22
+ prompt: str | None = None
23
+ error: str | None = None
24
+
25
+
26
+ def _read_prompt_file(path: str) -> ResolvedPrompt:
27
+ try:
28
+ with open(path, encoding="utf-8") as f:
29
+ content = f.read()
30
+ return ResolvedPrompt(True, prompt=re.sub(r"\r?\n$", "", content, count=1))
31
+ except OSError as exc:
32
+ message = f"{exc.strerror}" if exc.strerror else str(exc)
33
+ if isinstance(exc, FileNotFoundError):
34
+ message = f"ENOENT: no such file or directory, open '{path}'"
35
+ return ResolvedPrompt(False, error=f"Failed to read --prompt-file '{path}': {message}")
36
+
37
+
38
+ def _read_stdin(stdin: IO[str]) -> str:
39
+ return stdin.read().strip()
40
+
41
+
42
+ def resolve_prompt(sources: PromptSources, stdin: IO[str] | None = None) -> ResolvedPrompt:
43
+ """Precedence: --prompt, positional, --prompt-file, piped stdin. --prompt-file plus piped stdin is an error."""
44
+ if sources.flag is not None:
45
+ return ResolvedPrompt(True, prompt=sources.flag)
46
+ if sources.positional is not None:
47
+ return ResolvedPrompt(True, prompt=sources.positional)
48
+
49
+ stdin_content = _read_stdin(stdin or sys.stdin) if sources.stdin_piped else ""
50
+ has_stdin = len(stdin_content) > 0
51
+
52
+ if sources.file is not None and has_stdin:
53
+ return ResolvedPrompt(
54
+ False, error="Cannot combine --prompt-file with piped stdin. Provide only one prompt source."
55
+ )
56
+ if sources.file is not None:
57
+ return _read_prompt_file(sources.file)
58
+ if has_stdin:
59
+ return ResolvedPrompt(True, prompt=stdin_content)
60
+ return ResolvedPrompt(True, prompt=None)
@@ -0,0 +1,61 @@
1
+ """Port of commands/invoke/types.ts."""
2
+
3
+ from dataclasses import dataclass, replace
4
+ from typing import Any
5
+
6
+ # Upstream's InvokeResult is `Result & {logFilePath?, agentName?, targetName?, response?, sessionId?, exitCode?}`.
7
+ # It is kept as a plain dict so `--json` output preserves upstream key order (each return site builds
8
+ # the dict in the same order as the upstream object literal; ``None`` means undefined).
9
+ InvokeResult = dict[str, Any]
10
+
11
+
12
+ @dataclass
13
+ class InvokeOptions:
14
+ agent_name: str | None = None
15
+ harness_name: str | None = None
16
+ harness_arn: str | None = None
17
+ """Direct harness ARN — bypasses project config and deployed state resolution."""
18
+ gateway: str | None = None
19
+ gateway_target: str | None = None
20
+ region: str | None = None
21
+ target_name: str | None = None
22
+ prompt: str | None = None
23
+ prompt_file: str | None = None
24
+ session_id: str | None = None
25
+ user_id: str | None = None
26
+ json: bool | None = None
27
+ stream: bool | None = None
28
+ tool: str | None = None
29
+ input: str | None = None
30
+ exec: bool | None = None
31
+ timeout: int | None = None
32
+ headers: dict[str, str] | None = None
33
+ bearer_token: str | None = None
34
+ verbose: bool | None = None
35
+ model_id: str | None = None
36
+ model_provider: str | None = None
37
+ api_key_arn: str | None = None
38
+ api_base: str | None = None
39
+ additional_params: dict[str, Any] | None = None
40
+ tools: str | None = None
41
+ max_iterations: int | None = None
42
+ harness_timeout: int | None = None
43
+ max_tokens: int | None = None
44
+ skills: str | None = None
45
+ system_prompt: str | None = None
46
+ allowed_tools: str | None = None
47
+ actor_id: str | None = None
48
+ payment_instrument_id: str | None = None
49
+ payment_session_id: str | None = None
50
+ auto_session: bool | None = None
51
+ payment_user_id: str | None = None
52
+
53
+ def with_(self, **changes: Any) -> "InvokeOptions":
54
+ return replace(self, **changes)
55
+
56
+
57
+ def result(success: bool, **fields: Any) -> InvokeResult:
58
+ """Build an InvokeResult dict: ``success`` first, then fields in the given order (``None`` dropped)."""
59
+ out: InvokeResult = {"success": success}
60
+ out.update({k: v for k, v in fields.items() if v is not None})
61
+ return out
@@ -0,0 +1,33 @@
1
+ """Port of commands/invoke/validate.ts."""
2
+
3
+ from dataclasses import dataclass
4
+
5
+ from agentcore.cli.commands.invoke.types import InvokeOptions
6
+
7
+
8
+ @dataclass
9
+ class ValidationResult:
10
+ valid: bool
11
+ error: str | None = None
12
+
13
+
14
+ def validate_invoke_options(options: InvokeOptions) -> ValidationResult:
15
+ if options.exec and not options.prompt:
16
+ return ValidationResult(False, 'A command is required with --exec. Usage: agentcore invoke --exec "ls -la"')
17
+ if options.exec and (options.tool or options.input):
18
+ return ValidationResult(False, "--exec cannot be combined with --tool or --input")
19
+ if options.exec and options.stream:
20
+ return ValidationResult(False, "--exec already streams output; --stream is not needed")
21
+ if options.json and not options.prompt:
22
+ return ValidationResult(False, "Prompt is required for JSON output")
23
+ if options.stream and not options.prompt:
24
+ return ValidationResult(False, "Prompt is required for streaming")
25
+ if options.auto_session and options.payment_session_id:
26
+ return ValidationResult(
27
+ False, "--auto-session and --payment-session-id are mutually exclusive. Use one or the other."
28
+ )
29
+ if options.payment_instrument_id is not None and options.payment_instrument_id.strip() == "":
30
+ return ValidationResult(False, "--payment-instrument-id cannot be empty")
31
+ if options.payment_session_id is not None and options.payment_session_id.strip() == "":
32
+ return ValidationResult(False, "--payment-session-id cannot be empty")
33
+ return ValidationResult(True)
@@ -0,0 +1,239 @@
1
+ """Job lifecycle commands: `pause`/`resume` (online-eval, online-insights, ab-test), `stop`
2
+ (ab-test, batch-evaluation), `archive` (batch-evaluation, recommendation, ab-test, insights) and
3
+ `promote ab-test` (ports of commands/pause, stop, archive and promote).
4
+ """
5
+
6
+ import typer
7
+
8
+ from agentcore.cli.commands._jobs_common import fail_early, print_json, red, require_project
9
+ from agentcore.cli.errors import get_error_message
10
+ from agentcore.cli.groups import group
11
+ from agentcore.cli.run_command import run_cli_command
12
+ from agentcore.lib import ConfigIO, serialize_result
13
+ from agentcore.operations.eval.pause_resume import handle_pause_resume
14
+ from agentcore.operations.jobs import create_job_engine
15
+
16
+ # ──────────────────────────────────────────────────────────────────────────────
17
+ # pause / resume
18
+ # ──────────────────────────────────────────────────────────────────────────────
19
+
20
+
21
+ def _online_config_action(name: str | None, arn: str | None, region: str | None, as_json: bool, action: str, kind: str):
22
+ if not arn and not name:
23
+ fail_early(as_json, "Either a config name or --arn is required")
24
+ if not arn or name:
25
+ require_project()
26
+ past = "Paused" if action == "pause" else "Resumed"
27
+ try:
28
+ result = handle_pause_resume(name=name or "", action=action, arn=arn, region=region)
29
+ if as_json:
30
+ print_json(serialize_result(result))
31
+ elif result.success:
32
+ display = result.value["configId"] if arn else name
33
+ typer.echo(f'{past} {kind} config "{display}" (status: {result.value["executionStatus"]})')
34
+ else:
35
+ red(str(result.error))
36
+ raise typer.Exit(0 if result.success else 1)
37
+ except typer.Exit:
38
+ raise
39
+ except Exception as exc: # noqa: BLE001
40
+ if as_json:
41
+ print_json({"success": False, "error": get_error_message(exc)})
42
+ else:
43
+ red(f"Error: {get_error_message(exc)}")
44
+ raise typer.Exit(1) from None
45
+
46
+
47
+ def _register_pause_resume(action: str) -> None:
48
+ app = group(action)
49
+ verb = "Pause" if action == "pause" else "Resume"
50
+ online_help = (
51
+ "Pause a deployed online eval config. Use --arn to target configs outside the project."
52
+ if action == "pause"
53
+ else "Resume a paused online eval config. Use --arn to target configs outside the project."
54
+ )
55
+
56
+ @app.command("online-eval", help=online_help)
57
+ def online_eval(
58
+ name: str | None = typer.Argument(None, help="Config name from project (not needed with --arn)"),
59
+ arn: str | None = typer.Option(
60
+ None, "--arn", help="Online eval config ARN — operate without a project directory"
61
+ ),
62
+ region: str | None = typer.Option(
63
+ None, "--region", help="AWS region override (auto-detected from ARN otherwise)"
64
+ ),
65
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
66
+ ) -> None:
67
+ _online_config_action(name, arn, region, as_json, action, "online eval")
68
+
69
+ insights_help = (
70
+ "[preview] Pause a deployed online insights config. Use --arn to target configs outside the project."
71
+ if action == "pause"
72
+ else "[preview] Resume a paused online insights config. Use --arn to target configs outside the project."
73
+ )
74
+
75
+ @app.command("online-insights", help=insights_help)
76
+ def online_insights(
77
+ name: str | None = typer.Argument(None, help="Config name from project (not needed with --arn)"),
78
+ arn: str | None = typer.Option(
79
+ None, "--arn", help="Online insights config ARN — operate without a project directory"
80
+ ),
81
+ region: str | None = typer.Option(
82
+ None, "--region", help="AWS region override (auto-detected from ARN otherwise)"
83
+ ),
84
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
85
+ ) -> None:
86
+ _online_config_action(name, arn, region, as_json, action, "online insights")
87
+
88
+ @app.command("ab-test", help=f"{verb} a running A/B test")
89
+ def ab_test(
90
+ job_id: str = typer.Option(..., "-i", "--id", help="A/B test ID"),
91
+ region: str | None = typer.Option(None, "--region", help="AWS region (auto-detected if omitted)"),
92
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
93
+ ) -> None:
94
+ require_project()
95
+
96
+ def run() -> None:
97
+ engine = create_job_engine(ConfigIO())
98
+ result = engine.pause("ab-test", job_id) if action == "pause" else engine.resume("ab-test", job_id)
99
+ if not result.success:
100
+ raise result.error
101
+ if as_json:
102
+ print_json({"success": True, "id": job_id})
103
+ else:
104
+ typer.echo(f"\n✓ A/B test {job_id} {'paused' if action == 'pause' else 'resumed'}.\n")
105
+
106
+ run_cli_command(as_json, run)
107
+
108
+
109
+ _register_pause_resume("pause")
110
+ _register_pause_resume("resume")
111
+
112
+ # ──────────────────────────────────────────────────────────────────────────────
113
+ # stop
114
+ # ──────────────────────────────────────────────────────────────────────────────
115
+
116
+ stop_app = group("stop")
117
+
118
+
119
+ def _stop(job_type: str, job_id: str, as_json: bool, label: str) -> None:
120
+ require_project()
121
+
122
+ def run() -> None:
123
+ result = create_job_engine(ConfigIO()).stop(job_type, job_id)
124
+ if not result.success:
125
+ raise result.error
126
+ if as_json:
127
+ print_json({"success": True, "id": job_id})
128
+ else:
129
+ typer.echo(f"\n✓ {label} {job_id} stop requested.\n")
130
+
131
+ run_cli_command(as_json, run)
132
+
133
+
134
+ @stop_app.command("ab-test", help="Stop a running A/B test permanently")
135
+ def stop_ab_test(
136
+ job_id: str = typer.Option(..., "-i", "--id", help="A/B test ID to stop"),
137
+ region: str | None = typer.Option(None, "--region", help="AWS region (auto-detected if omitted)"),
138
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
139
+ ) -> None:
140
+ _stop("ab-test", job_id, as_json, "A/B test")
141
+
142
+
143
+ @stop_app.command("batch-evaluation", help="Stop a running batch evaluation")
144
+ def stop_batch_evaluation(
145
+ job_id: str = typer.Option(..., "-i", "--id", help="Batch evaluation ID to stop"),
146
+ region: str | None = typer.Option(None, "--region", help="AWS region (auto-detected if omitted)"),
147
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
148
+ ) -> None:
149
+ _stop("batch-evaluation", job_id, as_json, "Batch evaluation")
150
+
151
+
152
+ # ──────────────────────────────────────────────────────────────────────────────
153
+ # archive
154
+ # ──────────────────────────────────────────────────────────────────────────────
155
+
156
+ archive_app = group("archive")
157
+
158
+
159
+ def execute_archive(job_type: str, job_id: str, as_json: bool, label: str) -> None:
160
+ require_project()
161
+
162
+ def run() -> None:
163
+ result = create_job_engine(ConfigIO()).archive(job_type, job_id)
164
+ if not result.success:
165
+ raise result.error
166
+ if as_json:
167
+ print_json({"success": True, "id": job_id})
168
+ else:
169
+ typer.echo(f"\n✓ {label} {job_id} archived.\n")
170
+
171
+ run_cli_command(as_json, run)
172
+
173
+
174
+ def _register_archive(job_type: str, help_text: str, id_help: str, label: str) -> None:
175
+ def command(
176
+ job_id: str = typer.Option(..., "-i", "--id", help=id_help),
177
+ region: str | None = typer.Option(None, "--region", help="AWS region (auto-detected if omitted)"),
178
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
179
+ ) -> None:
180
+ execute_archive(job_type, job_id, as_json, label)
181
+
182
+ archive_app.command(job_type, help=help_text)(command)
183
+
184
+
185
+ _register_archive(
186
+ "batch-evaluation",
187
+ "Archive a batch evaluation job record on the service and clear local history",
188
+ "Batch evaluation ID to archive",
189
+ "Batch evaluation",
190
+ )
191
+ _register_archive(
192
+ "recommendation",
193
+ "Archive a recommendation job record on the service and clear local history",
194
+ "Recommendation ID to archive",
195
+ "Recommendation",
196
+ )
197
+ _register_archive(
198
+ "ab-test",
199
+ "Archive (delete) an A/B test on the service and clear local history",
200
+ "A/B test ID to archive",
201
+ "A/B test",
202
+ )
203
+ _register_archive(
204
+ "insights",
205
+ "[preview] Archive an insights job record on the service and clear local history",
206
+ "Insights job ID to archive",
207
+ "Insights job",
208
+ )
209
+
210
+ # ──────────────────────────────────────────────────────────────────────────────
211
+ # promote
212
+ # ──────────────────────────────────────────────────────────────────────────────
213
+
214
+ promote_app = group("promote")
215
+ promote_app.info.help = "Promote resources"
216
+
217
+
218
+ @promote_app.command(
219
+ "ab-test",
220
+ help="Promote the winning treatment of an A/B test (stops the test and updates agentcore.json)",
221
+ )
222
+ def promote_ab_test(
223
+ job_id: str = typer.Option(..., "-i", "--id", help="A/B test ID"),
224
+ region: str | None = typer.Option(None, "--region", help="AWS region (auto-detected if omitted)"),
225
+ as_json: bool = typer.Option(False, "--json", help="Output as JSON"),
226
+ ) -> None:
227
+ require_project()
228
+
229
+ def run() -> None:
230
+ result = create_job_engine(ConfigIO()).promote("ab-test", job_id)
231
+ if not result.success:
232
+ raise result.error
233
+ if as_json:
234
+ print_json({"success": True, "id": job_id})
235
+ else:
236
+ typer.echo(f"\n✓ A/B test {job_id} stopped and winning variant applied to agentcore.json.")
237
+ typer.echo("\nRun: agentcore deploy\n")
238
+
239
+ run_cli_command(as_json, run)