함수: createCapability()
function createCapability<TValue>(): <TName>(name) => Capability<TValue, TName>;
정의 위치: packages/ai/src/activities/chat/middleware/capabilities.ts:114
Capability를 생성합니다. [get, provide]로 구조 분해할 수 있으며, 그 자체가
requires/provides의 식별자 역할을 하는 하이브리드 핸들을 반환합니다.
값 타입은 명시적으로 제공하면서 이름 리터럴은 인수에서 추론되도록 커링합니다:
createCapability<T>()('name'). (한 번의 호출인 createCapability<T>('name')은 작동할 수 없습니다. T를 명시적으로 제공하면 TypeScript가 이름을 추론하지 못해 string으로 축약되고, 리터럴 이름을 기준으로 하는 컴파일 타임 적용 범위 검사가 무력화됩니다.)
타입 매개변수
TValue
TValue = unknown
반환값
<TName>(name) => Capability<TValue, TName>
예시
Provider + consumer 미들웨어
const counterCapability = createCapability<{ value: number }>()('counter')
const [getCounter, provideCounter] = counterCapability
const withCounter = defineChatMiddleware({
name: 'counter',
provides: [counterCapability],
setup(ctx) { provideCounter(ctx, { value: 0 }) },
})
const readsCounter = defineChatMiddleware({
name: 'reads-counter',
requires: [counterCapability],
onChunk(ctx) { getCounter(ctx).value++ },
})
chat({ adapter, messages, middleware: [withCounter, readsCounter] })
참고
Capability의 name은 앱 전체에서 고유해야 합니다. 컴파일 타임 적용 범위 추적은 이름
리터럴을 키로 사용하고, 런타임 키는 참조를 사용합니다.