UNPKG

@langchain/langgraph-sdk

Version:

Client library for interacting with the LangGraph API

74 lines (73 loc) • 1.81 kB
//#region src/ui/queue.ts /** * Tracks pending server-side runs created via `multitaskStrategy: "enqueue"`. * * Uses the same subscribe/getSnapshot pattern as StreamManager * to integrate with framework-specific reactivity systems. */ var PendingRunsTracker = class { pending = []; listeners = /* @__PURE__ */ new Set(); /** * Add a pending run entry. */ add(entry) { this.pending.push(entry); this.notifyListeners(); } /** * Remove and return the next pending entry (FIFO). */ shift() { const entry = this.pending.shift(); if (entry) this.notifyListeners(); return entry; } /** * Remove a specific entry by ID. * @returns true if the entry was found and removed. */ remove = (id) => { const index = this.pending.findIndex((e) => e.id === id); if (index === -1) return false; this.pending.splice(index, 1); this.notifyListeners(); return true; }; /** * Remove all entries from the tracker. * @returns The removed entries (for server-side cancellation). */ removeAll = () => { if (this.pending.length === 0) return []; const entries = [...this.pending]; this.pending = []; this.notifyListeners(); return entries; }; /** Read-only snapshot of all pending entries. */ get entries() { return this.pending; } /** Number of pending entries. */ get size() { return this.pending.length; } /** Subscribe to state changes. Returns an unsubscribe function. */ subscribe = (listener) => { this.listeners.add(listener); return () => { this.listeners.delete(listener); }; }; /** Snapshot token for useSyncExternalStore compatibility. */ getSnapshot = () => { return this.pending.length; }; notifyListeners() { for (const listener of this.listeners) listener(); } }; //#endregion export { PendingRunsTracker }; //# sourceMappingURL=queue.js.map