인터페이스: RunRecord
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:106
단일 실행을 위한 내구성 있는 기록입니다.
속성
cancelRequested?
optional cancelRequested?: boolean;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:151
명시적인 대역 외 취소로 설정되며, 단순한 클라이언트 연결 해제와 구분해야 합니다 (둘 다 동일한 TCP 종료를 발생시키므로 연결 해제만으로 의도를 추론할 수 없습니다).
requestRunCancel이 기록하고 wasCancelRequested가 읽습니다(둘 다 ../cancel에
있음). 의도적으로 상태가 아닙니다. 의도를 기록하는 것은 실행이 중지된 것과 같지
않으며, 실행이 중지된 시점은 driver만 알 수 있습니다.
detachedSince?
optional detachedSince?: number;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:141
마지막 뷰어가 연결 해제된 시점의 Epoch 밀리초이며, 누군가 연결되어 있으면 없습니다.
연결 해제로 에이전트가 계속 실행되고 샌드박스가 해제되지 않을 때
withSandbox의 연결 해제 경로(@tanstack/ai-sandbox의 middleware.ts에 있는
onAbort)가 sandboxKey와 함께 기록합니다. 백엔드는 이 필드를 왕복 처리해야
합니다. listReclaimable이 이 필드에 의존하며, @tanstack/ai-sandbox의
reapDetachedRuns가 이 필드가 표시하는 후보를 정리합니다(해당 메서드의 문서
주석 참조).
driverEpoch?
optional driverEpoch?: number;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:161
실행 driver를 위한 단조 증가 펜싱 토큰입니다. 실행을 성공적으로 클레임한 각 호스트가
증가시키므로(@tanstack/ai-sandbox의 withRunClaim 참조), 대체된 호스트는 저장된
값과 자신이 보유한 값을 비교하여 패배했음을 확인할 수 있습니다.
잠금만으로는 이를 제공할 수 없습니다. 잠금은 승자에게 승리했음을 알리지만 패자에게 읽을 값을 제공하지 않기 때문입니다. 한 번도 클레임되지 않은 실행에는 없습니다.
error?
optional error?: RunError;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:120
finishedAt?
optional finishedAt?: number;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:119
runId
runId: string;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:107
sandboxKey?
optional sandboxKey?: string;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:131
샌드박스에서 실행될 때 이 실행이 바인딩된 복합 샌드박스 키입니다. 이후의 회수자가
키를 다시 계산하지 않고 해제할 샌드박스를 식별할 수 있도록 기록합니다.
연결 해제로 샌드박스를 삭제하지 않고 실행이 분리된 상태로 남을 때
withSandbox의 연결 해제 경로(@tanstack/ai-sandbox의 middleware.ts에 있는
onAbort)가 detachedSince와 동시에 기록합니다. 백엔드는 이 필드를 왕복 처리해야
합니다. 최종적으로 누가 읽는지는 아래의 listReclaimable을 참조하세요.
startedAt
startedAt: number;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:118
status
status: RunStatus;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:117
threadId
threadId: string;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:116
이 실행이 속한 대화이며, Scope.threadId입니다.
생성 작업(대화가 없는 일회성 generate() 호출)은 threadId = requestId로 위장하여
이 레코드를 재사용해서는 안 됩니다. 별도의 작업 저장소가 필요합니다.
현재 withGenerationPersistence가 정확히 그렇게 하며 자신을 임시방편으로 규정하므로
이를 복사하지 마세요.
usage?
optional usage?: TokenUsage<ProviderUsageDetails>;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:121