@aws/agentcore 0.3.0-preview.1.0 → 0.3.0-preview.2.0

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 (76) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +173 -44
  3. package/dist/assets/agents/AGENTS.md +13 -2
  4. package/dist/assets/container/python/Dockerfile +24 -0
  5. package/dist/assets/container/python/dockerignore.template +20 -0
  6. package/dist/assets/python/autogen/base/gitignore.template +1 -0
  7. package/dist/assets/python/autogen/base/mcp_client/__init__.py +1 -0
  8. package/dist/assets/python/autogen/base/model/__init__.py +1 -0
  9. package/dist/assets/python/autogen/base/pyproject.toml +0 -1
  10. package/dist/assets/python/crewai/base/gitignore.template +1 -0
  11. package/dist/assets/python/crewai/base/model/__init__.py +1 -0
  12. package/dist/assets/python/crewai/base/model/load.py +2 -2
  13. package/dist/assets/python/crewai/base/pyproject.toml +0 -1
  14. package/dist/assets/python/googleadk/base/gitignore.template +1 -0
  15. package/dist/assets/python/googleadk/base/main.py +10 -3
  16. package/dist/assets/python/googleadk/base/mcp_client/__init__.py +1 -0
  17. package/dist/assets/python/googleadk/base/model/__init__.py +1 -0
  18. package/dist/assets/python/googleadk/base/pyproject.toml +0 -1
  19. package/dist/assets/python/langchain_langgraph/base/gitignore.template +1 -0
  20. package/dist/assets/python/langchain_langgraph/base/main.py +8 -3
  21. package/dist/assets/python/langchain_langgraph/base/mcp_client/__init__.py +1 -0
  22. package/dist/assets/python/langchain_langgraph/base/model/__init__.py +1 -0
  23. package/dist/assets/python/langchain_langgraph/base/model/load.py +2 -2
  24. package/dist/assets/python/langchain_langgraph/base/pyproject.toml +0 -1
  25. package/dist/assets/python/openaiagents/base/gitignore.template +1 -0
  26. package/dist/assets/python/openaiagents/base/main.py +13 -6
  27. package/dist/assets/python/openaiagents/base/mcp_client/__init__.py +1 -0
  28. package/dist/assets/python/openaiagents/base/model/__init__.py +1 -0
  29. package/dist/assets/python/openaiagents/base/pyproject.toml +0 -1
  30. package/dist/assets/python/strands/base/gitignore.template +1 -1
  31. package/dist/assets/python/strands/base/main.py +16 -9
  32. package/dist/assets/python/strands/base/mcp_client/__init__.py +1 -0
  33. package/dist/assets/python/strands/base/model/__init__.py +1 -0
  34. package/dist/assets/python/strands/base/model/load.py +2 -2
  35. package/dist/assets/python/strands/base/pyproject.toml +5 -6
  36. package/dist/assets/python/strands/capabilities/memory/__init__.py +0 -0
  37. package/dist/cli/index.mjs +306 -443
  38. package/dist/lib/constants.d.ts +12 -0
  39. package/dist/lib/constants.d.ts.map +1 -1
  40. package/dist/lib/constants.js +22 -1
  41. package/dist/lib/constants.js.map +1 -1
  42. package/dist/lib/index.d.ts +1 -1
  43. package/dist/lib/index.d.ts.map +1 -1
  44. package/dist/lib/index.js +7 -1
  45. package/dist/lib/index.js.map +1 -1
  46. package/dist/lib/packaging/container.d.ts +10 -0
  47. package/dist/lib/packaging/container.d.ts.map +1 -0
  48. package/dist/lib/packaging/container.js +78 -0
  49. package/dist/lib/packaging/container.js.map +1 -0
  50. package/dist/lib/packaging/index.d.ts +5 -1
  51. package/dist/lib/packaging/index.d.ts.map +1 -1
  52. package/dist/lib/packaging/index.js +10 -2
  53. package/dist/lib/packaging/index.js.map +1 -1
  54. package/dist/lib/packaging/node.d.ts +6 -1
  55. package/dist/lib/packaging/node.d.ts.map +1 -1
  56. package/dist/lib/packaging/node.js +2 -1
  57. package/dist/lib/packaging/node.js.map +1 -1
  58. package/dist/lib/packaging/python.d.ts +7 -1
  59. package/dist/lib/packaging/python.d.ts.map +1 -1
  60. package/dist/lib/packaging/python.js +6 -4
  61. package/dist/lib/packaging/python.js.map +1 -1
  62. package/dist/schema/constants.d.ts +5 -0
  63. package/dist/schema/constants.d.ts.map +1 -1
  64. package/dist/schema/constants.js +11 -1
  65. package/dist/schema/constants.js.map +1 -1
  66. package/dist/schema/schemas/agent-env.d.ts +6 -0
  67. package/dist/schema/schemas/agent-env.d.ts.map +1 -1
  68. package/dist/schema/schemas/agent-env.js +8 -2
  69. package/dist/schema/schemas/agent-env.js.map +1 -1
  70. package/dist/schema/schemas/agentcore-project.d.ts +6 -0
  71. package/dist/schema/schemas/agentcore-project.d.ts.map +1 -1
  72. package/dist/schema/schemas/mcp.d.ts.map +1 -1
  73. package/dist/schema/schemas/mcp.js +3 -1
  74. package/dist/schema/schemas/mcp.js.map +1 -1
  75. package/package.json +34 -1
  76. package/scripts/bump-version.ts +31 -7
