Skip to content

Commit 9c02cf1

Browse files
committed
Rename to MessageEntropy
1 parent 6ff2d03 commit 9c02cf1

6 files changed

Lines changed: 28 additions & 29 deletions

File tree

common/src/main/java/io/wdsj/asw/common/utils/ChatEntropy.java renamed to common/src/main/java/io/wdsj/asw/common/utils/MessageEntropy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import java.util.HashMap;
55
import java.util.Map;
66

7-
public final class ChatEntropy {
8-
private ChatEntropy() {
7+
public final class MessageEntropy {
8+
private MessageEntropy() {
99
}
1010

1111
public static int visibleCodePointCount(String message) {

paper/src/main/java/io/wdsj/asw/bukkit/ai/CompatibleLlmChatClient.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import java.time.Duration;
1313

14-
/** Routes one moderation request through the configured OpenAI- or Anthropic-compatible protocol. */
1514
final class CompatibleLlmChatClient implements LlmChatClient {
1615
private final ChatModel model;
1716

paper/src/main/java/io/wdsj/asw/bukkit/ai/LlmCategoryPolicy.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import java.util.List;
66

7-
/** Immutable notification and enforcement thresholds for one LLM moderation category. */
87
public record LlmCategoryPolicy(
98
double notifyConfidence,
109
double punishConfidence,

paper/src/main/java/io/wdsj/asw/bukkit/ai/LlmChatDetectionService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.wdsj.asw.bukkit.type.ModuleType;
1010
import io.wdsj.asw.bukkit.util.SchedulingUtils;
1111
import io.wdsj.asw.bukkit.util.ViolationReporter;
12+
import io.wdsj.asw.common.utils.MessageEntropy;
1213
import org.bukkit.event.EventHandler;
1314
import org.bukkit.event.EventPriority;
1415
import org.bukkit.event.Listener;
@@ -32,7 +33,6 @@
3233
import java.nio.charset.StandardCharsets;
3334
import io.wdsj.asw.bukkit.setting.SettingsConfiguration;
3435

35-
/** Coordinates asynchronous, single-message LLM moderation requests. */
3636
public final class LlmChatDetectionService implements Listener, AutoCloseable {
3737
private final PaperConfigurationService configuration;
3838
private final ViolationReporter violationReporter;
@@ -94,12 +94,12 @@ public void submit(UUID playerId, String playerName, String message) {
9494
if (rawCodePoints > settings.maximumMessageCodePoints()) {
9595
return;
9696
}
97-
int visibleCodePoints = io.wdsj.asw.common.utils.ChatEntropy.visibleCodePointCount(message);
97+
int visibleCodePoints = MessageEntropy.visibleCodePointCount(message);
9898
if (visibleCodePoints < settings.minimumMessageCodePoints()) {
9999
return;
100100
}
101101

102-
double entropy = io.wdsj.asw.common.utils.ChatEntropy.shannonEntropyBits(message);
102+
double entropy = MessageEntropy.shannonEntropyBits(message);
103103
if (entropy < settings.minimumEntropyBits()) {
104104
return;
105105
}

paper/src/test/java/io/wdsj/asw/bukkit/ai/ChatEntropyTest.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.wdsj.asw.bukkit.ai;
2+
3+
import io.wdsj.asw.common.utils.MessageEntropy;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
import static org.junit.jupiter.api.Assertions.assertTrue;
8+
9+
class MessageEntropyTest {
10+
@Test
11+
void ignoresWhitespaceAndControlsForEntropy() {
12+
assertEquals(3, MessageEntropy.visibleCodePointCount(" a\n b\t c "));
13+
assertEquals(0.0D, MessageEntropy.shannonEntropyBits("aaaa"));
14+
assertEquals(2.0D, MessageEntropy.shannonEntropyBits("abcd"), 0.000001D);
15+
}
16+
17+
@Test
18+
void normalizesFullWidthCharactersBeforeCounting() {
19+
assertEquals(2, MessageEntropy.visibleCodePointCount("AA"));
20+
assertEquals(0.0D, MessageEntropy.shannonEntropyBits("AA"));
21+
assertTrue(MessageEntropy.shannonEntropyBits("abca") > 1.0D);
22+
}
23+
}

0 commit comments

Comments
 (0)