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 -AGENTCORE -**diagrams.aws.ml.AGENTCORE** +AgentCore +**diagrams.aws.ml.AgentCore** AiAgent -**diagrams.aws.ml.AiAgent** +**diagrams.aws.ml.AiAgent**, **AIAgent** (alias) AmazonNova **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