feat(api): match /assistants search parameters, pagination (#1679)

Co-authored-by: David Duong <david@duong.cz>
This commit is contained in:
Isaac Francisco
2025-09-19 17:12:43 -07:00
committed by GitHub
parent ded7aaa8d5
commit e23fa7f5c4
4 changed files with 43 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@langchain/langgraph-api": patch
---
Add support for `sort_by`, `sort_order` and `select` when searching for assistants and add support for pagination headers.
+25 -3
View File
@@ -80,16 +80,38 @@ api.post(
metadata: payload.metadata,
limit: payload.limit ?? 10,
offset: payload.offset ?? 0,
sort_by: payload.sort_by,
sort_order: payload.sort_order,
select: payload.select,
},
c.var.auth
)) {
result.push(item.assistant);
result.push(
Object.fromEntries(
Object.entries(item.assistant).filter(
([k]) => !payload.select || payload.select.includes(k)
)
)
);
if (total === 0) {
total = item.total;
}
}
c.res.headers.set("X-Pagination-Total", total.toString());
if (total === payload.limit) {
c.res.headers.set(
"X-Pagination-Next",
((payload.offset ?? 0) + total).toString()
);
c.res.headers.set(
"X-Pagination-Total",
((payload.offset ?? 0) + total + 1).toString()
);
} else {
c.res.headers.set(
"X-Pagination-Total",
((payload.offset ?? 0) + total).toString()
);
}
return c.json(result);
}
);
+5
View File
@@ -296,6 +296,11 @@ export const AssistantSearchRequest = z
.gte(0)
.describe("Offset to start from.")
.optional(),
sort_by: z
.enum(["assistant_id", "graph_id", "created_at", "updated_at", "name"])
.optional(),
sort_order: z.enum(["asc", "desc"]).optional(),
select: z.array(z.string()).optional(),
})
.describe("Payload for listing assistants.");
+8
View File
@@ -390,6 +390,14 @@ export interface AssistantsRepo {
metadata?: Metadata;
limit: number;
offset: number;
sort_by?:
| "assistant_id"
| "created_at"
| "updated_at"
| "name"
| "graph_id";
sort_order?: "asc" | "desc";
select?: string[];
},
auth: AuthContext | undefined
): AsyncGenerator<{ assistant: Assistant; total: number }>;