feat(telemetry): add isolated beta quality diagnostics and release identity

This commit is contained in:
dadachann
2026-09-15 09:35:01 +00:00
parent 91d6de8858
commit f8123ead0a
89 changed files with 4205 additions and 175 deletions
@@ -2,6 +2,8 @@
from __future__ import annotations
from ..telemetry import diagnostics
from typing import Any, Union
import json
import time
@@ -302,6 +304,7 @@ async def _validate_agent_run_session(
if not available_apis.get(api_capability, False) and not has_admin_permission:
return None, handler.ActionResponse.error(message=f'{api_name} access not authorized')
diagnostics.link_context(session.get('_diagnostic_context'))
return session, None
+7
View File
@@ -1,6 +1,8 @@
# For connect to plugin runtime.
from __future__ import annotations
from langbot.pkg.telemetry import diagnostics
import asyncio
import contextlib
import contextvars
@@ -668,6 +670,7 @@ class PluginRuntimeConnector(ManagedRuntimeConnector):
}
)
@diagnostics.observe('lifecycle', 'runtime.prepare_connected_runtime', source='runtime', stage='execute')
async def _prepare_connected_runtime(self) -> None:
"""Handshake follow-up: pin OSS compatibility, then replay authority."""
@@ -853,6 +856,7 @@ class PluginRuntimeConnector(ManagedRuntimeConnector):
self.schedule_reconnect()
failures = 0
@diagnostics.observe('lifecycle', 'runtime.initialize', source='runtime', stage='execute')
async def initialize(self):
if not self.is_enable_plugin:
self.ap.logger.info('Plugin system is disabled.')
@@ -1705,6 +1709,7 @@ class PluginRuntimeConnector(ManagedRuntimeConnector):
)
return plugin_package, latest_version
@diagnostics.observe('lifecycle', 'runtime.install_plugin', source='runtime', stage='execute')
async def install_plugin(
self,
install_source: PluginInstallSource,
@@ -1820,6 +1825,7 @@ class PluginRuntimeConnector(ManagedRuntimeConnector):
task_context.set_current_action('plugin updated' if operation == 'upgrade' else 'plugin installed')
task_context.metadata['progress_percent'] = 100
@diagnostics.observe('lifecycle', 'runtime.upgrade_plugin', source='runtime', stage='execute')
async def upgrade_plugin(
self,
plugin_author: str,
@@ -1846,6 +1852,7 @@ class PluginRuntimeConnector(ManagedRuntimeConnector):
)
return {}
@diagnostics.observe('lifecycle', 'runtime.delete_plugin', source='runtime', stage='execute')
async def delete_plugin(
self,
plugin_author: str,
+12 -4
View File
@@ -1,5 +1,7 @@
from __future__ import annotations
from ..telemetry import diagnostics
import asyncio
import inspect
import typing
@@ -639,6 +641,7 @@ class RuntimeConnectionHandler(handler.Handler):
avoids reserving one pooled connection across provider and network waits.
"""
diagnostics.annotate(workspace_uuid=action_context.workspace_uuid)
persistence_mgr = getattr(self.ap, 'persistence_mgr', None)
if persistence_mgr is None:
yield
@@ -687,10 +690,13 @@ class RuntimeConnectionHandler(handler.Handler):
return
if trusted_plugin_identity is not None:
safe_data['caller_plugin_identity'] = trusted_plugin_identity
async for response in _action_handler(safe_data):
yield response
async with contextlib.aclosing(_action_handler(safe_data)) as responses:
async for response in responses:
yield response
self.actions[action_name] = secured_stream_action
self.actions[action_name] = diagnostics.observe(
'api', 'host.' + action_name, source='plugin', ap=self.ap
)(secured_stream_action)
continue
async def secured_action(
@@ -719,7 +725,9 @@ class RuntimeConnectionHandler(handler.Handler):
response = await response
return response
self.actions[action_name] = secured_action
self.actions[action_name] = diagnostics.observe('api', 'host.' + action_name, source='plugin', ap=self.ap)(
secured_action
)
async def _get_plugin_setting(
self,