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,52 @@
1
+ """Client-side deep diff of config bundle components (port of operations/config-bundle/diff-versions.ts)."""
2
+
3
+ from typing import Any
4
+
5
+ _MISSING: Any = object()
6
+
7
+
8
+ def _js_type(value: Any) -> str:
9
+ if value is _MISSING:
10
+ return "undefined"
11
+ if isinstance(value, bool):
12
+ return "boolean"
13
+ if isinstance(value, (int, float)):
14
+ return "number"
15
+ if isinstance(value, str):
16
+ return "string"
17
+ return "object" # dict, list, None
18
+
19
+
20
+ def deep_diff(from_value: Any, to_value: Any, prefix: str = "") -> list[dict[str, Any]]:
21
+ """Flat list of {path, type: added|removed|changed, oldValue?, newValue?} with dot paths."""
22
+ entries: list[dict[str, Any]] = []
23
+ if from_value is to_value or (_js_type(from_value) == _js_type(to_value) != "object" and from_value == to_value):
24
+ return entries
25
+ if from_value is None or to_value is None or _js_type(from_value) != _js_type(to_value):
26
+ if from_value is _MISSING:
27
+ entries.append({"path": prefix, "type": "added", "newValue": to_value})
28
+ elif to_value is _MISSING:
29
+ entries.append({"path": prefix, "type": "removed", "oldValue": from_value})
30
+ else:
31
+ entries.append({"path": prefix, "type": "changed", "oldValue": from_value, "newValue": to_value})
32
+ return entries
33
+ if _js_type(from_value) != "object":
34
+ entries.append({"path": prefix, "type": "changed", "oldValue": from_value, "newValue": to_value})
35
+ return entries
36
+ if isinstance(from_value, list) or isinstance(to_value, list):
37
+ if not isinstance(from_value, list) or not isinstance(to_value, list) or len(from_value) != len(to_value):
38
+ entries.append({"path": prefix, "type": "changed", "oldValue": from_value, "newValue": to_value})
39
+ return entries
40
+ for i, (a, b) in enumerate(zip(from_value, to_value, strict=True)):
41
+ entries.extend(deep_diff(a, b, f"{prefix}[{i}]"))
42
+ return entries
43
+ keys = list(dict.fromkeys([*from_value.keys(), *to_value.keys()]))
44
+ for key in keys:
45
+ child = f"{prefix}.{key}" if prefix else key
46
+ if key not in from_value:
47
+ entries.append({"path": child, "type": "added", "newValue": to_value[key]})
48
+ elif key not in to_value:
49
+ entries.append({"path": child, "type": "removed", "oldValue": from_value[key]})
50
+ else:
51
+ entries.extend(deep_diff(from_value[key], to_value[key], child))
52
+ return entries
@@ -0,0 +1,65 @@
1
+ """Resolve a config bundle name to its bundle ID (port of operations/config-bundle/resolve-bundle.ts).
2
+
3
+ Fast path: deployed-state.json. Fallback: the list API by (project-prefixed) name.
4
+ """
5
+
6
+ from dataclasses import dataclass
7
+
8
+ from agentcore.aws import agentcore_config_bundles as api
9
+ from agentcore.lib import ConfigIO
10
+ from agentcore.lib.schemas.io.config_io import to_jsonable
11
+ from agentcore.operations.config_bundle.bundle_name_variants import get_bundle_name_variants
12
+
13
+
14
+ @dataclass
15
+ class ResolvedBundle:
16
+ bundle_id: str
17
+ region: str
18
+ bundle_arn: str | None = None
19
+ version_id: str | None = None
20
+
21
+
22
+ def resolve_bundle_by_name(bundle_name: str, region: str, config_io: ConfigIO | None = None) -> ResolvedBundle:
23
+ config_io = config_io or ConfigIO()
24
+ deployed = to_jsonable(config_io.read_deployed_state())
25
+ for target in (deployed.get("targets") or {}).values():
26
+ bundle = ((((target or {}).get("resources")) or {}).get("configBundles") or {}).get(bundle_name)
27
+ if bundle:
28
+ try:
29
+ versions = api.list_configuration_bundle_versions(
30
+ region=region, bundle_id=bundle["bundleId"], max_results=1
31
+ )
32
+ latest = versions["versions"][0] if versions["versions"] else None
33
+ return ResolvedBundle(
34
+ bundle_id=bundle["bundleId"],
35
+ bundle_arn=bundle.get("bundleArn"),
36
+ version_id=(latest or {}).get("versionId") or bundle.get("versionId"),
37
+ region=region,
38
+ )
39
+ except Exception: # noqa: BLE001, S110 - stale entry: fall through to the API lookup
40
+ pass
41
+
42
+ project_name = None
43
+ try:
44
+ project_name = config_io.read_project_spec().name
45
+ except Exception: # noqa: BLE001, S110
46
+ pass
47
+ variants = get_bundle_name_variants(bundle_name, project_name)
48
+ match = None
49
+ next_token = None
50
+ while True:
51
+ page = api.list_configuration_bundles(region=region, max_results=100, next_token=next_token)
52
+ match = next((b for b in page["bundles"] if b.get("bundleName") in variants), None)
53
+ next_token = page.get("nextToken")
54
+ if match or not next_token:
55
+ break
56
+ if not match:
57
+ raise Exception(f'Configuration bundle "{bundle_name}" not found. Has it been deployed?')
58
+ versions = api.list_configuration_bundle_versions(region=region, bundle_id=match["bundleId"], max_results=1)
59
+ latest = versions["versions"][0] if versions["versions"] else None
60
+ return ResolvedBundle(
61
+ bundle_id=match["bundleId"],
62
+ bundle_arn=match.get("bundleArn"),
63
+ version_id=(latest or {}).get("versionId"),
64
+ region=region,
65
+ )
@@ -0,0 +1,3 @@
1
+ from agentcore.operations.connectors.translators import ConfigurationEntry, ParameterOverride, translate_connector
2
+
3
+ __all__ = ["ConfigurationEntry", "ParameterOverride", "translate_connector"]
@@ -0,0 +1,63 @@
1
+ """Connector translators (port of operations/connectors/translators.ts).
2
+
3
+ Convert validated CLI inputs into the ``configurations[]`` array of a connector gateway target
4
+ (which mirrors the CFN wire format): one entry per connector operation.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import Any, Literal, TypedDict
10
+
11
+
12
+ class ParameterOverride(TypedDict, total=False):
13
+ path: str
14
+ description: str
15
+ visible: bool
16
+
17
+
18
+ class ConfigurationEntry(TypedDict):
19
+ name: str
20
+ description: str
21
+ parameterValues: dict[str, Any]
22
+ parameterOverrides: list[ParameterOverride]
23
+
24
+
25
+ def _translate_web_search(exclude_domains: list[str] | None) -> list[ConfigurationEntry]:
26
+ parameter_values: dict[str, Any] = {}
27
+ if exclude_domains:
28
+ parameter_values["domainFilter"] = {"exclude": list(exclude_domains)}
29
+ return [{"name": "WebSearch", "description": "", "parameterValues": parameter_values, "parameterOverrides": []}]
30
+
31
+
32
+ def _translate_knowledge_bases(knowledge_base_id: str) -> list[ConfigurationEntry]:
33
+ return [
34
+ {
35
+ "name": "AgenticRetrieveStream",
36
+ "description": (
37
+ "Streaming endpoint for agentic retrieval from knowledge bases. Performs multi-step retrieval with "
38
+ "planning and returns results as a stream of events."
39
+ ),
40
+ "parameterValues": {
41
+ "retrievers": [{"configuration": {"knowledgeBase": {"knowledgeBaseId": knowledge_base_id}}}],
42
+ "agenticRetrieveConfiguration": {"foundationModelType": "MANAGED", "rerankingModelType": "MANAGED"},
43
+ },
44
+ "parameterOverrides": [],
45
+ },
46
+ {
47
+ "name": "Retrieve",
48
+ "description": "Queries a knowledge base and retrieves information from it.",
49
+ "parameterValues": {"knowledgeBaseId": knowledge_base_id},
50
+ "parameterOverrides": [],
51
+ },
52
+ ]
53
+
54
+
55
+ def translate_connector(
56
+ connector_id: Literal["web-search", "bedrock-knowledge-bases"], input: dict[str, Any]
57
+ ) -> list[ConfigurationEntry]:
58
+ """``input`` is ``{"excludeDomains": [...]}`` for web-search, ``{"knowledgeBaseId": ...}`` for KBs."""
59
+ if connector_id == "web-search":
60
+ return _translate_web_search(input.get("excludeDomains"))
61
+ if connector_id == "bedrock-knowledge-bases":
62
+ return _translate_knowledge_bases(input["knowledgeBaseId"])
63
+ raise ValueError(f"Unknown connector: {connector_id}")
@@ -0,0 +1,21 @@
1
+ """Dataset operations (port of operations/dataset/index.ts)."""
2
+
3
+ from agentcore.operations.dataset.delete import delete_dataset_version
4
+ from agentcore.operations.dataset.publish import publish_dataset
5
+ from agentcore.operations.dataset.pull import pull_dataset
6
+ from agentcore.operations.dataset.push import push_dataset
7
+ from agentcore.operations.dataset.resolve_dataset import ResolvedDataset, get_dataset_names, resolve_dataset
8
+ from agentcore.operations.dataset.status import get_dataset_status
9
+ from agentcore.operations.dataset.wait import wait_for_dataset_active
10
+
11
+ __all__ = [
12
+ "ResolvedDataset",
13
+ "delete_dataset_version",
14
+ "get_dataset_names",
15
+ "get_dataset_status",
16
+ "publish_dataset",
17
+ "pull_dataset",
18
+ "push_dataset",
19
+ "resolve_dataset",
20
+ "wait_for_dataset_active",
21
+ ]
@@ -0,0 +1,7 @@
1
+ """Delete one published dataset version (port of operations/dataset/delete.ts)."""
2
+
3
+ from agentcore.aws import agentcore_datasets as api
4
+
5
+
6
+ def delete_dataset_version(*, region: str, dataset_id: str, version: str) -> None:
7
+ api.delete_dataset_version_api(region=region, dataset_id=dataset_id, version=version)
@@ -0,0 +1,16 @@
1
+ """Publish the dataset DRAFT as a new immutable version (port of operations/dataset/publish.ts)."""
2
+
3
+ from agentcore.aws import agentcore_datasets as api
4
+ from agentcore.operations.dataset import wait as _wait
5
+
6
+
7
+ def publish_dataset(*, region: str, dataset_id: str) -> dict:
8
+ """{"version", "exampleCount", "draftStatus"}."""
9
+ version = api.create_dataset_version(region=region, dataset_id=dataset_id)
10
+ _wait.wait_for_dataset_active(region, dataset_id)
11
+ info = api.get_dataset(region=region, dataset_id=dataset_id)
12
+ return {
13
+ "version": version["datasetVersion"],
14
+ "exampleCount": info.get("exampleCount"),
15
+ "draftStatus": info.get("draftStatus") or "UNMODIFIED",
16
+ }
@@ -0,0 +1,21 @@
1
+ """Pull dataset content from the service to the local file (port of operations/dataset/pull.ts)."""
2
+
3
+ import os
4
+
5
+ from agentcore.aws import agentcore_datasets as api
6
+
7
+
8
+ def pull_dataset(
9
+ *, region: str, dataset_id: str, local_file_path: str, config_base_dir: str, version: str | None = None
10
+ ) -> dict:
11
+ """Stream the dataset to disk. {"exampleCount", "version"}."""
12
+ absolute = os.path.abspath(os.path.join(config_base_dir, local_file_path))
13
+ info = api.get_dataset(region=region, dataset_id=dataset_id, version=version)
14
+ if info.get("status") != "ACTIVE":
15
+ raise Exception(f"Dataset is not ready (status: {info.get('status')}). Please try again later.")
16
+ if not info.get("downloadUrl"):
17
+ raise Exception(
18
+ "Dataset has no download URL available. The dataset may not be ready yet. Please try again later."
19
+ )
20
+ line_count = api.download_dataset(info["downloadUrl"], mode="stream", file_path=absolute)
21
+ return {"exampleCount": line_count, "version": info.get("datasetVersion")}
@@ -0,0 +1,201 @@
1
+ """Push a local dataset file to the service DRAFT by incremental diff (port of operations/dataset/push.ts).
2
+
3
+ 1. Read the local JSONL file 2. Download the remote DRAFT 3. Diff by exampleId
4
+ 4. Delete removed, update changed, add new 5. Write new exampleIds back to the local file
5
+ """
6
+
7
+ import json
8
+ import math
9
+ import os
10
+ import time
11
+ import uuid
12
+ from collections.abc import Callable
13
+ from typing import Any
14
+
15
+ from agentcore.aws import agentcore_datasets as api
16
+ from agentcore.aws.retry import is_retryable_aws_error
17
+ from agentcore.operations.dataset import wait as _wait
18
+
19
+ API_BATCH_LIMIT = 1000
20
+ BATCH_MAX_RETRIES = 3
21
+ BATCH_RETRY_BASE_MS = 1_000
22
+
23
+ # Injectable for tests.
24
+ sleep: Callable[[float], None] = time.sleep
25
+
26
+
27
+ def _js_stringify(value: Any) -> str:
28
+ return json.dumps(value, separators=(",", ":"), ensure_ascii=False)
29
+
30
+
31
+ def _stable_stringify(value: Any) -> str:
32
+ """fast-json-stable-stringify: recursively sorted keys, compact."""
33
+ return json.dumps(value, sort_keys=True, separators=(",", ":"), ensure_ascii=False)
34
+
35
+
36
+ def _parse_error_message(exc: ValueError) -> str:
37
+ return str(exc)
38
+
39
+
40
+ def _parse_local_file(content: str) -> list[dict[str, Any]]:
41
+ lines = [line for line in content.split("\n") if line.strip() != ""]
42
+ out = []
43
+ for index, line in enumerate(lines):
44
+ try:
45
+ obj = json.loads(line)
46
+ except ValueError as exc:
47
+ snippet = line[:120] + "..." if len(line) > 120 else line
48
+ raise Exception(f"Invalid JSON at line {index + 1}: {_parse_error_message(exc)}\n {snippet}") from None
49
+ example_id = obj.get("exampleId") if isinstance(obj, dict) else None
50
+ out.append({"exampleId": example_id, "content": obj, "lineIndex": index})
51
+ return out
52
+
53
+
54
+ def _parse_remote_jsonl(content: str) -> dict[str, dict[str, Any]]:
55
+ remote: dict[str, dict[str, Any]] = {}
56
+ for line in content.split("\n"):
57
+ if line.strip() == "":
58
+ continue
59
+ obj = json.loads(line)
60
+ if obj.get("exampleId"):
61
+ remote[obj["exampleId"]] = obj
62
+ return remote
63
+
64
+
65
+ def _strip_example_id(obj: dict[str, Any]) -> dict[str, Any]:
66
+ return {k: v for k, v in obj.items() if k != "exampleId"}
67
+
68
+
69
+ def _content_equals(a: dict[str, Any], b: dict[str, Any]) -> bool:
70
+ return _stable_stringify(_strip_example_id(a)) == _stable_stringify(_strip_example_id(b))
71
+
72
+
73
+ def _with_retry(op: Callable[[], Any]) -> Any:
74
+ for attempt in range(BATCH_MAX_RETRIES):
75
+ try:
76
+ return op()
77
+ except Exception as exc:
78
+ if attempt == BATCH_MAX_RETRIES - 1 or not is_retryable_aws_error(exc):
79
+ raise
80
+ sleep(BATCH_RETRY_BASE_MS * 2**attempt / 1000)
81
+ return None # pragma: no cover
82
+
83
+
84
+ def _batch_operation(
85
+ items: list[Any], operation: Callable[[list[Any], str], Any], phase_name: str, region: str, dataset_id: str
86
+ ) -> list[Any]:
87
+ if not items:
88
+ return []
89
+ total = math.ceil(len(items) / API_BATCH_LIMIT)
90
+ completed = 0
91
+ results = []
92
+ try:
93
+ for i in range(0, len(items), API_BATCH_LIMIT):
94
+ batch = items[i : i + API_BATCH_LIMIT]
95
+ token = str(uuid.uuid4())
96
+ results.append(_with_retry(lambda batch=batch, token=token: operation(batch, token)))
97
+ completed += 1
98
+ if i + API_BATCH_LIMIT < len(items):
99
+ _wait.wait_for_dataset_active(region, dataset_id)
100
+ except Exception as exc:
101
+ raise Exception(
102
+ f"Push failed during {phase_name} phase ({completed}/{total} batches completed). "
103
+ "Re-run `agentcore dataset push` to retry and reconcile. "
104
+ f"Original error: {exc}"
105
+ ) from exc
106
+ return results
107
+
108
+
109
+ def _rewrite_local_file_with_ids(
110
+ file_path: str, all_examples: list[dict[str, Any]], new_ids: list[str], added: list[dict[str, Any]] | None = None
111
+ ) -> None:
112
+ index = 0
113
+ lines = []
114
+ added_ids = {id(e) for e in added} if added is not None else None
115
+ for example in all_examples:
116
+ if added_ids is None or id(example) in added_ids:
117
+ content = _strip_example_id(example["content"])
118
+ new_id = new_ids[index] if index < len(new_ids) else None
119
+ lines.append(_js_stringify({"exampleId": new_id, **content} if new_id is not None else content))
120
+ index += 1
121
+ else:
122
+ lines.append(_js_stringify(example["content"]))
123
+ with open(file_path, "w", encoding="utf-8", newline="") as fh:
124
+ fh.write("\n".join(lines) + "\n")
125
+
126
+
127
+ def push_dataset(
128
+ *, region: str, dataset_id: str, local_file_path: str, config_base_dir: str, force: bool = False
129
+ ) -> dict[str, int]:
130
+ """{"added", "updated", "deleted", "unchanged", "totalRemote"}."""
131
+ absolute = os.path.abspath(os.path.join(config_base_dir, local_file_path))
132
+ with open(absolute, encoding="utf-8") as fh:
133
+ local_examples = _parse_local_file(fh.read())
134
+
135
+ info = api.get_dataset(region=region, dataset_id=dataset_id)
136
+ remote: dict[str, dict[str, Any]] = {}
137
+ if info.get("downloadUrl") and (info.get("exampleCount") or 0) > 0:
138
+ remote = _parse_remote_jsonl(api.download_dataset(info["downloadUrl"], mode="buffer"))
139
+
140
+ def delete(batch: list[str], token: str) -> Any:
141
+ return api.delete_dataset_examples(region=region, dataset_id=dataset_id, example_ids=batch, client_token=token)
142
+
143
+ def add(batch: list[dict[str, Any]], token: str) -> Any:
144
+ return api.add_dataset_examples(region=region, dataset_id=dataset_id, examples=batch, client_token=token)
145
+
146
+ def update(batch: list[dict[str, Any]], token: str) -> Any:
147
+ return api.update_dataset_examples(region=region, dataset_id=dataset_id, examples=batch, client_token=token)
148
+
149
+ if force:
150
+ if remote:
151
+ _batch_operation(list(remote), delete, "delete", region, dataset_id)
152
+ _wait.wait_for_dataset_active(region, dataset_id)
153
+ to_add = [_strip_example_id(e["content"]) for e in local_examples]
154
+ new_ids: list[str] = []
155
+ for r in _batch_operation(to_add, add, "add", region, dataset_id):
156
+ new_ids.extend(r.get("exampleIds") or [])
157
+ _rewrite_local_file_with_ids(absolute, local_examples, new_ids)
158
+ return {
159
+ "added": len(local_examples),
160
+ "updated": 0,
161
+ "deleted": len(remote),
162
+ "unchanged": 0,
163
+ "totalRemote": len(local_examples),
164
+ }
165
+
166
+ to_add_examples: list[dict[str, Any]] = []
167
+ to_update: list[dict[str, Any]] = []
168
+ local_ids: set[str] = set()
169
+ unchanged = 0
170
+ for local in local_examples:
171
+ example_id = local["exampleId"]
172
+ if example_id and example_id in remote:
173
+ local_ids.add(example_id)
174
+ if _content_equals(local["content"], remote[example_id]):
175
+ unchanged += 1
176
+ else:
177
+ to_update.append(local)
178
+ else:
179
+ to_add_examples.append(local) # new, or stale exampleId not in remote
180
+ to_delete = [rid for rid in remote if rid not in local_ids]
181
+
182
+ if to_delete:
183
+ _batch_operation(to_delete, delete, "delete", region, dataset_id)
184
+ _wait.wait_for_dataset_active(region, dataset_id)
185
+ if to_update:
186
+ _batch_operation([e["content"] for e in to_update], update, "update", region, dataset_id)
187
+ _wait.wait_for_dataset_active(region, dataset_id)
188
+ new_ids = []
189
+ if to_add_examples:
190
+ payload = [_strip_example_id(e["content"]) for e in to_add_examples]
191
+ for r in _batch_operation(payload, add, "add", region, dataset_id):
192
+ new_ids.extend(r.get("exampleIds") or [])
193
+ if new_ids:
194
+ _rewrite_local_file_with_ids(absolute, local_examples, new_ids, to_add_examples)
195
+ return {
196
+ "added": len(to_add_examples),
197
+ "updated": len(to_update),
198
+ "deleted": len(to_delete),
199
+ "unchanged": unchanged,
200
+ "totalRemote": len(local_examples),
201
+ }
@@ -0,0 +1,65 @@
1
+ """Resolve a dataset name to its deployed state (port of operations/dataset/resolve-dataset.ts)."""
2
+
3
+ from dataclasses import dataclass
4
+
5
+ from agentcore.lib import ConfigIO
6
+ from agentcore.lib.schemas.io.config_io import to_jsonable
7
+
8
+
9
+ @dataclass
10
+ class ResolvedDataset:
11
+ name: str
12
+ dataset_id: str
13
+ dataset_arn: str
14
+ region: str
15
+ location: str
16
+
17
+
18
+ def _field(obj, key: str, snake: str):
19
+ return obj.get(key) if isinstance(obj, dict) else getattr(obj, snake, None)
20
+
21
+
22
+ def resolve_dataset(name: str | None = None, config_io: ConfigIO | None = None) -> ResolvedDataset:
23
+ """By name; with no name and exactly one dataset, auto-selects it."""
24
+ config_io = config_io or ConfigIO()
25
+ project = to_jsonable(config_io.read_project_spec())
26
+ datasets = project.get("datasets") or []
27
+ if not datasets:
28
+ raise Exception("No datasets found in agentcore.json. Run `agentcore add dataset` first.")
29
+ available = ", ".join(d["name"] for d in datasets)
30
+ if name:
31
+ dataset = next((d for d in datasets if d["name"] == name), None)
32
+ if dataset is None:
33
+ raise Exception(f'Dataset "{name}" not found. Available: {available}')
34
+ elif len(datasets) == 1:
35
+ dataset = datasets[0]
36
+ else:
37
+ raise Exception(f"Multiple datasets found. Specify --name. Available: {available}")
38
+
39
+ targets = config_io.resolve_aws_deployment_targets()
40
+ if not targets:
41
+ raise Exception("No AWS deployment targets configured. Run `agentcore deploy` first.")
42
+ region = _field(targets[0], "region", "region")
43
+ target_name = _field(targets[0], "name", "name")
44
+
45
+ try:
46
+ deployed = to_jsonable(config_io.read_deployed_state())
47
+ except Exception: # noqa: BLE001
48
+ deployed = None
49
+ state = (
50
+ ((((deployed or {}).get("targets") or {}).get(target_name) or {}).get("resources") or {}).get("datasets") or {}
51
+ ).get(dataset["name"])
52
+ if not state:
53
+ raise Exception(f'Dataset "{dataset["name"]}" has not been deployed. Run `agentcore deploy` first.')
54
+ return ResolvedDataset(
55
+ name=dataset["name"],
56
+ dataset_id=state["datasetId"],
57
+ dataset_arn=state["datasetArn"],
58
+ region=region,
59
+ location=dataset["config"]["managed"]["location"],
60
+ )
61
+
62
+
63
+ def get_dataset_names(config_io: ConfigIO | None = None) -> list[str]:
64
+ project = to_jsonable((config_io or ConfigIO()).read_project_spec())
65
+ return [d["name"] for d in project.get("datasets") or []]
@@ -0,0 +1,18 @@
1
+ """Dataset status: DRAFT info and version history (port of operations/dataset/status.ts)."""
2
+
3
+ from agentcore.aws import agentcore_datasets as api
4
+
5
+
6
+ def get_dataset_status(*, region: str, dataset_id: str, name: str) -> dict:
7
+ info = api.get_dataset(region=region, dataset_id=dataset_id)
8
+ versions = api.list_dataset_versions(region=region, dataset_id=dataset_id)
9
+ return {
10
+ "name": name,
11
+ "datasetId": dataset_id,
12
+ "schemaType": info.get("schemaType"),
13
+ "status": info.get("status"),
14
+ "draftExampleCount": info.get("exampleCount"),
15
+ "draftStatus": info.get("draftStatus") or "UNKNOWN",
16
+ "updatedAt": info.get("updatedAt"),
17
+ "versions": versions.get("versions"),
18
+ }
@@ -0,0 +1,25 @@
1
+ """Wait until a dataset is ACTIVE after an async mutation (port of operations/dataset/wait.ts)."""
2
+
3
+ import time
4
+ from collections.abc import Callable
5
+
6
+ from agentcore.aws import agentcore_datasets as api
7
+
8
+ DEFAULT_MAX_WAIT_MS = 60_000
9
+ POLL_INTERVAL_MS = 2_000
10
+
11
+ # Injectable for tests.
12
+ sleep: Callable[[float], None] = time.sleep
13
+
14
+
15
+ def wait_for_dataset_active(region: str, dataset_id: str, max_wait_ms: int = DEFAULT_MAX_WAIT_MS) -> None:
16
+ start = time.monotonic() * 1000
17
+ while time.monotonic() * 1000 - start < max_wait_ms:
18
+ result = api.get_dataset(region=region, dataset_id=dataset_id)
19
+ status = result.get("status") or ""
20
+ if status == "ACTIVE":
21
+ return
22
+ if status.endswith("_FAILED"):
23
+ raise Exception(f"Dataset entered failed state: {status}")
24
+ sleep(POLL_INTERVAL_MS / 1000)
25
+ raise Exception(f"Timed out waiting for dataset to become ACTIVE (waited {max_wait_ms / 1000:g}s)")