mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-10-07 16:19:09 +00:00
Port five upstream PRs onto dev: - #1621 / #1658: durable dispatch with loopback webhook defense, create_durable_run helper, _config_with_prepare_run_id, degradation to None for relative/loopback completion webhook URLs - #1696: run-level completion webhook deduplication (replace claim-then-post with post-then-flag per run_id), DeferredErrorModel for graph-factory resilience, ToolRetryMiddleware for task subagents, TimeoutWrapupMiddleware for all three graphs - #1697: lazy-load __init__.py for agent.middleware, agent.tools, agent.dashboard (PEP 562); defer heavy imports (exa_py in web_search, agent.webapp in request_pr_review, deepagents in sandbox.py); add ttl_cache.py with stale-while-revalidate for tool loaders Refs: #137
20 lines
642 B
Python
20 lines
642 B
Python
"""Dashboard backend: OAuth, profiles, and admin endpoints for the open-swe UI.
|
|
|
|
``router`` is loaded lazily (PEP 562): importing any dashboard submodule
|
|
(e.g. ``agent.dashboard.options`` from middleware) executes this __init__,
|
|
and it must NOT drag in routes.py + FastAPI + every API/job module. Only the
|
|
webapp, which actually mounts the router, pays that cost.
|
|
"""
|
|
|
|
from typing import Any
|
|
|
|
__all__ = ["router"]
|
|
|
|
|
|
def __getattr__(name: str) -> Any:
|
|
if name == "router":
|
|
from .routes import router
|
|
|
|
globals()[name] = router
|
|
return router
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|