MCPcopy
hub / github.com/anomalyco/opencode / waitUntilSynced

Function waitUntilSynced

packages/opencode/src/control-plane/workspace.ts:898–917  ·  view source on GitHub ↗
(input: {
  db: Database.Interface["db"]
  workspaceID: WorkspaceV2.ID
  state: Record<string, number>
  signal?: AbortSignal
  timeout: number
})

Source from the content-addressed store, hash-verified

896}
897
898function waitUntilSynced(input: {
899 db: Database.Interface["db"]
900 workspaceID: WorkspaceV2.ID
901 state: Record<string, number>
902 signal?: AbortSignal
903 timeout: number
904}): Effect.Effect<void, unknown> {
905 return Effect.suspend(() =>
906 waitEvent({
907 timeout: input.timeout,
908 signal: input.signal,
909 fn(event) {
910 return event.workspace === input.workspaceID || event.payload.type === "sync"
911 },
912 }).pipe(
913 Effect.andThen(synced(input.db, input.state)),
914 Effect.flatMap((done): Effect.Effect<void, unknown> => (done ? Effect.void : waitUntilSynced(input))),
915 ),
916 )
917}
918
919function synced(db: Database.Interface["db"], state: Record<string, number>): Effect.Effect<boolean> {
920 const ids = Object.keys(state)

Callers 1

workspace.tsFile · 0.85

Calls 2

waitEventFunction · 0.90
syncedFunction · 0.85

Tested by

no test coverage detected