Skip to content

Repository files navigation

ACEWire

ACEWire-compress.mp4

Client-first packet logging MVP for Asheron's Call with LLM-oriented context output.

Developer workflow

See dev-readme.md for performance benchmarking, test coverage gates, and debug guardrail scripts.

Current components

  • src/ACEWire.Core
    • Pipe frame model and reader
    • AC packet parser (header + fragment/control decode)
    • Session state tracker
    • LLM context builder
    • NDJSON writer
  • src/ACEWire.DesktopApp
    • WPF live packet logger window
    • Filters, details, copy context, export NDJSON
  • mods/AceWireAgentMod
    • ACE BaseMod-compatible server-side Harmony patch module
    • Emits server NDJSON for Phase 2 client/server correlation
  • native/pldll
    • pl.dll source capture hook
    • Writes binary frames to \\.\pipe\ACPacketLog
    • Falls back to %TEMP%\ACPackets_*.bin if no pipe consumer exists

Build (managed)

dotnet build ACEWire.sln

Build only the server mod:

dotnet build mods/AceWireAgentMod/AceWireAgentMod.csproj

Run desktop app

dotnet run --project src/ACEWire.DesktopApp/ACEWire.DesktopApp.csproj

The app will wait for pl.dll frame input on named pipe ACPacketLog.

Build pl.dll (native)

Use a Win32 toolchain; AC client is 32-bit.

Example CMake flow (Visual Studio generator):

cmake -S native/pldll -B native/pldll/build -A Win32
cmake --build native/pldll/build --config Release

Produced DLL target name is pl.dll.

One-command local build (recommended)

If you install LLVM-MinGW UCRT:

winget install --id MartinStorsjo.LLVM-MinGW.UCRT --accept-package-agreements --accept-source-agreements --silent

Then build pl.dll with:

powershell -ExecutionPolicy Bypass -File .\scripts\build-pldll.ps1

This writes:

  • .\pl.dll
  • .\src\ACEWire.DesktopApp\bin\Debug\net9.0-windows\pl.dll

Usage flow

  1. Ensure ACEWire has its own pl.dll:
    • Preferred: put pl.dll next to ACEWire.DesktopApp.exe
    • Dev convenience: put pl.dll in repo root (ACEWire\pl.dll) and build; it is copied to output automatically.
  2. Start ACEWire.DesktopApp.
  3. Select AC folder path in the UI (or click Browse).
  4. Click Deploy pl.dll.
  5. Start AC client and inspect live packets in UI.
  6. Use Copy LLM Context for quick troubleshooting context.
  7. Use Export NDJSON for offline analysis.
  8. Optional Phase 2 path:
    • Build/deploy AceWireAgentMod into ACE mods folder.
    • In desktop app, click Load Server NDJSON to import server stream.
    • Copy Session Summary will include client->server causality pairs when server events are loaded.

On ACEWire exit, deployed pl.dll is removed and previous pl.dll is restored (if backup exists). If cleanup fails, AC is usually still running and holding pl.dll open.

Performance safeguards

  • UI updates are batched (timer-based) instead of per-packet dispatch.
  • Packet table rows are capped (3000 rows) to keep the grid responsive.
  • Event history is capped (25000 events) to prevent unbounded memory growth.
  • Raw hex payloads are truncated per event for display/storage efficiency.
  • Export status includes history-drop count if older events were evicted.

Tailing and filters

  • Auto-scroll follows new packets by default (Wireshark-style tailing).
  • If you scroll away from the bottom, auto-scroll turns off.
  • Click Resume Auto-Scroll to jump back to live tail.
  • Filter controls:
    • Direction (Both/C2S/S2C)
    • Opcode Filter (opcode name/hex)
    • Filter Query (searches preview + opcode + hex + direction + sequence/time text)

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages