변수: RunDetachedCapability
const RunDetachedCapability: Capability<true, "run-detached">;
정의 위치: packages/ai/src/activities/chat/middleware/run-store.ts:329
이 실행의 정리가 실제로 분리를 수행했는지를 나타냅니다. 연결 끊김을 견뎠고 에이전트가 계속 작업 중이며, 나중에 연결하여 실행을 인계할 수 있습니다.
DetachableRunCapability의 과거형 대응 항목이며, 둘을 혼동해서는 안 됩니다.
- detachABLE은
setup에서 공개되며 연결 끊김을 견딜 수도 있음만을 나타냅니다(RunStore와 영속 로그가 연결됨). - detachED는 실제로 호출을 수행하는 미들웨어가 ABORT 경로에서 공개합니다. 즉, 대역 외 취소 영역 두 가지(
AbortInfo.cancelRequested와 레코드의wasCancelRequested) 및detachOnDisconnect를 모두 확인한 유일한 주체인withSandbox의onAbort입니다. 명시적 취소, 분리할 수 없는 연결 끊김, 오류 및 정상 완료에서는 모두 공개되지 않습니다.
소비자는 stream-to-response.ts의 영속 DELIVERY 싱크입니다. 분리된 실행의 로그는 인계가 계속될 수 있도록 OPEN 상태로 유지하고 종료 처리하지 않아야 합니다(../../../delivery-detach의 wasRunDetached 참조). 채팅 스트림의 for await가 생성기의 return()을 기다리고, 따라서 전체 onAbort 체인을 기다린 후 싱크 자체의 finally가 실행되므로 안전하고 경쟁 조건 없이 읽을 수 있습니다.
{ optional: true }로 읽습니다. 없으면 "분리되지 않음"을 의미하며, 이는 다른 모든 종료 경로와 영속성을 연결하지 않은 모든 앱에 해당합니다.
DetachableRunCapability와 같은 이유로 boolean이 아니라 true로 타입이 지정됩니다. 부재만이 유일한 부정이므로 false를 공개하는 것은 표현할 수 없어야 합니다.