From 117aa5c5d1d76f0358341e38977f08a923c0a175 Mon Sep 17 00:00:00 2001 From: zhangwenjun-huawei Date: Fri, 18 Sep 2026 20:50:28 +0800 Subject: [PATCH] refactor: remove ineffective A2AT_PROMPT_COMPLIANCE_ENABLED config The A2AT_PROMPT_COMPLIANCE_ENABLED flag was parsed into PromptComplianceConfig but never consumed anywhere in the SDK: the prompt-compliance orchestrator is built unconditionally regardless of the flag. Remove the dead configuration to avoid misleading users. - Remove PromptCompliance key constants from A2ATConfigKeys - Delete PromptComplianceConfig and drop the promptCompliance component from A2ATConfig - Remove the entry from env.example and update affected tests Signed-off-by: zhangwenjun-huawei --- .../DefaultA2ATClientBuilderTest.java | 4 +-- .../a2at/sdk/core/model/A2ATConfig.java | 9 ++---- .../a2at/sdk/core/model/A2ATConfigKeys.java | 8 ----- .../core/model/PromptComplianceConfig.java | 32 ------------------- .../a2at/sdk/core/model/A2ATConfigTest.java | 6 ++-- .../engine/registry/SdkRuntimeAssembler.java | 4 +-- .../A2ATServerContentValidationApiTest.java | 1 - .../api/A2ATServerNegotiationApiTest.java | 1 - .../DefaultA2ATServerBuilderTest.java | 4 +-- env.example | 4 --- 10 files changed, 9 insertions(+), 64 deletions(-) delete mode 100644 a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/PromptComplianceConfig.java diff --git a/a2a-t-client/src/test/java/net/openan/a2at/sdk/client/prompt/assembly/DefaultA2ATClientBuilderTest.java b/a2a-t-client/src/test/java/net/openan/a2at/sdk/client/prompt/assembly/DefaultA2ATClientBuilderTest.java index 36e2653f..74bd54fe 100644 --- a/a2a-t-client/src/test/java/net/openan/a2at/sdk/client/prompt/assembly/DefaultA2ATClientBuilderTest.java +++ b/a2a-t-client/src/test/java/net/openan/a2at/sdk/client/prompt/assembly/DefaultA2ATClientBuilderTest.java @@ -42,7 +42,7 @@ void should_createLlmClientOnlyOnce_When_multipleBuildMethodsCalled() throws IOE config = new A2ATConfig( new net.openan.a2at.sdk.core.model.PromptRuntimeConfig( config.prompt().language(), config.prompt().sourceType(), resolvedRoot), - config.llm(), config.inputLimits(), config.negotiation(), config.promptCompliance()); + config.llm(), config.inputLimits(), config.negotiation()); DefaultA2ATClientBuilder builder = DefaultA2ATClientBuilder.builder().config(config).envPath(envFile); @@ -69,7 +69,7 @@ void buildPromptGenerationOrchestratorFallsBackToBuiltinScenarioCatalog() throws config = new A2ATConfig( new net.openan.a2at.sdk.core.model.PromptRuntimeConfig( config.prompt().language(), config.prompt().sourceType(), resolvedRoot), - config.llm(), config.inputLimits(), config.negotiation(), config.promptCompliance()); + config.llm(), config.inputLimits(), config.negotiation()); DefaultA2ATClientBuilder builder = DefaultA2ATClientBuilder.builder().config(config).envPath(envFile); diff --git a/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfig.java b/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfig.java index 28960e17..b5b58f24 100644 --- a/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfig.java +++ b/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfig.java @@ -14,8 +14,7 @@ public record A2ATConfig( PromptRuntimeConfig prompt, LlmConfig llm, InputLimitConfig inputLimits, - NegotiationConfig negotiation, - PromptComplianceConfig promptCompliance) { + NegotiationConfig negotiation) { /** * Loads one unified SDK config from one `.env` file path. @@ -29,8 +28,7 @@ public record A2ATConfig( PromptRuntimeConfig.fromMap(values), LlmConfig.fromMap(values), InputLimitConfig.fromMap(values), - NegotiationConfig.fromMap(values), - PromptComplianceConfig.fromMap(values)); + NegotiationConfig.fromMap(values)); } /** @@ -62,8 +60,7 @@ public record A2ATConfig( config.prompt().language(), config.prompt().sourceType(), resolvedLocalRootPath.toString()), config.llm(), config.inputLimits(), - config.negotiation(), - config.promptCompliance()); + config.negotiation()); } private static Path envBaseDir(Path envPath) { diff --git a/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfigKeys.java b/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfigKeys.java index 19c544f3..f5f64ccd 100644 --- a/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfigKeys.java +++ b/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/A2ATConfigKeys.java @@ -91,12 +91,4 @@ public static final class Input { /** Maximum length in characters accepted for free-text inputs before they reach an LLM step. */ public static final String MAX_TEXT_CHARS = "A2AT_INPUT_TEXT_MAX_CHARS"; } - - /** Prompt compliance configuration keys. */ - @NoArgsConstructor(access = AccessLevel.PRIVATE) - public static final class PromptCompliance { - - /** Enables or disables prompt compliance checks. */ - public static final String ENABLED = "A2AT_PROMPT_COMPLIANCE_ENABLED"; - } } diff --git a/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/PromptComplianceConfig.java b/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/PromptComplianceConfig.java deleted file mode 100644 index 52efb7c3..00000000 --- a/a2a-t-core/src/main/java/net/openan/a2at/sdk/core/model/PromptComplianceConfig.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.openan.a2at.sdk.core.model; - -import java.util.Map; - -/** - * Prompt compliance configuration resolved from unified SDK config. - * - * @since 2026-06 - */ -public record PromptComplianceConfig(boolean enabled) { - - /** - * Builds one prompt compliance config from raw `.env` values. - * - * @param values raw config values - * @return resolved prompt compliance config - */ - public static PromptComplianceConfig fromMap(Map values) { - return new PromptComplianceConfig(parseBoolean(values.get(A2ATConfigKeys.PromptCompliance.ENABLED))); - } - - private static boolean parseBoolean(String rawValue) { - if (rawValue == null || rawValue.isBlank()) { - return false; - } - String normalized = rawValue.trim().toLowerCase(); - return normalized.equals("1") - || normalized.equals("true") - || normalized.equals("yes") - || normalized.equals("on"); - } -} diff --git a/a2a-t-core/src/test/java/net/openan/a2at/sdk/core/model/A2ATConfigTest.java b/a2a-t-core/src/test/java/net/openan/a2at/sdk/core/model/A2ATConfigTest.java index 05e699bb..81b9beda 100644 --- a/a2a-t-core/src/test/java/net/openan/a2at/sdk/core/model/A2ATConfigTest.java +++ b/a2a-t-core/src/test/java/net/openan/a2at/sdk/core/model/A2ATConfigTest.java @@ -212,8 +212,7 @@ void should_preserveBlankLocalRoot_When_resolvingPromptResourceLocalRootDir() th loaded.prompt().language(), loaded.prompt().sourceType(), " "), loaded.llm(), loaded.inputLimits(), - loaded.negotiation(), - loaded.promptCompliance()); + loaded.negotiation()); A2ATConfig resolved = A2ATConfig.resolvePromptResourceLocalRootDir(config, envFile); @@ -242,8 +241,7 @@ void should_resolveRelativeLocalRootAgainstCwd_When_envPathIsSingleSegment() thr new PromptRuntimeConfig(loaded.prompt().language(), "local_file", "prompt_resources"), loaded.llm(), loaded.inputLimits(), - loaded.negotiation(), - loaded.promptCompliance()); + loaded.negotiation()); A2ATConfig resolved = A2ATConfig.resolvePromptResourceLocalRootDir(config, Path.of(".env")); diff --git a/a2a-t-corpus/src/test/java/net/openan/a2at/sdk/corpus/engine/registry/SdkRuntimeAssembler.java b/a2a-t-corpus/src/test/java/net/openan/a2at/sdk/corpus/engine/registry/SdkRuntimeAssembler.java index a1d80338..92f6b868 100644 --- a/a2a-t-corpus/src/test/java/net/openan/a2at/sdk/corpus/engine/registry/SdkRuntimeAssembler.java +++ b/a2a-t-corpus/src/test/java/net/openan/a2at/sdk/corpus/engine/registry/SdkRuntimeAssembler.java @@ -7,7 +7,6 @@ import net.openan.a2at.sdk.core.model.InputLimitConfig; import net.openan.a2at.sdk.core.model.LlmConfig; import net.openan.a2at.sdk.core.model.NegotiationConfig; -import net.openan.a2at.sdk.core.model.PromptComplianceConfig; import net.openan.a2at.sdk.core.model.PromptRuntimeConfig; import net.openan.a2at.sdk.core.validation.ContentValidator; import net.openan.a2at.sdk.corpus.engine.config.CorpusEnvConfig; @@ -82,8 +81,7 @@ public static Runtime taskRuntime() { new PromptRuntimeConfig("zh-CN", PromptRuntimeConfig.SOURCE_TYPE_CLASSPATH, null), llmConfig, new InputLimitConfig(InputLimitConfig.DEFAULT_MAX_TEXT_CHARS), - new NegotiationConfig("in_memory"), - new PromptComplianceConfig(false)); + new NegotiationConfig("in_memory")); ClientPromptGenerationOrchestrator clientGeneration = DefaultA2ATClientBuilder.builder() .config(config) diff --git a/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerContentValidationApiTest.java b/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerContentValidationApiTest.java index d5b45403..5a372a22 100644 --- a/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerContentValidationApiTest.java +++ b/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerContentValidationApiTest.java @@ -137,7 +137,6 @@ private static Path writeEnv() throws IOException { A2AT_LLM_BASE_URL=https://llm.example.test/v1 A2AT_LLM_API_KEY=test-key A2AT_NEGOTIATION_STATE_STORE_TYPE=in_memory - A2AT_PROMPT_COMPLIANCE_ENABLED=false """); return envFile; } diff --git a/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerNegotiationApiTest.java b/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerNegotiationApiTest.java index b75212c7..c8400e7a 100644 --- a/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerNegotiationApiTest.java +++ b/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/api/A2ATServerNegotiationApiTest.java @@ -135,7 +135,6 @@ private static Path writeEnv(String language) throws IOException { A2AT_LLM_BASE_URL=https://llm.example.test/v1 A2AT_LLM_API_KEY=test-key A2AT_NEGOTIATION_STATE_STORE_TYPE=in_memory - A2AT_PROMPT_COMPLIANCE_ENABLED=false """ .formatted(language)); return envFile; diff --git a/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/assembly/DefaultA2ATServerBuilderTest.java b/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/assembly/DefaultA2ATServerBuilderTest.java index 9b1087d1..f14ab440 100644 --- a/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/assembly/DefaultA2ATServerBuilderTest.java +++ b/a2a-t-server/src/test/java/net/openan/a2at/sdk/server/assembly/DefaultA2ATServerBuilderTest.java @@ -13,7 +13,6 @@ import net.openan.a2at.sdk.core.model.InputLimitConfig; import net.openan.a2at.sdk.core.model.LlmConfig; import net.openan.a2at.sdk.core.model.NegotiationConfig; -import net.openan.a2at.sdk.core.model.PromptComplianceConfig; import net.openan.a2at.sdk.core.model.PromptRuntimeConfig; import net.openan.a2at.sdk.llm.LLMClient; import net.openan.a2at.sdk.llm.LLMClientConfig; @@ -103,8 +102,7 @@ void llmClientConfigDerivedFromConfigLlmNotFromEnvPath() throws IOException { 3, List.of()), new InputLimitConfig(InputLimitConfig.DEFAULT_MAX_TEXT_CHARS), - new NegotiationConfig("in_memory"), - new PromptComplianceConfig(false)); + new NegotiationConfig("in_memory")); DefaultA2ATServerBuilder builder = DefaultA2ATServerBuilder.builder().config(config).envPath(envFile); diff --git a/env.example b/env.example index 98b0dd6b..1c681f0f 100644 --- a/env.example +++ b/env.example @@ -11,10 +11,6 @@ A2AT_PROMPT_SOURCE_TYPE=classpath # and LLM prompts are always loaded from the classpath. A2AT_PROMPT_RESOURCE_LOCAL_ROOT_DIR= -# Prompt compliance -# Enables or disables prompt compliance checks. -A2AT_PROMPT_COMPLIANCE_ENABLED=false - # Input limits # Maximum length in characters (String.length()) accepted for free-text inputs (FromText generation and # prompt validation entry points) before they reach an LLM step; oversized inputs fail fast with the