Move 15 capture autofill/namescrape/scoreboard methods plus the
suggestion-cache records and fields verbatim into
MacroCaptureAutofill. Shared MacroExecutor members referenced as
MacroExecutor.xxx (mechanical qualification only); same-package
buildAutofillQuery kept as delegate so the existing unit test is
unaffected. All bodies verified identical against HEAD modulo that
qualification.
Move 12 chat observe/capture methods (observeIncomingChat,
recordRecentChat, syncRecentChatServerContext,
getCurrentMultiplayerServerKey, normalizeServerKey,
matchesWaitingChat, matchesChatAction, captureChatAction x2,
chatValues, extractIncomingChat, buildChatCapture) verbatim into
MacroChatObserve. Shared MacroExecutor members referenced as
MacroExecutor.xxx (mechanical qualification only); public API
unchanged via observeIncomingChat delegate. All bodies verified
identical against HEAD modulo that qualification.
Move 31 pure chat-text utilities (sanitize/normalize/fuzzy-match,
levenshtein, component literalize/serialize) verbatim into
MacroChatText. MacroExecutor keeps one-line public delegates so the
public API is unchanged. All moved bodies verified byte-identical
against HEAD; only 2 private->public visibility widenings.