genailit 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
genailit/__init__.py ADDED
@@ -0,0 +1,13 @@
1
+ from .adapters import AdapterContext, BaseAgentAdapter
2
+ from .events import GenAILitEvent
3
+ from .telemetry import TelemetryStore
4
+
5
+ __all__ = [
6
+ "AdapterContext",
7
+ "BaseAgentAdapter",
8
+ "GenAILitEvent",
9
+ "TelemetryStore",
10
+ ]
11
+
12
+ __version__ = "0.0.1"
13
+
@@ -0,0 +1,7 @@
1
+ from .base import AdapterContext, BaseAgentAdapter
2
+
3
+ __all__ = [
4
+ "AdapterContext",
5
+ "BaseAgentAdapter",
6
+ ]
7
+
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import ABC, abstractmethod
4
+ from dataclasses import dataclass, field
5
+ from collections.abc import Iterable, Mapping
6
+ from typing import Any
7
+
8
+ from ..events import GenAILitEvent
9
+ from ..telemetry import TelemetryStore
10
+
11
+
12
+ @dataclass(frozen=True, slots=True)
13
+ class AdapterContext:
14
+ session_id: str
15
+ telemetry: TelemetryStore | None = None
16
+ metadata: Mapping[str, Any] = field(default_factory=dict)
17
+
18
+ def with_metadata(self, **items: Any) -> "AdapterContext":
19
+ merged = dict(self.metadata)
20
+ merged.update(items)
21
+ return AdapterContext(
22
+ session_id=self.session_id,
23
+ telemetry=self.telemetry,
24
+ metadata=merged,
25
+ )
26
+
27
+
28
+ class BaseAgentAdapter(ABC):
29
+ @abstractmethod
30
+ def build_events(self, context: AdapterContext) -> Iterable[GenAILitEvent]:
31
+ raise NotImplementedError
32
+
33
+ def run(self, context: AdapterContext) -> tuple[GenAILitEvent, ...]:
34
+ events = tuple(self.build_events(context))
35
+ if context.telemetry is not None:
36
+ context.telemetry.extend(events)
37
+ return events
38
+
genailit/events.py ADDED
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
6
+
7
+
8
+ class GenAILitEvent(BaseModel):
9
+ model_config = ConfigDict(extra="forbid", frozen=True)
10
+
11
+ name: str
12
+ payload: dict[str, Any] = Field(default_factory=dict)
13
+
genailit/telemetry.py ADDED
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Iterable
4
+
5
+ from .events import GenAILitEvent
6
+
7
+
8
+ class TelemetryStore:
9
+ def __init__(self) -> None:
10
+ self._events: list[GenAILitEvent] = []
11
+
12
+ def record(self, event: GenAILitEvent) -> None:
13
+ self._events.append(event)
14
+
15
+ def extend(self, events: Iterable[GenAILitEvent]) -> None:
16
+ self._events.extend(events)
17
+
18
+ def snapshot(self) -> tuple[GenAILitEvent, ...]:
19
+ return tuple(self._events)
20
+
21
+ def clear(self) -> None:
22
+ self._events.clear()
23
+
@@ -0,0 +1,53 @@
1
+ Metadata-Version: 2.4
2
+ Name: genailit
3
+ Version: 0.0.1
4
+ Summary: Open source Python library for multi-agent web interfaces.
5
+ Requires-Python: >=3.10
6
+ Requires-Dist: pydantic>=2
7
+ Provides-Extra: dev
8
+ Requires-Dist: pytest; extra == 'dev'
9
+ Description-Content-Type: text/markdown
10
+
11
+ # GenAILit
12
+
13
+ GenAILit is a small Python base for building web interfaces for multi-agent systems.
14
+
15
+ This milestone only includes the package foundation:
16
+
17
+ - `GenAILitEvent`
18
+ - `TelemetryStore`
19
+ - `AdapterContext`
20
+ - `BaseAgentAdapter`
21
+
22
+ ## Requirements
23
+
24
+ - Python 3.10+
25
+ - `pydantic>=2`
26
+ - `pytest` for tests
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ pip install genailit
32
+ ```
33
+
34
+ ## Example
35
+
36
+ ```python
37
+ from genailit import AdapterContext, BaseAgentAdapter, GenAILitEvent, TelemetryStore
38
+
39
+
40
+ class EchoAdapter(BaseAgentAdapter):
41
+ def build_events(self, context: AdapterContext):
42
+ yield GenAILitEvent(name="ready")
43
+
44
+
45
+ telemetry = TelemetryStore()
46
+ context = AdapterContext(session_id="demo", telemetry=telemetry)
47
+ events = EchoAdapter().run(context)
48
+ ```
49
+
50
+ ## Scope
51
+
52
+ This milestone intentionally does not add LangGraph, React, CLI commands, or FastAPI application code.
53
+
@@ -0,0 +1,8 @@
1
+ genailit/__init__.py,sha256=0cDd9aj0eXEbOGNE6ykqidoKK6cGICnxQ_Sb6AFegeE,255
2
+ genailit/events.py,sha256=UJdWdU2S6PutyLWfYlS8XncP7A2aOCfKCDhCkG2VPpQ,277
3
+ genailit/telemetry.py,sha256=5YU3Sa7QYHNVnlrjtQVSklkhJxJz7jMra9r9vJQ4tEQ,548
4
+ genailit/adapters/__init__.py,sha256=JgQhzeREXjo-Ca7wnm4I6_7YmdVx_l7JTPshw8Dmt2Q,113
5
+ genailit/adapters/base.py,sha256=Cw7F0-_2L54elLiwX8WMIXjVjQgXVw4LMNmsMZ7P7gM,1121
6
+ genailit-0.0.1.dist-info/METADATA,sha256=RJeSE-NyL2VK7iU9WykkpTnbUCiCPS7gAzg2FmymRSA,1108
7
+ genailit-0.0.1.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
8
+ genailit-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any