SurfSense/surfsense_backend/tests/unit/agents/multi_agent_chat
CREDO23 84b775c0ac refactor(agents): unify permissions into one vertical-slice package
Per-file verification of the slice-3 candidates showed receipts/ and
date_filters.py are shared contracts (consumed by shared/state + shared
middleware + subagents), so they correctly stay put.

permissions was the real misfit: the rule *model* lived at shared/permissions.py
while its enforcement lived at shared/middleware/permissions/. Unify them into a
single self-contained subsystem:

  shared/permissions.py                 -> shared/permissions/model.py
  shared/middleware/permissions/{deny,ask,middleware}
                                        -> shared/permissions/{deny,ask,middleware}

The package __init__ re-exports the model API + build_permission_mw, so the 32
external model consumers keep importing `from ...shared.permissions import Rule`
unchanged; only the 8 internal files redirect to `.model` (cycle-safe, model
loaded before middleware).
2026-06-05 13:29:48 +02:00
..
middleware refactor(agents): unify permissions into one vertical-slice package 2026-06-05 13:29:48 +02:00
subagents refactor(agents): unify permissions into one vertical-slice package 2026-06-05 13:29:48 +02:00
__init__.py test(hitl): regression net for surfsense_resume_value pop-on-read 2026-05-05 17:04:19 +02:00
test_prompt_resources.py refactor(agents): introduce chat/ category; dissolve top-level agents/shared 2026-06-05 12:54:02 +02:00
test_subagent_composition.py refactor(agents): introduce chat/ category; dissolve top-level agents/shared 2026-06-05 12:54:02 +02:00