UI token estimation routed through core messaging facade

Fixed a dependency-layer violation where the UI imported tunacode.utils.messaging directly by routing message token estimation through the tunacode.core.ui_api.messaging facade.

tools-only Updated 7 repo stars

File contents

UI token estimation routed through core messaging facade

Summary

Fixed a dependency-layer violation where the UI imported tunacode.utils.messaging directly by routing message token estimation through the tunacode.core.ui_api.messaging facade.

Context

tests/test_dependency_layers.py::test_no_new_layer_violations flagged:

  • tunacode.ui.app -> tunacode.utils.messaging (ui -> utils)

Root Cause

The UI layer is only allowed to depend on core (per the dependency layer rules), but TextualReplApp._update_resource_bar() imported estimate_messages_tokens from utils.

Changes

  • src/tunacode/core/ui_api/messaging.py
    • Re-exported estimate_messages_tokens() from tunacode.utils.messaging.
  • src/tunacode/ui/app.py
    • Switched import to from tunacode.core.ui_api.messaging import estimate_messages_tokens.
    • Reordered imports to satisfy first-party import-order tests.

Behavioral Impact

No user-visible behavior change; token estimation remains the same. The UI now respects the enforced dependency direction.

Related Cards

  • [[dependency-layers]]

tools-only/X-Skills/tree/main/development/1601-2026-02-05-ui-messaging-layer-facade_388ad5c7 commit ae5225ab50

Frequently asked questions

npx skillmds@latest add tools-only/ui-token-estimation-routed-through-core-messaging-facade