@aws/agentcore 1.0.0-preview.3 → 1.0.0-preview.30

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 (330) hide show
  1. package/README.md +193 -33
  2. package/dist/agent-inspector/index.css +1 -1
  3. package/dist/agent-inspector/index.js +99 -84
  4. package/dist/assets/README.md +6 -2
  5. package/dist/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +3344 -366
  6. package/dist/assets/__tests__/__snapshots__/dockerfile-render.test.ts.snap +6 -2
  7. package/dist/assets/__tests__/assets.snapshot.test.ts +10 -24
  8. package/dist/assets/__tests__/googleadk-observability.test.ts +23 -0
  9. package/dist/assets/__tests__/googleadk-session-eviction.test.ts +87 -0
  10. package/dist/assets/__tests__/input-validation.test.ts +44 -0
  11. package/dist/assets/__tests__/summarization-namespace.test.ts +43 -0
  12. package/dist/assets/agents/AGENTS.md +91 -14
  13. package/dist/assets/cdk/bin/cdk.ts +109 -24
  14. package/dist/assets/cdk/lib/cdk-stack.ts +227 -19
  15. package/dist/assets/cdk/package.json +9 -9
  16. package/dist/assets/cdk/test/cdk.test.ts +4 -0
  17. package/dist/assets/container/python/Dockerfile +7 -1
  18. package/dist/assets/container/typescript/Dockerfile +25 -0
  19. package/dist/assets/container/typescript/dockerignore.template +24 -0
  20. package/dist/assets/datasets/predefined-v1.jsonl +3 -0
  21. package/dist/assets/datasets/simulated-v1.jsonl +3 -0
  22. package/dist/assets/evaluators/autoevals-lambda/execution-role-policy.json +15 -0
  23. package/dist/assets/evaluators/autoevals-lambda/lambda_function.py +37 -0
  24. package/dist/assets/evaluators/autoevals-lambda/pyproject.toml +22 -0
  25. package/dist/assets/evaluators/deepeval-lambda/execution-role-policy.json +15 -0
  26. package/dist/assets/evaluators/deepeval-lambda/lambda_function.py +29 -0
  27. package/dist/assets/evaluators/deepeval-lambda/pyproject.toml +19 -0
  28. package/dist/assets/mcp/python/pyproject.toml +1 -1
  29. package/dist/assets/python/a2a/googleadk/base/main.py +32 -18
  30. package/dist/assets/python/a2a/googleadk/base/pyproject.toml +6 -4
  31. package/dist/assets/python/a2a/langchain_langgraph/base/main.py +35 -21
  32. package/dist/assets/python/a2a/langchain_langgraph/base/pyproject.toml +4 -3
  33. package/dist/assets/python/a2a/strands/base/main.py +23 -17
  34. package/dist/assets/python/a2a/strands/base/pyproject.toml +3 -3
  35. package/dist/assets/python/a2a/strands/capabilities/memory/session.py +4 -1
  36. package/dist/assets/python/agui/googleadk/base/main.py +62 -2
  37. package/dist/assets/python/agui/googleadk/base/pyproject.toml +6 -5
  38. package/dist/assets/python/agui/langchain_langgraph/base/main.py +56 -0
  39. package/dist/assets/python/agui/langchain_langgraph/base/pyproject.toml +3 -2
  40. package/dist/assets/python/agui/strands/base/main.py +63 -1
  41. package/dist/assets/python/agui/strands/base/pyproject.toml +2 -2
  42. package/dist/assets/python/agui/strands/capabilities/memory/session.py +4 -1
  43. package/dist/assets/python/http/autogen/base/README.md +7 -1
  44. package/dist/assets/python/http/autogen/base/main.py +62 -29
  45. package/dist/assets/python/http/autogen/base/pyproject.toml +1 -1
  46. package/dist/assets/python/http/googleadk/base/README.md +7 -1
  47. package/dist/assets/python/http/googleadk/base/main.py +71 -24
  48. package/dist/assets/python/http/googleadk/base/mcp_client/client.py +7 -7
  49. package/dist/assets/python/http/googleadk/base/pyproject.toml +5 -3
  50. package/dist/assets/python/http/langchain_langgraph/base/README.md +7 -1
  51. package/dist/assets/python/http/langchain_langgraph/base/main.py +119 -24
  52. package/dist/assets/python/http/langchain_langgraph/base/mcp_client/client.py +10 -8
  53. package/dist/assets/python/http/langchain_langgraph/base/pyproject.toml +5 -4
  54. package/dist/assets/python/http/openaiagents/base/README.md +7 -1
  55. package/dist/assets/python/http/openaiagents/base/main.py +63 -32
  56. package/dist/assets/python/http/openaiagents/base/mcp_client/client.py +4 -4
  57. package/dist/assets/python/http/openaiagents/base/pyproject.toml +3 -3
  58. package/dist/assets/python/http/strands/base/README.md +8 -1
  59. package/dist/assets/python/http/strands/base/main.py +607 -47
  60. package/dist/assets/python/http/strands/base/mcp_client/client.py +49 -6
  61. package/dist/assets/python/http/strands/base/model/load.py +119 -3
  62. package/dist/assets/python/http/strands/base/model/mantle_compat.py +21 -0
  63. package/dist/assets/python/http/strands/base/pyproject.toml +11 -5
  64. package/dist/assets/python/http/strands/base/skills/fetcher.py +279 -0
  65. package/dist/assets/python/http/strands/capabilities/execution-limits/hooks/execution_limits.py +54 -0
  66. package/dist/assets/python/http/strands/capabilities/memory/session.py +4 -1
  67. package/dist/assets/python/http/strands/capabilities/payments/__init__.py +4 -0
  68. package/dist/assets/python/http/strands/capabilities/payments/payments.py +142 -0
  69. package/dist/assets/python/mcp/standalone/base/main.py +58 -0
  70. package/dist/assets/python/mcp/standalone/base/pyproject.toml +1 -1
  71. package/dist/assets/typescript/http/strands/base/README.md +42 -0
  72. package/dist/assets/typescript/http/strands/base/gitignore.template +22 -0
  73. package/dist/assets/typescript/http/strands/base/main.ts +149 -0
  74. package/dist/assets/typescript/http/strands/base/mcp_client/client.ts +11 -0
  75. package/dist/assets/typescript/http/strands/base/model/load.ts +102 -0
  76. package/dist/assets/typescript/http/strands/base/package.json +38 -0
  77. package/dist/assets/typescript/http/strands/base/tsconfig.json +19 -0
  78. package/dist/assets/typescript/http/strands/capabilities/memory/memory.ts +52 -0
  79. package/dist/assets/typescript/http/vercelai/base/README.md +42 -0
  80. package/dist/assets/typescript/http/vercelai/base/gitignore.template +22 -0
  81. package/dist/assets/typescript/http/vercelai/base/main.ts +70 -0
  82. package/dist/assets/typescript/http/vercelai/base/model/load.ts +121 -0
  83. package/dist/assets/typescript/http/vercelai/base/package.json +35 -0
  84. package/dist/assets/typescript/http/vercelai/base/tsconfig.json +19 -0
  85. package/dist/cli/index.mjs +1743 -627
  86. package/dist/lib/constants.d.ts +8 -4
  87. package/dist/lib/constants.d.ts.map +1 -1
  88. package/dist/lib/constants.js +13 -7
  89. package/dist/lib/constants.js.map +1 -1
  90. package/dist/lib/dependency-management/index.d.ts +5 -0
  91. package/dist/lib/dependency-management/index.d.ts.map +1 -0
  92. package/dist/lib/dependency-management/index.js +8 -0
  93. package/dist/lib/dependency-management/index.js.map +1 -0
  94. package/dist/lib/dependency-management/messages.d.ts +30 -0
  95. package/dist/lib/dependency-management/messages.d.ts.map +1 -0
  96. package/dist/lib/dependency-management/messages.js +86 -0
  97. package/dist/lib/dependency-management/messages.js.map +1 -0
  98. package/dist/lib/dependency-management/plan.d.ts +25 -0
  99. package/dist/lib/dependency-management/plan.d.ts.map +1 -0
  100. package/dist/lib/dependency-management/plan.js +67 -0
  101. package/dist/lib/dependency-management/plan.js.map +1 -0
  102. package/dist/lib/dependency-management/semver.d.ts +21 -0
  103. package/dist/lib/dependency-management/semver.d.ts.map +1 -0
  104. package/dist/lib/dependency-management/semver.js +51 -0
  105. package/dist/lib/dependency-management/semver.js.map +1 -0
  106. package/dist/lib/dependency-management/sync.d.ts +26 -0
  107. package/dist/lib/dependency-management/sync.d.ts.map +1 -0
  108. package/dist/lib/dependency-management/sync.js +141 -0
  109. package/dist/lib/dependency-management/sync.js.map +1 -0
  110. package/dist/lib/dependency-management/types.d.ts +85 -0
  111. package/dist/lib/dependency-management/types.d.ts.map +1 -0
  112. package/dist/lib/dependency-management/types.js +3 -0
  113. package/dist/lib/dependency-management/types.js.map +1 -0
  114. package/dist/lib/errors/index.d.ts +1 -1
  115. package/dist/lib/errors/index.d.ts.map +1 -1
  116. package/dist/lib/errors/index.js +1 -1
  117. package/dist/lib/errors/index.js.map +1 -1
  118. package/dist/lib/errors/types.d.ts +274 -0
  119. package/dist/lib/errors/types.d.ts.map +1 -0
  120. package/dist/lib/errors/types.js +423 -0
  121. package/dist/lib/errors/types.js.map +1 -0
  122. package/dist/lib/errors/zod.d.ts +8 -0
  123. package/dist/lib/errors/zod.d.ts.map +1 -0
  124. package/dist/lib/errors/{config.js → zod.js} +8 -81
  125. package/dist/lib/errors/zod.js.map +1 -0
  126. package/dist/lib/index.d.ts +3 -0
  127. package/dist/lib/index.d.ts.map +1 -1
  128. package/dist/lib/index.js +4 -1
  129. package/dist/lib/index.js.map +1 -1
  130. package/dist/lib/packaging/build-args.d.ts +6 -0
  131. package/dist/lib/packaging/build-args.d.ts.map +1 -1
  132. package/dist/lib/packaging/build-args.js +11 -2
  133. package/dist/lib/packaging/build-args.js.map +1 -1
  134. package/dist/lib/packaging/build-context-dockerignore.d.ts +23 -0
  135. package/dist/lib/packaging/build-context-dockerignore.d.ts.map +1 -0
  136. package/dist/lib/packaging/build-context-dockerignore.js +63 -0
  137. package/dist/lib/packaging/build-context-dockerignore.js.map +1 -0
  138. package/dist/lib/packaging/build-context.d.ts +21 -0
  139. package/dist/lib/packaging/build-context.d.ts.map +1 -0
  140. package/dist/lib/packaging/build-context.js +21 -0
  141. package/dist/lib/packaging/build-context.js.map +1 -0
  142. package/dist/lib/packaging/container.d.ts.map +1 -1
  143. package/dist/lib/packaging/container.js +20 -9
  144. package/dist/lib/packaging/container.js.map +1 -1
  145. package/dist/lib/packaging/helpers.d.ts +16 -0
  146. package/dist/lib/packaging/helpers.d.ts.map +1 -1
  147. package/dist/lib/packaging/helpers.js +127 -29
  148. package/dist/lib/packaging/helpers.js.map +1 -1
  149. package/dist/lib/packaging/index.d.ts +2 -1
  150. package/dist/lib/packaging/index.d.ts.map +1 -1
  151. package/dist/lib/packaging/index.js +9 -20
  152. package/dist/lib/packaging/index.js.map +1 -1
  153. package/dist/lib/packaging/node.d.ts +2 -2
  154. package/dist/lib/packaging/node.d.ts.map +1 -1
  155. package/dist/lib/packaging/node.js +83 -38
  156. package/dist/lib/packaging/node.js.map +1 -1
  157. package/dist/lib/packaging/python.js +12 -12
  158. package/dist/lib/packaging/python.js.map +1 -1
  159. package/dist/lib/result.d.ts +57 -0
  160. package/dist/lib/result.d.ts.map +1 -0
  161. package/dist/lib/result.js +62 -0
  162. package/dist/lib/result.js.map +1 -0
  163. package/dist/lib/schemas/io/config-io.d.ts +14 -0
  164. package/dist/lib/schemas/io/config-io.d.ts.map +1 -1
  165. package/dist/lib/schemas/io/config-io.js +89 -5
  166. package/dist/lib/schemas/io/config-io.js.map +1 -1
  167. package/dist/lib/schemas/io/global-config.d.ts +41 -0
  168. package/dist/lib/schemas/io/global-config.d.ts.map +1 -0
  169. package/dist/lib/schemas/io/global-config.js +119 -0
  170. package/dist/lib/schemas/io/global-config.js.map +1 -0
  171. package/dist/lib/schemas/io/index.d.ts +1 -2
  172. package/dist/lib/schemas/io/index.d.ts.map +1 -1
  173. package/dist/lib/schemas/io/index.js +1 -4
  174. package/dist/lib/schemas/io/index.js.map +1 -1
  175. package/dist/lib/schemas/io/path-resolver.d.ts +0 -6
  176. package/dist/lib/schemas/io/path-resolver.d.ts.map +1 -1
  177. package/dist/lib/schemas/io/path-resolver.js +3 -13
  178. package/dist/lib/schemas/io/path-resolver.js.map +1 -1
  179. package/dist/lib/secrets/cipher.d.ts +12 -0
  180. package/dist/lib/secrets/cipher.d.ts.map +1 -0
  181. package/dist/lib/secrets/cipher.js +54 -0
  182. package/dist/lib/secrets/cipher.js.map +1 -0
  183. package/dist/lib/secrets/index.d.ts +4 -0
  184. package/dist/lib/secrets/index.d.ts.map +1 -0
  185. package/dist/lib/secrets/index.js +15 -0
  186. package/dist/lib/secrets/index.js.map +1 -0
  187. package/dist/lib/secrets/key-provider.d.ts +16 -0
  188. package/dist/lib/secrets/key-provider.d.ts.map +1 -0
  189. package/dist/lib/secrets/key-provider.js +191 -0
  190. package/dist/lib/secrets/key-provider.js.map +1 -0
  191. package/dist/lib/secrets/sensitive-keys.d.ts +21 -0
  192. package/dist/lib/secrets/sensitive-keys.d.ts.map +1 -0
  193. package/dist/lib/secrets/sensitive-keys.js +67 -0
  194. package/dist/lib/secrets/sensitive-keys.js.map +1 -0
  195. package/dist/lib/time-constants.d.ts +5 -0
  196. package/dist/lib/time-constants.d.ts.map +1 -0
  197. package/dist/lib/time-constants.js +8 -0
  198. package/dist/lib/time-constants.js.map +1 -0
  199. package/dist/lib/utils/env.d.ts +8 -2
  200. package/dist/lib/utils/env.d.ts.map +1 -1
  201. package/dist/lib/utils/env.js +65 -17
  202. package/dist/lib/utils/env.js.map +1 -1
  203. package/dist/lib/utils/index.d.ts +3 -2
  204. package/dist/lib/utils/index.d.ts.map +1 -1
  205. package/dist/lib/utils/index.js +6 -1
  206. package/dist/lib/utils/index.js.map +1 -1
  207. package/dist/lib/utils/polling.d.ts +31 -0
  208. package/dist/lib/utils/polling.d.ts.map +1 -0
  209. package/dist/lib/utils/polling.js +61 -0
  210. package/dist/lib/utils/polling.js.map +1 -0
  211. package/dist/lib/utils/subprocess.d.ts +4 -1
  212. package/dist/lib/utils/subprocess.d.ts.map +1 -1
  213. package/dist/lib/utils/subprocess.js +11 -57
  214. package/dist/lib/utils/subprocess.js.map +1 -1
  215. package/dist/lib/utils/zod.d.ts +16 -0
  216. package/dist/lib/utils/zod.d.ts.map +1 -1
  217. package/dist/lib/utils/zod.js +45 -0
  218. package/dist/lib/utils/zod.js.map +1 -1
  219. package/dist/schema/constants.d.ts +56 -2
  220. package/dist/schema/constants.d.ts.map +1 -1
  221. package/dist/schema/constants.js +82 -7
  222. package/dist/schema/constants.js.map +1 -1
  223. package/dist/schema/schemas/agent-env.d.ts +187 -7
  224. package/dist/schema/schemas/agent-env.d.ts.map +1 -1
  225. package/dist/schema/schemas/agent-env.js +323 -27
  226. package/dist/schema/schemas/agent-env.js.map +1 -1
  227. package/dist/schema/schemas/agentcore-project.d.ts +519 -12
  228. package/dist/schema/schemas/agentcore-project.d.ts.map +1 -1
  229. package/dist/schema/schemas/agentcore-project.js +342 -13
  230. package/dist/schema/schemas/agentcore-project.js.map +1 -1
  231. package/dist/schema/schemas/auth.d.ts +174 -0
  232. package/dist/schema/schemas/auth.d.ts.map +1 -1
  233. package/dist/schema/schemas/auth.js +127 -3
  234. package/dist/schema/schemas/auth.js.map +1 -1
  235. package/dist/schema/schemas/aws-targets.d.ts +18 -0
  236. package/dist/schema/schemas/aws-targets.d.ts.map +1 -1
  237. package/dist/schema/schemas/aws-targets.js +6 -0
  238. package/dist/schema/schemas/aws-targets.js.map +1 -1
  239. package/dist/schema/schemas/connections.d.ts +185 -0
  240. package/dist/schema/schemas/connections.d.ts.map +1 -0
  241. package/dist/schema/schemas/connections.js +176 -0
  242. package/dist/schema/schemas/connections.js.map +1 -0
  243. package/dist/schema/schemas/deployed-state.d.ts +392 -5
  244. package/dist/schema/schemas/deployed-state.d.ts.map +1 -1
  245. package/dist/schema/schemas/deployed-state.js +112 -2
  246. package/dist/schema/schemas/deployed-state.js.map +1 -1
  247. package/dist/schema/schemas/index.d.ts +3 -0
  248. package/dist/schema/schemas/index.d.ts.map +1 -1
  249. package/dist/schema/schemas/index.js +5 -0
  250. package/dist/schema/schemas/index.js.map +1 -1
  251. package/dist/schema/schemas/mcp-defs.d.ts +2 -1
  252. package/dist/schema/schemas/mcp-defs.d.ts.map +1 -1
  253. package/dist/schema/schemas/mcp-defs.js +3 -2
  254. package/dist/schema/schemas/mcp-defs.js.map +1 -1
  255. package/dist/schema/schemas/mcp.d.ts +197 -0
  256. package/dist/schema/schemas/mcp.d.ts.map +1 -1
  257. package/dist/schema/schemas/mcp.js +334 -5
  258. package/dist/schema/schemas/mcp.js.map +1 -1
  259. package/dist/schema/schemas/primitives/ab-test.d.ts +135 -0
  260. package/dist/schema/schemas/primitives/ab-test.d.ts.map +1 -0
  261. package/dist/schema/schemas/primitives/ab-test.js +95 -0
  262. package/dist/schema/schemas/primitives/ab-test.js.map +1 -0
  263. package/dist/schema/schemas/primitives/capacity-provider.d.ts +237 -0
  264. package/dist/schema/schemas/primitives/capacity-provider.d.ts.map +1 -0
  265. package/dist/schema/schemas/primitives/capacity-provider.js +220 -0
  266. package/dist/schema/schemas/primitives/capacity-provider.js.map +1 -0
  267. package/dist/schema/schemas/primitives/config-bundle.d.ts +32 -0
  268. package/dist/schema/schemas/primitives/config-bundle.d.ts.map +1 -0
  269. package/dist/schema/schemas/primitives/config-bundle.js +41 -0
  270. package/dist/schema/schemas/primitives/config-bundle.js.map +1 -0
  271. package/dist/schema/schemas/primitives/dataset.d.ts +48 -0
  272. package/dist/schema/schemas/primitives/dataset.d.ts.map +1 -0
  273. package/dist/schema/schemas/primitives/dataset.js +58 -0
  274. package/dist/schema/schemas/primitives/dataset.js.map +1 -0
  275. package/dist/schema/schemas/primitives/evaluator.d.ts +22 -0
  276. package/dist/schema/schemas/primitives/evaluator.d.ts.map +1 -1
  277. package/dist/schema/schemas/primitives/evaluator.js +28 -3
  278. package/dist/schema/schemas/primitives/evaluator.js.map +1 -1
  279. package/dist/schema/schemas/primitives/harness.d.ts +377 -19
  280. package/dist/schema/schemas/primitives/harness.d.ts.map +1 -1
  281. package/dist/schema/schemas/primitives/harness.js +379 -24
  282. package/dist/schema/schemas/primitives/harness.js.map +1 -1
  283. package/dist/schema/schemas/primitives/index.d.ts +17 -9
  284. package/dist/schema/schemas/primitives/index.d.ts.map +1 -1
  285. package/dist/schema/schemas/primitives/index.js +62 -1
  286. package/dist/schema/schemas/primitives/index.js.map +1 -1
  287. package/dist/schema/schemas/primitives/knowledge-base.d.ts +104 -0
  288. package/dist/schema/schemas/primitives/knowledge-base.d.ts.map +1 -0
  289. package/dist/schema/schemas/primitives/knowledge-base.js +99 -0
  290. package/dist/schema/schemas/primitives/knowledge-base.js.map +1 -0
  291. package/dist/schema/schemas/primitives/memory.d.ts +22 -4
  292. package/dist/schema/schemas/primitives/memory.d.ts.map +1 -1
  293. package/dist/schema/schemas/primitives/memory.js +57 -16
  294. package/dist/schema/schemas/primitives/memory.js.map +1 -1
  295. package/dist/schema/schemas/primitives/online-eval-config.d.ts +21 -2
  296. package/dist/schema/schemas/primitives/online-eval-config.d.ts.map +1 -1
  297. package/dist/schema/schemas/primitives/online-eval-config.js +45 -5
  298. package/dist/schema/schemas/primitives/online-eval-config.js.map +1 -1
  299. package/dist/schema/schemas/primitives/payment.d.ts +86 -0
  300. package/dist/schema/schemas/primitives/payment.d.ts.map +1 -0
  301. package/dist/schema/schemas/primitives/payment.js +88 -0
  302. package/dist/schema/schemas/primitives/payment.js.map +1 -0
  303. package/dist/schema/schemas/primitives/policy.d.ts +26 -0
  304. package/dist/schema/schemas/primitives/policy.d.ts.map +1 -1
  305. package/dist/schema/schemas/primitives/policy.js +5 -1
  306. package/dist/schema/schemas/primitives/policy.js.map +1 -1
  307. package/npm-shrinkwrap.json +16874 -0
  308. package/package.json +49 -21
  309. package/scripts/bump-version.ts +4 -4
  310. package/scripts/bundle.mjs +70 -41
  311. package/scripts/extract-cli-model.mjs +269 -0
  312. package/scripts/extract-cli-model.test.mjs +43 -0
  313. package/scripts/render_adoc.py +350 -0
  314. package/scripts/run-e2e-dev.sh +56 -0
  315. package/scripts/run-e2e-local.sh +145 -0
  316. package/scripts/safe-junit-reporter.ts +7 -0
  317. package/scripts/sanitize-test-artifacts.ts +65 -0
  318. package/scripts/sync-vended-cdk.ts +49 -0
  319. package/scripts/test_render_adoc.py +38 -0
  320. package/dist/lib/errors/config.d.ts +0 -49
  321. package/dist/lib/errors/config.d.ts.map +0 -1
  322. package/dist/lib/errors/config.js.map +0 -1
  323. package/dist/lib/packaging/errors.d.ts +0 -16
  324. package/dist/lib/packaging/errors.d.ts.map +0 -1
  325. package/dist/lib/packaging/errors.js +0 -36
  326. package/dist/lib/packaging/errors.js.map +0 -1
  327. package/dist/lib/schemas/io/cli-config.d.ts +0 -12
  328. package/dist/lib/schemas/io/cli-config.d.ts.map +0 -1
  329. package/dist/lib/schemas/io/cli-config.js +0 -35
  330. package/dist/lib/schemas/io/cli-config.js.map +0 -1
