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,530 @@
1
+ """Project spec, i.e. agentcore.json (port of ``schemas/agentcore-project.ts``).
2
+
3
+ Flat resource model where agents, memories, credentials, etc. are top-level and all resources within
4
+ a project implicitly have access to each other.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import Annotated, Any, Final, Literal, get_args
10
+
11
+ from pydantic import AfterValidator, Field, TypeAdapter, model_validator
12
+
13
+ from .._zod import (
14
+ Issue,
15
+ StrictModel,
16
+ ZBool,
17
+ ZodModel,
18
+ array_checks,
19
+ js_regex,
20
+ js_trim,
21
+ raise_issues,
22
+ unique_by,
23
+ zint,
24
+ zstr,
25
+ )
26
+ from ..constants import is_reserved_project_name
27
+ from .agent_env import AgentEnvSpec, CapacityProviderVolumeFilesystem
28
+ from .mcp import REAL_KB_ID_PATTERN, AgentCoreGateway, AgentCoreGatewayTarget, AgentCoreMcpRuntimeTool
29
+ from .primitives.ab_test import ABTest
30
+ from .primitives.capacity_provider import CapacityProvider
31
+ from .primitives.config_bundle import ConfigBundle
32
+ from .primitives.dataset import Dataset
33
+ from .primitives.evaluator import EvaluationLevel, EvaluatorConfig, EvaluatorName, KmsKeyArn
34
+ from .primitives.harness import HarnessName
35
+ from .primitives.knowledge_base import KnowledgeBase
36
+ from .primitives.memory import MemoryStrategy
37
+ from .primitives.online_eval_config import OnlineEvalConfig
38
+ from .primitives.payment import PaymentManager, PaymentProvider
39
+ from .primitives.policy import PolicyEngine
40
+ from .primitives.tags import Tags
41
+
42
+ # ============================================================================
43
+ # ManagedBy
44
+ # ============================================================================
45
+
46
+ ManagedBy = Literal["CDK"]
47
+
48
+ # ============================================================================
49
+ # Project Name
50
+ # ============================================================================
51
+
52
+ # CLI-only concept; max 23 so projectName + "_" + agentName fits the 48-char runtime name limit.
53
+ ProjectName = zstr(
54
+ min=1,
55
+ max=23,
56
+ min_msg="Project name is required",
57
+ max_msg="Project name must be 23 characters or less",
58
+ pattern=r"^[A-Za-z][A-Za-z0-9]{0,22}$",
59
+ pattern_msg="Project name must start with a letter and contain only alphanumeric characters",
60
+ refines=(
61
+ (
62
+ lambda name: not is_reserved_project_name(name),
63
+ "This name conflicts with a reserved package dependency. Please choose a different name.",
64
+ ),
65
+ ),
66
+ )
67
+
68
+ # ============================================================================
69
+ # Memory
70
+ # ============================================================================
71
+
72
+ MemoryType = Literal["AgentCoreMemory"]
73
+
74
+ # Same constraints as agent runtime names (API_CreateMemory).
75
+ MemoryName = zstr(
76
+ min=1,
77
+ max=48,
78
+ min_msg="Name is required",
79
+ pattern=r"^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
80
+ pattern_msg="Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)",
81
+ )
82
+
83
+ StreamContentLevel = Literal["FULL_CONTENT", "METADATA_ONLY"]
84
+ STREAM_CONTENT_LEVELS: Final[tuple[StreamContentLevel, ...]] = get_args(StreamContentLevel)
85
+
86
+
87
+ class StreamContentConfiguration(ZodModel):
88
+ type: Literal["MEMORY_RECORDS"]
89
+ level: StreamContentLevel
90
+
91
+
92
+ class KinesisStreamDelivery(ZodModel):
93
+ data_stream_arn: zstr(min=1)
94
+ content_configurations: Annotated[list[StreamContentConfiguration], array_checks(min=1)]
95
+
96
+
97
+ class StreamDeliveryResource(ZodModel):
98
+ # Kinesis is currently the only supported delivery type.
99
+ kinesis: KinesisStreamDelivery
100
+
101
+
102
+ class StreamDeliveryResources(ZodModel):
103
+ resources: Annotated[list[StreamDeliveryResource], array_checks(min=1)]
104
+
105
+
106
+ IndexedKeyType = Literal["STRING", "STRINGLIST", "NUMBER"]
107
+ INDEXED_KEY_TYPES: Final[tuple[IndexedKeyType, ...]] = get_args(IndexedKeyType)
108
+
109
+ # Indexed metadata keys filter memory records on retrieval. They are append-only service-side.
110
+ INDEXED_KEY_NAME_PATTERN: Final = js_regex(r"^[a-zA-Z0-9\s._:/=+@-]+$")
111
+ INDEXED_KEY_NAME_PATTERN_MESSAGE: Final = (
112
+ "Must contain only alphanumeric characters, whitespace, or the symbols . _ : / = + @ -"
113
+ )
114
+ MAX_INDEXED_KEY_NAME_LENGTH: Final = 128
115
+ MAX_INDEXED_KEYS: Final = 10
116
+
117
+
118
+ class IndexedKey(ZodModel):
119
+ key: zstr(
120
+ min=1,
121
+ max=MAX_INDEXED_KEY_NAME_LENGTH,
122
+ pattern=INDEXED_KEY_NAME_PATTERN,
123
+ pattern_msg=INDEXED_KEY_NAME_PATTERN_MESSAGE,
124
+ refines=((lambda s: len(js_trim(s)) > 0, "Key cannot be only whitespace"),),
125
+ )
126
+ type: IndexedKeyType
127
+
128
+
129
+ class Memory(ZodModel):
130
+ name: MemoryName
131
+ event_expiry_duration: zint(ge=3, le=365)
132
+ # Empty for short-term memory; long-term memory adds strategies.
133
+ strategies: Annotated[
134
+ list[MemoryStrategy],
135
+ array_checks(extra=[unique_by(lambda s: s.type, lambda t: f"Duplicate memory strategy type: {t}")]),
136
+ Field(default_factory=list),
137
+ ]
138
+ indexed_keys: (
139
+ Annotated[
140
+ list[IndexedKey],
141
+ array_checks(
142
+ max=MAX_INDEXED_KEYS,
143
+ extra=[unique_by(lambda e: e.key, lambda k: f"Duplicate indexed key: {k}")],
144
+ ),
145
+ ]
146
+ | None
147
+ ) = None
148
+ tags: Tags | None = None
149
+ encryption_key_arn: str | None = None
150
+ execution_role_arn: str | None = None
151
+ stream_delivery_resources: StreamDeliveryResources | None = None
152
+
153
+ @model_validator(mode="after")
154
+ def _refine(self) -> Memory:
155
+ # Indexed keys only make sense for long-term memory (strategies produce LTM records).
156
+ if self.indexed_keys and not self.strategies:
157
+ raise_issues(
158
+ [(("indexedKeys",), "indexedKeys requires at least one memory strategy (long-term memory)")], self
159
+ )
160
+ return self
161
+
162
+
163
+ # ============================================================================
164
+ # Credentials
165
+ # ============================================================================
166
+
167
+ # API_CreateApiKeyCredentialProvider.
168
+ CredentialName = zstr(
169
+ min=1,
170
+ max=128,
171
+ min_msg="Credential name is required",
172
+ max_msg="Credential name must be 128 characters or less",
173
+ pattern=r"^[a-zA-Z0-9\-_]+$",
174
+ pattern_msg="Must contain only alphanumeric characters, hyphens, and underscores (1-128 chars)",
175
+ )
176
+
177
+ CredentialType = Literal["ApiKeyCredentialProvider", "OAuthCredentialProvider", "PaymentCredentialProvider"]
178
+ CREDENTIAL_TYPES: Final[tuple[CredentialType, ...]] = get_args(CredentialType)
179
+
180
+
181
+ class ApiKeyCredential(ZodModel):
182
+ authorizer_type: Literal["ApiKeyCredentialProvider"]
183
+ name: CredentialName
184
+
185
+
186
+ class OAuthCredential(ZodModel):
187
+ authorizer_type: Literal["OAuthCredentialProvider"]
188
+ name: CredentialName
189
+ # Optional for imported providers that already exist in the Identity service.
190
+ discovery_url: zstr(url=True) | None = None
191
+ scopes: list[str] | None = None
192
+ vendor: str = "CustomOauth2"
193
+ # Auto-created by the CLI (e.g. for CUSTOM_JWT inbound auth).
194
+ managed: ZBool | None = None
195
+ usage: Literal["inbound", "outbound"] | None = None
196
+
197
+
198
+ class PaymentCredential(ZodModel):
199
+ authorizer_type: Literal["PaymentCredentialProvider"]
200
+ name: CredentialName
201
+ provider: PaymentProvider
202
+
203
+
204
+ Credential = Annotated[ApiKeyCredential | OAuthCredential | PaymentCredential, Field(discriminator="authorizer_type")]
205
+
206
+ # ============================================================================
207
+ # Evaluator
208
+ # ============================================================================
209
+
210
+ EvaluatorType = Literal["CustomEvaluator"]
211
+
212
+
213
+ class Evaluator(ZodModel):
214
+ name: EvaluatorName
215
+ level: EvaluationLevel
216
+ description: str | None = None
217
+ config: EvaluatorConfig
218
+ kms_key_arn: KmsKeyArn | None = None
219
+ tags: Tags | None = None
220
+
221
+
222
+ # ============================================================================
223
+ # Harness Registry
224
+ # ============================================================================
225
+
226
+
227
+ class HarnessRegistryEntry(ZodModel):
228
+ name: HarnessName
229
+ path: zstr(min=1, min_msg="Path to harness config directory is required")
230
+
231
+
232
+ # ============================================================================
233
+ # Project (Top Level)
234
+ # ============================================================================
235
+
236
+ _BUILTIN_EVALUATOR_PREFIX = "Builtin."
237
+ _ARN_PREFIX = "arn:"
238
+ _GATEWAY_REF = js_regex(r"^\{\{gateway:(.+)\}\}$")
239
+
240
+
241
+ def _unique(label: str) -> AfterValidator:
242
+ return array_checks(extra=[unique_by(lambda x: x.name, lambda n: f"Duplicate {label} name: {n}")])
243
+
244
+
245
+ def _unique_datasets(items: list[Dataset]) -> list[Dataset]:
246
+ # Upstream reports duplicates on the array itself (no index in the path).
247
+ seen: set[str] = set()
248
+ issues: list[Issue] = []
249
+ for ds in items:
250
+ if ds.name in seen:
251
+ issues.append(((), f"Duplicate dataset name: {ds.name}"))
252
+ seen.add(ds.name)
253
+ raise_issues(issues, items)
254
+ return items
255
+
256
+
257
+ class AgentCoreProjectSpec(StrictModel):
258
+ schema_uri: Annotated[str | None, Field(alias="$schema")] = None
259
+ name: ProjectName
260
+ version: zint(ge=1)
261
+ managed_by: ManagedBy = "CDK"
262
+ tags: Tags | None = None
263
+
264
+ runtimes: Annotated[list[AgentEnvSpec], _unique("agent"), Field(default_factory=list)]
265
+ memories: Annotated[list[Memory], _unique("memory"), Field(default_factory=list)]
266
+ knowledge_bases: Annotated[list[KnowledgeBase], _unique("knowledge base"), Field(default_factory=list)]
267
+ credentials: Annotated[list[Credential], _unique("credential"), Field(default_factory=list)]
268
+ evaluators: Annotated[list[Evaluator], _unique("evaluator"), Field(default_factory=list)]
269
+ online_eval_configs: Annotated[list[OnlineEvalConfig], _unique("online eval config"), Field(default_factory=list)]
270
+ # MCP / Gateway resources (previously in mcp.json).
271
+ agent_core_gateways: Annotated[list[AgentCoreGateway], _unique("gateway"), Field(default_factory=list)]
272
+ mcp_runtime_tools: Annotated[list[AgentCoreMcpRuntimeTool], _unique("MCP runtime tool")] | None = None
273
+ unassigned_targets: Annotated[list[AgentCoreGatewayTarget], _unique("unassigned target")] | None = None
274
+ policy_engines: Annotated[list[PolicyEngine], _unique("policy engine"), Field(default_factory=list)]
275
+ config_bundles: Annotated[list[ConfigBundle], _unique("config bundle"), Field(default_factory=list)]
276
+ ab_tests: Annotated[list[ABTest], _unique("AB test"), Field(default_factory=list)]
277
+ harnesses: Annotated[list[HarnessRegistryEntry], _unique("harness"), Field(default_factory=list)]
278
+ datasets: Annotated[list[Dataset], AfterValidator(_unique_datasets)] | None = None
279
+ capacity_providers: Annotated[list[CapacityProvider], _unique("capacity provider")] | None = None
280
+ http_gateways: (
281
+ Annotated[
282
+ list[Any],
283
+ array_checks(
284
+ max=0,
285
+ max_msg='"httpGateways" is deprecated. Migrate to agentCoreGateways with protocolType: "None", or use '
286
+ '"agentcore import gateway".',
287
+ ),
288
+ ]
289
+ | None
290
+ ) = None
291
+ payments: Annotated[list[PaymentManager], _unique("payment manager")] | None = None
292
+
293
+ @model_validator(mode="after")
294
+ def _refine(self) -> AgentCoreProjectSpec:
295
+ issues: list[Issue] = []
296
+ self._check_online_eval_refs(issues)
297
+ self._check_http_runtime_refs(issues)
298
+ self._check_capacity_provider_refs(issues)
299
+ self._check_ab_test_refs(issues)
300
+ self._check_knowledge_base_refs(issues)
301
+ self._check_payment_credential_refs(issues)
302
+ raise_issues(issues, self)
303
+ return self
304
+
305
+ def _check_online_eval_refs(self, issues: list[Issue]) -> None:
306
+ agent_names = {a.name for a in self.runtimes}
307
+ evaluator_names = {e.name for e in self.evaluators}
308
+ for config in self.online_eval_configs:
309
+ # Only when agent is specified — custom log groups don't need one.
310
+ if config.agent and config.agent not in agent_names:
311
+ issues.append(((), f'Online eval config "{config.name}" references unknown agent "{config.agent}"'))
312
+ for eval_name in config.evaluators or []:
313
+ # Built-in evaluators and ARN references are externally managed.
314
+ if eval_name.startswith((_BUILTIN_EVALUATOR_PREFIX, _ARN_PREFIX)):
315
+ continue
316
+ if eval_name not in evaluator_names:
317
+ issues.append(
318
+ ((), f'Online eval config "{config.name}" references unknown evaluator "{eval_name}"')
319
+ )
320
+
321
+ def _check_http_runtime_refs(self, issues: list[Issue]) -> None:
322
+ runtimes = {r.name: r for r in self.runtimes}
323
+ for gw in self.agent_core_gateways:
324
+ for target in gw.targets:
325
+ if target.target_type != "httpRuntime" or target.http_runtime is None:
326
+ continue
327
+ ref = target.http_runtime
328
+ runtime = runtimes.get(ref.runtime)
329
+ if runtime is None:
330
+ issues.append(
331
+ (
332
+ (),
333
+ (
334
+ f'Gateway "{gw.name}" target "{target.name}" references unknown runtime "{ref.runtime}". '
335
+ "Check spec.runtimes."
336
+ ),
337
+ )
338
+ )
339
+ elif ref.runtime_endpoint and ref.runtime_endpoint not in ("DEFAULT", *(runtime.endpoints or {})):
340
+ issues.append(
341
+ (
342
+ (),
343
+ (
344
+ f'Gateway "{gw.name}" target "{target.name}" references endpoint '
345
+ f'"{ref.runtime_endpoint}" which does not exist on runtime "{ref.runtime}".'
346
+ ),
347
+ )
348
+ )
349
+
350
+ def _check_capacity_provider_refs(self, issues: list[Issue]) -> None:
351
+ # A sibling name must resolve to a capacityProviders[] entry; ARNs are external and unchecked.
352
+ by_name = {cp.name: cp for cp in self.capacity_providers or []}
353
+ for runtime in self.runtimes:
354
+ cpc = runtime.capacity_provider_configuration
355
+ cp_name = cpc.capacity_provider_name if cpc else None
356
+ if cp_name and cp_name not in by_name:
357
+ issues.append(
358
+ (
359
+ (),
360
+ (
361
+ f'Runtime "{runtime.name}" references unknown capacity provider "{cp_name}". '
362
+ "Check spec.capacityProviders."
363
+ ),
364
+ )
365
+ )
366
+ mounts = [
367
+ fc for fc in runtime.filesystem_configurations or [] if isinstance(fc, CapacityProviderVolumeFilesystem)
368
+ ]
369
+ cp = by_name.get(cp_name) if cp_name else None
370
+ if mounts and cp is not None:
371
+ defined = {v.ebs_configuration.name for v in cp.compute_configuration.ec2_configuration.volumes or []}
372
+ for fc in mounts:
373
+ volume_name = fc.capacity_provider_volume.volume_name
374
+ if volume_name not in defined:
375
+ issues.append(
376
+ (
377
+ (),
378
+ (
379
+ f'Runtime "{runtime.name}" mounts capacity provider volume "{volume_name}" which is '
380
+ f'not defined on capacity provider "{cp_name}". Check its '
381
+ "computeConfiguration.ec2Configuration.volumes."
382
+ ),
383
+ )
384
+ )
385
+
386
+ def _check_ab_test_refs(self, issues: list[Issue]) -> None:
387
+ gateways = {gw.name: gw for gw in self.agent_core_gateways}
388
+ for test in self.ab_tests:
389
+ match = _GATEWAY_REF.search(test.gateway_ref)
390
+ if not match:
391
+ continue
392
+ gw_name = match.group(1)
393
+ gw = gateways.get(gw_name)
394
+ if gw is None:
395
+ issues.append(
396
+ (
397
+ (),
398
+ f'AB test "{test.name}" references gateway "{gw_name}" which does not exist in agentCoreGateways',
399
+ )
400
+ )
401
+ # Target-based tests: variant target names must exist on the gateway.
402
+ if test.mode == "target-based" and gw is not None:
403
+ target_names = {t.name for t in gw.targets}
404
+ for variant in test.variants:
405
+ target = variant.variant_configuration.target
406
+ if target is not None and target.target_name and target.target_name not in target_names:
407
+ issues.append(
408
+ (
409
+ (),
410
+ (
411
+ f'AB test "{test.name}" variant "{variant.name}" references target '
412
+ f'"{target.target_name}" which does not exist in gateway "{gw_name}" targets'
413
+ ),
414
+ )
415
+ )
416
+
417
+ def _check_knowledge_base_refs(self, issues: list[Issue]) -> None:
418
+ # A KB reference is either a project KB name or a literal 10-char external KB ID.
419
+ kb_names = {kb.name for kb in self.knowledge_bases}
420
+
421
+ def validate(target: AgentCoreGatewayTarget, value: str, field_label: str) -> None:
422
+ if REAL_KB_ID_PATTERN.search(value):
423
+ if value in kb_names:
424
+ issues.append(
425
+ (
426
+ (),
427
+ (
428
+ f'Connector target "{target.name}" {field_label} "{value}" looks like a literal KB ID but '
429
+ "also matches a knowledgeBases[] entry. Rename the knowledge base or reference it by its "
430
+ "project name instead."
431
+ ),
432
+ )
433
+ )
434
+ elif value not in kb_names:
435
+ issues.append(
436
+ (
437
+ (),
438
+ (
439
+ f'Connector target "{target.name}" {field_label} "{value}" does not match any '
440
+ "knowledgeBases[] entry. To wire an external KB that this project does not own, use its "
441
+ "10-character KB ID."
442
+ ),
443
+ )
444
+ )
445
+
446
+ for gateway in self.agent_core_gateways:
447
+ for target in gateway.targets:
448
+ if target.target_type != "connector" or target.connector_id != "bedrock-knowledge-bases":
449
+ continue
450
+ for cfg in target.configurations or []:
451
+ pv = cfg.parameter_values or {}
452
+ kb_id = pv.get("knowledgeBaseId")
453
+ if cfg.name == "Retrieve" and kb_id and isinstance(kb_id, str):
454
+ validate(target, kb_id, "configurations[].parameterValues.knowledgeBaseId")
455
+ if cfg.name == "AgenticRetrieveStream":
456
+ retrievers = pv.get("retrievers")
457
+ if not isinstance(retrievers, list):
458
+ continue
459
+ for r in retrievers:
460
+ if not r or not isinstance(r, dict):
461
+ continue
462
+ kb = ((r.get("configuration") or {}).get("knowledgeBase") or {}).get("knowledgeBaseId")
463
+ if kb:
464
+ validate(target, kb, "configurations[].parameterValues.retrievers[].knowledgeBaseId")
465
+
466
+ def _check_payment_credential_refs(self, issues: list[Issue]) -> None:
467
+ credentials = {c.name: c for c in reversed(self.credentials)} # first match wins, like Array.find
468
+ for p_idx, payment in enumerate(self.payments or []):
469
+ for c_idx, connector in enumerate(payment.connectors):
470
+ if connector.provision_mode == "QUICK_CREATE":
471
+ continue
472
+ path = ("payments", p_idx, "connectors", c_idx, "credentialName")
473
+ credential = credentials.get(connector.credential_name) # type: ignore[arg-type]
474
+ if credential is None:
475
+ issues.append(
476
+ (
477
+ path,
478
+ (
479
+ f'Payment connector "{connector.name}" in manager "{payment.name}" references credential '
480
+ f'"{connector.credential_name}" which does not exist in credentials[]'
481
+ ),
482
+ )
483
+ )
484
+ elif credential.authorizer_type != "PaymentCredentialProvider":
485
+ issues.append(
486
+ (
487
+ path,
488
+ (
489
+ f'Payment connector "{connector.name}" in manager "{payment.name}" references credential '
490
+ f'"{connector.credential_name}" which is a {credential.authorizer_type}, not a '
491
+ "PaymentCredentialProvider"
492
+ ),
493
+ )
494
+ )
495
+
496
+
497
+ AgentCoreProjectSpecAdapter: Final = TypeAdapter(AgentCoreProjectSpec)
498
+
499
+ __all__ = [
500
+ "CREDENTIAL_TYPES",
501
+ "INDEXED_KEY_NAME_PATTERN",
502
+ "INDEXED_KEY_NAME_PATTERN_MESSAGE",
503
+ "INDEXED_KEY_TYPES",
504
+ "MAX_INDEXED_KEYS",
505
+ "MAX_INDEXED_KEY_NAME_LENGTH",
506
+ "STREAM_CONTENT_LEVELS",
507
+ "AgentCoreProjectSpec",
508
+ "AgentCoreProjectSpecAdapter",
509
+ "ApiKeyCredential",
510
+ "Credential",
511
+ "CredentialName",
512
+ "CredentialType",
513
+ "Evaluator",
514
+ "EvaluatorType",
515
+ "HarnessRegistryEntry",
516
+ "IndexedKey",
517
+ "IndexedKeyType",
518
+ "KinesisStreamDelivery",
519
+ "ManagedBy",
520
+ "Memory",
521
+ "MemoryName",
522
+ "MemoryType",
523
+ "OAuthCredential",
524
+ "PaymentCredential",
525
+ "ProjectName",
526
+ "StreamContentConfiguration",
527
+ "StreamContentLevel",
528
+ "StreamDeliveryResource",
529
+ "StreamDeliveryResources",
530
+ ]