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,34 @@
1
+ """Port of src/cli/operations/fetch-access/types.ts (camelCase JSON-shaped records)."""
2
+
3
+ from typing import Literal, NotRequired, TypedDict
4
+
5
+ FetchResourceType = Literal["gateway", "agent", "harness"]
6
+
7
+
8
+ class TokenFetchResult(TypedDict):
9
+ url: str
10
+ authType: str
11
+ token: NotRequired[str]
12
+ expiresIn: NotRequired[int]
13
+ message: NotRequired[str]
14
+
15
+
16
+ class GatewayInfo(TypedDict):
17
+ name: str
18
+ authType: str
19
+
20
+
21
+ class AgentInfo(TypedDict):
22
+ name: str
23
+ authType: str
24
+
25
+
26
+ class HarnessInfo(TypedDict):
27
+ name: str
28
+ authType: str
29
+
30
+
31
+ class ResourceInfo(TypedDict):
32
+ name: str
33
+ resourceType: FetchResourceType
34
+ authType: str
@@ -0,0 +1 @@
1
+ """Harness operations (port of upstream ``src/cli/operations/harness``)."""
@@ -0,0 +1,84 @@
1
+ """Preview-build ("orphan") harness detection (port of ``operations/harness/orphan.ts``).
2
+
3
+ An orphan is a harness recorded in deployed-state.json that the old imperative preview build
4
+ created: a real harness NOT part of any CloudFormation stack. The GA path stamps every CFN-managed
5
+ record with ``provisioner: 'cloudformation'``, so a record without that marker can only be an
6
+ orphan. Detection reads local state only — no AWS calls.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from collections.abc import Mapping
12
+ from dataclasses import dataclass
13
+ from typing import Any
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class OrphanHarness:
18
+ name: str
19
+ target_name: str
20
+ harness_id: str
21
+ harness_arn: str
22
+ region: str
23
+
24
+
25
+ def _field(record: Any, camel: str, snake: str) -> Any:
26
+ if isinstance(record, Mapping):
27
+ return record.get(camel)
28
+ return getattr(record, snake, None)
29
+
30
+
31
+ def is_orphan_harness_record(record: Any) -> bool:
32
+ return record is not None and _field(record, "provisioner", "provisioner") != "cloudformation"
33
+
34
+
35
+ def region_from_harness_arn(harness_arn: str) -> str | None:
36
+ """Region segment of ``arn:aws:bedrock-agentcore:<region>:<account>:harness/<id>``."""
37
+ parts = harness_arn.split(":")
38
+ region = parts[3] if len(parts) > 3 else ""
39
+ return region or None
40
+
41
+
42
+ def _targets(deployed_state: Any) -> Mapping[str, Any]:
43
+ if deployed_state is None:
44
+ return {}
45
+ if isinstance(deployed_state, Mapping):
46
+ return deployed_state.get("targets") or {}
47
+ return getattr(deployed_state, "targets", None) or {}
48
+
49
+
50
+ def _harnesses(target: Any) -> Mapping[str, Any]:
51
+ resources = target.get("resources") if isinstance(target, Mapping) else getattr(target, "resources", None)
52
+ if resources is None:
53
+ return {}
54
+ if isinstance(resources, Mapping):
55
+ return resources.get("harnesses") or {}
56
+ return getattr(resources, "harnesses", None) or {}
57
+
58
+
59
+ def find_orphan_harnesses(deployed_state: Any, harness_name: str | None = None) -> list[OrphanHarness]:
60
+ """Orphans across every target (optionally one name); records without a parseable region are skipped."""
61
+ orphans: list[OrphanHarness] = []
62
+ for target_name, target in _targets(deployed_state).items():
63
+ for name, record in _harnesses(target).items():
64
+ if harness_name and name != harness_name:
65
+ continue
66
+ if not is_orphan_harness_record(record):
67
+ continue
68
+ arn = _field(record, "harnessArn", "harness_arn") or ""
69
+ region = region_from_harness_arn(arn)
70
+ if not region:
71
+ continue
72
+ orphans.append(
73
+ OrphanHarness(
74
+ name=name,
75
+ target_name=target_name,
76
+ harness_id=_field(record, "harnessId", "harness_id"),
77
+ harness_arn=arn,
78
+ region=region,
79
+ )
80
+ )
81
+ return orphans
82
+
83
+
84
+ __all__ = ["OrphanHarness", "find_orphan_harnesses", "is_orphan_harness_record", "region_from_harness_arn"]
@@ -0,0 +1,56 @@
1
+ """Harness skill helpers (port of ``operations/harness/skill-utils.ts``).
2
+
3
+ Skills are handled in their camelCase JSON form (``{"s3Uri": ...}``, ``{"gitUrl": ..., "path": ...}``,
4
+ ``{"awsSkills": {"paths": [...]}}`` or ``{"path": ...}``).
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from collections.abc import Mapping
10
+ from typing import Any
11
+
12
+ from agentcore.lib.errors.types import ValidationError
13
+ from agentcore.lib.result import Err, Ok
14
+ from agentcore.lib.schemas.io.config_io import to_jsonable
15
+
16
+ KEY_SEPARATOR = "::"
17
+
18
+
19
+ def get_skill_key(skill: Any) -> str:
20
+ s = to_jsonable(skill)
21
+ if not isinstance(s, Mapping):
22
+ return f"path:{s}"
23
+ if "s3Uri" in s:
24
+ return f"s3:{s['s3Uri']}"
25
+ if "gitUrl" in s:
26
+ return f"git:{s['gitUrl']}{KEY_SEPARATOR + s['path'] if s.get('path') else ''}"
27
+ if "awsSkills" in s:
28
+ paths = (s.get("awsSkills") or {}).get("paths")
29
+ return f"awsSkills:{','.join(sorted(paths)) if paths is not None else '*'}"
30
+ return f"path:{s.get('path')}"
31
+
32
+
33
+ def build_git_skill_key(git_url: str, git_path: str | None = None) -> str:
34
+ return f"git:{git_url}{KEY_SEPARATOR + git_path if git_path else ''}"
35
+
36
+
37
+ def validate_git_skill_credential(project: Any, credential_name: str) -> Ok[None] | Err[Exception]:
38
+ spec = to_jsonable(project)
39
+ credential = next((c for c in spec.get("credentials") or [] if c.get("name") == credential_name), None)
40
+ if credential is None:
41
+ return Err(
42
+ ValidationError(
43
+ f"Credential '{credential_name}' not found in project. Run 'agentcore add credential' first."
44
+ )
45
+ )
46
+ if credential.get("authorizerType") != "ApiKeyCredentialProvider":
47
+ return Err(
48
+ ValidationError(
49
+ f"Credential '{credential_name}' is type '{credential.get('authorizerType')}'. Git skill auth "
50
+ "requires an ApiKeyCredentialProvider credential."
51
+ )
52
+ )
53
+ return Ok(None)
54
+
55
+
56
+ __all__ = ["build_git_skill_key", "get_skill_key", "validate_git_skill_credential"]
@@ -0,0 +1,33 @@
1
+ """AgentCore Identity credential-provider operations (port of src/cli/operations/identity)."""
2
+
3
+ from agentcore.operations.identity.api_key_credential_provider import (
4
+ api_key_provider_exists,
5
+ create_api_key_provider,
6
+ set_token_vault_kms_key,
7
+ update_api_key_provider,
8
+ )
9
+ from agentcore.operations.identity.oauth2_credential_provider import (
10
+ OAuth2ProviderParams,
11
+ OAuth2ProviderResult,
12
+ create_oauth2_provider,
13
+ get_oauth2_provider,
14
+ o_auth2_provider_exists,
15
+ oauth2_provider_exists,
16
+ update_oauth2_provider,
17
+ )
18
+ from agentcore.primitives.credential_utils import compute_default_credential_env_var_name
19
+
20
+ __all__ = [
21
+ "OAuth2ProviderParams",
22
+ "OAuth2ProviderResult",
23
+ "api_key_provider_exists",
24
+ "compute_default_credential_env_var_name",
25
+ "create_api_key_provider",
26
+ "create_oauth2_provider",
27
+ "get_oauth2_provider",
28
+ "o_auth2_provider_exists",
29
+ "oauth2_provider_exists",
30
+ "set_token_vault_kms_key",
31
+ "update_api_key_provider",
32
+ "update_oauth2_provider",
33
+ ]
@@ -0,0 +1,68 @@
1
+ """Imperative AWS SDK operations for API key credential providers
2
+ (port of src/cli/operations/identity/api-key-credential-provider.ts).
3
+
4
+ AgentCore Identity resources are not modeled as CDK constructs; these run as a pre-deploy step.
5
+ ``client`` is a boto3 ``bedrock-agentcore-control`` client.
6
+ """
7
+
8
+ from typing import Any
9
+
10
+ from agentcore.aws._aws_errors import aws_error_name
11
+ from agentcore.lib.errors.types import to_error
12
+ from agentcore.lib.result import Err, Ok
13
+
14
+ _CONFLICT_CODES = ("ConflictException", "ResourceAlreadyExistsException")
15
+
16
+
17
+ def _arn(response: dict[str, Any]) -> dict[str, Any]:
18
+ arn = response.get("credentialProviderArn")
19
+ return {"credentialProviderArn": arn} if arn is not None else {}
20
+
21
+
22
+ def api_key_provider_exists(client: Any, provider_name: str) -> bool:
23
+ """True if the provider exists; False on ResourceNotFoundException; other errors propagate."""
24
+ try:
25
+ client.get_api_key_credential_provider(name=provider_name)
26
+ return True
27
+ except Exception as exc:
28
+ if aws_error_name(exc) == "ResourceNotFoundException":
29
+ return False
30
+ raise
31
+
32
+
33
+ def create_api_key_provider(client: Any, provider_name: str, api_key: str) -> Ok[dict[str, Any]] | Err[Exception]:
34
+ """Create an API key credential provider. Idempotent: an existing provider counts as success."""
35
+ try:
36
+ client.create_api_key_credential_provider(name=provider_name, apiKey=api_key)
37
+ # The create response doesn't include credentialProviderArn — fetch it.
38
+ return Ok(_arn(client.get_api_key_credential_provider(name=provider_name)))
39
+ except Exception as exc: # noqa: BLE001
40
+ if aws_error_name(exc) in _CONFLICT_CODES:
41
+ try:
42
+ return Ok(_arn(client.get_api_key_credential_provider(name=provider_name)))
43
+ except Exception: # noqa: BLE001
44
+ return Ok({})
45
+ return Err(to_error(exc))
46
+
47
+
48
+ def update_api_key_provider(client: Any, provider_name: str, api_key: str) -> Ok[dict[str, Any]] | Err[Exception]:
49
+ """Update an existing API key credential provider with a new API key."""
50
+ try:
51
+ client.update_api_key_credential_provider(name=provider_name, apiKey=api_key)
52
+ return Ok(_arn(client.get_api_key_credential_provider(name=provider_name)))
53
+ except Exception as exc: # noqa: BLE001
54
+ return Err(to_error(exc))
55
+
56
+
57
+ def set_token_vault_kms_key(
58
+ client: Any, kms_key_arn: str, token_vault_id: str | None = None
59
+ ) -> Ok[None] | Err[Exception]:
60
+ """Configure customer-managed KMS encryption for the token vault."""
61
+ params: dict[str, Any] = {"kmsConfiguration": {"keyType": "CustomerManagedKey", "kmsKeyArn": kms_key_arn}}
62
+ if token_vault_id is not None:
63
+ params["tokenVaultId"] = token_vault_id
64
+ try:
65
+ client.set_token_vault_cmk(**params)
66
+ return Ok(None)
67
+ except Exception as exc: # noqa: BLE001
68
+ return Err(to_error(exc))
@@ -0,0 +1,95 @@
1
+ """Imperative AWS SDK operations for OAuth2 credential providers
2
+ (port of src/cli/operations/identity/oauth2-credential-provider.ts).
3
+
4
+ ``client`` is a boto3 ``bedrock-agentcore-control`` client.
5
+ """
6
+
7
+ from dataclasses import dataclass
8
+ from typing import Any
9
+
10
+ from agentcore.aws._aws_errors import aws_error_name
11
+ from agentcore.lib.errors.types import ServiceError, to_error
12
+ from agentcore.lib.result import Err, Ok
13
+
14
+ OAuth2ProviderResult = Ok[dict[str, Any]] | Err[Exception]
15
+
16
+
17
+ @dataclass
18
+ class OAuth2ProviderParams:
19
+ name: str
20
+ vendor: str
21
+ discovery_url: str
22
+ client_id: str
23
+ client_secret: str
24
+
25
+
26
+ def _extract_result(response: dict[str, Any]) -> OAuth2ProviderResult:
27
+ """Create/Get/Update responses share the same shape."""
28
+ arn = response.get("credentialProviderArn")
29
+ if not arn:
30
+ return Err(ServiceError("missing credentialProviderArn in response"))
31
+ value: dict[str, Any] = {"credentialProviderArn": arn}
32
+ secret_arn = (response.get("clientSecretArn") or {}).get("secretArn")
33
+ if secret_arn is not None:
34
+ value["clientSecretArn"] = secret_arn
35
+ if response.get("callbackUrl") is not None:
36
+ value["callbackUrl"] = response["callbackUrl"]
37
+ return Ok(value)
38
+
39
+
40
+ def o_auth2_provider_exists(client: Any, provider_name: str) -> bool:
41
+ try:
42
+ client.get_oauth2_credential_provider(name=provider_name)
43
+ return True
44
+ except Exception as exc:
45
+ if aws_error_name(exc) == "ResourceNotFoundException":
46
+ return False
47
+ raise
48
+
49
+
50
+ oauth2_provider_exists = o_auth2_provider_exists
51
+
52
+
53
+ def _build_oauth2_config(params: OAuth2ProviderParams) -> dict[str, Any]:
54
+ """Always customOauth2ProviderConfig; the vendor field controls server-side behaviour."""
55
+ return {
56
+ "name": params.name,
57
+ "credentialProviderVendor": params.vendor,
58
+ "oauth2ProviderConfigInput": {
59
+ "customOauth2ProviderConfig": {
60
+ "clientId": params.client_id,
61
+ "clientSecret": params.client_secret,
62
+ "oauthDiscovery": {"discoveryUrl": params.discovery_url},
63
+ }
64
+ },
65
+ }
66
+
67
+
68
+ def create_oauth2_provider(client: Any, params: OAuth2ProviderParams) -> OAuth2ProviderResult:
69
+ """Create an OAuth2 provider; on conflict (created concurrently) fall back to update."""
70
+ try:
71
+ result = _extract_result(client.create_oauth2_credential_provider(**_build_oauth2_config(params)))
72
+ if not result.success:
73
+ result = get_oauth2_provider(client, params.name)
74
+ return result
75
+ except Exception as exc: # noqa: BLE001
76
+ if aws_error_name(exc) in ("ConflictException", "ResourceAlreadyExistsException"):
77
+ return update_oauth2_provider(client, params)
78
+ return Err(to_error(exc))
79
+
80
+
81
+ def get_oauth2_provider(client: Any, name: str) -> OAuth2ProviderResult:
82
+ try:
83
+ return _extract_result(client.get_oauth2_credential_provider(name=name))
84
+ except Exception as exc: # noqa: BLE001
85
+ return Err(to_error(exc))
86
+
87
+
88
+ def update_oauth2_provider(client: Any, params: OAuth2ProviderParams) -> OAuth2ProviderResult:
89
+ try:
90
+ result = _extract_result(client.update_oauth2_credential_provider(**_build_oauth2_config(params)))
91
+ if not result.success:
92
+ result = get_oauth2_provider(client, params.name)
93
+ return result
94
+ except Exception as exc: # noqa: BLE001
95
+ return Err(to_error(exc))
@@ -0,0 +1,184 @@
1
+ """Start KB ingestion jobs for a deployed knowledge base (port of operations/ingest/index.ts)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ import threading
7
+ from collections.abc import Callable, Mapping
8
+ from dataclasses import dataclass, field
9
+ from typing import Any
10
+
11
+ from agentcore.aws import bedrock_agent
12
+ from agentcore.aws._aws_errors import aws_error_name, get_error_message
13
+ from agentcore.lib.errors.types import IngestionError
14
+ from agentcore.lib.result import Err, Ok
15
+
16
+
17
+ @dataclass(frozen=True)
18
+ class ConcurrentRetryPolicy:
19
+ max_attempts: int
20
+ """Max attempts per data source (1 = no retry)."""
21
+ delay_ms: int
22
+ """Delay before each retry, in milliseconds."""
23
+
24
+
25
+ # Bedrock allows only one in-flight ingestion job per KB; a second StartIngestionJob for a multi-DS
26
+ # KB usually races and gets a ConflictException. Retry up to 4 times (~5min at 75s intervals).
27
+ DEFAULT_CONCURRENT_RETRY_POLICY = ConcurrentRetryPolicy(max_attempts=5, delay_ms=75_000)
28
+
29
+
30
+ @dataclass
31
+ class StartedIngestion:
32
+ data_source_id: str
33
+ uri: str
34
+ ingestion_job_id: str
35
+
36
+ def to_json(self) -> dict[str, str]:
37
+ return {"dataSourceId": self.data_source_id, "uri": self.uri, "ingestionJobId": self.ingestion_job_id}
38
+
39
+
40
+ @dataclass
41
+ class RunKbIngestionInput:
42
+ knowledge_base_name: str
43
+ deployed_state: Any
44
+ """``DeployedState`` model or camelCase dict."""
45
+ target_name: str
46
+ region: str
47
+ data_source_uri: str | None = None
48
+ """When set, ingest only the data source whose recorded URI matches."""
49
+ concurrent_retry_policy: ConcurrentRetryPolicy | None = None
50
+ on_progress: Callable[[str], None] | None = None
51
+ signal: threading.Event | None = None
52
+ """Abort signal: when set, cancels pending retry sleeps and fails the in-flight data source."""
53
+
54
+
55
+ @dataclass
56
+ class RunKbIngestionSuccess:
57
+ started_jobs: list[StartedIngestion] = field(default_factory=list)
58
+
59
+
60
+ _CONCURRENT_RE = re.compile(r"concurrent ingestion jobs", re.IGNORECASE)
61
+
62
+
63
+ def _is_concurrent_limit_error(err: BaseException) -> bool:
64
+ if aws_error_name(err) == "ConflictException":
65
+ return True
66
+ return bool(_CONCURRENT_RE.search(get_error_message(err)))
67
+
68
+
69
+ def _sleep(ms: int, signal: threading.Event | None) -> None:
70
+ """Sleep that returns early when the abort signal fires."""
71
+ if signal is None:
72
+ threading.Event().wait(ms / 1000)
73
+ elif not signal.is_set():
74
+ signal.wait(ms / 1000)
75
+
76
+
77
+ def _get(obj: Any, snake: str, camel: str) -> Any:
78
+ if obj is None:
79
+ return None
80
+ return obj.get(camel) if isinstance(obj, Mapping) else getattr(obj, snake, None)
81
+
82
+
83
+ def _find_deployed_kb(state: Any, target_name: str, kb_name: str) -> Any:
84
+ target = (_get(state, "targets", "targets") or {}).get(target_name)
85
+ resources = _get(target, "resources", "resources")
86
+ return (_get(resources, "knowledge_bases", "knowledgeBases") or {}).get(kb_name)
87
+
88
+
89
+ def run_kb_ingestion_by_name(
90
+ input: RunKbIngestionInput,
91
+ ) -> Ok[RunKbIngestionSuccess] | Err[IngestionError]:
92
+ """Start ingestion for every data source on a deployed KB (sequentially, retrying on conflicts).
93
+
94
+ Pre-flight failures (KB not deployed, no data sources, unknown URI) are user errors. If any data
95
+ source fails to start, returns a failure listing them; successful starts are not rolled back.
96
+ """
97
+ retry_policy = input.concurrent_retry_policy or DEFAULT_CONCURRENT_RETRY_POLICY
98
+ name, target_name, signal = input.knowledge_base_name, input.target_name, input.signal
99
+
100
+ deployed = _find_deployed_kb(input.deployed_state, target_name, name)
101
+ if not deployed:
102
+ return Err(
103
+ IngestionError(
104
+ f"Knowledge base '{name}' has not been deployed to target '{target_name}'. Run 'agentcore deploy' first.",
105
+ error_source="user",
106
+ )
107
+ )
108
+
109
+ data_sources = [
110
+ (_get(ds, "data_source_id", "dataSourceId"), _get(ds, "uri", "uri"))
111
+ for ds in _get(deployed, "data_sources", "dataSources") or []
112
+ ]
113
+ if not data_sources:
114
+ return Err(IngestionError(f"Knowledge base '{name}' has no data sources to ingest.", error_source="user"))
115
+
116
+ to_ingest = data_sources
117
+ if input.data_source_uri:
118
+ to_ingest = [ds for ds in data_sources if ds[1] == input.data_source_uri]
119
+ if not to_ingest:
120
+ return Err(
121
+ IngestionError(
122
+ f"Data source '{input.data_source_uri}' not found on knowledge base '{name}'.",
123
+ error_source="user",
124
+ )
125
+ )
126
+
127
+ kb_id = _get(deployed, "knowledge_base_id", "knowledgeBaseId")
128
+ started_jobs: list[StartedIngestion] = []
129
+ failures: list[tuple[str, str, Any]] = []
130
+ for ds_id, uri in to_ingest:
131
+ if signal is not None and signal.is_set():
132
+ failures.append((ds_id, uri, Exception("Aborted before start")))
133
+ continue
134
+ last_error: Any = None
135
+ started = False
136
+ for attempt in range(1, retry_policy.max_attempts + 1):
137
+ try:
138
+ job = bedrock_agent.start_ingestion_job(
139
+ region=input.region, knowledge_base_id=kb_id, data_source_id=ds_id
140
+ )
141
+ job_id = job.get("ingestionJobId") if isinstance(job, Mapping) else None
142
+ if not job_id:
143
+ last_error = Exception("No ingestionJobId in StartIngestionJob response")
144
+ break
145
+ started_jobs.append(StartedIngestion(ds_id, uri, job_id))
146
+ started = True
147
+ break
148
+ except Exception as exc: # noqa: BLE001 - every service error is reported per data source
149
+ last_error = exc
150
+ if not _is_concurrent_limit_error(exc) or attempt == retry_policy.max_attempts:
151
+ break
152
+ delay_seconds = round(retry_policy.delay_ms / 1000)
153
+ if input.on_progress:
154
+ input.on_progress(
155
+ f"{ds_id} ({uri}): another ingestion job is running on this KB, retry "
156
+ f"{attempt}/{retry_policy.max_attempts - 1} in {delay_seconds}s…"
157
+ )
158
+ _sleep(retry_policy.delay_ms, signal)
159
+ if signal is not None and signal.is_set():
160
+ last_error = Exception("Aborted while waiting for concurrent ingestion job to drain")
161
+ break
162
+ if not started:
163
+ failures.append((ds_id, uri, last_error))
164
+
165
+ if failures:
166
+ detail = "\n".join(
167
+ f" {ds_id} ({uri}): {get_error_message(e) if isinstance(e, BaseException) else str(e)}"
168
+ for ds_id, uri, e in failures
169
+ )
170
+ return Err(
171
+ IngestionError(f"Failed to start ingestion for {len(failures)} of {len(to_ingest)} data sources:\n{detail}")
172
+ )
173
+
174
+ return Ok(RunKbIngestionSuccess(started_jobs=started_jobs))
175
+
176
+
177
+ __all__ = [
178
+ "DEFAULT_CONCURRENT_RETRY_POLICY",
179
+ "ConcurrentRetryPolicy",
180
+ "RunKbIngestionInput",
181
+ "RunKbIngestionSuccess",
182
+ "StartedIngestion",
183
+ "run_kb_ingestion_by_name",
184
+ ]
@@ -0,0 +1,3 @@
1
+ from agentcore.operations.init.files import InitGitRepoResult, init_git_repo, write_env_file, write_gitignore
2
+
3
+ __all__ = ["InitGitRepoResult", "init_git_repo", "write_env_file", "write_gitignore"]
@@ -0,0 +1,59 @@
1
+ """Project init helpers (port of src/cli/operations/init/files.ts)."""
2
+
3
+ import os
4
+ from dataclasses import dataclass
5
+ from typing import Literal
6
+
7
+ from agentcore.lib import run_subprocess_capture
8
+
9
+ AGENTCORE_GITIGNORE = """# Secrets (local environment files are never committed)
10
+ .env.local
11
+
12
+ # CDK Build Artifacts
13
+ cdk/cdk.out/
14
+ cdk/node_modules/
15
+
16
+ # CLI Internals
17
+ .cli/*
18
+
19
+ # Ephemeral Staging
20
+ .cache/*
21
+
22
+ # Exception: Commit the State
23
+ !.cli/deployed-state.json
24
+ """
25
+
26
+
27
+ def write_gitignore(config_base_dir: str) -> None:
28
+ with open(os.path.join(config_base_dir, ".gitignore"), "w", encoding="utf-8", newline="") as fh:
29
+ fh.write(AGENTCORE_GITIGNORE)
30
+
31
+
32
+ def write_env_file(config_base_dir: str) -> None:
33
+ """Write an empty .env.local file for storing secrets."""
34
+ with open(os.path.join(config_base_dir, ".env.local"), "w", encoding="utf-8") as fh:
35
+ fh.write("")
36
+
37
+
38
+ @dataclass
39
+ class InitGitRepoResult:
40
+ status: Literal["success", "skipped", "error"]
41
+ message: str | None = None
42
+
43
+
44
+ def init_git_repo(project_root: str) -> InitGitRepoResult:
45
+ """Initialize a git repository at the project root; skipped if git is missing or already in a repo."""
46
+ if run_subprocess_capture("git", ["--version"], cwd=project_root).code != 0:
47
+ return InitGitRepoResult("skipped", "git not available")
48
+ if run_subprocess_capture("git", ["rev-parse", "--is-inside-work-tree"], cwd=project_root).code == 0:
49
+ return InitGitRepoResult("skipped", "already in a git repository")
50
+ result = run_subprocess_capture("git", ["init"], cwd=project_root)
51
+ if result.code != 0:
52
+ return InitGitRepoResult("error", result.stderr or "git init failed")
53
+ result = run_subprocess_capture("git", ["add", "."], cwd=project_root)
54
+ if result.code != 0:
55
+ return InitGitRepoResult("error", result.stderr or "git add failed")
56
+ result = run_subprocess_capture("git", ["commit", "-m", "Initial commit"], cwd=project_root)
57
+ if result.code != 0:
58
+ return InitGitRepoResult("error", result.stderr or "git commit failed")
59
+ return InitGitRepoResult("success")
@@ -0,0 +1,21 @@
1
+ """Legacy insights operations (port of operations/insights/index.ts)."""
2
+
3
+ from agentcore.operations.insights.insights_storage import (
4
+ INSIGHTS_DIR,
5
+ delete_local_insights_run,
6
+ list_insights_runs,
7
+ load_insights_run,
8
+ save_insights_run,
9
+ update_insights_run,
10
+ )
11
+ from agentcore.operations.insights.run_insights import run_insights_command
12
+
13
+ __all__ = [
14
+ "INSIGHTS_DIR",
15
+ "delete_local_insights_run",
16
+ "list_insights_runs",
17
+ "load_insights_run",
18
+ "run_insights_command",
19
+ "save_insights_run",
20
+ "update_insights_run",
21
+ ]