Skip to content

Commit 82243dd

Browse files
authored
Merge branch 'main' into remove-duplicate-agui-event
2 parents 2495a14 + 3b174ad commit 82243dd

File tree

45 files changed

+1598
-312
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1598
-312
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ buildscript {
1111
ext {
1212
opensearch_group = "org.opensearch"
1313
isSnapshot = "true" == System.getProperty("build.snapshot", "true")
14-
opensearch_version = System.getProperty("opensearch.version", "3.6.0-SNAPSHOT")
14+
opensearch_version = System.getProperty("opensearch.version", "3.7.0-SNAPSHOT")
1515
buildVersionQualifier = System.getProperty("build.version_qualifier", "")
1616
asm_version = "9.7"
1717

common/src/main/java/org/opensearch/ml/common/CommonValue.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ public class CommonValue {
2323

2424
/** The field name containing the tenant id */
2525
public static final String TENANT_ID_FIELD = "tenant_id";
26-
public static final String AGENT_ID_FIELD = "agent_id";
26+
/**
27+
* Internal parameter key for propagating the executing agent's ID through the parameter map
28+
* for logging. Uses a distinct key to avoid colliding with the "agent_id" tool parameter
29+
* used by AgentTool to specify which sub-agent to invoke.
30+
*/
31+
public static final String AGENT_ID_LOG_FIELD = "agent_id_log";
2732

2833
public static final String MASTER_KEY = "master_key";
2934
public static final String CREATE_TIME_FIELD = "create_time";

common/src/main/java/org/opensearch/ml/common/connector/ConnectorClientConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public class ConnectorClientConfig implements ToXContentObject, Writeable {
3939
public static final String SKIP_SSL_VERIFICATION_FIELD = "skip_ssl_verification";
4040

4141
public static final Integer MAX_CONNECTION_DEFAULT_VALUE = Integer.valueOf(30);
42-
public static final Integer CONNECTION_TIMEOUT_DEFAULT_VALUE = Integer.valueOf(30000);
43-
public static final Integer READ_TIMEOUT_DEFAULT_VALUE = Integer.valueOf(30000);
42+
public static final Integer CONNECTION_TIMEOUT_DEFAULT_VALUE = Integer.valueOf(30);
43+
public static final Integer READ_TIMEOUT_DEFAULT_VALUE = Integer.valueOf(30);
4444
public static final Integer RETRY_BACKOFF_MILLIS_DEFAULT_VALUE = 200;
4545
public static final Integer RETRY_TIMEOUT_SECONDS_DEFAULT_VALUE = 30;
4646
public static final Integer MAX_RETRY_TIMES_DEFAULT_VALUE = 0;

common/src/main/java/org/opensearch/ml/common/memorycontainer/MemoryConfiguration.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,15 +352,24 @@ public String getFinalMemoryIndexPrefix() {
352352
}
353353
}
354354

355+
/**
356+
* Returns true if long-term memory is disabled, i.e., there is no LLM or no strategies configured.
357+
*/
358+
private boolean isLongTermMemoryDisabled() {
359+
return getLlmId() == null || getStrategies() == null || getStrategies().isEmpty();
360+
}
361+
355362
public String getIndexName(MemoryType memoryType) {
356363
if (memoryType == null) {
357364
return null;
358365
}
359-
// Check if disabled
366+
if (memoryType == MemoryType.LONG_TERM && isLongTermMemoryDisabled()) {
367+
return null;
368+
}
360369
if (memoryType == MemoryType.SESSIONS && isDisableSession()) {
361370
return null;
362371
}
363-
if (memoryType == MemoryType.HISTORY && isDisableHistory()) {
372+
if (memoryType == MemoryType.HISTORY && (isDisableHistory() || isLongTermMemoryDisabled())) {
364373
return null;
365374
}
366375
return getFinalMemoryIndexPrefix() + memoryType.getIndexSuffix();

common/src/test/java/org/opensearch/ml/common/RemoteModelTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void toXContent_InternalConnector() throws IOException {
7373
+ "\"pre_process_function\":\"connector.pre_process.openai.embedding\","
7474
+ "\"post_process_function\":\"connector.post_process.openai.embedding\"}],"
7575
+ "\"backend_roles\":[\"role1\",\"role2\"],\"access\":\"public\","
76-
+ "\"client_config\":{\"max_connection\":30,\"connection_timeout\":30000,\"read_timeout\":30000,"
76+
+ "\"client_config\":{\"max_connection\":30,\"connection_timeout\":30,\"read_timeout\":30,"
7777
+ "\"retry_backoff_millis\":10,\"retry_timeout_seconds\":10,\"max_retry_times\":-1,\"retry_backoff_policy\":\"constant\"}}}";
7878

7979
assertEquals(expectedConnectorResponse, mlModelContent);

common/src/test/java/org/opensearch/ml/common/connector/ConnectorClientConfigTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,8 @@ public void testDefaultValuesInitByNewInstance() {
181181
ConnectorClientConfig config = new ConnectorClientConfig();
182182

183183
Assert.assertEquals(Integer.valueOf(30), config.getMaxConnections());
184-
Assert.assertEquals(Integer.valueOf(30000), config.getConnectionTimeout());
185-
Assert.assertEquals(Integer.valueOf(30000), config.getReadTimeout());
184+
Assert.assertEquals(Integer.valueOf(30), config.getConnectionTimeout());
185+
Assert.assertEquals(Integer.valueOf(30), config.getReadTimeout());
186186
Assert.assertEquals(Integer.valueOf(200), config.getRetryBackoffMillis());
187187
Assert.assertEquals(Integer.valueOf(30), config.getRetryTimeoutSeconds());
188188
Assert.assertEquals(Integer.valueOf(0), config.getMaxRetryTimes());

common/src/test/java/org/opensearch/ml/common/connector/HttpConnectorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public class HttpConnectorTest {
5656
+ "\"pre_process_function\":\"connector.pre_process.openai.embedding\","
5757
+ "\"post_process_function\":\"connector.post_process.openai.embedding\"}],"
5858
+ "\"backend_roles\":[\"role1\",\"role2\"],\"access\":\"public\","
59-
+ "\"client_config\":{\"max_connection\":30,\"connection_timeout\":30000,\"read_timeout\":30000,"
59+
+ "\"client_config\":{\"max_connection\":30,\"connection_timeout\":30,\"read_timeout\":30,"
6060
+ "\"retry_backoff_millis\":10,\"retry_timeout_seconds\":10,\"max_retry_times\":-1,\"retry_backoff_policy\":\"constant\"}}";
6161

6262
@Test
@@ -404,7 +404,7 @@ public static HttpConnector createHttpConnectorWithRequestBody(String requestBod
404404
Map<String, String> credential = new HashMap<>();
405405
credential.put("key", "test_key_value");
406406

407-
ConnectorClientConfig httpClientConfig = new ConnectorClientConfig(30, 30000, 30000, 10, 10, -1, RetryBackoffPolicy.CONSTANT, null);
407+
ConnectorClientConfig httpClientConfig = new ConnectorClientConfig(30, 30, 30, 10, 10, -1, RetryBackoffPolicy.CONSTANT, null);
408408

409409
HttpConnector connector = HttpConnector
410410
.builder()

common/src/test/java/org/opensearch/ml/common/connector/McpConnectorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class McpConnectorTest {
4747

4848
private ActionListener<Boolean> actionListener = mock(ActionListener.class);
4949
String TEST_CONNECTOR_JSON_STRING =
50-
"{\"name\":\"test_mcp_connector_name\",\"version\":\"1\",\"description\":\"this is a test mcp connector\",\"protocol\":\"mcp_sse\",\"credential\":{\"key\":\"test_key_value\"},\"backend_roles\":[\"role1\",\"role2\"],\"access\":\"public\",\"client_config\":{\"max_connection\":30,\"connection_timeout\":30000,\"read_timeout\":30000,\"retry_backoff_millis\":10,\"retry_timeout_seconds\":10,\"max_retry_times\":-1,\"retry_backoff_policy\":\"constant\"},\"url\":\"https://test.com\",\"headers\":{\"api_key\":\"${credential.key}\"},\"parameters\":{\"sse_endpoint\":\"/custom/sse\"}}";
50+
"{\"name\":\"test_mcp_connector_name\",\"version\":\"1\",\"description\":\"this is a test mcp connector\",\"protocol\":\"mcp_sse\",\"credential\":{\"key\":\"test_key_value\"},\"backend_roles\":[\"role1\",\"role2\"],\"access\":\"public\",\"client_config\":{\"max_connection\":30,\"connection_timeout\":30,\"read_timeout\":30,\"retry_backoff_millis\":10,\"retry_timeout_seconds\":10,\"max_retry_times\":-1,\"retry_backoff_policy\":\"constant\"},\"url\":\"https://test.com\",\"headers\":{\"api_key\":\"${credential.key}\"},\"parameters\":{\"sse_endpoint\":\"/custom/sse\"}}";
5151

5252
@Test
5353
public void constructor_InvalidProtocol() {
@@ -255,7 +255,7 @@ public static McpConnector createMcpConnector() {
255255
Map<String, String> parameters = new HashMap<>();
256256
parameters.put("sse_endpoint", "/custom/sse");
257257

258-
ConnectorClientConfig clientConfig = new ConnectorClientConfig(30, 30000, 30000, 10, 10, -1, RetryBackoffPolicy.CONSTANT, null);
258+
ConnectorClientConfig clientConfig = new ConnectorClientConfig(30, 30, 30, 10, 10, -1, RetryBackoffPolicy.CONSTANT, null);
259259

260260
return McpConnector
261261
.builder()

common/src/test/java/org/opensearch/ml/common/connector/McpStreamableHttpConnectorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class McpStreamableHttpConnectorTest {
4545
.onResponse(List.of(s.stream().map(x -> "decrypted: " + x.toUpperCase(Locale.ROOT)).toArray(String[]::new)));
4646

4747
String TEST_CONNECTOR_JSON_STRING =
48-
"{\"name\":\"test_mcp_streamable_http_connector_name\",\"version\":\"1\",\"description\":\"this is a test mcp streamable http connector\",\"protocol\":\"mcp_streamable_http\",\"credential\":{\"key\":\"test_key_value\"},\"backend_roles\":[\"role1\",\"role2\"],\"access\":\"public\",\"client_config\":{\"max_connection\":30,\"connection_timeout\":30000,\"read_timeout\":30000,\"retry_backoff_millis\":10,\"retry_timeout_seconds\":10,\"max_retry_times\":-1,\"retry_backoff_policy\":\"constant\"},\"url\":\"https://test.com\",\"headers\":{\"api_key\":\"${credential.key}\"},\"parameters\":{\"endpoint\":\"/custom/endpoint\"}}";
48+
"{\"name\":\"test_mcp_streamable_http_connector_name\",\"version\":\"1\",\"description\":\"this is a test mcp streamable http connector\",\"protocol\":\"mcp_streamable_http\",\"credential\":{\"key\":\"test_key_value\"},\"backend_roles\":[\"role1\",\"role2\"],\"access\":\"public\",\"client_config\":{\"max_connection\":30,\"connection_timeout\":30,\"read_timeout\":30,\"retry_backoff_millis\":10,\"retry_timeout_seconds\":10,\"max_retry_times\":-1,\"retry_backoff_policy\":\"constant\"},\"url\":\"https://test.com\",\"headers\":{\"api_key\":\"${credential.key}\"},\"parameters\":{\"endpoint\":\"/custom/endpoint\"}}";
4949

5050
@Test
5151
public void constructor_InvalidProtocol() {
@@ -277,7 +277,7 @@ public static McpStreamableHttpConnector createMcpStreamableHttpConnector() {
277277
Map<String, String> parameters = new HashMap<>();
278278
parameters.put("endpoint", "/custom/endpoint");
279279

280-
ConnectorClientConfig clientConfig = new ConnectorClientConfig(30, 30000, 30000, 10, 10, -1, RetryBackoffPolicy.CONSTANT, null);
280+
ConnectorClientConfig clientConfig = new ConnectorClientConfig(30, 30, 30, 10, 10, -1, RetryBackoffPolicy.CONSTANT, null);
281281

282282
return McpStreamableHttpConnector
283283
.builder()

common/src/test/java/org/opensearch/ml/common/memorycontainer/MemoryConfigurationTests.java

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@
2828
*/
2929
public class MemoryConfigurationTests {
3030

31+
/** Creates a config with long-term memory enabled (llmId + strategies required for LONG_TERM/HISTORY index names). */
32+
private static MemoryConfiguration configWithLongTermMemory(MemoryConfiguration.MemoryConfigurationBuilder builder) {
33+
List<MemoryStrategy> strategies = new ArrayList<>();
34+
strategies
35+
.add(
36+
MemoryStrategy
37+
.builder()
38+
.id("test-id")
39+
.enabled(true)
40+
.type(MemoryStrategyType.SEMANTIC)
41+
.namespace(Arrays.asList("test-namespace"))
42+
.build()
43+
);
44+
return (builder != null ? builder : MemoryConfiguration.builder()).llmId("test-llm").strategies(strategies).build();
45+
}
46+
3147
// ==================== validateStrategiesRequireModels Tests ====================
3248

3349
@Test
@@ -687,7 +703,7 @@ public void testGetIndexName_Working() {
687703

688704
@Test
689705
public void testGetIndexName_LongTerm() {
690-
MemoryConfiguration config = MemoryConfiguration.builder().build();
706+
MemoryConfiguration config = configWithLongTermMemory(null);
691707

692708
String result = config.getIndexName(MemoryType.LONG_TERM);
693709
assertNotNull(result);
@@ -696,7 +712,7 @@ public void testGetIndexName_LongTerm() {
696712

697713
@Test
698714
public void testGetIndexName_HistoryEnabled() {
699-
MemoryConfiguration config = MemoryConfiguration.builder().disableHistory(false).build();
715+
MemoryConfiguration config = configWithLongTermMemory(MemoryConfiguration.builder().disableHistory(false));
700716

701717
String result = config.getIndexName(MemoryType.HISTORY);
702718
assertNotNull(result);
@@ -867,7 +883,7 @@ public void testGetWorkingMemoryIndexName_WithoutSystemIndex() {
867883

868884
@Test
869885
public void testGetLongMemoryIndexName_Default() {
870-
MemoryConfiguration config = MemoryConfiguration.builder().build();
886+
MemoryConfiguration config = configWithLongTermMemory(null);
871887

872888
String result = config.getLongMemoryIndexName();
873889
assertNotNull(result);
@@ -876,7 +892,7 @@ public void testGetLongMemoryIndexName_Default() {
876892

877893
@Test
878894
public void testGetLongMemoryIndexName_WithCustomPrefix() {
879-
MemoryConfiguration config = MemoryConfiguration.builder().indexPrefix("long-term-prefix").build();
895+
MemoryConfiguration config = configWithLongTermMemory(MemoryConfiguration.builder().indexPrefix("long-term-prefix"));
880896

881897
String result = config.getLongMemoryIndexName();
882898
assertNotNull(result);
@@ -886,7 +902,7 @@ public void testGetLongMemoryIndexName_WithCustomPrefix() {
886902

887903
@Test
888904
public void testGetLongMemoryIndexName_WithSystemIndex() {
889-
MemoryConfiguration config = MemoryConfiguration.builder().useSystemIndex(true).build();
905+
MemoryConfiguration config = configWithLongTermMemory(MemoryConfiguration.builder().useSystemIndex(true));
890906

891907
String result = config.getLongMemoryIndexName();
892908
assertNotNull(result);
@@ -898,7 +914,7 @@ public void testGetLongMemoryIndexName_WithSystemIndex() {
898914

899915
@Test
900916
public void testGetLongMemoryHistoryIndexName_Enabled() {
901-
MemoryConfiguration config = MemoryConfiguration.builder().disableHistory(false).build();
917+
MemoryConfiguration config = configWithLongTermMemory(MemoryConfiguration.builder().disableHistory(false));
902918

903919
String result = config.getLongMemoryHistoryIndexName();
904920
assertNotNull(result);
@@ -915,7 +931,9 @@ public void testGetLongMemoryHistoryIndexName_Disabled() {
915931

916932
@Test
917933
public void testGetLongMemoryHistoryIndexName_WithCustomPrefix() {
918-
MemoryConfiguration config = MemoryConfiguration.builder().indexPrefix("history-prefix").disableHistory(false).build();
934+
MemoryConfiguration config = configWithLongTermMemory(
935+
MemoryConfiguration.builder().indexPrefix("history-prefix").disableHistory(false)
936+
);
919937

920938
String result = config.getLongMemoryHistoryIndexName();
921939
assertNotNull(result);

0 commit comments

Comments
 (0)