본문으로 건너뛰기

Interface: StreamDurability<TOffset>

정의 위치: packages/ai/src/stream-durability.ts:10

플러그인 방식으로 연결할 수 있는 전달 내구성 백엔드입니다.

오프셋은 어댑터가 소유하며 전송 계층에는 불투명합니다. 제네릭 매개변수를 사용하면 코어가 커서 형식을 이해하지 않아도 어댑터가 append, read, resume 전반에서 브랜드가 지정된 문자열 타입을 유지할 수 있습니다.

확장됨

타입 매개변수

TOffset

TOffset extends string = string

속성

append

append: (chunks) => Promise<TOffset[]>;

정의 위치: packages/ai/src/stream-durability.ts:17

배치를 전달하기 전에 영속화하고 각 청크에 대해 재개 가능한 오프셋을 정확히 하나씩 같은 순서로 반환합니다.

매개변수

chunks

AGUIEvent[]

반환값

Promise&lt;TOffset[]>


close

close: () => Promise<void>;

정의 위치: packages/ai/src/stream-durability.ts:27

생산자 로그를 종료 상태로 만들고 실시간 리더의 차단을 해제합니다. 코어는 완료, 취소, 실패를 포함한 모든 생산자 종료 시 이 작업을 기다립니다.

반환값

Promise&lt;void>


read

read: (offset, signal?) => AsyncIterable<{
chunk: AGUIEvent;
offset: TOffset;
}>;

정의 위치: packages/ai/src/stream-durability.ts:19

제공된 어댑터 소유 오프셋보다 엄격히 이후의 청크를 재생합니다.

매개변수

offset

TOffset

signal?

AbortSignal

반환값

AsyncIterable&lt;{ chunk: AGUIEvent; offset: TOffset; }>


resumeFrom

resumeFrom: () => TOffset | null;

정의 위치: packages/ai/src/stream-durability.ts:12

요청에서 캡처한 어댑터 오프셋을 반환하며, 생산자인 경우 null을 반환합니다.

반환값

TOffset | null


snapshot

snapshot: () => Promise<object[]>;

정의 위치: packages/ai/src/stream-durability.ts:57

호출 시점에 이 실행에 저장된 모든 항목을 append 순서로 반환한 후 resolve합니다.

이는 StreamDurability.read에 대응하는 제한된 읽기입니다. read는 로그가 종료되거나 호출자가 중단할 때까지 대기하므로, close를 호출하지 않고 생산자가 종료된 로그를 검사하는 데 사용할 수 없습니다. 해당 로그는 영원히 열린 상태로 남아 그 위의 for await가 끝나지 않습니다. snapshot은 바로 이 경우를 위해 존재합니다. 실행을 재개하는 생산자는 이전 호스트가 이미 저장한 접두사를 확인하여 자신의 출력을 그에 맞춰야 하며, 해당 읽기가 반환되어야 합니다.

구현은 반드시 다음을 충족해야 합니다.

  • 더 많은 항목을 절대 기다리지 않고, 로그가 아직 열려 있고 계속 append되는 중인 경우를 포함하여 저장된 내용으로 resolve해야 합니다.
  • 저장된 내용이 없는 실행에서는 예외를 발생시키지 말고 빈 배열로 resolve해야 합니다. 특히 구현은 처음부터 시작하는 read 참여가 사용하는 알 수 없는 실행 실패 경로를 재사용해서는 안 됩니다(빈 로그의 read('-1')는 실패할 수 있지만 snapshot()은 실패해서는 안 됩니다). 네트워크를 사용하는 백엔드는 전송, 프로토콜 또는 인증 실패 시 거부할 수 있습니다. 이는 빈 실행이 아니라 실패한 호출입니다.
  • 호출자가 보관하거나 변경해도 이를 통해 저장된 로그에 접근할 수 없는 새로운 배열을 반환해야 합니다.

결과는 특정 시점의 뷰이며 잠금을 포함하지 않습니다. 동시 실행 중인 append가 스냅샷 직후 반영될 수 있으므로 호출자는 마지막으로 반환된 오프셋을 영구적인 끝으로 간주해서는 안 됩니다.

반환값

Promise&lt;object[]>