Buckets:
| import type { PermissionRequest, QuestionRequest, Session } from "@opencode-ai/sdk/v2/client" | |
| function sessionTreeRequest<T>( | |
| session: Session[], | |
| request: Record<string, T[] | undefined>, | |
| sessionID?: string, | |
| include: (item: T) => boolean = () => true, | |
| ) { | |
| if (!sessionID) return | |
| const map = session.reduce((acc, item) => { | |
| if (!item.parentID) return acc | |
| const list = acc.get(item.parentID) | |
| if (list) list.push(item.id) | |
| if (!list) acc.set(item.parentID, [item.id]) | |
| return acc | |
| }, new Map<string, string[]>()) | |
| const seen = new Set([sessionID]) | |
| const ids = [sessionID] | |
| for (const id of ids) { | |
| const list = map.get(id) | |
| if (!list) continue | |
| for (const child of list) { | |
| if (seen.has(child)) continue | |
| seen.add(child) | |
| ids.push(child) | |
| } | |
| } | |
| const id = ids.find((id) => request[id]?.some(include)) | |
| if (!id) return | |
| return request[id]?.find(include) | |
| } | |
| export function sessionPermissionRequest( | |
| session: Session[], | |
| request: Record<string, PermissionRequest[] | undefined>, | |
| sessionID?: string, | |
| include?: (item: PermissionRequest) => boolean, | |
| ) { | |
| return sessionTreeRequest(session, request, sessionID, include) | |
| } | |
| export function sessionQuestionRequest( | |
| session: Session[], | |
| request: Record<string, QuestionRequest[] | undefined>, | |
| sessionID?: string, | |
| include?: (item: QuestionRequest) => boolean, | |
| ) { | |
| return sessionTreeRequest(session, request, sessionID, include) | |
| } | |
Xet Storage Details
- Size:
- 1.45 kB
- Xet hash:
- 3a32dc2dd9b526e2e400a898ac362c2daa36c816bf6559282cace091b4d9ad4e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.