This is an automated email from the ASF dual-hosted git repository.

xtsong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git

commit f182b87de3d133999c32d7029b22c14fa678fb88
Author: youjin <[email protected]>
AuthorDate: Fri Jan 23 17:27:56 2026 +0800

    [api][java] Introduce Hierarchical ResourceClassName for Cross-Language 
Resource Creation
---
 .../apache/flink/agents/api/resource/Constant.java |  85 ----------
 .../flink/agents/api/resource/ResourceName.java    | 178 +++++++++++++++++++++
 .../test/ChatModelIntegrationAgent.java            |  27 ++--
 .../test/EmbeddingIntegrationAgent.java            |   9 +-
 .../agents/integration/test/ReActAgentTest.java    |   8 +-
 .../test/VectorStoreIntegrationAgent.java          |  13 +-
 .../resource/test/ChatModelCrossLanguageAgent.java |  26 ++-
 .../resource/test/EmbeddingCrossLanguageAgent.java |  17 +-
 .../resource/test/MCPCrossLanguageAgent.java       |   5 +-
 .../test/VectorStoreCrossLanguageAgent.java        |  30 ++--
 .../flink/agents/examples/ReActAgentExample.java   |   4 +-
 .../examples/agents/CustomTypesAndResources.java   |   5 +-
 .../examples/agents/ProductSuggestionAgent.java    |   4 +-
 .../examples/agents/ReviewAnalysisAgent.java       |   4 +-
 .../agents/plan/AgentPlanDeclareMCPServerTest.java |   4 +-
 15 files changed, 243 insertions(+), 176 deletions(-)

