mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-04-25 11:18:22 +00:00
Add app/infra/ package with: - storage/ - repository adapters for runs, run_events, thread_meta - run_events/ - JSONL-based event store with factory - stream_bridge/ - memory and redis adapters for SSE streaming This layer provides the persistence abstractions used by the gateway services, replacing the old deerflow/persistence modules. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Redis-backed stream bridge placeholder owned by the app layer."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import AsyncIterator
|
|
from typing import Any
|
|
|
|
from deerflow.runtime.stream_bridge import StreamBridge, StreamEvent
|
|
|
|
|
|
class RedisStreamBridge(StreamBridge):
|
|
"""Reserved app-owned Redis implementation.
|
|
|
|
Phase 1 intentionally keeps Redis out of the harness package. The concrete
|
|
implementation will live here once cross-process streaming is introduced.
|
|
"""
|
|
|
|
def __init__(self, *, redis_url: str) -> None:
|
|
self._redis_url = redis_url
|
|
|
|
async def publish(self, run_id: str, event: str, data: Any) -> str:
|
|
raise NotImplementedError("Redis stream bridge will be implemented in app infra")
|
|
|
|
async def publish_end(self, run_id: str) -> str:
|
|
raise NotImplementedError("Redis stream bridge will be implemented in app infra")
|
|
|
|
def subscribe(
|
|
self,
|
|
run_id: str,
|
|
*,
|
|
last_event_id: str | None = None,
|
|
heartbeat_interval: float = 15.0,
|
|
) -> AsyncIterator[StreamEvent]:
|
|
raise NotImplementedError("Redis stream bridge will be implemented in app infra")
|
|
|
|
async def cleanup(self, run_id: str, *, delay: float = 0) -> None:
|
|
raise NotImplementedError("Redis stream bridge will be implemented in app infra")
|