@@ -24,6 +24,7 @@ wheels/
24
24
  *.egg
25
25
 
26
26
  # Virtual environments
27
+ .venv/
27
28
  venv/
28
29
  ENV/
29
30
  env/
@@ -87,7 +87,7 @@ def load_model() -> LLM:
87
87
  # CrewAI requires OPENAI_API_KEY env var (ignores api_key parameter)
88
88
  os.environ["OPENAI_API_KEY"] = api_key
89
89
  return LLM(
90
- model="openai/gpt-4o",
90
+ model="openai/gpt-4.1",
91
91
  api_key=api_key
92
92
  )
93
93
  {{/if}}
@@ -127,7 +127,7 @@ def load_model() -> LLM:
127
127
  # CrewAI requires GEMINI_API_KEY env var (ignores api_key parameter)
128
128
  os.environ["GEMINI_API_KEY"] = api_key
129
129
  return LLM(
130
- model="gemini/gemini-2.0-flash",
130
+ model="gemini/gemini-2.5-flash",
131
131
  api_key=api_key
132
132
  )
133
133
  {{/if}}
@@ -13,7 +13,6 @@ dependencies = [
13
13
  "opentelemetry-exporter-otlp",
14
14
  "bedrock-agentcore >= 1.0.3",
15
15
  "botocore[crt] >= 1.35.0",
16
- "python-dotenv >= 1.0.1",
17
16
  {{#if (eq modelProvider "Bedrock")}}
18
17
  "crewai[tools,bedrock] >= 1.3.0",
19
18
  {{/if}}
@@ -24,6 +24,7 @@ wheels/
24
24
  *.egg
25
25
 
26
26
  # Virtual environments
27
+ .venv/
27
28
  venv/
28
29
  ENV/
29
30
  env/
@@ -22,12 +22,18 @@ def add_numbers(a: int, b: int) -> int:
22
22
  return a + b
23
23
 
24
24
 
25
- # Set environment variables for model authentication
26
- load_model()
27
-
28
25
  # Get MCP Toolset
29
26
  mcp_toolset = [get_streamable_http_mcp_client()]
30
27
 
28
+ _credentials_loaded = False
29
+
30
+ def ensure_credentials_loaded():
31
+ global _credentials_loaded
32
+ if not _credentials_loaded:
33
+ load_model()
34
+ _credentials_loaded = True
35
+
36
+
31
37
  # Agent Definition
32
38
  agent = Agent(
33
39
  model=MODEL_ID,
@@ -40,6 +46,7 @@ agent = Agent(
40
46
 
41
47
  # Session and Runner
42
48
  async def setup_session_and_runner(user_id, session_id):
49
+ ensure_credentials_loaded()
43
50
  session_service = InMemorySessionService()
44
51
  session = await session_service.create_session(
45
52
  app_name=APP_NAME, user_id=user_id, session_id=session_id
@@ -14,7 +14,6 @@ dependencies = [
14
14
  "google-adk >= 1.17.0",
15
15
  "bedrock-agentcore >= 1.0.3",
16
16
  "botocore[crt] >= 1.35.0",
17
- "python-dotenv >= 1.0.1",
18
17
  ]
19
18
 
20
19
  [tool.hatch.build.targets.wheel]
@@ -24,6 +24,7 @@ wheels/
24
24
  *.egg
25
25
 
26
26
  # Virtual environments
27
+ .venv/
27
28
  venv/
28
29
  ENV/
29
30
  env/
@@ -9,8 +9,13 @@ from mcp_client.client import get_streamable_http_mcp_client
9
9
  app = BedrockAgentCoreApp()
10
10
  log = app.logger
11
11
 
12
- # Instantiate model
13
- llm = load_model()
12
+ _llm = None
13
+
14
+ def get_or_create_model():
15
+ global _llm
16
+ if _llm is None:
17
+ _llm = load_model()
18
+ return _llm
14
19
 
15
20
 
16
21
  # Define a simple function tool
@@ -35,7 +40,7 @@ async def invoke(payload, context):
35
40
  mcp_tools = await mcp_client.get_tools()
36
41
 
37
42
  # Define the agent using create_react_agent
38
- graph = create_react_agent(llm, tools=mcp_tools + tools)
43
+ graph = create_react_agent(get_or_create_model(), tools=mcp_tools + tools)
39
44
 
40
45
  # Process the user prompt
41
46
  prompt = payload.get("prompt", "What can you help me with?")
@@ -80,7 +80,7 @@ def _get_api_key() -> str:
80
80
  def load_model() -> ChatOpenAI:
81
81
  """Get authenticated OpenAI model client."""
82
82
  return ChatOpenAI(
83
- model="gpt-4o",
83
+ model="gpt-4.1",
84
84
  api_key=_get_api_key()
85
85
  )
86
86
  {{/if}}
@@ -117,7 +117,7 @@ def _get_api_key() -> str:
117
117
  def load_model() -> ChatGoogleGenerativeAI:
118
118
  """Get authenticated Gemini model client."""
119
119
  return ChatGoogleGenerativeAI(
120
- model="gemini-2.0-flash",
120
+ model="gemini-2.5-flash",
121
121
  api_key=_get_api_key()
122
122
  )
123
123
  {{/if}}
@@ -18,7 +18,6 @@ dependencies = [
18
18
  "tiktoken == 0.11.0",
19
19
  "bedrock-agentcore >= 1.0.3",
20
20
  "botocore[crt] >= 1.35.0",
21
- "python-dotenv >= 1.0.1",
22
21
  {{#if (eq modelProvider "Bedrock")}}
23
22
  "langchain-aws >= 1.0.0",
24
23
  {{/if}}
@@ -24,6 +24,7 @@ wheels/
24
24
  *.egg
25
25
 
26
26
  # Virtual environments
27
+ .venv/
27
28
  venv/
28
29
  ENV/
29
30
  env/
@@ -7,12 +7,17 @@ from mcp_client.client import get_streamable_http_mcp_client
7
7
  app = BedrockAgentCoreApp()
8
8
  log = app.logger
9
9
 
10
- # Set environment variables for model authentication
11
- load_model()
12
-
13
10
  # Get MCP Server
14
11
  mcp_server = get_streamable_http_mcp_client()
15
12
 
13
+ _credentials_loaded = False
14
+
15
+ def ensure_credentials_loaded():
16
+ global _credentials_loaded
17
+ if not _credentials_loaded:
18
+ load_model()
19
+ _credentials_loaded = True
20
+
16
21
 
17
22
  # Define a simple function tool
18
23
  @function_tool
@@ -23,13 +28,15 @@ def add_numbers(a: int, b: int) -> int:
23
28
 
24
29
  # Define the agent execution
25
30
  async def main(query):
31
+ ensure_credentials_loaded()
26
32
  try:
27
33
  async with mcp_server as server:
28
34
  active_servers = [server] if server else []
29
- # Currently defaults to GPT-4.1
30
- # https://openai.github.io/openai-agents-python/models/
31
35
  agent = Agent(
32
- name="{{ name }}", mcp_servers=active_servers, tools=[add_numbers]
36
+ name="{{ name }}",
37
+ model="gpt-4.1",
38
+ mcp_servers=active_servers,
39
+ tools=[add_numbers]
33
40
  )
34
41
  result = await Runner.run(agent, query)
35
42
  return result
@@ -13,7 +13,6 @@ dependencies = [
13
13
  "openai-agents >= 0.4.2",
14
14
  "bedrock-agentcore >= 1.0.3",
15
15
  "botocore[crt] >= 1.35.0",
16
- "python-dotenv >= 1.0.1",
17
16
  ]
18
17
 
19
18
  [tool.hatch.build.targets.wheel]
@@ -1,6 +1,5 @@
1
1
  # Environment variables
2
2
  .env
3
- .env
4
3
 
5
4
  # Python
6
5
  __pycache__/
@@ -25,6 +24,7 @@ wheels/
25
24
  *.egg
26
25
 
27
26
  # Virtual environments
27
+ .venv/
28
28
  venv/
29
29
  ENV/
30
30
  env/
@@ -42,14 +42,19 @@ def agent_factory():
42
42
  return get_or_create_agent
43
43
  get_or_create_agent = agent_factory()
44
44
  {{else}}
45
- # Create agent
46
- agent = Agent(
47
- model=load_model(),
48
- system_prompt="""
49
- You are a helpful assistant. Use tools when appropriate.
50
- """,
51
- tools=tools+[mcp_client]
52
- )
45
+ _agent = None
46
+
47
+ def get_or_create_agent():
48
+ global _agent
49
+ if _agent is None:
50
+ _agent = Agent(
51
+ model=load_model(),
52
+ system_prompt="""
53
+ You are a helpful assistant. Use tools when appropriate.
54
+ """,
55
+ tools=tools+[mcp_client]
56
+ )
57
+ return _agent
53
58
  {{/if}}
54
59
 
55
60
 
@@ -61,8 +66,10 @@ async def invoke(payload, context):
61
66
  session_id = getattr(context, 'session_id', 'default-session')
62
67
  user_id = getattr(context, 'user_id', 'default-user')
63
68
  agent = get_or_create_agent(session_id, user_id)
64
-
69
+ {{else}}
70
+ agent = get_or_create_agent()
65
71
  {{/if}}
72
+
66
73
  # Execute and format response
67
74
  stream = agent.stream_async(payload.get("prompt"))
68
75
 
@@ -80,7 +80,7 @@ def load_model() -> OpenAIModel:
80
80
  """Get authenticated OpenAI model client."""
81
81
  return OpenAIModel(
82
82
  client_args={"api_key": _get_api_key()},
83
- model_id="gpt-4o",
83
+ model_id="gpt-4.1",
84
84
  )
85
85
  {{/if}}
86
86
  {{#if (eq modelProvider "Gemini")}}
@@ -118,6 +118,6 @@ def load_model() -> GeminiModel:
118
118
  """Get authenticated Gemini model client."""
119
119
  return GeminiModel(
120
120
  client_args={"api_key": _get_api_key()},
121
- model_id="gemini-2.0-flash",
121
+ model_id="gemini-2.5-flash",
122
122
  )
123
123
  {{/if}}
@@ -9,14 +9,13 @@ description = "AgentCore Runtime Application using Strands SDK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  dependencies = [
12
- "anthropic >= 0.30.0",
13
- "aws-opentelemetry-distro",
12
+ {{#if (eq modelProvider "Anthropic")}}"anthropic >= 0.30.0",
13
+ {{/if}}"aws-opentelemetry-distro",
14
14
  "bedrock-agentcore >= 1.0.3",
15
15
  "botocore[crt] >= 1.35.0",
16
- "google-genai >= 1.0.0",
17
- "openai >= 1.0.0",
18
- "python-dotenv >= 1.0.1",
19
- "strands-agents >= 1.13.0",
16
+ {{#if (eq modelProvider "Gemini")}}"google-genai >= 1.0.0",
17
+ {{/if}}{{#if (eq modelProvider "OpenAI")}}"openai >= 1.0.0",
18
+ {{/if}}"strands-agents >= 1.13.0",
20
19
  ]
21
20
 
22
21
  [tool.hatch.build.targets.wheel]