diff --git 
a/api/src/main/java/org/apache/flink/agents/api/resource/Constant.java 
b/api/src/main/java/org/apache/flink/agents/api/resource/Constant.java
deleted file mode 100644
index 34e62a32..00000000
--- a/api/src/main/java/org/apache/flink/agents/api/resource/Constant.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.flink.agents.api.resource;
-
-/**
- * Constant strings for pointing a resource implementation in {@link 
ResourceDescriptor}.
- *
- * <p>TODO: Could use service provider interface to simplify the definition of 
constant in the
- * future.
- */
-public class Constant {
-    // Built-in ChatModel
-    // python wrapper
-    public static String PYTHON_CHAT_MODEL_CONNECTION =
-            
"org.apache.flink.agents.api.chat.model.python.PythonChatModelConnection";
-    public static String PYTHON_CHAT_MODEL_SETUP =
-            
"org.apache.flink.agents.api.chat.model.python.PythonChatModelSetup";
-
-    // ollama
-    public static String OLLAMA_CHAT_MODEL_CONNECTION =
-            
"org.apache.flink.agents.integrations.chatmodels.ollama.OllamaChatModelConnection";
-    public static String OLLAMA_CHAT_MODEL_SETUP =
-            
"org.apache.flink.agents.integrations.chatmodels.ollama.OllamaChatModelSetup";
-
-    // anthropic
-    public static String ANTHROPIC_CHAT_MODEL_CONNECTION =
-            
"org.apache.flink.agents.integrations.chatmodels.anthropic.AnthropicChatModelConnection";
-    public static String ANTHROPIC_CHAT_MODEL_SETUP =
-            
"org.apache.flink.agents.integrations.chatmodels.anthropic.AnthropicChatModelSetup";
-
-    // Azure
-    public static String AZURE_CHAT_MODEL_CONNECTION =
-            
"org.apache.flink.agents.integrations.chatmodels.anthropic.AzureAIChatModelConnection";
-    public static String AZURE_CHAT_MODEL_SETUP =
-            
"org.apache.flink.agents.integrations.chatmodels.anthropic.AzureAIChatModelSetup";
-
-    // OpenAI
-    public static String OPENAI_CHAT_MODEL_CONNECTION =
-            
"org.apache.flink.agents.integrations.chatmodels.openai.OpenAIChatModelConnection";
-    public static String OPENAI_CHAT_MODEL_SETUP =
-            
"org.apache.flink.agents.integrations.chatmodels.openai.OpenAIChatModelSetup";
-
-    // Built-in EmbeddingModel
-    // python wrapper
-    public static String PYTHON_EMBEDDING_MODEL_CONNECTION =
-            
"org.apache.flink.agents.api.embedding.model.python.PythonEmbeddingModelConnection";
-    public static String PYTHON_EMBEDDING_MODEL_SETUP =
-            
"org.apache.flink.agents.api.embedding.model.python.PythonEmbeddingModelSetup";
-
-    // ollama
-    public static String OLLAMA_EMBEDDING_MODEL_CONNECTION =
-            
"org.apache.flink.agents.integrations.embeddingmodels.ollama.OllamaEmbeddingModelConnection";
-    public static String OLLAMA_EMBEDDING_MODEL_SETUP =
-            
"org.apache.flink.agents.integrations.embeddingmodels.ollama.OllamaEmbeddingModelSetup";
-
-    // Built-in VectorStore
-    // python wrapper
-    public static String PYTHON_VECTOR_STORE =
-            
"org.apache.flink.agents.api.vectorstores.python.PythonVectorStore";
-    public static String PYTHON_COLLECTION_MANAGEABLE_VECTOR_STORE =
-            
"org.apache.flink.agents.api.vectorstores.python.PythonCollectionManageableVectorStore";
-
-    // elasticsearch
-    public static String ELASTICSEARCH_VECTOR_STORE =
-            
"org.apache.flink.agents.integrations.vectorstores.elasticsearch.ElasticsearchVectorStore";
-
-    // MCP
-    public static String MCP_SERVER = "DECIDE_IN_RUNTIME_MCPServer";
-}
diff --git 
a/api/src/main/java/org/apache/flink/agents/api/resource/ResourceName.java 
b/api/src/main/java/org/apache/flink/agents/api/resource/ResourceName.java
new file mode 100644
index 00000000..f542570c
--- /dev/null
+++ b/api/src/main/java/org/apache/flink/agents/api/resource/ResourceName.java
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.agents.api.resource;
+
+/**
+ * Hierarchical resource class names for pointing a resource implementation in 
{@link
+ * ResourceDescriptor}.
+ *
+ * <p>Structure:
+ *
+ * <ul>
+ *   <li>Java implementation: ResourceType.PROVIDER_RESOURCEKIND
+ *   <li>Python implementation: ResourceType.Python.PROVIDER_RESOURCEKIND
+ * </ul>
+ *
+ * <p>Example usage:
+ *
+ * <pre>{@code
+ * // Java implementation
+ * ResourceName.ChatModel.OLLAMA_CONNECTION
+ * ResourceName.ChatModel.OPENAI_SETUP
+ *
+ * // Python implementation
+ * ResourceName.ChatModel.Python.OLLAMA_CONNECTION
+ * }</pre>
+ */
+public final class ResourceName {
+
+    private ResourceName() {}
+
+    // ==================== ChatModel ====================
+    public static final class ChatModel {
+
+        // Anthropic
+        public static final String ANTHROPIC_CONNECTION =
+                
"org.apache.flink.agents.integrations.chatmodels.anthropic.AnthropicChatModelConnection";
+        public static final String ANTHROPIC_SETUP =
+                
"org.apache.flink.agents.integrations.chatmodels.anthropic.AnthropicChatModelSetup";
+
+        // Azure
+        public static final String AZURE_CONNECTION =
+                
"org.apache.flink.agents.integrations.chatmodels.anthropic.AzureAIChatModelConnection";
+        public static final String AZURE_SETUP =
+                
"org.apache.flink.agents.integrations.chatmodels.anthropic.AzureAIChatModelSetup";
+
+        // Ollama
+        public static final String OLLAMA_CONNECTION =
+                
"org.apache.flink.agents.integrations.chatmodels.ollama.OllamaChatModelConnection";
+        public static final String OLLAMA_SETUP =
+                
"org.apache.flink.agents.integrations.chatmodels.ollama.OllamaChatModelSetup";
+
+        // OpenAI
+        public static final String OPENAI_CONNECTION =
+                
"org.apache.flink.agents.integrations.chatmodels.openai.OpenAIChatModelConnection";
+        public static final String OPENAI_SETUP =
+                
"org.apache.flink.agents.integrations.chatmodels.openai.OpenAIChatModelSetup";
+
+        // Python Wrapper
+        public static final String PYTHON_WRAPPER_CONNECTION =
+                
"org.apache.flink.agents.api.chat.model.python.PythonChatModelConnection";
+        public static final String PYTHON_WRAPPER_SETUP =
+                
"org.apache.flink.agents.api.chat.model.python.PythonChatModelSetup";
+
+        /** Python implementations of ChatModel. */
+        public static final class Python {
+
+            // Anthropic
+            public static final String ANTHROPIC_CONNECTION =
+                    
"flink_agents.integrations.chat_models.anthropic.anthropic_chat_model.AnthropicChatModelConnection";
+            public static final String ANTHROPIC_SETUP =
+                    
"flink_agents.integrations.chat_models.anthropic.anthropic_chat_model.AnthropicChatModelSetup";
+
+            // Ollama
+            public static final String OLLAMA_CONNECTION =
+                    
"flink_agents.integrations.chat_models.ollama_chat_model.OllamaChatModelConnection";
+            public static final String OLLAMA_SETUP =
+                    
"flink_agents.integrations.chat_models.ollama_chat_model.OllamaChatModelSetup";
+
+            // OpenAI
+            public static final String OPENAI_CONNECTION =
+                    
"flink_agents.integrations.chat_models.openai.openai_chat_model.OpenAIChatModelConnection";
+            public static final String OPENAI_SETUP =
+                    
"flink_agents.integrations.chat_models.openai.openai_chat_model.OpenAIChatModelSetup";
+
+            // Tongyi
+            public static final String TONGYI_CONNECTION =
+                    
"flink_agents.integrations.chat_models.tongyi_chat_model.TongyiChatModelConnection";
+            public static final String TONGYI_SETUP =
+                    
"flink_agents.integrations.chat_models.tongyi_chat_model.TongyiChatModelSetup";
+
+            private Python() {}
+        }
+
+        private ChatModel() {}
+    }
+
+    // ==================== EmbeddingModel ====================
+    public static final class EmbeddingModel {
+
+        // Ollama
+        public static final String OLLAMA_CONNECTION =
+                
"org.apache.flink.agents.integrations.embeddingmodels.ollama.OllamaEmbeddingModelConnection";
+        public static final String OLLAMA_SETUP =
+                
"org.apache.flink.agents.integrations.embeddingmodels.ollama.OllamaEmbeddingModelSetup";
+
+        // Python Wrapper
+        public static final String PYTHON_WRAPPER_CONNECTION =
+                
"org.apache.flink.agents.api.embedding.model.python.PythonEmbeddingModelConnection";
+        public static final String PYTHON_WRAPPER_SETUP =
+                
"org.apache.flink.agents.api.embedding.model.python.PythonEmbeddingModelSetup";
+
+        /** Python implementations of EmbeddingModel. */
+        public static final class Python {
+
+            // Ollama
+            public static final String OLLAMA_CONNECTION =
+                    
"flink_agents.integrations.embedding_models.local.ollama_embedding_model.OllamaEmbeddingModelConnection";
+            public static final String OLLAMA_SETUP =
+                    
"flink_agents.integrations.embedding_models.local.ollama_embedding_model.OllamaEmbeddingModelSetup";
+
+            // OpenAI
+            public static final String OPENAI_CONNECTION =
+                    
"flink_agents.integrations.embedding_models.openai_embedding_model.OpenAIEmbeddingModelConnection";
+            public static final String OPENAI_SETUP =
+                    
"flink_agents.integrations.embedding_models.openai_embedding_model.OpenAIEmbeddingModelSetup";
+
+            private Python() {}
+        }
+
+        private EmbeddingModel() {}
+    }
+
+    // ==================== VectorStore ====================
+    public static final class VectorStore {
+
+        // Elasticsearch
+        public static final String ELASTICSEARCH_VECTOR_STORE =
+                
"org.apache.flink.agents.integrations.vectorstores.elasticsearch.ElasticsearchVectorStore";
+
+        // Python Wrapper
+        public static final String PYTHON_WRAPPER_VECTOR_STORE =
+                
"org.apache.flink.agents.api.vectorstores.python.PythonVectorStore";
+
+        public static final String 
PYTHON_WRAPPER_COLLECTION_MANAGEABLE_VECTOR_STORE =
+                
"org.apache.flink.agents.api.vectorstores.python.PythonCollectionManageableVectorStore";
+
+        /** Python implementations of VectorStore. */
+        public static final class Python {
+
+            // Chroma
+            public static final String CHROMA_VECTOR_STORE =
+                    
"flink_agents.integrations.vector_stores.chroma.chroma_vector_store.ChromaVectorStore";
+
+            private Python() {}
+        }
+
+        private VectorStore() {}
+    }
+
+    // ==================== MCP ====================
+    public static final String MCP_SERVER = "DECIDE_IN_RUNTIME_MCPServer";
+}
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java
index 2de3f437..476afba3 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java
@@ -34,20 +34,12 @@ import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.event.ChatRequestEvent;
 import org.apache.flink.agents.api.event.ChatResponseEvent;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 
 import java.util.Collections;
 import java.util.List;
 
