CI / test (push) Canceled after 0s
## Summary epic r04 - begin refactor ## Change Type - [x] Cowork feature - [ ] Bug fix - [ ] Core AI contribution - [ ] Test / hardening - [ ] Performance - [ ] Documentation ## Related Work Cowork Task: Core Repo: http://34.143.229.138/gitea-admin/fsg-ai-core-assets Core AI Issue: Core Task: Related PR: ## Scope What is intentionally included? What is intentionally NOT included? ## Validation - [ ] Unit tests - [ ] Integration tests - [ ] Manual verification - [ ] Regression check Commands / evidence: ## Security Impact Permission / credential / network / customer data impact: ## Compatibility - [ ] No breaking change - [ ] Breaking change documented ## Reviewer Notes Anything Cowork reviewers should pay attention to. --------- Co-authored-by: Anh Tran Nguyen Minh <anhtnm1@fpt.com> Co-authored-by: Huong Le Thi Thien <huongltt35@fpt.com> Co-authored-by: Nam Pham Dinh Thanh <nampdt@fpt.com> Co-authored-by: Vu Dam Tuan <vudt15@fpt.com> Co-authored-by: Hiep Ha Van <hiephv3@fpt.com> Co-authored-by: Lam Hoang Van <lamhv7@fpt.com> Reviewed-on: #7 Co-authored-by: Duy Le Huu <duylh19@fpt.com>
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
"""Application model routing package: model route decisions and multi-provider balancing.
|
|
|
|
Public surface (R03-T03 — the single routing entry point every chat surface uses):
|
|
|
|
* :class:`RoutingApplicationService` — decides one turn's provider/model.
|
|
* :class:`RoutingRequest` / :class:`RoutingOutcome` — the immutable DTOs in and out.
|
|
* :class:`RoutingMode` — Off / Auto / Manual / Fallback.
|
|
* :func:`build_routing_application_service` — wires the service to a live
|
|
``AppContext`` (engine + per-workspace mode + confirm timeout).
|
|
|
|
Typical call site (see ``ui/chat_panel.py::_apply_routing``)::
|
|
|
|
service = build_routing_application_service(self.ctx)
|
|
outcome = service.resolve(
|
|
RoutingRequest(surface="cowork", prompt=text,
|
|
current_provider=provider, current_model=model),
|
|
confirm=lambda decision, timeout: confirm_switch(self, decision, timeout),
|
|
)
|
|
|
|
Only ``core_routing_adapter`` touches ``core/routing``; the service and the DTOs
|
|
stay pure Python so the whole rule set is testable without Qt or the engine.
|
|
"""
|
|
|
|
from .core_routing_adapter import (
|
|
AppContextModeResolver,
|
|
CoreRoutingEngine,
|
|
build_routing_application_service,
|
|
)
|
|
from .routing_application_service import (
|
|
ConfirmationCallback,
|
|
ModeResolver,
|
|
RoutingApplicationService,
|
|
RoutingDecisionPort,
|
|
)
|
|
from .routing_models import (
|
|
RouteEvaluation,
|
|
RoutingMode,
|
|
RoutingOutcome,
|
|
RoutingRequest,
|
|
)
|
|
|
|
__all__ = [
|
|
"AppContextModeResolver",
|
|
"ConfirmationCallback",
|
|
"CoreRoutingEngine",
|
|
"ModeResolver",
|
|
"RouteEvaluation",
|
|
"RoutingApplicationService",
|
|
"RoutingDecisionPort",
|
|
"RoutingMode",
|
|
"RoutingOutcome",
|
|
"RoutingRequest",
|
|
"build_routing_application_service",
|
|
]
|