mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-09 12:40:59 +00:00
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
|
|
import quart
|
|
|
|
from ...authz import Permission
|
|
from ...context import RequestContext
|
|
from .. import group
|
|
|
|
|
|
@group.group_class('logs', '/api/v1/logs')
|
|
class LogsRouterGroup(group.RouterGroup):
|
|
async def initialize(self) -> None:
|
|
@self.route('', methods=['GET'], permission=Permission.AUDIT_VIEW)
|
|
async def _(request_context: RequestContext) -> str:
|
|
# The process log is instance-global. It is safe to expose only in
|
|
# the OSS singleton Workspace; SaaS must use Workspace-scoped
|
|
# observability records instead of leaking another tenant's lines.
|
|
await self.ap.workspace_service.get_local_execution_binding(
|
|
request_context.workspace_uuid,
|
|
expected_generation=request_context.placement_generation,
|
|
)
|
|
start_page_number = int(quart.request.args.get('start_page_number', 0))
|
|
start_offset = int(quart.request.args.get('start_offset', 0))
|
|
|
|
logs_str, end_page_number, end_offset = self.ap.log_cache.get_log_by_pointer(
|
|
start_page_number=start_page_number, start_offset=start_offset
|
|
)
|
|
|
|
return self.success(
|
|
data={
|
|
'logs': logs_str,
|
|
'end_page_number': end_page_number,
|
|
'end_offset': end_offset,
|
|
}
|
|
)
|