-import static 
org.apache.flink.agents.api.resource.Constant.ANTHROPIC_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.ANTHROPIC_CHAT_MODEL_SETUP;
-import static 
org.apache.flink.agents.api.resource.Constant.AZURE_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.AZURE_CHAT_MODEL_SETUP;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_SETUP;
-import static 
org.apache.flink.agents.api.resource.Constant.OPENAI_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.OPENAI_CHAT_MODEL_SETUP;
-
 /**
  * Agent example that integrates an external Ollama chat model into Flink 
Agents.
  *
@@ -76,25 +68,26 @@ public class ChatModelIntegrationAgent extends Agent {
     public static ResourceDescriptor chatModelConnection() {
         String provider = System.getProperty("MODEL_PROVIDER", "OLLAMA");
         if (provider.equals("OLLAMA")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_CONNECTION)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_CONNECTION)
                     .addInitialArgument("endpoint", "http://localhost:11434";)
                     .addInitialArgument("requestTimeout", 240)
                     .build();
         } else if (provider.equals("AZURE")) {
             String endpoint = System.getenv().get("AZURE_ENDPOINT");
             String apiKey = System.getenv().get("AZURE_API_KEY");
-            return 
ResourceDescriptor.Builder.newBuilder(AZURE_CHAT_MODEL_CONNECTION)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.AZURE_CONNECTION)
                     .addInitialArgument("endpoint", endpoint)
                     .addInitialArgument("apiKey", apiKey)
                     .build();
         } else if (provider.equals("OPENAI")) {
             String apiKey = System.getenv().get("OPENAI_API_KEY");
-            return 
ResourceDescriptor.Builder.newBuilder(OPENAI_CHAT_MODEL_CONNECTION)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OPENAI_CONNECTION)
                     .addInitialArgument("api_key", apiKey)
                     .build();
         } else if (provider.equals("ANTHROPIC")) {
             String apiKey = System.getenv().get("ANTHROPIC_API_KEY");
-            return 
ResourceDescriptor.Builder.newBuilder(ANTHROPIC_CHAT_MODEL_CONNECTION)
+            return ResourceDescriptor.Builder.newBuilder(
+                            ResourceName.ChatModel.ANTHROPIC_CONNECTION)
                     .addInitialArgument("api_key", apiKey)
                     .addInitialArgument("timeout", 240)
                     .build();
@@ -108,7 +101,7 @@ public class ChatModelIntegrationAgent extends Agent {
         String provider = System.getProperty("MODEL_PROVIDER", "OLLAMA");
 
         if (provider.equals("OLLAMA")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_SETUP)
                     .addInitialArgument("connection", "chatModelConnection")
                     .addInitialArgument("model", OLLAMA_MODEL)
                     .addInitialArgument(
@@ -116,7 +109,7 @@ public class ChatModelIntegrationAgent extends Agent {
                             List.of("calculateBMI", "convertTemperature", 
"createRandomNumber"))
                     .build();
         } else if (provider.equals("AZURE")) {
-            return 
ResourceDescriptor.Builder.newBuilder(AZURE_CHAT_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.AZURE_SETUP)
                     .addInitialArgument("connection", "chatModelConnection")
                     .addInitialArgument("model", "gpt-4o")
                     .addInitialArgument(
@@ -124,7 +117,7 @@ public class ChatModelIntegrationAgent extends Agent {
                             List.of("calculateBMI", "convertTemperature", 
"createRandomNumber"))
                     .build();
         } else if (provider.equals("ANTHROPIC")) {
-            return 
ResourceDescriptor.Builder.newBuilder(ANTHROPIC_CHAT_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.ANTHROPIC_SETUP)
                     .addInitialArgument("connection", "chatModelConnection")
                     .addInitialArgument("model", "claude-sonnet-4-20250514")
                     .addInitialArgument(
@@ -132,7 +125,7 @@ public class ChatModelIntegrationAgent extends Agent {
                             List.of("calculateBMI", "convertTemperature", 
"createRandomNumber"))
                     .build();
         } else if (provider.equals("OPENAI")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OPENAI_CHAT_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OPENAI_SETUP)
                     .addInitialArgument("connection", "chatModelConnection")
                     .addInitialArgument("model", "gpt-4o-mini")
                     .addInitialArgument(
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java
index 7fb83d7f..0c567cd3 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java
@@ -30,13 +30,11 @@ import org.apache.flink.agents.api.annotation.ToolParam;
 import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.embedding.model.BaseEmbeddingModelSetup;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_EMBEDDING_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_EMBEDDING_MODEL_SETUP;
-
 /**
  * Integration test agent for verifying embedding functionality with Ollama 
models.
  *
@@ -54,7 +52,8 @@ public class EmbeddingIntegrationAgent extends Agent {
     public static ResourceDescriptor embeddingConnection() {
         String provider = System.getProperty("MODEL_PROVIDER", "OLLAMA");
         if (provider.equals("OLLAMA")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_EMBEDDING_MODEL_CONNECTION)
+            return ResourceDescriptor.Builder.newBuilder(
+                            ResourceName.EmbeddingModel.OLLAMA_CONNECTION)
                     .addInitialArgument("host", "http://localhost:11434";)
                     .addInitialArgument("timeout", 60)
                     .build();
@@ -67,7 +66,7 @@ public class EmbeddingIntegrationAgent extends Agent {
     public static ResourceDescriptor embeddingModel() {
         String provider = System.getProperty("MODEL_PROVIDER", "OLLAMA");
         if (provider.equals("OLLAMA")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_EMBEDDING_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.EmbeddingModel.OLLAMA_SETUP)
                     .addInitialArgument("connection", "embeddingConnection")
                     .addInitialArgument("model", OLLAMA_MODEL)
                     .build();
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java
 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java
index 8c61a7fe..1baa40d1 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java
@@ -26,6 +26,7 @@ import org.apache.flink.agents.api.chat.messages.ChatMessage;
 import org.apache.flink.agents.api.chat.messages.MessageRole;
 import org.apache.flink.agents.api.prompt.Prompt;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 import org.apache.flink.agents.api.tools.Tool;
 import org.apache.flink.api.common.functions.MapFunction;
@@ -49,8 +50,6 @@ import java.util.List;
 
 import static 
org.apache.flink.agents.api.agents.AgentExecutionOptions.ERROR_HANDLING_STRATEGY;
 import static 
org.apache.flink.agents.api.agents.AgentExecutionOptions.MAX_RETRIES;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_SETUP;
 import static 
org.apache.flink.agents.integration.test.OllamaPreparationUtils.pullModel;
 
 public class ReActAgentTest {
@@ -94,7 +93,8 @@ public class ReActAgentTest {
                 .addResource(
                         "ollama",
                         ResourceType.CHAT_MODEL_CONNECTION,
-                        
ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_CONNECTION)
+                        ResourceDescriptor.Builder.newBuilder(
+                                        
ResourceName.ChatModel.OLLAMA_CONNECTION)
                                 .addInitialArgument("endpoint", 
"http://localhost:11434";)
                                 .addInitialArgument("requestTimeout", 240)
                                 .build())
@@ -155,7 +155,7 @@ public class ReActAgentTest {
     // create ReAct agent.
     private static Agent getAgent() {
         ResourceDescriptor chatModelDescriptor =
-                ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_SETUP)
+                
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_SETUP)
                         .addInitialArgument("connection", "ollama")
                         .addInitialArgument("model", OLLAMA_MODEL)
                         .addInitialArgument("tools", List.of("add", 
"multiply"))
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/VectorStoreIntegrationAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/VectorStoreIntegrationAgent.java
index 85a7205b..2820b59c 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/VectorStoreIntegrationAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/VectorStoreIntegrationAgent.java
@@ -29,16 +29,13 @@ import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.event.ContextRetrievalRequestEvent;
 import org.apache.flink.agents.api.event.ContextRetrievalResponseEvent;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.vectorstores.Document;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static 
org.apache.flink.agents.api.resource.Constant.ELASTICSEARCH_VECTOR_STORE;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_EMBEDDING_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_EMBEDDING_MODEL_SETUP;
-
 public class VectorStoreIntegrationAgent extends Agent {
     public static final String OLLAMA_MODEL = "nomic-embed-text";
 
@@ -46,7 +43,8 @@ public class VectorStoreIntegrationAgent extends Agent {
     public static ResourceDescriptor embeddingConnection() {
         final String provider = System.getProperty("MODEL_PROVIDER", "OLLAMA");
         if (provider.equals("OLLAMA")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_EMBEDDING_MODEL_CONNECTION)
+            return ResourceDescriptor.Builder.newBuilder(
+                            ResourceName.EmbeddingModel.OLLAMA_CONNECTION)
                     .addInitialArgument("host", "http://localhost:11434";)
                     .addInitialArgument("timeout", 60)
                     .build();
@@ -59,7 +57,7 @@ public class VectorStoreIntegrationAgent extends Agent {
     public static ResourceDescriptor embeddingModel() {
         String provider = System.getProperty("MODEL_PROVIDER", "OLLAMA");
         if (provider.equals("OLLAMA")) {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_EMBEDDING_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.EmbeddingModel.OLLAMA_SETUP)
                     .addInitialArgument("connection", "embeddingConnection")
                     .addInitialArgument("model", OLLAMA_MODEL)
                     .build();
@@ -73,7 +71,8 @@ public class VectorStoreIntegrationAgent extends Agent {
         final String provider = System.getProperty("VECTOR_STORE_PROVIDER", 
"ELASTICSEARCH");
         if (provider.equals("ELASTICSEARCH")) {
             final ResourceDescriptor.Builder builder =
-                    
ResourceDescriptor.Builder.newBuilder(ELASTICSEARCH_VECTOR_STORE)
+                    ResourceDescriptor.Builder.newBuilder(
+                                    
ResourceName.VectorStore.ELASTICSEARCH_VECTOR_STORE)
                             .addInitialArgument("embedding_model", 
"embeddingModel")
                             .addInitialArgument("host", 
System.getenv("ES_HOST"))
                             .addInitialArgument("index", 
System.getenv("ES_INDEX"))
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/ChatModelCrossLanguageAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/ChatModelCrossLanguageAgent.java
index c5cd05e3..0f9354a2 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/ChatModelCrossLanguageAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/ChatModelCrossLanguageAgent.java
@@ -34,15 +34,12 @@ import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.event.ChatRequestEvent;
 import org.apache.flink.agents.api.event.ChatResponseEvent;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 
 import java.util.Collections;
 import java.util.List;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_CHAT_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_CHAT_MODEL_SETUP;
-
 /**
  * Agent example that integrates an external Ollama chat model into Flink 
Agents.
  *
@@ -69,7 +66,7 @@ public class ChatModelCrossLanguageAgent extends Agent {
 
     @ChatModelConnection
     public static ResourceDescriptor javaChatModelConnection() {
-        return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_CONNECTION)
+        return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_CONNECTION)
                 .addInitialArgument("endpoint", "http://localhost:11434";)
                 .addInitialArgument("requestTimeout", 240)
                 .build();
@@ -77,19 +74,16 @@ public class ChatModelCrossLanguageAgent extends Agent {
 
     @ChatModelConnection
     public static ResourceDescriptor pythonChatModelConnection() {
-        return 
ResourceDescriptor.Builder.newBuilder(PYTHON_CHAT_MODEL_CONNECTION)
-                .addInitialArgument(
-                        "pythonClazz",
-                        
"flink_agents.integrations.chat_models.ollama_chat_model.OllamaChatModelConnection")
+        return ResourceDescriptor.Builder.newBuilder(
+                        ResourceName.ChatModel.PYTHON_WRAPPER_CONNECTION)
+                .addInitialArgument("pythonClazz", 
ResourceName.ChatModel.Python.OLLAMA_CONNECTION)
                 .build();
     }
 
     @ChatModelSetup
     public static ResourceDescriptor temperatureChatModel() {
-        return ResourceDescriptor.Builder.newBuilder(PYTHON_CHAT_MODEL_SETUP)
-                .addInitialArgument(
-                        "pythonClazz",
-                        
"flink_agents.integrations.chat_models.ollama_chat_model.OllamaChatModelSetup")
+        return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.PYTHON_WRAPPER_SETUP)
+                .addInitialArgument("pythonClazz", 
ResourceName.ChatModel.Python.OLLAMA_SETUP)
                 .addInitialArgument("connection", "javaChatModelConnection")
                 .addInitialArgument("model", OLLAMA_MODEL)
                 .addInitialArgument("tools", List.of("convertTemperature"))
@@ -99,10 +93,8 @@ public class ChatModelCrossLanguageAgent extends Agent {
 
     @ChatModelSetup
     public static ResourceDescriptor chatModel() {
-        return ResourceDescriptor.Builder.newBuilder(PYTHON_CHAT_MODEL_SETUP)
-                .addInitialArgument(
-                        "pythonClazz",
-                        
"flink_agents.integrations.chat_models.ollama_chat_model.OllamaChatModelSetup")
+        return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.PYTHON_WRAPPER_SETUP)
+                .addInitialArgument("pythonClazz", 
ResourceName.ChatModel.Python.OLLAMA_SETUP)
                 .addInitialArgument("connection", "pythonChatModelConnection")
                 .addInitialArgument("model", OLLAMA_MODEL)
                 .addInitialArgument("tools", List.of("calculateBMI", 
"createRandomNumber"))
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/EmbeddingCrossLanguageAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/EmbeddingCrossLanguageAgent.java
index cc533ff1..7b6f9d9d 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/EmbeddingCrossLanguageAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/EmbeddingCrossLanguageAgent.java
@@ -28,14 +28,12 @@ import 
org.apache.flink.agents.api.annotation.EmbeddingModelSetup;
 import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.embedding.model.BaseEmbeddingModelSetup;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_EMBEDDING_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_EMBEDDING_MODEL_SETUP;
-
 /**
  * Integration test agent for verifying embedding functionality with Python 
embedding model.
  *
@@ -51,19 +49,18 @@ public class EmbeddingCrossLanguageAgent extends Agent {
 
     @EmbeddingModelConnection
     public static ResourceDescriptor embeddingConnection() {
-        return 
ResourceDescriptor.Builder.newBuilder(PYTHON_EMBEDDING_MODEL_CONNECTION)
+        return ResourceDescriptor.Builder.newBuilder(
+                        ResourceName.EmbeddingModel.PYTHON_WRAPPER_CONNECTION)
                 .addInitialArgument(
-                        "pythonClazz",
-                        
"flink_agents.integrations.embedding_models.local.ollama_embedding_model.OllamaEmbeddingModelConnection")
+                        "pythonClazz", 
ResourceName.EmbeddingModel.Python.OLLAMA_CONNECTION)
                 .build();
     }
 
     @EmbeddingModelSetup
     public static ResourceDescriptor embeddingModel() {
-        return 
ResourceDescriptor.Builder.newBuilder(PYTHON_EMBEDDING_MODEL_SETUP)
-                .addInitialArgument(
-                        "pythonClazz",
-                        
"flink_agents.integrations.embedding_models.local.ollama_embedding_model.OllamaEmbeddingModelSetup")
+        return ResourceDescriptor.Builder.newBuilder(
+                        ResourceName.EmbeddingModel.PYTHON_WRAPPER_SETUP)
+                .addInitialArgument("pythonClazz", 
ResourceName.EmbeddingModel.Python.OLLAMA_SETUP)
                 .addInitialArgument("connection", "embeddingConnection")
                 .addInitialArgument("model", OLLAMA_MODEL)
                 .build();
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/MCPCrossLanguageAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/MCPCrossLanguageAgent.java
index 82123fa8..fb17b8db 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/MCPCrossLanguageAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/MCPCrossLanguageAgent.java
@@ -27,6 +27,7 @@ import org.apache.flink.agents.api.chat.messages.MessageRole;
 import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.prompt.Prompt;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 import org.apache.flink.agents.api.tools.Tool;
 import org.apache.flink.agents.api.tools.ToolParameters;
@@ -37,12 +38,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.flink.agents.api.resource.Constant.MCP_SERVER;
-
 public class MCPCrossLanguageAgent extends Agent {
     @MCPServer(lang = "python")
     public static ResourceDescriptor pythonMCPServer() {
-        return ResourceDescriptor.Builder.newBuilder(MCP_SERVER)
+        return ResourceDescriptor.Builder.newBuilder(ResourceName.MCP_SERVER)
                 .addInitialArgument("endpoint", "http://127.0.0.1:8000/mcp";)
                 .build();
     }
diff --git 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/VectorStoreCrossLanguageAgent.java
 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/VectorStoreCrossLanguageAgent.java
index bdcca06e..c6fd87a6 100644
--- 
a/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/VectorStoreCrossLanguageAgent.java
+++ 
b/e2e-test/flink-agents-end-to-end-tests-resource-cross-language/src/test/java/org/apache/flink/agents/resource/test/VectorStoreCrossLanguageAgent.java
@@ -30,6 +30,7 @@ import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.event.ContextRetrievalRequestEvent;
 import org.apache.flink.agents.api.event.ContextRetrievalResponseEvent;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 import 
org.apache.flink.agents.api.vectorstores.CollectionManageableVectorStore;
 import org.apache.flink.agents.api.vectorstores.Document;
@@ -41,12 +42,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_EMBEDDING_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_EMBEDDING_MODEL_SETUP;
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_COLLECTION_MANAGEABLE_VECTOR_STORE;
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_EMBEDDING_MODEL_CONNECTION;
-import static 
org.apache.flink.agents.api.resource.Constant.PYTHON_EMBEDDING_MODEL_SETUP;
-
 /**
  * Integration test agent for verifying vector store functionality with Python 
vector store
  * implementation.
@@ -65,13 +60,14 @@ public class VectorStoreCrossLanguageAgent extends Agent {
     @EmbeddingModelConnection
     public static ResourceDescriptor embeddingConnection() {
         if (System.getProperty("EMBEDDING_TYPE", "PYTHON").equals("PYTHON")) {
-            return 
ResourceDescriptor.Builder.newBuilder(PYTHON_EMBEDDING_MODEL_CONNECTION)
+            return ResourceDescriptor.Builder.newBuilder(
+                            
ResourceName.EmbeddingModel.PYTHON_WRAPPER_CONNECTION)
                     .addInitialArgument(
-                            "pythonClazz",
-                            
"flink_agents.integrations.embedding_models.local.ollama_embedding_model.OllamaEmbeddingModelConnection")
+                            "pythonClazz", 
ResourceName.EmbeddingModel.Python.OLLAMA_CONNECTION)
                     .build();
         } else {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_EMBEDDING_MODEL_CONNECTION)
+            return ResourceDescriptor.Builder.newBuilder(
+                            ResourceName.EmbeddingModel.OLLAMA_CONNECTION)
                     .addInitialArgument("host", "http://localhost:11434";)
                     .addInitialArgument("timeout", 60)
                     .build();
@@ -81,15 +77,15 @@ public class VectorStoreCrossLanguageAgent extends Agent {
     @EmbeddingModelSetup
     public static ResourceDescriptor embeddingModel() {
         if (System.getProperty("EMBEDDING_TYPE", "PYTHON").equals("PYTHON")) {
-            return 
ResourceDescriptor.Builder.newBuilder(PYTHON_EMBEDDING_MODEL_SETUP)
+            return ResourceDescriptor.Builder.newBuilder(
+                            ResourceName.EmbeddingModel.PYTHON_WRAPPER_SETUP)
                     .addInitialArgument(
-                            "pythonClazz",
-                            
"flink_agents.integrations.embedding_models.local.ollama_embedding_model.OllamaEmbeddingModelSetup")
+                            "pythonClazz", 
ResourceName.EmbeddingModel.Python.OLLAMA_SETUP)
                     .addInitialArgument("connection", "embeddingConnection")
                     .addInitialArgument("model", OLLAMA_MODEL)
                     .build();
         } else {
-            return 
ResourceDescriptor.Builder.newBuilder(OLLAMA_EMBEDDING_MODEL_SETUP)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.EmbeddingModel.OLLAMA_SETUP)
                     .addInitialArgument("connection", "embeddingConnection")
                     .addInitialArgument("model", OLLAMA_MODEL)
                     .build();
@@ -98,10 +94,10 @@ public class VectorStoreCrossLanguageAgent extends Agent {
 
     @VectorStore
     public static ResourceDescriptor vectorStore() {
-        return 
ResourceDescriptor.Builder.newBuilder(PYTHON_COLLECTION_MANAGEABLE_VECTOR_STORE)
+        return ResourceDescriptor.Builder.newBuilder(
+                        
ResourceName.VectorStore.PYTHON_WRAPPER_COLLECTION_MANAGEABLE_VECTOR_STORE)
                 .addInitialArgument(
-                        "pythonClazz",
-                        
"flink_agents.integrations.vector_stores.chroma.chroma_vector_store.ChromaVectorStore")
+                        "pythonClazz", 
ResourceName.VectorStore.Python.CHROMA_VECTOR_STORE)
                 .addInitialArgument("embedding_model", "embeddingModel")
                 .build();
     }
diff --git 
a/examples/src/main/java/org/apache/flink/agents/examples/ReActAgentExample.java
 
b/examples/src/main/java/org/apache/flink/agents/examples/ReActAgentExample.java
index e0460dfb..4a68f6a7 100644
--- 
a/examples/src/main/java/org/apache/flink/agents/examples/ReActAgentExample.java
+++ 
b/examples/src/main/java/org/apache/flink/agents/examples/ReActAgentExample.java
@@ -24,6 +24,7 @@ import org.apache.flink.agents.api.annotation.Prompt;
 import org.apache.flink.agents.api.annotation.Tool;
 import org.apache.flink.agents.api.annotation.ToolParam;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 import org.apache.flink.agents.examples.agents.CustomTypesAndResources;
 import org.apache.flink.api.common.eventtime.WatermarkStrategy;
@@ -38,7 +39,6 @@ import java.io.File;
 import java.time.Duration;
 import java.util.Collections;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_SETUP;
 import static 
org.apache.flink.agents.examples.WorkflowSingleAgentExample.copyResource;
 
 /**
@@ -144,7 +144,7 @@ public class ReActAgentExample {
     // Create ReAct agent.
     private static ReActAgent getReActAgent() {
         return new ReActAgent(
-                ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_SETUP)
+                
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_SETUP)
                         .addInitialArgument("connection", 
"ollamaChatModelConnection")
                         .addInitialArgument("model", "qwen3:8b")
                         .addInitialArgument(
diff --git 
a/examples/src/main/java/org/apache/flink/agents/examples/agents/CustomTypesAndResources.java
 
b/examples/src/main/java/org/apache/flink/agents/examples/agents/CustomTypesAndResources.java
index 0e1c96ce..2fb1da8c 100644
--- 
a/examples/src/main/java/org/apache/flink/agents/examples/agents/CustomTypesAndResources.java
+++ 
b/examples/src/main/java/org/apache/flink/agents/examples/agents/CustomTypesAndResources.java
@@ -25,12 +25,11 @@ import 
org.apache.flink.agents.api.chat.messages.ChatMessage;
 import org.apache.flink.agents.api.chat.messages.MessageRole;
 import org.apache.flink.agents.api.prompt.Prompt;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 
 import java.util.Arrays;
 import java.util.List;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_CONNECTION;
-
 /** Custom types and resources for the quickstart agents. */
 public class CustomTypesAndResources {
 
@@ -112,7 +111,7 @@ public class CustomTypesAndResources {
 
     // Ollama chat model connection descriptor
     public static final ResourceDescriptor OLLAMA_SERVER_DESCRIPTOR =
-            ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_CONNECTION)
+            
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_CONNECTION)
                     .addInitialArgument("requestTimeout", 120)
                     .addInitialArgument("endpoint", "http://localhost:11434";)
                     .build();
