diff --git a/config.py b/config.py
index 27d985b7..af13ee4f 100644
--- a/config.py
+++ b/config.py
@@ -76,7 +76,7 @@ TMPL_APIDOC = "apidoc.tmpl"
TMPL_MODULE = "module.tmpl"
UPPER_WORDS = {
- "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk", "aiagent", "agentcore"),
+ "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk"),
"azure": ("ad", "b2c", "ai", "api", "cdn", "ddos", "dns", "fxt", "hana", "hd", "id", "sap", "sql", "vm", "vpn", "vpc"),
"gcp": ("gcp", "ai", "api", "cdn", "dns", "gke", "gpu", "iap", "ids", "ml", "nat", "os", "sdk", "sql", "ssd", "tpu", "vpn"),
"firebase": ("ab", "fcm", "ml"),
@@ -102,7 +102,8 @@ TITLE_WORDS = {
"alibabacloud": "AlibabaCloud"
},
"aws": {
- "cloudfront": "CloudFront"
+ "agentcore": "AgentCore",
+ "cloudfront": "CloudFront",
},
"digitalocean": {
"digitalocean": "DigitalOcean"
@@ -241,6 +242,7 @@ ALIASES = {
"ServerMigrationService": "SMS",
},
"ml": {
+ "AiAgent": "AIAgent",
"DeepLearningContainers": "DLC",
"PolicyEngineAgenticGuardrails": "PEAG",
"Observability": "OBS",
diff --git a/diagrams/aws/ml.py b/diagrams/aws/ml.py
index e04e4d3d..d8c0838f 100644
--- a/diagrams/aws/ml.py
+++ b/diagrams/aws/ml.py
@@ -8,7 +8,7 @@ class _ML(_AWS):
_icon_dir = "resources/aws/ml"
-class AGENTCORE(_ML):
+class AgentCore(_ML):
_icon = "agentcore.png"
@@ -190,6 +190,7 @@ class Translate(_ML):
# Aliases
+AIAgent = AiAgent
DLC = DeepLearningContainers
PEAG = PolicyEngineAgenticGuardrails
OBS = Observability
diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md
index 53efdc82..a0ed5f68 100644
--- a/docs/nodes/aws.md
+++ b/docs/nodes/aws.md
@@ -1094,11 +1094,11 @@ Node classes list of the aws provider.
## aws.ml
-
-**diagrams.aws.ml.AGENTCORE**
+
+**diagrams.aws.ml.AgentCore**
-**diagrams.aws.ml.AiAgent**
+**diagrams.aws.ml.AiAgent**, **AIAgent** (alias)
**diagrams.aws.ml.AmazonNova**
diff --git a/resources/aws/ml/amazon-codewhisperer.png b/resources/aws/ml/amazon-codewhisperer.png
deleted file mode 100644
index 31ba06a9..00000000
Binary files a/resources/aws/ml/amazon-codewhisperer.png and /dev/null differ
diff --git a/resources/aws/ml/aws-app-studio.png b/resources/aws/ml/aws-app-studio.png
index c8ffedd8..c6340b3b 100644
Binary files a/resources/aws/ml/aws-app-studio.png and b/resources/aws/ml/aws-app-studio.png differ
diff --git a/resources/aws/ml/aws-neuron.png b/resources/aws/ml/aws-neuron.png
index 4984baf4..3f6b96c5 100644
Binary files a/resources/aws/ml/aws-neuron.png and b/resources/aws/ml/aws-neuron.png differ
diff --git a/test_agentcore_icons.py b/test_agentcore_icons.py
deleted file mode 100644
index 2cf9e6b1..00000000
--- a/test_agentcore_icons.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-Test script for AWS Agentcore Bedrock icons
-Validates that all 11 new Agentcore icons can be imported and used correctly.
-"""
-
-from diagrams import Diagram
-from diagrams.aws.ml import (
- Agentcore,
- AiAgent,
- BrowserTool,
- CodeInterpreter,
- Evaluations,
- Gateway,
- Identity,
- Memory,
- Observability,
- PolicyEngineAgenticGuardrails,
- Runtime,
-)
-
-
-def test_agentcore_icons():
- """Test all Agentcore icons in a sample diagram"""
-
- with Diagram("AWS Agentcore Bedrock Icons Test", show=False, filename="agentcore_test"):
- # Core Agentcore components
- agentcore = Agentcore("Agentcore")
- ai_agent = AiAgent("AI Agent")
- runtime = Runtime("Runtime")
- gateway = Gateway("Gateway")
-
- # Identity and security
- identity = Identity("Identity")
- policy_engine = PolicyEngineAgenticGuardrails("Policy Engine")
-
- # Tools and capabilities
- code_interpreter = CodeInterpreter("Code Interpreter")
- browser_tool = BrowserTool("Browser Tool")
- memory = Memory("Memory")
-
- # Monitoring and evaluation
- observability = Observability("Observability")
- evaluations = Evaluations("Evaluations")
-
- # Create a flow showing the relationships
- agentcore >> ai_agent >> runtime
- ai_agent >> [code_interpreter, browser_tool, memory]
- gateway >> identity >> policy_engine
- [runtime, code_interpreter, browser_tool] >> observability
- observability >> evaluations
-
- print("✅ Test diagram created successfully!")
- print("📁 Generated file: agentcore_test.png")
- print("🔍 Please verify the icons render correctly in the diagram")
-
-
-if __name__ == "__main__":
- test_agentcore_icons()
diff --git a/test_nova_icons.py b/test_nova_icons.py
deleted file mode 100644
index f3c62235..00000000
--- a/test_nova_icons.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-Test script for new AWS AI/ML service icons
-Tests Amazon Nova, AWS App Studio, Amazon CodeWhisperer, and AWS Neuron
-"""
-
-from diagrams import Diagram
-from diagrams.aws.ml import AmazonNova, AWSAppStudio, AWSNeuron
-
-
-def test_nova_icons():
- """Test the new Nova and AI service icons"""
-
- with Diagram("New AWS AI/ML Services", show=False, filename="nova_test"):
- # Create instances of the new services
- nova = AmazonNova("Amazon Nova")
- app_studio = AWSAppStudio("AWS App Studio")
- neuron = AWSNeuron("AWS Neuron")
-
- # Create a simple flow
- nova >> app_studio >> neuron
-
- print("✅ Test diagram created successfully!")
- print("📁 Generated file: nova_test.png")
- print("🔍 Please verify the icons render correctly in the diagram")
-
-
-if __name__ == "__main__":
- test_nova_icons()
diff --git a/tests/test_aws_ml_icons.py b/tests/test_aws_ml_icons.py
new file mode 100644
index 00000000..9c266c44
--- /dev/null
+++ b/tests/test_aws_ml_icons.py
@@ -0,0 +1,93 @@
+import os
+import unittest
+
+from diagrams import Diagram, setcluster, setdiagram
+from diagrams.aws.ml import (
+ AgentCore,
+ AiAgent,
+ AmazonNova,
+ AWSAppStudio,
+ AWSNeuron,
+ BrowserTool,
+ CodeInterpreter,
+ Evaluations,
+ Gateway,
+ Identity,
+ Memory,
+ Observability,
+ PolicyEngineAgenticGuardrails,
+ Runtime,
+ AIAgent,
+ DLC,
+ OBS,
+ PEAG,
+)
+
+
+class AgentcoreIconsTest(unittest.TestCase):
+ def setUp(self):
+ self.name = "test_agentcore_icons"
+
+ def tearDown(self):
+ setdiagram(None)
+ setcluster(None)
+ try:
+ os.remove(self.name + ".png")
+ except FileNotFoundError:
+ pass
+
+ def test_agentcore_diagram(self):
+ with Diagram(name=self.name, show=False, filename=self.name):
+ agentcore = AgentCore("Agentcore")
+ ai_agent = AiAgent("AI Agent")
+ runtime = Runtime("Runtime")
+ gateway = Gateway("Gateway")
+ identity = Identity("Identity")
+ policy_engine = PolicyEngineAgenticGuardrails("Policy Engine")
+ code_interpreter = CodeInterpreter("Code Interpreter")
+ browser_tool = BrowserTool("Browser Tool")
+ memory = Memory("Memory")
+ observability = Observability("Observability")
+ evaluations = Evaluations("Evaluations")
+
+ agentcore >> ai_agent >> runtime
+ ai_agent >> [code_interpreter, browser_tool, memory]
+ gateway >> identity >> policy_engine
+ [runtime, code_interpreter, browser_tool] >> observability
+ observability >> evaluations
+
+ self.assertTrue(os.path.exists(self.name + ".png"))
+
+
+class NovaIconsTest(unittest.TestCase):
+ def setUp(self):
+ self.name = "test_nova_icons"
+
+ def tearDown(self):
+ setdiagram(None)
+ setcluster(None)
+ try:
+ os.remove(self.name + ".png")
+ except FileNotFoundError:
+ pass
+
+ def test_nova_diagram(self):
+ with Diagram(name=self.name, show=False, filename=self.name):
+ nova = AmazonNova("Amazon Nova")
+ app_studio = AWSAppStudio("AWS App Studio")
+ neuron = AWSNeuron("AWS Neuron")
+
+ nova >> app_studio >> neuron
+
+ self.assertTrue(os.path.exists(self.name + ".png"))
+
+
+class AliasesTest(unittest.TestCase):
+ def test_aliases_exist(self):
+ self.assertIs(AIAgent, AiAgent)
+ self.assertIs(PEAG, PolicyEngineAgenticGuardrails)
+ self.assertIs(OBS, Observability)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/website/static/img/resources/aws/ml/agentcore.png b/website/static/img/resources/aws/ml/agentcore.png
new file mode 100644
index 00000000..debeadd2
Binary files /dev/null and b/website/static/img/resources/aws/ml/agentcore.png differ
diff --git a/website/static/img/resources/aws/ml/ai-agent.png b/website/static/img/resources/aws/ml/ai-agent.png
new file mode 100644
index 00000000..f13894a9
Binary files /dev/null and b/website/static/img/resources/aws/ml/ai-agent.png differ
diff --git a/website/static/img/resources/aws/ml/amazon-nova.png b/website/static/img/resources/aws/ml/amazon-nova.png
new file mode 100644
index 00000000..bfbfc28d
Binary files /dev/null and b/website/static/img/resources/aws/ml/amazon-nova.png differ
diff --git a/website/static/img/resources/aws/ml/aws-app-studio.png b/website/static/img/resources/aws/ml/aws-app-studio.png
new file mode 100644
index 00000000..c6340b3b
Binary files /dev/null and b/website/static/img/resources/aws/ml/aws-app-studio.png differ
diff --git a/website/static/img/resources/aws/ml/aws-neuron.png b/website/static/img/resources/aws/ml/aws-neuron.png
new file mode 100644
index 00000000..3f6b96c5
Binary files /dev/null and b/website/static/img/resources/aws/ml/aws-neuron.png differ
diff --git a/website/static/img/resources/aws/ml/browser-tool.png b/website/static/img/resources/aws/ml/browser-tool.png
new file mode 100644
index 00000000..bc41ba93
Binary files /dev/null and b/website/static/img/resources/aws/ml/browser-tool.png differ
diff --git a/website/static/img/resources/aws/ml/code-interpreter.png b/website/static/img/resources/aws/ml/code-interpreter.png
new file mode 100644
index 00000000..b51d0033
Binary files /dev/null and b/website/static/img/resources/aws/ml/code-interpreter.png differ
diff --git a/website/static/img/resources/aws/ml/evaluations.png b/website/static/img/resources/aws/ml/evaluations.png
new file mode 100644
index 00000000..15dcb02e
Binary files /dev/null and b/website/static/img/resources/aws/ml/evaluations.png differ
diff --git a/website/static/img/resources/aws/ml/gateway.png b/website/static/img/resources/aws/ml/gateway.png
new file mode 100644
index 00000000..099b2d14
Binary files /dev/null and b/website/static/img/resources/aws/ml/gateway.png differ
diff --git a/website/static/img/resources/aws/ml/identity.png b/website/static/img/resources/aws/ml/identity.png
new file mode 100644
index 00000000..d6eeccd7
Binary files /dev/null and b/website/static/img/resources/aws/ml/identity.png differ
diff --git a/website/static/img/resources/aws/ml/memory.png b/website/static/img/resources/aws/ml/memory.png
new file mode 100644
index 00000000..e864cfb1
Binary files /dev/null and b/website/static/img/resources/aws/ml/memory.png differ
diff --git a/website/static/img/resources/aws/ml/observability.png b/website/static/img/resources/aws/ml/observability.png
new file mode 100644
index 00000000..8588ea29
Binary files /dev/null and b/website/static/img/resources/aws/ml/observability.png differ
diff --git a/website/static/img/resources/aws/ml/policy-engine-agentic-guardrails.png b/website/static/img/resources/aws/ml/policy-engine-agentic-guardrails.png
new file mode 100644
index 00000000..4239e826
Binary files /dev/null and b/website/static/img/resources/aws/ml/policy-engine-agentic-guardrails.png differ
diff --git a/website/static/img/resources/aws/ml/runtime.png b/website/static/img/resources/aws/ml/runtime.png
new file mode 100644
index 00000000..e7daf27e
Binary files /dev/null and b/website/static/img/resources/aws/ml/runtime.png differ