MCPcopy Create free account
hub / github.com/HKUDS/AgentSpace / selectFallbackQueuedTaskForRuntime

Function selectFallbackQueuedTaskForRuntime

packages/db/src/task-queue.ts:852–914  ·  view source on GitHub ↗
(
  db: ReturnType<typeof getDatabase>,
  runtimeId: string,
  workspaceId?: string,
)

Source from the content-addressed store, hash-verified

850}
851
852function selectFallbackQueuedTaskForRuntime(
853 db: ReturnType<typeof getDatabase>,
854 runtimeId: string,
855 workspaceId?: string,
856): { row: Record<string, unknown>; reason: string } | null {
857 const runtime = readAgentRuntimeSync(runtimeId);
858 if (!runtime || runtime.status !== "online") {
859 return null;
860 }
861 const rows = db.prepare(
862 `SELECT
863 q.id,
864 q.runtime_id AS runtimeId,
865 q.workspace_id AS workspaceId,
866 q.requested_by_user_id AS requestedByUserId,
867 r.status AS selectedRuntimeStatus,
868 r.provider AS selectedProvider
869 FROM agent_task_queue q
870 JOIN agent_runtime r ON r.id = q.runtime_id
871 WHERE q.status = 'queued'
872 AND q.runtime_id <> ?
873 ${typeof workspaceId === "string" ? "AND q.workspace_id = ?" : ""}
874 ORDER BY q.priority DESC, q.created_at ASC
875 LIMIT 20`,
876 ).all(...(typeof workspaceId === "string" ? [runtimeId, workspaceId] : [runtimeId])) as Array<Record<string, unknown>>;
877
878 for (const row of rows) {
879 if (row.workspaceId !== runtime.workspaceId) {
880 continue;
881 }
882 if (row.selectedRuntimeStatus === "online") {
883 continue;
884 }
885 const requesterUserId = typeof row.requestedByUserId === "string" ? row.requestedByUserId : undefined;
886 if (requesterUserId && !canUserUseRuntimeSync(runtime.workspaceId, runtime.id, requesterUserId)) {
887 continue;
888 }
889 const selectedProvider = typeof row.selectedProvider === "string" ? row.selectedProvider : undefined;
890 if (
891 selectedProvider &&
892 runtime.provider !== selectedProvider &&
893 existsUsableOnlineRuntimeForProvider({
894 db,
895 workspaceId: runtime.workspaceId,
896 provider: selectedProvider,
897 requesterUserId,
898 })
899 ) {
900 continue;
901 }
902 return {
903 row,
904 reason:
905 selectedProvider && runtime.provider !== selectedProvider
906 ? `preferred runtime ${String(row.runtimeId)} is offline and no usable ${selectedProvider} runtime is online`
907 : requesterUserId
908 ? `preferred runtime ${String(row.runtimeId)} is offline and requester can use ${runtime.id}`
909 : `preferred runtime ${String(row.runtimeId)} is offline`,

Callers 1

Calls 5

readAgentRuntimeSyncFunction · 0.90
canUserUseRuntimeSyncFunction · 0.90
allMethod · 0.80
prepareMethod · 0.80

Tested by

no test coverage detected