Primitives / foldkit-primitives/events

Idle

const · packages/primitives/src/events/idle.ts:33

Args{ timeoutMs: number }
Model{ idle: boolean }
MessagesBecameIdle, BecameActive
Its full type
const Idle: Bundle.Bundle<
  'Idle',
  { readonly timeoutMs: number },
  { readonly idle: boolean },
  { readonly _tag: 'BecameIdle' } | { readonly _tag: 'BecameActive' },
  never,
  never,
  never,
  void,
  {},
  {}
>

Idleness as a bundle: idle in the Model, flipped by activity and silence. While active, activity debounced past timeoutMs settles to BecameIdle; while idle, the first activity wakes to BecameActive and the dependency flip restarts the watch. Starts active — a lurker idles when the timeout elapses. The clock is Effect's, so tests drive it with TestClock.

In the guides