Tool to send cross-session opencode messages, including as request-response pattern
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

implement session filter

rektide 5dcdd352 acb6818f

+41
+41
src/session/filter.ts
··· 1 + import { ActiveSession } from "./active.js"; 2 + 3 + export interface SessionFilter { 4 + busy?: boolean; 5 + idle?: boolean; 6 + retrying?: boolean; 7 + port?: number; 8 + sessionIDPattern?: string; 9 + minRetryAttempt?: number; 10 + } 11 + 12 + export async function* filterSessions( 13 + sessions: AsyncGenerator<ActiveSession>, 14 + filter: SessionFilter, 15 + ): AsyncGenerator<ActiveSession> { 16 + for await (const session of sessions) { 17 + if (filter.busy && session.status !== "busy") { 18 + continue; 19 + } 20 + if (filter.idle && session.status !== "idle") { 21 + continue; 22 + } 23 + if (filter.retrying && session.status !== "retry") { 24 + continue; 25 + } 26 + if (filter.port && session.port !== filter.port) { 27 + continue; 28 + } 29 + if (filter.sessionIDPattern && !session.sessionID.includes(filter.sessionIDPattern)) { 30 + continue; 31 + } 32 + if ( 33 + filter.minRetryAttempt && 34 + session.retryAttempt !== undefined && 35 + session.retryAttempt < filter.minRetryAttempt 36 + ) { 37 + continue; 38 + } 39 + yield session; 40 + } 41 + }