PERF/RESILIENCE: instrument and isolate slow plugin extension hooks on critical UI/runtime paths #167
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/a0-symbolics#167
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
Both backend and frontend extension dispatch are intentionally powerful but currently execute extensions serially with no latency budget or timeout/diagnostic boundary.
Backend (
helpers/extension.py::call_extensions_async):Frontend (
webui/js/extensions.js::callJsExtensions):These dispatchers are used on latency-critical paths, including WebUI socket pushes/snapshot application, message/response streaming hooks, component behavior, and core agent loop extension points. A slow or never-resolving plugin can therefore make the entire core path appear hung even when Agent Zero itself is healthy.
Full plugin UI control must remain possible; the solution is not to delete extension hooks. The system needs observability, declared semantics, and failure containment appropriate to each hook.
Direction
Classify extension points by contract:
Add per-extension timing and diagnostics so users can see which plugin is making the UI/agent slow.
For hooks where a timeout would break valid plugin semantics, surface a watchdog warning rather than silently canceling. For observer hooks, consider asynchronous isolation/concurrency with explicit ordering rules.
Acceptance
Mirrored from
lost-rob0t/a0-symbolics#29via tracker sync.