@@ -1,22 +1,51 @@
1
1
  import {
2
2
  AgentCoreApplication,
3
3
  AgentCoreMcp,
4
+ AgentCorePaymentManager,
5
+ AgentCorePaymentConnector,
4
6
  type AgentCoreProjectSpec,
5
7
  type AgentCoreMcpSpec,
8
+ type CustomJWTAuthorizerConfig,
9
+ type HarnessDeploymentConfig,
6
10
  } from '@aws/agentcore-cdk';
7
11
  import { CfnOutput, Stack, type StackProps } from 'aws-cdk-lib';
12
+ import * as iam from 'aws-cdk-lib/aws-iam';
8
13
  import { Construct } from 'constructs';
9
14
 
10
- export interface HarnessConfig {
15
+ /**
16
+ * Harness deployment config: role-scoped fields (for IAM role + container build)
17
+ * plus the full validated spec + its config directory so the L3 construct can
18
+ * synthesize the AWS::BedrockAgentCore::Harness resource.
19
+ */
20
+ export type HarnessConfig = HarnessDeploymentConfig;
21
+
22
+ export interface ManualPaymentConnectorSpec {
23
+ name: string;
24
+ provider: 'CoinbaseCDP' | 'StripePrivy';
25
+ provisionMode?: 'MANUAL';
26
+ credentialName: string;
27
+ credentialProviderArn: string;
28
+ }
29
+
30
+ export interface QuickCreatePaymentConnectorSpec {
31
+ name: string;
32
+ provider: 'CoinbaseCDP';
33
+ provisionMode: 'QUICK_CREATE';
34
+ credentialName?: never;
35
+ credentialProviderArn?: never;
36
+ }
37
+
38
+ export type PaymentConnectorSpec = ManualPaymentConnectorSpec | QuickCreatePaymentConnectorSpec;
39
+
40
+ export interface PaymentSpec {
11
41
  name: string;
12
- executionRoleArn?: string;
13
- memoryName?: string;
14
- containerUri?: string;
15
- hasDockerfile?: boolean;
16
- dockerfile?: string;
17
- codeLocation?: string;
18
- tools?: { type: string; name: string }[];
19
- apiKeyArn?: string;
42
+ description?: string;
43
+ authorizerType: 'AWS_IAM' | 'CUSTOM_JWT';
44
+ authorizerConfiguration?: { customJWTAuthorizer: CustomJWTAuthorizerConfig };
45
+ autoPayment?: boolean;
46
+ paymentToolAllowlist?: string[];
47
+ networkPreferences?: string[];
48
+ connectors: PaymentConnectorSpec[];
20
49
  }
21
50
 
22
51
  export interface AgentCoreStackProps extends StackProps {
@@ -33,13 +62,38 @@ export interface AgentCoreStackProps extends StackProps {
33
62
  */
34
63
  credentials?: Record<string, { credentialProviderArn: string; clientSecretArn?: string }>;
35
64
  /**
36
- * Harness role configurations. Each entry creates an IAM execution role for a harness.
37
- *
38
- * When `hasDockerfile` is true and `codeLocation` is provided (without an explicit
39
- * `containerUri`), the L3 construct builds and pushes a container image via CodeBuild
40
- * and emits its URI as a stack output for the post-CDK harness deployer.
65
+ * Harness role configurations.
41
66
  */
42
67
  harnesses?: HarnessConfig[];
68
+ /**
69
+ * Parsed connectorParameters for non-S3 KB data sources, keyed by
70
+ * connectorConfigFile path. Forwarded to AgentCoreApplication.
71
+ */
72
+ connectorParametersByFile?: Record<string, Record<string, unknown>>;
73
+ /**
74
+ * Payment specifications with resolved credential provider ARNs.
75
+ */
76
+ paymentSpec?: PaymentSpec[];
77
+ }
78
+
79
+ function toCdkId(name: string): string {
80
+ return name.replace(/_/g, '');
81
+ }
82
+
83
+ /**
84
+ * Decide whether a deployed runtime should receive payment env vars + IAM grants.
85
+ * Payments today only ships a runtime shim for Python HTTP runtimes; injecting
86
+ * AGENTCORE_PAYMENT_* env vars into TypeScript / MCP / A2A / AGUI runtimes
87
+ * would surface env vars they cannot consume and would dilute least-privilege
88
+ * IAM grants for runtimes that never call ProcessPayment.
89
+ */
90
+ function isPaymentEligibleAgent(agent: { entrypoint?: string; protocol?: string }): boolean {
91
+ if (agent.protocol && agent.protocol !== 'HTTP') {
92
+ return false;
93
+ }
94
+ const entrypoint = typeof agent.entrypoint === 'string' ? agent.entrypoint : '';
95
+ const entrypointFile = entrypoint.split(':')[0] ?? '';
96
+ return entrypointFile.endsWith('.py');
43
97
  }
44
98
 
45
99
  /**
@@ -55,13 +109,21 @@ export class AgentCoreStack extends Stack {
55
109
  constructor(scope: Construct, id: string, props: AgentCoreStackProps) {
56
110
  super(scope, id, props);
57
111
 
58
- const { spec, mcpSpec, credentials, harnesses } = props;
112
+ const { spec, mcpSpec, credentials, harnesses, connectorParametersByFile, paymentSpec } = props;
59
113
 
60
114
  // Create AgentCoreApplication with all agents and harness roles
61
- this.application = new AgentCoreApplication(this, 'Application', {
62
- spec,
63
- harnesses: harnesses?.length ? harnesses : undefined,
64
- });
115
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+ const appProps: Record<string, unknown> = { spec };
117
+ if (harnesses?.length) {
118
+ appProps.harnesses = harnesses;
119
+ }
120
+ if (connectorParametersByFile && Object.keys(connectorParametersByFile).length > 0) {
121
+ appProps.connectorParametersByFile = connectorParametersByFile;
122
+ }
123
+ if (credentials) {
124
+ appProps.credentials = credentials;
125
+ }
126
+ this.application = new AgentCoreApplication(this, 'Application', appProps as any);
65
127
 
66
128
  // Create AgentCoreMcp if there are gateways configured
67
129
  if (mcpSpec?.agentCoreGateways && mcpSpec.agentCoreGateways.length > 0) {
@@ -74,6 +136,152 @@ export class AgentCoreStack extends Stack {
74
136
  });
75
137
  }
76
138
 
139
+ // Create payment infrastructure via CFN constructs
140
+ if (paymentSpec && paymentSpec.length > 0) {
141
+ for (const payment of paymentSpec) {
142
+ const mgrId = toCdkId(payment.name);
143
+ const manager = new AgentCorePaymentManager(this, `Payment${mgrId}`, {
144
+ projectName: spec.name,
145
+ name: payment.name,
146
+ authorizerType: payment.authorizerType,
147
+ description: payment.description,
148
+ authorizerConfiguration: payment.authorizerConfiguration,
149
+ tags: spec.tags,
150
+ });
151
+
152
+ const prefix = `AGENTCORE_PAYMENT_${payment.name.toUpperCase().replace(/-/g, '_')}`;
153
+
154
+ // Wire env vars from construct output tokens into eligible agent environments only.
155
+ // See isPaymentEligibleAgent — non-Python or non-HTTP runtimes have no shim that
156
+ // can consume these env vars, and giving them sts:AssumeRole on the
157
+ // ProcessPaymentRole would broaden the privilege surface unnecessarily.
158
+ for (const env of this.application.environments.values()) {
159
+ if (!isPaymentEligibleAgent(env.agent)) {
160
+ continue;
161
+ }
162
+ env.runtime.addEnvironmentVariable(`${prefix}_MANAGER_ARN`, manager.paymentManagerArn);
163
+ env.runtime.addEnvironmentVariable(`${prefix}_PROCESS_PAYMENT_ROLE_ARN`, manager.processPaymentRoleArn);
164
+
165
+ // Grant runtime execution role permission to assume the ProcessPaymentRole.
166
+ // The ProcessPaymentRole's trust policy allows AccountRootPrincipal, but the
167
+ // caller still needs sts:AssumeRole on its own role to perform the assumption.
168
+ env.runtime.role.addToPrincipalPolicy(
169
+ new iam.PolicyStatement({
170
+ actions: ['sts:AssumeRole'],
171
+ resources: [manager.processPaymentRoleArn],
172
+ })
173
+ );
174
+
175
+ // Grant payment data-plane actions directly to the runtime role.
176
+ //
177
+ // NOTE: This deviates from the canonical role model in the AgentCore Payments
178
+ // beta guide, which assigns Get/List/Create instrument+session actions to a
179
+ // separate ManagementRole and limits the agent's role to ProcessPayment only.
180
+ // The current SDK plugin (AgentCorePaymentsPlugin.generate_payment_header)
181
+ // calls GetPaymentInstrument internally during the 402 auto-pay path, so the
182
+ // runtime role needs read access. CreatePaymentSession is included so
183
+ // `agentcore invoke --auto-session` works without a separate ManagementRole
184
+ // call. Tighten this if the SDK is updated to accept pre-fetched instrument
185
+ // details and split create-session into a backend-only flow.
186
+ env.runtime.role.addToPrincipalPolicy(
187
+ new iam.PolicyStatement({
188
+ actions: [
189
+ 'bedrock-agentcore:GetPaymentInstrument',
190
+ 'bedrock-agentcore:ListPaymentInstruments',
191
+ 'bedrock-agentcore:GetPaymentInstrumentBalance',
192
+ 'bedrock-agentcore:GetPaymentSession',
193
+ 'bedrock-agentcore:ListPaymentSessions',
194
+ 'bedrock-agentcore:CreatePaymentSession',
195
+ 'bedrock-agentcore:ProcessPayment',
196
+ ],
197
+ resources: [manager.paymentManagerArn, `${manager.paymentManagerArn}/*`],
198
+ })
199
+ );
200
+
201
+ if (payment.autoPayment !== undefined) {
202
+ env.runtime.addEnvironmentVariable(`${prefix}_AUTO_PAYMENT`, String(payment.autoPayment));
203
+ }
204
+ if (payment.paymentToolAllowlist) {
205
+ env.runtime.addEnvironmentVariable(`${prefix}_TOOL_ALLOWLIST`, payment.paymentToolAllowlist.join(','));
206
+ }
207
+ if (payment.networkPreferences) {
208
+ env.runtime.addEnvironmentVariable(`${prefix}_NETWORK_PREFERENCES`, payment.networkPreferences.join(','));
209
+ }
210
+ if (payment.authorizerType === 'CUSTOM_JWT') {
211
+ env.runtime.addEnvironmentVariable(`${prefix}_AUTH_MODE`, 'bearer');
212
+ }
213
+ }
214
+
215
+ // Create connectors for this manager
216
+ for (const connector of payment.connectors) {
217
+ const connId = toCdkId(connector.name);
218
+ const schemaConnector =
219
+ connector.provisionMode === 'QUICK_CREATE'
220
+ ? connector
221
+ : {
222
+ name: connector.name,
223
+ provider: connector.provider,
224
+ ...(connector.provisionMode && { provisionMode: connector.provisionMode }),
225
+ credentialName: connector.credentialName,
226
+ };
227
+ const compatibilityProps = {
228
+ projectName: spec.name,
229
+ paymentManager: manager,
230
+ connector: schemaConnector,
231
+ // Remove these legacy manual fields after the new L3 release is pinned.
232
+ connectorName: connector.name,
233
+ connectorType: connector.provider,
234
+ ...(connector.provisionMode !== 'QUICK_CREATE' && {
235
+ credentialProviderArn: connector.credentialProviderArn,
236
+ }),
237
+ };
238
+ const conn = new AgentCorePaymentConnector(
239
+ this,
240
+ `Payment${mgrId}${connId}`,
241
+ compatibilityProps as unknown as ConstructorParameters<typeof AgentCorePaymentConnector>[2]
242
+ );
243
+
244
+ // Wire first connector's ID as env var (eligible agents only)
245
+ if (connector === payment.connectors[0]) {
246
+ for (const env of this.application.environments.values()) {
247
+ if (!isPaymentEligibleAgent(env.agent)) continue;
248
+ env.runtime.addEnvironmentVariable(`${prefix}_CONNECTOR_ID`, conn.paymentConnectorId);
249
+ }
250
+ }
251
+
252
+ new CfnOutput(this, `Payment${mgrId}${connId}ConnectorId`, {
253
+ value: conn.paymentConnectorId,
254
+ });
255
+ if (connector.provisionMode === 'QUICK_CREATE') {
256
+ const quickCreateConnector = conn as AgentCorePaymentConnector & {
257
+ paymentConnectorStatus: string;
258
+ authorizationUrl: string;
259
+ };
260
+ new CfnOutput(this, `Payment${mgrId}${connId}ConnectorStatus`, {
261
+ value: quickCreateConnector.paymentConnectorStatus,
262
+ });
263
+ new CfnOutput(this, `Payment${mgrId}${connId}AuthorizationUrl`, {
264
+ value: quickCreateConnector.authorizationUrl,
265
+ });
266
+ }
267
+ }
268
+
269
+ // CFN Outputs for post-deploy state parsing
270
+ new CfnOutput(this, `Payment${mgrId}ManagerArn`, {
271
+ value: manager.paymentManagerArn,
272
+ });
273
+ new CfnOutput(this, `Payment${mgrId}ManagerId`, {
274
+ value: manager.paymentManagerId,
275
+ });
276
+ new CfnOutput(this, `Payment${mgrId}ProcessPaymentRoleArn`, {
277
+ value: manager.processPaymentRoleArn,
278
+ });
279
+ new CfnOutput(this, `Payment${mgrId}ResourceRetrievalRoleArn`, {
280
+ value: manager.resourceRetrievalRoleArn,
281
+ });
282
+ }
283
+ }
284
+
77
285
  // Stack-level output
78
286
  new CfnOutput(this, 'StackNameOutput', {
79
287
  description: 'Name of the CloudFormation Stack',
@@ -14,17 +14,17 @@
14
14
  "format:check": "prettier --check ."
15
15
  },
16
16
  "devDependencies": {
17
- "@types/jest": "^29.5.14",
18
- "@types/node": "^24.10.1",
19
- "jest": "^29.7.0",
20
- "ts-jest": "^29.2.5",
21
- "aws-cdk": "2.1100.1",
22
- "prettier": "^3.4.2",
17
+ "@types/jest": "~29.5.14",
18
+ "@types/node": "~24.13.3",
19
+ "jest": "~29.7.0",
20
+ "ts-jest": "~29.4.11",
21
+ "aws-cdk": "~2.1126.0",
22
+ "prettier": "~3.9.5",
23
23
  "typescript": "~5.9.3"
24
24
  },
25
25
  "dependencies": {
26
- "@aws/agentcore-cdk": "^0.1.0-alpha.19",
27
- "aws-cdk-lib": "^2.248.0",
28
- "constructs": "^10.0.0"
26
+ "@aws/agentcore-cdk": "0.1.0-alpha.53",
27
+ "aws-cdk-lib": "~2.261.0",
28
+ "constructs": "~10.7.0"
29
29
  }
30
30
  }
@@ -14,10 +14,14 @@ test('AgentCoreStack synthesizes with empty spec', () => {
14
14
  credentials: [],
15
15
  evaluators: [],
16
16
  onlineEvalConfigs: [],
17
+ configBundles: [],
17
18
  policyEngines: [],
19
+ payments: [],
18
20
  agentCoreGateways: [],
19
21
  mcpRuntimeTools: [],
20
22
  unassignedTargets: [],
23
+ datasets: [],
24
+ knowledgeBases: [],
21
25
  },
22
26
  });
23
27
  const template = Template.fromStack(stack);
@@ -1,4 +1,10 @@
1
- FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
1
+ FROM public.ecr.aws/docker/library/python:3.12-slim-trixie
2
+
3
+ {{#if gitSkills}}
4
+ RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*
5
+
6
+ {{/if}}
7
+ RUN pip install --no-cache-dir uv
2
8
 
3
9
  ARG UV_DEFAULT_INDEX
4
10
  ARG UV_INDEX
@@ -0,0 +1,25 @@
1
+ FROM public.ecr.aws/docker/library/node:22-slim
2
+
3
+ WORKDIR /app
4
+
5
+ ENV NODE_ENV=production \
6
+ DOCKER_CONTAINER=1
7
+
8
+ RUN userdel -r node 2>/dev/null || true
9
+ RUN useradd -m -u 1000 bedrock_agentcore
10
+
11
+ COPY package.json package-lock.json* ./
12
+ RUN npm ci --omit=dev || npm install --omit=dev
13
+
14
+ COPY --chown=bedrock_agentcore:bedrock_agentcore . .
15
+
16
+ USER bedrock_agentcore
17
+
18
+ # AgentCore Runtime service contract ports
19
+ # https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-service-contract.html
20
+ # 8080: HTTP Mode
21
+ # 8000: MCP Mode
22
+ # 9000: A2A Mode
23
+ EXPOSE 8080 8000 9000
24
+
25
+ CMD ["npx", "tsx", "main.ts"]
@@ -0,0 +1,24 @@
1
+ # Node
2
+ node_modules/
3
+ dist/
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+
8
+ # IDE
9
+ .vscode/
10
+ .idea/
11
+
12
+ # Testing
13
+ coverage/
14
+
15
+ # Secrets and environment files
16
+ .env
17
+ .env.*
18
+
19
+ # Version control
20
+ .git/
21
+
22
+ # AgentCore build artifacts
23
+ .agentcore/artifacts/
24
+ *.zip
@@ -0,0 +1,3 @@
1
+ {"scenario_id": "refund-policy", "turns": [{"input": "What is your refund policy?", "expectedResponse": "We offer full refunds within 30 days of purchase. After 30 days, we can provide store credit."}, {"input": "What if I lost my receipt?", "expectedResponse": "No problem! We can look up your purchase using your email address or payment method."}], "assertions": ["Agent should clearly state the 30-day refund window", "Agent should offer alternatives for lost receipts"], "expected_trajectory": ["lookup_policy", "check_eligibility"]}
2
+ {"scenario_id": "order-tracking", "turns": [{"input": "Where is my order #12345?", "expectedResponse": "Let me look up order #12345 for you. I can see it shipped on Monday and is expected to arrive by Thursday."}], "assertions": ["Agent should reference the specific order number", "Agent should provide estimated delivery date"], "expected_trajectory": ["lookup_order", "get_shipping_status"]}
3
+ {"scenario_id": "account-locked", "turns": [{"input": "I can't log into my account", "expectedResponse": "I'm sorry you're having trouble logging in. Let me help you regain access. Can you provide the email address associated with your account?"}, {"input": "It's john@example.com", "expectedResponse": "I've sent a password reset link to john@example.com. Please check your inbox and spam folder. The link expires in 24 hours."}], "assertions": ["Agent should ask for identifying information", "Agent should explain the reset process clearly"], "expected_trajectory": ["verify_identity", "send_reset_link"]}
@@ -0,0 +1,3 @@
1
+ {"scenario_id": "frustrated-refund-customer", "input": "I want a refund for my cancelled flight BK-98765", "actor_profile": {"traits": {"personality": "impatient and frustrated", "communication_style": "direct and demanding"}, "context": "Has been waiting 3 days for a refund with no response. Previously had a bad experience with customer service.", "goal": "Get a full cash refund for cancelled flight BK-98765, not a voucher or credit"}, "max_turns": 10, "assertions": ["Agent should acknowledge the frustration", "Agent should not offer only vouchers when cash refund is requested", "Agent should provide a timeline for the refund"]}
2
+ {"scenario_id": "confused-new-user", "input": "How do I set up my new account?", "actor_profile": {"traits": {"personality": "polite but confused", "communication_style": "asks many follow-up questions", "technical_level": "beginner"}, "context": "First time using the service. Not familiar with technical terminology. English is a second language.", "goal": "Successfully create and configure a new account with basic settings"}, "max_turns": 15, "assertions": ["Agent should use simple non-technical language", "Agent should break instructions into small steps", "Agent should confirm understanding at each step"]}
3
+ {"scenario_id": "edge-case-multi-issue", "input": "I need to change my flight AND get a refund for the hotel that was bundled with it", "actor_profile": {"traits": {"personality": "methodical and detail-oriented", "communication_style": "provides lots of context upfront"}, "context": "Has a bundled flight+hotel booking. Flight was changed by the airline, making the hotel dates wrong. Wants partial refund for hotel and rebooking for flight.", "goal": "Get the flight rebooked to new dates AND get a refund for the hotel nights that no longer align"}, "max_turns": 12, "assertions": ["Agent should handle both issues without losing track", "Agent should clarify which parts are refundable", "Agent should not close the conversation until both issues are resolved"]}
@@ -0,0 +1,15 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Effect": "Allow",
6
+ "Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
7
+ "Resource": "arn:*:logs:*:*:log-group:/aws/lambda/*"
8
+ },
9
+ {
10
+ "Effect": "Allow",
11
+ "Action": ["bedrock:InvokeModel"],
12
+ "Resource": "*"
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,37 @@
1
+ {{#if ModelProviderBedrock}}
2
+ import os
3
+
4
+ # litellm's Bedrock provider reads AWS_REGION_NAME; Lambda only sets AWS_REGION/AWS_DEFAULT_REGION.
5
+ os.environ.setdefault("AWS_REGION_NAME", os.environ.get("AWS_REGION", "us-west-2"))
6
+
7
+ from autoevals import {{ EvaluatorClass }}, init
8
+ from autoevals.litellm import LiteLLMClient
9
+
10
+ from bedrock_agentcore.evaluation.custom_code_based_evaluators import (
11
+ EvaluatorInput,
12
+ EvaluatorOutput,
13
+ custom_code_based_evaluator,
14
+ )
15
+ from bedrock_agentcore.evaluation.custom_code_based_evaluators.third_party.autoevals import AutoEvalsAdapter
16
+
17
+ client = LiteLLMClient()
18
+ init(client=client, default_model="{{ Model }}")
19
+
20
+ adapter = AutoEvalsAdapter(metric={{ EvaluatorClass }}(client=client, model="{{ Model }}"){{#if EvaluatorParams}}, {{{ EvaluatorParams }}}{{/if}})
21
+ {{else}}
22
+ from autoevals import {{ EvaluatorClass }}
23
+
24
+ from bedrock_agentcore.evaluation.custom_code_based_evaluators import (
25
+ EvaluatorInput,
26
+ EvaluatorOutput,
27
+ custom_code_based_evaluator,
28
+ )
29
+ from bedrock_agentcore.evaluation.custom_code_based_evaluators.third_party.autoevals import AutoEvalsAdapter
30
+
31
+ adapter = AutoEvalsAdapter(metric={{ EvaluatorClass }}({{#if Model}}model="{{ Model }}"{{/if}}){{#if EvaluatorParams}}, {{{ EvaluatorParams }}}{{/if}})
32
+ {{/if}}
33
+
34
+
35
+ @custom_code_based_evaluator()
36
+ def handler(evaluator_input: EvaluatorInput, context) -> EvaluatorOutput:
37
+ return adapter(evaluator_input, context)
@@ -0,0 +1,22 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "{{ Name }}"
7
+ version = "0.1.0"
8
+ description = "AgentCore Code-Based Evaluator (Autoevals)"
9
+ requires-python = ">=3.10"
10
+ dependencies = [
11
+ "bedrock-agentcore[autoevals]",
12
+ "autoevals>=0.0.80,<1.0.0",
13
+ {{#if ModelProviderBedrock}}
14
+ # autoevals grades via LiteLLMClient -> Bedrock (Converse); litellm replaces the openai judge
15
+ "litellm>=1.60,<1.85",
16
+ {{else}}
17
+ "openai>=1.0.0",
18
+ {{/if}}
19
+ ]
20
+
21
+ [tool.hatch.build.targets.wheel]
22
+ packages = ["."]
@@ -0,0 +1,15 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Effect": "Allow",
6
+ "Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
7
+ "Resource": "arn:*:logs:*:*:log-group:/aws/lambda/*"
8
+ },
9
+ {
10
+ "Effect": "Allow",
11
+ "Action": ["bedrock:InvokeModel"],
12
+ "Resource": "*"
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,29 @@
1
+ import os
2
+
3
+ os.environ.setdefault("DEEPEVAL_RESULTS_FOLDER", "/tmp/.deepeval")
4
+ os.environ.setdefault("DEEPEVAL_TELEMETRY_OPT_OUT", "YES")
5
+ os.chdir("/tmp")
6
+
7
+ {{#if ModelProviderBedrock}}
8
+ from deepeval.models import AmazonBedrockModel
9
+ {{/if}}
10
+ from deepeval.metrics import {{ EvaluatorClass }}
11
+
12
+ from bedrock_agentcore.evaluation.custom_code_based_evaluators import (
13
+ EvaluatorInput,
14
+ EvaluatorOutput,
15
+ custom_code_based_evaluator,
16
+ )
17
+ from bedrock_agentcore.evaluation.custom_code_based_evaluators.third_party.deepeval import DeepEvalAdapter
18
+
19
+ {{#if ModelProviderBedrock}}
20
+ model = AmazonBedrockModel(model="{{ Model }}", region=os.environ.get("AWS_REGION", "us-west-2"))
21
+ adapter = DeepEvalAdapter(metric={{ EvaluatorClass }}(model=model{{#if EvaluatorParams}}, {{{ EvaluatorParams }}}{{/if}}))
22
+ {{else}}
23
+ adapter = DeepEvalAdapter(metric={{ EvaluatorClass }}({{{ EvaluatorParams }}}))
24
+ {{/if}}
25
+
26
+
27
+ @custom_code_based_evaluator()
28
+ def handler(evaluator_input: EvaluatorInput, context) -> EvaluatorOutput:
29
+ return adapter(evaluator_input, context)
@@ -0,0 +1,19 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "{{ Name }}"
7
+ version = "0.1.0"
8
+ description = "AgentCore Code-Based Evaluator (DeepEval)"
9
+ requires-python = ">=3.10"
10
+ dependencies = [
11
+ "bedrock-agentcore[deepeval]",
12
+ "deepeval>=2.0.0,<3.0.0",
13
+ {{#if ModelProviderBedrock}}
14
+ "aiobotocore>=2.13.0",
15
+ {{/if}}
16
+ ]
17
+
18
+ [tool.hatch.build.targets.wheel]
19
+ packages = ["."]
@@ -9,7 +9,7 @@ description = "MCP Server demonstrating HTTP tool patterns"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  dependencies = [
12
- "mcp[cli] >= 1.2.0",
12
+ "mcp[cli] ~= 1.24.0",
13
13
  "httpx >= 0.27.0",
14
14
  "opentelemetry-distro",
15
15
  "opentelemetry-exporter-otlp",