- harness/es.py: append-only event store + проекции (образец — кооп-портал) - harness/levels.py: уровни 1с/1м/1ч/1д, контекст ∝ масштабу - harness/scheduler.py: уровневые потоки, идемпотентные тики, absorbed-стабы - harness/isolated_runner.py + _llm_worker.py: LLM-тик в сабпроцессе (глобальный asyncio-рантайм Strands не переживает 2+ create_harness) - cli.py: init/task/tasks/status/events + requeue (написан самим минутным агентом) - 9router: отдельный ключ sk-simbiot, модель auto (glm-5.3 первым)
51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
# Copyright The OpenTelemetry Authors
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
from opentelemetry.context import Context
|
|
from opentelemetry.util.types import Attributes
|
|
|
|
|
|
class Observation:
|
|
"""A measurement observed in an asynchronous instrument
|
|
|
|
Return/yield instances of this class from asynchronous instrument callbacks.
|
|
|
|
Args:
|
|
value: The float or int measured value
|
|
attributes: The measurement's attributes
|
|
context: The measurement's context
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
value: float,
|
|
attributes: Attributes = None,
|
|
context: Context | None = None,
|
|
) -> None:
|
|
self._value = value
|
|
self._attributes = attributes
|
|
self._context = context
|
|
|
|
@property
|
|
def value(self) -> float | int:
|
|
return self._value
|
|
|
|
@property
|
|
def attributes(self) -> Attributes:
|
|
return self._attributes
|
|
|
|
@property
|
|
def context(self) -> Context | None:
|
|
return self._context
|
|
|
|
def __eq__(self, other: object) -> bool:
|
|
return (
|
|
isinstance(other, Observation)
|
|
and self.value == other.value
|
|
and self.attributes == other.attributes
|
|
and self.context == other.context
|
|
)
|
|
|
|
def __repr__(self) -> str:
|
|
return f"Observation(value={self.value}, attributes={self.attributes}, context={self.context})"
|