diff --git 
a/examples/src/main/java/org/apache/flink/agents/examples/agents/ProductSuggestionAgent.java
 
b/examples/src/main/java/org/apache/flink/agents/examples/agents/ProductSuggestionAgent.java
index 4daac9ad..8c82ff37 100644
--- 
a/examples/src/main/java/org/apache/flink/agents/examples/agents/ProductSuggestionAgent.java
+++ 
b/examples/src/main/java/org/apache/flink/agents/examples/agents/ProductSuggestionAgent.java
@@ -32,13 +32,13 @@ import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.event.ChatRequestEvent;
 import org.apache.flink.agents.api.event.ChatResponseEvent;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import 
org.apache.flink.agents.examples.agents.CustomTypesAndResources.ProductReviewSummary;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_SETUP;
 import static 
org.apache.flink.agents.examples.agents.CustomTypesAndResources.PRODUCT_SUGGESTION_PROMPT;
 
 /**
@@ -57,7 +57,7 @@ public class ProductSuggestionAgent extends Agent {
 
     @ChatModelSetup
     public static ResourceDescriptor generateSuggestionModel() {
-        return ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_SETUP)
+        return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_SETUP)
                 .addInitialArgument("connection", "ollamaChatModelConnection")
                 .addInitialArgument("model", "qwen3:8b")
                 .addInitialArgument("extract_reasoning", true)
diff --git 
a/examples/src/main/java/org/apache/flink/agents/examples/agents/ReviewAnalysisAgent.java
 
b/examples/src/main/java/org/apache/flink/agents/examples/agents/ReviewAnalysisAgent.java
index 275b27c7..c414b1c9 100644
--- 
a/examples/src/main/java/org/apache/flink/agents/examples/agents/ReviewAnalysisAgent.java
+++ 
b/examples/src/main/java/org/apache/flink/agents/examples/agents/ReviewAnalysisAgent.java
@@ -34,13 +34,13 @@ import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.event.ChatRequestEvent;
 import org.apache.flink.agents.api.event.ChatResponseEvent;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import static 
org.apache.flink.agents.api.resource.Constant.OLLAMA_CHAT_MODEL_SETUP;
 import static 
org.apache.flink.agents.examples.agents.CustomTypesAndResources.REVIEW_ANALYSIS_PROMPT;
 
 /**
@@ -61,7 +61,7 @@ public class ReviewAnalysisAgent extends Agent {
 
     @ChatModelSetup
     public static ResourceDescriptor reviewAnalysisModel() {
-        return ResourceDescriptor.Builder.newBuilder(OLLAMA_CHAT_MODEL_SETUP)
+        return 
ResourceDescriptor.Builder.newBuilder(ResourceName.ChatModel.OLLAMA_SETUP)
                 .addInitialArgument("connection", "ollamaChatModelConnection")
                 .addInitialArgument("model", "qwen3:8b")
                 .addInitialArgument("prompt", "reviewAnalysisPrompt")
diff --git 
a/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareMCPServerTest.java
 
b/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareMCPServerTest.java
index 760eae18..09d9e6a7 100644
--- 
a/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareMCPServerTest.java
+++ 
b/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareMCPServerTest.java
@@ -26,6 +26,7 @@ import org.apache.flink.agents.api.annotation.Action;
 import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.prompt.Prompt;
 import org.apache.flink.agents.api.resource.ResourceDescriptor;
+import org.apache.flink.agents.api.resource.ResourceName;
 import org.apache.flink.agents.api.resource.ResourceType;
 import org.apache.flink.agents.api.tools.Tool;
 import org.apache.flink.agents.api.tools.ToolMetadata;
@@ -42,7 +43,6 @@ import java.net.URL;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-import static org.apache.flink.agents.api.resource.Constant.MCP_SERVER;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -72,7 +72,7 @@ class AgentPlanDeclareMCPServerTest {
 
         @org.apache.flink.agents.api.annotation.MCPServer
         public static ResourceDescriptor testMcpServer() {
-            return ResourceDescriptor.Builder.newBuilder(MCP_SERVER)
+            return 
ResourceDescriptor.Builder.newBuilder(ResourceName.MCP_SERVER)
                     .addInitialArgument("endpoint", MCP_ENDPOINT)
                     .addInitialArgument("timeout", 30)
                     .build();

Reply via email to