# Tasks: AI Multi-Personalities, Judite (SAC), Dynamic Tags, Persistent Memory & Event Expansion - [x] **Task 1: Persona Enhancement (`Persona.java` & `PersonaTest.java`)** - Add `JUDITE` (SAC/telemarketing attendant) and `NARRADOR` (fantasy narrator) to `Persona` enum. - Add `displayTag()` (e.g. "Judite", "Zoeiro", "Amigão", "Seco", "Aldeão", "Narrador", "IA") and `tagColor()` (`NamedTextColor`). - Add persona system prompts with safety guard invariant. - Update `PersonaTest.java` to assert all enum keys, display tags, colors, and guard constraints. - [x] **Task 2: Persistent Player Memory & Compression (`PlayerMemory.java` & `PlayerMemoryTest.java`)** - Create `PlayerMemory.java` persisted at `plugins/Canalhandia/ia-memoria.yml`. - Implement per-player persona setting (`getPersona`, `setPersona`, `resetPersona`). - Implement turn recording with automatic sliding-window summary condensation. - Implement key facts list per player (`addFact`, `getFacts`). - Implement `formatContext(UUID player)` for AI system prompt formatting. - Write comprehensive unit tests in `PlayerMemoryTest.java`. - [x] **Task 3: Location Grounding Tool (`Tools.java` & `ToolsTest.java`)** - Add `lugares_jogador` function definition to `Tools.DEFINITIONS`. - Implement `lugares_jogador` in `Tools.java` pulling recent deaths from `DeathLog`, saved pins from `Notes`, and current world/biome. - Write unit tests in `ToolsTest.java` verifying tool execution and response formatting. - [x] **Task 4: AI Orchestration & Dynamic Tag Styling (`Ai.java`)** - Integrate `PlayerMemory` into `Ai.java`. - Resolve effective persona per player in `ask()`. - Update `compose()` to inject player persona prompt, player memory context, and location context. - Update `deliver()` and `style()` to display dynamic persona tag (e.g. `[Judite]`, `[Zoeiro]`) and hover metadata. - Update `saySomething()` to support persona-specific spontaneous speech. - [x] **Task 5: Command Interface & Subcommands (`CanalhandiaCommand.java`)** - Implement `/ia persona` / `/ia personalidade` list and player preference switcher (`/ia persona `). - Implement `/ia persona padrao` to reset preference. - Implement `/ia status` to show active persona, memory summary, and facts. - Implement `/ia esquecer` to clear personal memory. - Update tab-completion for `/ia` with new subcommands and persona keys. - [x] **Task 6: Event Expansion & Plugin Wiring (`Canalhandia.java`)** - Initialize and expose `PlayerMemory` in `Canalhandia.java`. - Expand event triggers in `Canalhandia.java`: - Joins (`onJoinWelcome`) with persona-specific greeting. - Notable deaths & streaks (`onPlayerDeath`) with persona-specific commentary. - Milestone completions (`onMilestone`) with persona-specific recognition. - [x] **Task 7: Verification & Build (`mvn test` & `mvn package`)** - Run full test suite (`mvn test`) ensuring 100% pass rate. - Package final jar (`mvn package`). - Verify all acceptance criteria from `spec.md`.