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,40 @@
1
+ """Pydantic ports of the upstream Zod schemas (port of ``src/schema/schemas/index.ts``).
2
+
3
+ Unlike upstream (which re-exports only a subset of primitives), every primitive is re-exported.
4
+ """
5
+
6
+ from .agent_env import *
7
+ from .agent_env import __all__ as _agent_env
8
+ from .agentcore_project import *
9
+ from .agentcore_project import __all__ as _agentcore_project
10
+ from .auth import *
11
+ from .auth import __all__ as _auth
12
+ from .aws_targets import *
13
+ from .aws_targets import __all__ as _aws_targets
14
+ from .connections import *
15
+ from .connections import __all__ as _connections
16
+ from .deployed_state import *
17
+ from .deployed_state import __all__ as _deployed_state
18
+ from .mcp import *
19
+ from .mcp import __all__ as _mcp
20
+ from .mcp_defs import *
21
+ from .mcp_defs import __all__ as _mcp_defs
22
+ from .primitives import *
23
+ from .primitives import __all__ as _primitives
24
+ from .primitives.harness import *
25
+ from .primitives.harness import __all__ as _harness
26
+ from .zod_util import unique_by
27
+
28
+ __all__ = [
29
+ *_agent_env,
30
+ *_agentcore_project,
31
+ *_auth,
32
+ *_aws_targets,
33
+ *_connections,
34
+ *_deployed_state,
35
+ *_mcp,
36
+ *_mcp_defs,
37
+ *_primitives,
38
+ *_harness,
39
+ "unique_by",
40
+ ]
@@ -0,0 +1,545 @@
1
+ """Agent runtimes, i.e. AgentEnvSpec (port of ``schemas/agent-env.ts``)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Annotated, Final, Literal, get_args
6
+
7
+ from pydantic import AfterValidator, Field, model_validator
8
+
9
+ from .._zod import Issue, StrictModel, ZBool, ZodModel, array_checks, js_regex, raise_issues, zint, zstr
10
+ from ..constants import (
11
+ MAX_CONTAINER_BUILD_SECURITY_GROUPS,
12
+ SECURITY_GROUP_ID_PATTERN,
13
+ SUBNET_ID_PATTERN,
14
+ VPC_ID_PATTERN,
15
+ NetworkMode,
16
+ ProtocolMode,
17
+ RuntimeVersion,
18
+ is_container_build,
19
+ )
20
+ from .auth import AuthorizerConfig, RuntimeAuthorizerType
21
+ from .connections import Connection
22
+ from .primitives.capacity_provider import CapacityProviderConfiguration, CapacityProviderVolumeName
23
+ from .primitives.tags import Tags
24
+
25
+ # ============================================================================
26
+ # Name Schemas
27
+ # ============================================================================
28
+
29
+ # https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateAgentRuntime.html
30
+ AgentName = zstr(
31
+ min=1,
32
+ max=48,
33
+ min_msg="Name is required",
34
+ pattern=r"^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
35
+ pattern_msg="Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)",
36
+ )
37
+
38
+ EnvVarName = zstr(
39
+ min=1,
40
+ max=255,
41
+ pattern=r"^[A-Za-z_][A-Za-z0-9_]*$",
42
+ pattern_msg="Must start with a letter or underscore, contain only letters, digits, and underscores",
43
+ )
44
+
45
+ # https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateGateway.html
46
+ GatewayName = zstr(
47
+ min=1,
48
+ max=100,
49
+ pattern=r"^[0-9a-zA-Z](?:[0-9a-zA-Z-]*[0-9a-zA-Z])?$",
50
+ pattern_msg="Gateway name must be alphanumeric with optional hyphens (max 100 chars)",
51
+ )
52
+
53
+ # ============================================================================
54
+ # Common Types
55
+ # ============================================================================
56
+
57
+ # Access level for resource sharing.
58
+ Access = Literal["read", "readwrite"]
59
+ ACCESS_LEVELS: Final[tuple[Access, ...]] = get_args(Access)
60
+
61
+ AgentType = Literal["AgentCoreRuntime"]
62
+
63
+ BuildType = Literal["CodeZip", "Container"]
64
+ BUILD_TYPES: Final[tuple[BuildType, ...]] = get_args(BuildType)
65
+
66
+ # Python (main.py, main.py:handler) or TypeScript (main.ts, main.js, index.ts) entrypoint.
67
+ Entrypoint = zstr(
68
+ min=1,
69
+ pattern=r"^[a-zA-Z0-9_][a-zA-Z0-9_/.-]*\.(py|ts|js)(:[a-zA-Z_][a-zA-Z0-9_]*)?$",
70
+ pattern_msg=(
71
+ 'Must be a Python (.py) or TypeScript (.ts/.js) file path with optional handler (e.g., "main.py:handler" '
72
+ 'or "index.ts")'
73
+ ),
74
+ )
75
+
76
+ DirectoryPathStr = zstr(min=1)
77
+
78
+ # Char-safe set only: the buildspec interpolates this unquoted as `docker build -f $DOCKERFILE_PATH`.
79
+ _DOCKERFILE_PATH_ALLOWED_CHARS = js_regex(r"^[A-Za-z0-9._/-]+$")
80
+
81
+
82
+ def is_valid_dockerfile_path(p: str) -> bool:
83
+ """Safe relative Dockerfile path within the build context.
84
+
85
+ Allowed chars only, no leading slash, and no empty ('' from leading/trailing/double slash) or
86
+ '..' segments. Shared by the schema and the runtime ``getDockerfilePath`` guard.
87
+ """
88
+ if not _DOCKERFILE_PATH_ALLOWED_CHARS.search(p):
89
+ return False
90
+ if p.startswith("/"):
91
+ return False
92
+ return not any(segment in ("", "..") for segment in p.split("/"))
93
+
94
+
95
+ DockerfilePath = zstr(
96
+ min=1,
97
+ max=255,
98
+ refines=(
99
+ (
100
+ is_valid_dockerfile_path,
101
+ (
102
+ "Must be a relative path within the build context: a filename or forward-slash subpath using only "
103
+ 'letters, digits, dot, dash, underscore, and slash; no leading slash, no ".." traversal, and no empty '
104
+ "segments (no trailing or double slash)"
105
+ ),
106
+ ),
107
+ ),
108
+ )
109
+
110
+ # Build-arg names reserved by the CodeBuild build environment (best-effort denylist).
111
+ RESERVED_BUILD_ARG_KEYS: Final[tuple[str, ...]] = (
112
+ # Buildspec control vars (mirrored in @aws/agentcore-cdk's ContainerBuildProject / build handler).
113
+ "ECR_REGISTRY",
114
+ "IMAGE_URI",
115
+ "DOCKERFILE_PATH",
116
+ "BUILD_ARG_FLAGS",
117
+ # Overriding these would break the buildspec's own commands or redirect the docker client.
118
+ "PATH",
119
+ "HOME",
120
+ "IFS",
121
+ "LD_PRELOAD",
122
+ "LD_LIBRARY_PATH",
123
+ "DOCKER_HOST",
124
+ "DOCKER_CONFIG",
125
+ "DOCKER_TLS_VERIFY",
126
+ "DOCKER_CERT_PATH",
127
+ )
128
+
129
+
130
+ def is_reserved_build_arg_key(key: str) -> bool:
131
+ return key in RESERVED_BUILD_ARG_KEYS or key.startswith(("CODEBUILD_", "AWS_"))
132
+
133
+
134
+ # Each value becomes a CodeBuild PLAINTEXT env override; control chars/overlong values break StartBuild.
135
+ BuildArgValue = zstr(
136
+ max=4096,
137
+ max_msg="Build arg values must be at most 4096 characters",
138
+ refines=(
139
+ (
140
+ lambda v: not any(ord(ch) < 0x20 or ord(ch) == 0x7F for ch in v),
141
+ "Build arg values must not contain control characters (including newlines)",
142
+ ),
143
+ ),
144
+ )
145
+
146
+
147
+ class EnvVar(ZodModel):
148
+ name: EnvVarName
149
+ value: str
150
+
151
+
152
+ class Instrumentation(ZodModel):
153
+ """Runtime observability. ``enableOtel`` wraps the entrypoint with opentelemetry-instrument."""
154
+
155
+ enable_otel: ZBool = True
156
+
157
+
158
+ class NetworkConfig(ZodModel):
159
+ """VPC-mode network configuration (required when networkMode is VPC)."""
160
+
161
+ subnets: Annotated[
162
+ list[zstr(pattern=SUBNET_ID_PATTERN, pattern_msg="Must be a subnet id (subnet-...)")],
163
+ array_checks(min=1, max=16),
164
+ ]
165
+ security_groups: Annotated[
166
+ list[zstr(pattern=SECURITY_GROUP_ID_PATTERN, pattern_msg="Must be a security group id (sg-...)")],
167
+ array_checks(min=1, max=16),
168
+ ]
169
+ # Required for Container builds in VPC mode (CodeBuild cannot infer the VPC from subnets).
170
+ vpc_id: zstr(pattern=VPC_ID_PATTERN, pattern_msg="Must be a VPC id (vpc-...)") | None = None
171
+
172
+
173
+ # Allowed request headers: any valid HTTP header name that is not structurally reserved
174
+ # (x-amz-*, x-amzn-* except X-Amzn-Bedrock-AgentCore-Runtime-Custom-*). Max 20.
175
+ HEADER_ALLOWLIST_PREFIX: Final = "X-Amzn-Bedrock-AgentCore-Runtime-Custom-"
176
+ HEADER_NAME_PATTERN: Final = js_regex(r"^[A-Za-z0-9\-_]+$")
177
+ MAX_HEADER_ALLOWLIST_SIZE: Final = 20
178
+
179
+
180
+ def check_allowlist_header(val: str) -> str | None:
181
+ """Return None if ``val`` is a valid allowlist header name, else the violated rule's message."""
182
+ if not HEADER_NAME_PATTERN.search(val):
183
+ return f'Header name "{val}" must contain only alphanumeric characters, hyphens, and underscores.'
184
+ lower = val.lower()
185
+ if lower.startswith("x-amz-"):
186
+ return f'Header "{val}" is not allowed. Headers starting with "x-amz-" are reserved for AWS request signing.'
187
+ if lower.startswith("x-amzn-") and not lower.startswith("x-amzn-bedrock-agentcore-runtime-custom-"):
188
+ return (
189
+ f'Header "{val}" is not allowed. Headers starting with "x-amzn-" are reserved, except for '
190
+ '"X-Amzn-Bedrock-AgentCore-Runtime-Custom-*".'
191
+ )
192
+ return None
193
+
194
+
195
+ def _check_header(val: str) -> str:
196
+ error = check_allowlist_header(val)
197
+ if error:
198
+ raise_issues([((), error)], val)
199
+ return val
200
+
201
+
202
+ RequestHeaderAllowlist = Annotated[
203
+ list[Annotated[str, AfterValidator(_check_header)]],
204
+ array_checks(max=MAX_HEADER_ALLOWLIST_SIZE, max_msg=f"Maximum {MAX_HEADER_ALLOWLIST_SIZE} headers allowed"),
205
+ ]
206
+
207
+
208
+ def _mount_path(example: str) -> object:
209
+ return zstr(
210
+ min=6,
211
+ max=200,
212
+ pattern=r"^\/mnt\/[a-zA-Z0-9._-]+\/?$",
213
+ pattern_msg=f"Must be a path under /mnt with exactly one subdirectory (e.g. {example})",
214
+ )
215
+
216
+
217
+ SessionStorageMountPath = _mount_path("/mnt/data")
218
+
219
+
220
+ class SessionStorage(ZodModel):
221
+ """Session-scoped filesystem persistence; files under mountPath survive stop/resume."""
222
+
223
+ mount_path: SessionStorageMountPath
224
+
225
+
226
+ EFS_ACCESS_POINT_ARN_PATTERN: Final = js_regex(
227
+ r"^arn:aws[-a-z]*:elasticfilesystem:[a-z][a-z0-9-]*:[0-9]{12}:access-point\/fsap-[0-9a-f]{8,40}$"
228
+ )
229
+
230
+ S3_FILES_ACCESS_POINT_ARN_PATTERN: Final = js_regex(
231
+ r"^arn:aws[-a-z]*:s3files:[a-z][a-z0-9-]*:[0-9]{12}:file-system\/fs-[0-9a-f]{17,40}\/access-point\/fsap-[0-9a-f]{17,40}$"
232
+ )
233
+
234
+
235
+ class EfsAccessPointConfig(ZodModel):
236
+ """EFS access point mount (requires VPC network mode)."""
237
+
238
+ access_point_arn: zstr(
239
+ pattern=EFS_ACCESS_POINT_ARN_PATTERN,
240
+ pattern_msg=(
241
+ "Must be an EFS access point ARN "
242
+ "(arn:aws[-a-z]*:elasticfilesystem:{region}:{account}:access-point/fsap-{id})"
243
+ ),
244
+ )
245
+ mount_path: _mount_path("/mnt/tools")
246
+
247
+
248
+ class S3FilesAccessPointConfig(ZodModel):
249
+ """S3 Files access point mount (requires VPC network mode)."""
250
+
251
+ access_point_arn: zstr(
252
+ pattern=S3_FILES_ACCESS_POINT_ARN_PATTERN,
253
+ pattern_msg=(
254
+ "Must be an S3 Files access point ARN "
255
+ "(arn:aws[-a-z]*:s3files:{region}:{account}:file-system/fs-{id}/access-point/fsap-{id})"
256
+ ),
257
+ )
258
+ mount_path: _mount_path("/mnt/datasets")
259
+
260
+
261
+ class CapacityProviderVolumeConfig(ZodModel):
262
+ """Mount of a named volume defined on the attached capacity provider."""
263
+
264
+ volume_name: CapacityProviderVolumeName
265
+ mount_path: _mount_path("/mnt/models")
266
+
267
+
268
+ MAX_EFS_MOUNTS: Final = 2
269
+ MAX_S3_MOUNTS: Final = 2
270
+
271
+
272
+ class SessionStorageFilesystem(StrictModel):
273
+ session_storage: SessionStorage
274
+
275
+
276
+ class EfsAccessPointFilesystem(StrictModel):
277
+ efs_access_point: EfsAccessPointConfig
278
+
279
+
280
+ class S3FilesAccessPointFilesystem(StrictModel):
281
+ s3_files_access_point: S3FilesAccessPointConfig
282
+
283
+
284
+ class CapacityProviderVolumeFilesystem(StrictModel):
285
+ capacity_provider_volume: CapacityProviderVolumeConfig
286
+
287
+
288
+ # Exactly one key per entry. Service limits per runtime: max 5 total, max 1 sessionStorage, max
289
+ # MAX_EFS_MOUNTS efsAccessPoint, max MAX_S3_MOUNTS s3FilesAccessPoint.
290
+ FilesystemConfiguration = Annotated[
291
+ SessionStorageFilesystem
292
+ | EfsAccessPointFilesystem
293
+ | S3FilesAccessPointFilesystem
294
+ | CapacityProviderVolumeFilesystem,
295
+ Field(union_mode="left_to_right"),
296
+ ]
297
+
298
+
299
+ def filesystem_mount_path(fc: FilesystemConfiguration) -> str:
300
+ if isinstance(fc, SessionStorageFilesystem):
301
+ return fc.session_storage.mount_path
302
+ if isinstance(fc, EfsAccessPointFilesystem):
303
+ return fc.efs_access_point.mount_path
304
+ if isinstance(fc, S3FilesAccessPointFilesystem):
305
+ return fc.s3_files_access_point.mount_path
306
+ return fc.capacity_provider_volume.mount_path
307
+
308
+
309
+ def _strip_trailing_slash(p: str) -> str:
310
+ return p.removesuffix("/")
311
+
312
+
313
+ LIFECYCLE_TIMEOUT_MIN: Final = 60
314
+ LIFECYCLE_TIMEOUT_MAX: Final = 28800
315
+
316
+
317
+ class LifecycleConfiguration(ZodModel):
318
+ """Idle timeout (API default 900s) and max lifetime (API default 28800s) of runtime sessions."""
319
+
320
+ idle_runtime_session_timeout: zint(ge=LIFECYCLE_TIMEOUT_MIN, le=LIFECYCLE_TIMEOUT_MAX) | None = None
321
+ max_lifetime: zint(ge=LIFECYCLE_TIMEOUT_MIN, le=LIFECYCLE_TIMEOUT_MAX) | None = None
322
+
323
+ @model_validator(mode="after")
324
+ def _refine(self) -> LifecycleConfiguration:
325
+ if (
326
+ self.idle_runtime_session_timeout is not None
327
+ and self.max_lifetime is not None
328
+ and self.idle_runtime_session_timeout > self.max_lifetime
329
+ ):
330
+ raise_issues([(("idleRuntimeSessionTimeout",), "idleRuntimeSessionTimeout must be <= maxLifetime")], self)
331
+ return self
332
+
333
+
334
+ # ============================================================================
335
+ # Runtime Endpoint
336
+ # ============================================================================
337
+
338
+ RuntimeEndpointName = zstr(
339
+ min=1,
340
+ max=48,
341
+ min_msg="Endpoint name is required",
342
+ pattern=r"^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
343
+ pattern_msg="Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)",
344
+ )
345
+
346
+
347
+ class RuntimeEndpoint(ZodModel):
348
+ # Version number this endpoint points to (>= 1).
349
+ version: zint(ge=1)
350
+ description: zstr(max=200) | None = None
351
+
352
+
353
+ _CONTAINER_ONLY_FIELDS: Final = (
354
+ ("dockerfile", "dockerfile"),
355
+ ("build_context_path", "buildContextPath"),
356
+ ("custom_docker_build_args", "customDockerBuildArgs"),
357
+ )
358
+
359
+
360
+ class AgentEnvSpec(ZodModel):
361
+ """An AgentCore Runtime (top-level resource in agentcore.json ``runtimes``)."""
362
+
363
+ name: AgentName
364
+ description: zstr(max=200) | None = None
365
+ build: BuildType
366
+ entrypoint: Entrypoint
367
+ code_location: DirectoryPathStr
368
+ # Container builds: Dockerfile relative to the build context. Default: 'Dockerfile'.
369
+ dockerfile: DockerfilePath | None = None
370
+ # Container builds: docker build context (instead of codeLocation); not containment-checked.
371
+ build_context_path: DirectoryPathStr | None = None
372
+ # Container builds: `--build-arg` flags (keys are env-var names).
373
+ custom_docker_build_args: dict[EnvVarName, BuildArgValue] | None = None
374
+ runtime_version: RuntimeVersion | None = None
375
+ env_vars: list[EnvVar] | None = None
376
+ network_mode: NetworkMode | None = None
377
+ network_config: NetworkConfig | None = None
378
+ instrumentation: Instrumentation | None = None
379
+ protocol: ProtocolMode | None = None
380
+ request_header_allowlist: RequestHeaderAllowlist | None = None
381
+ # ARN of an existing IAM execution role to use instead of creating a new one.
382
+ execution_role_arn: str | None = None
383
+ # Managed-policy ARNs or `.json` policy-document paths (relative to codeLocation).
384
+ additional_policies: list[zstr(min=1)] | None = None
385
+ authorizer_type: RuntimeAuthorizerType | None = None
386
+ authorizer_configuration: AuthorizerConfig | None = None
387
+ tags: Tags | None = None
388
+ lifecycle_configuration: LifecycleConfiguration | None = None
389
+ filesystem_configurations: list[FilesystemConfiguration] | None = None
390
+ # Named endpoints (version aliases); keys are endpoint names.
391
+ endpoints: dict[RuntimeEndpointName, RuntimeEndpoint] | None = None
392
+ connections: list[Connection] | None = None
393
+ # Attach to a capacity provider; mutually exclusive with VPC networking.
394
+ capacity_provider_configuration: CapacityProviderConfiguration | None = None
395
+
396
+ @model_validator(mode="after")
397
+ def _refine(self) -> AgentEnvSpec:
398
+ issues: list[Issue] = []
399
+ if self.network_mode == "VPC" and self.network_config is None:
400
+ issues.append((("networkConfig",), "networkConfig is required when networkMode is VPC"))
401
+ if self.network_mode != "VPC" and self.network_config is not None:
402
+ issues.append((("networkConfig",), "networkConfig is only allowed when networkMode is VPC"))
403
+ # A capacity provider supplies its own network topology: networkMode is not settable at all.
404
+ if self.capacity_provider_configuration is not None and (
405
+ self.network_mode is not None or self.network_config is not None
406
+ ):
407
+ issues.append(
408
+ (
409
+ ("capacityProviderConfiguration",),
410
+ (
411
+ "capacityProviderConfiguration cannot be combined with a networkMode or VPC networking — a "
412
+ "capacity provider supplies its own network topology, so leave networkMode/networkConfig unset"
413
+ ),
414
+ )
415
+ )
416
+ # vpcId is intentionally NOT required here (old configs predate it; deploy backfills it).
417
+ if (
418
+ self.network_mode == "VPC"
419
+ and is_container_build(self)
420
+ and self.network_config is not None
421
+ and len(self.network_config.security_groups) > MAX_CONTAINER_BUILD_SECURITY_GROUPS
422
+ ):
423
+ issues.append(
424
+ (
425
+ ("networkConfig", "securityGroups"),
426
+ (
427
+ f"Container builds in VPC mode allow at most {MAX_CONTAINER_BUILD_SECURITY_GROUPS} security "
428
+ "groups (CodeBuild limit)"
429
+ ),
430
+ )
431
+ )
432
+ jwt = self.authorizer_configuration.custom_jwt_authorizer if self.authorizer_configuration else None
433
+ if self.authorizer_type == "CUSTOM_JWT" and jwt is None:
434
+ issues.append(
435
+ (
436
+ ("authorizerConfiguration",),
437
+ "authorizerConfiguration with customJwtAuthorizer is required when authorizerType is CUSTOM_JWT",
438
+ )
439
+ )
440
+ if self.authorizer_type != "CUSTOM_JWT" and self.authorizer_configuration is not None:
441
+ issues.append(
442
+ (
443
+ ("authorizerConfiguration",),
444
+ "authorizerConfiguration is only allowed when authorizerType is CUSTOM_JWT",
445
+ )
446
+ )
447
+ for attr, key in _CONTAINER_ONLY_FIELDS:
448
+ if self.build != "Container" and getattr(self, attr):
449
+ issues.append(((key,), f"{key} is only allowed for Container builds"))
450
+ for key in self.custom_docker_build_args or {}:
451
+ if is_reserved_build_arg_key(key):
452
+ issues.append(
453
+ (
454
+ ("customDockerBuildArgs", key),
455
+ (
456
+ f'customDockerBuildArgs key "{key}" is reserved by the build environment (must not be '
457
+ f"{', '.join(RESERVED_BUILD_ARG_KEYS)}, or start with CODEBUILD_ or AWS_)"
458
+ ),
459
+ )
460
+ )
461
+ fcs = self.filesystem_configurations or []
462
+ if fcs:
463
+ issues.extend(self._filesystem_issues(fcs))
464
+ raise_issues(issues, self)
465
+ return self
466
+
467
+ def _filesystem_issues(self, fcs: list[FilesystemConfiguration]) -> list[Issue]:
468
+ path = ("filesystemConfigurations",)
469
+ issues: list[Issue] = []
470
+ efs = sum(isinstance(fc, EfsAccessPointFilesystem) for fc in fcs)
471
+ s3 = sum(isinstance(fc, S3FilesAccessPointFilesystem) for fc in fcs)
472
+ ss = sum(isinstance(fc, SessionStorageFilesystem) for fc in fcs)
473
+ cp_vol = sum(isinstance(fc, CapacityProviderVolumeFilesystem) for fc in fcs)
474
+ if cp_vol > 0 and self.capacity_provider_configuration is None:
475
+ issues.append(
476
+ (
477
+ path,
478
+ (
479
+ "capacityProviderVolume filesystem mounts require the runtime to be attached to a capacity "
480
+ "provider (set capacityProviderConfiguration)"
481
+ ),
482
+ )
483
+ )
484
+ if len(fcs) > 5:
485
+ issues.append((path, "Maximum 5 filesystem configurations allowed"))
486
+ if efs > MAX_EFS_MOUNTS:
487
+ issues.append((path, f"Maximum {MAX_EFS_MOUNTS} efsAccessPoint configurations allowed"))
488
+ if s3 > MAX_S3_MOUNTS:
489
+ issues.append((path, f"Maximum {MAX_S3_MOUNTS} s3FilesAccessPoint configurations allowed"))
490
+ if ss > 1:
491
+ issues.append((path, "Maximum 1 sessionStorage configuration allowed"))
492
+ if (efs > 0 or s3 > 0) and self.network_mode != "VPC":
493
+ issues.append((path, "efsAccessPoint and s3FilesAccessPoint filesystem mounts require networkMode: VPC"))
494
+ mount_paths = [_strip_trailing_slash(filesystem_mount_path(fc)) for fc in fcs]
495
+ if len(set(mount_paths)) != len(mount_paths):
496
+ issues.append((path, "Filesystem mount paths must be unique"))
497
+ return issues
498
+
499
+
500
+ __all__ = [
501
+ "ACCESS_LEVELS",
502
+ "BUILD_TYPES",
503
+ "EFS_ACCESS_POINT_ARN_PATTERN",
504
+ "HEADER_ALLOWLIST_PREFIX",
505
+ "HEADER_NAME_PATTERN",
506
+ "LIFECYCLE_TIMEOUT_MAX",
507
+ "LIFECYCLE_TIMEOUT_MIN",
508
+ "MAX_EFS_MOUNTS",
509
+ "MAX_HEADER_ALLOWLIST_SIZE",
510
+ "MAX_S3_MOUNTS",
511
+ "RESERVED_BUILD_ARG_KEYS",
512
+ "S3_FILES_ACCESS_POINT_ARN_PATTERN",
513
+ "Access",
514
+ "AgentEnvSpec",
515
+ "AgentName",
516
+ "AgentType",
517
+ "BuildArgValue",
518
+ "BuildType",
519
+ "CapacityProviderVolumeConfig",
520
+ "CapacityProviderVolumeFilesystem",
521
+ "DirectoryPathStr",
522
+ "DockerfilePath",
523
+ "EfsAccessPointConfig",
524
+ "EfsAccessPointFilesystem",
525
+ "Entrypoint",
526
+ "EnvVar",
527
+ "EnvVarName",
528
+ "FilesystemConfiguration",
529
+ "GatewayName",
530
+ "Instrumentation",
531
+ "LifecycleConfiguration",
532
+ "NetworkConfig",
533
+ "RequestHeaderAllowlist",
534
+ "RuntimeEndpoint",
535
+ "RuntimeEndpointName",
536
+ "S3FilesAccessPointConfig",
537
+ "S3FilesAccessPointFilesystem",
538
+ "SessionStorage",
539
+ "SessionStorageFilesystem",
540
+ "SessionStorageMountPath",
541
+ "check_allowlist_header",
542
+ "filesystem_mount_path",
543
+ "is_reserved_build_arg_key",
544
+ "is_valid_dockerfile_path",
545
+ ]