클래스: InMemoryRunStore
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:338
메모리 내 RunStore입니다. 단일 프로세스에서만 사용할 수 있습니다.
구현
생성자
생성자
new InMemoryRunStore(): InMemoryRunStore;
반환값
InMemoryRunStore
메서드
createOrResume()
createOrResume(input): Promise<RunRecord>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:341
실행 레코드를 생성하거나, runId가 이미 있으면 기존 레코드를 변경하지 않고 반환합니다.
불변 조건(멱등성): 기존 레코드는 변경하지 않고 반환하며 전달된 threadId/startedAt/status는 무시합니다. 따라서 실행을 안전하게 재개할 수 있습니다. 처음 생성할 때 status의 기본값은 'running'입니다.
매개변수
input
Pick<RunRecord, "threadId" | "runId" | "startedAt"> & object
반환값
Promise<RunRecord>
구현 대상
findActiveRun()
findActiveRun(threadId): Promise<RunRecord | null>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:404
threadId에 대한 가장 최근의 'running' 실행을 반환하며, 활성 실행이 없으면 null을 반환합니다.
필수입니다. 이 메서드는 단일 턴에서 여러 개 생성될 수 있는 일시적인 실행 ID와 무관하게, 클라이언트를 재연결할 때(새로 고침하거나 같은 스레드를 다른 기기에서 여는 경우) 영속적인 기반이 되는 안정적인 스레드 ID를 사용해 "이 스레드에 연결할 활성 실행이 있는가?"를 확인합니다. 둘 이상의 실행이 'running'이면 startedAt이 가장 큰 실행이 선택됩니다.
이 메서드가 null을 반환하도록만 구현된 백엔드는 재연결을 조용히 비활성화합니다. 유휴 스레드에 대한 올바른 답도 null이기 때문입니다. 실행 수명 주기가 전혀 없는 백엔드는 대신 전체 runs 스토어를 생략해야 합니다. 기능 수준은 메서드 수준이 아니라 스토어 수준에 속합니다.
매개변수
threadId
string
반환값
Promise<RunRecord | null>
구현
get()
get(runId): Promise<RunRecord | null>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:379
현재 레코드를 반환하며, 알 수 없는 경우 null을 반환합니다.
매개변수
runId
string
반환값
Promise<RunRecord | null>
구현 대상
listByThread()
listByThread(threadId): Promise<RunRecord[]>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:383
대화의 모든 실행을 startedAt 오름차순으로 반환합니다. 선택 사항이며, 스레드의 과거 에이전트 활동을 렌더링할 때만 필요합니다. 소비자는 기능 감지를 수행합니다.
매개변수
threadId
string
반환값
Promise<RunRecord[]>
구현 대상
listReclaimable()
listReclaimable(opts): Promise<RunRecord[]>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:390
회수할 수 있는 실행은 status === 'running'이고 detachedSince가 설정되어 있으며 detachedSince <= now - ttlMs인 세 조건을 모두 만족합니다. 기준 시각은 포함됩니다. 정확히 now - ttlMs에 분리된 실행은 회수할 수 있습니다.
선택 사항이며, 리퍼가 사용할 때만 필요합니다. 소비자는 기능 감지를 수행합니다.
detachedSince는 withSandbox의 분리 경로에서 설정됩니다(RunRecord.detachedSince 참조). 후보 순회 작업은 @tanstack/ai-sandbox의 reapDetachedRuns입니다. 이 함수는 완료된 실행을 마무리하고 TTL이 지난 실행을 만료시키며 샌드박스를 회수합니다. 애플리케이션이 이를 호출해야 합니다(cron, 큐, alarm(), waitUntil). 이 메서드를 생략한 백엔드는 리핑할 수 없습니다.
매개변수
opts
now
number
ttlMs
number
반환값
Promise<RunRecord[]>
구현 대상
update()
update(runId, patch): Promise<void>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:358
레코드의 변경 가능한 필드를 패치합니다.
불변 조건: 알 수 없는 runId를 업데이트하면 아무 작업도 수행하지 않아야 하며, 오류를 발생시키거나 레코드를 생성해서는 안 됩니다.
매개변수
runId
string
patch
Partial<Pick<RunRecord,
| "status"
| "finishedAt"
| "error"
| "usage"
| "sandboxKey"
| "detachedSince"
| "cancelRequested"
| "driverEpoch">>
반환값
Promise<void>