feat(core): filter sessions by path and add setting to disable (#24849)

This commit is contained in:
James Long
2026-04-28 16:49:13 -04:00
committed by GitHub
parent 379e7f3f20
commit 9209c04370
10 changed files with 360 additions and 27 deletions

View File

@@ -45,6 +45,8 @@ const QueryBoolean = Schema.Literals(["true", "false"]).pipe(
)
const ListQuery = Schema.Struct({
directory: Schema.optional(Schema.String),
scope: Schema.optional(Schema.Literals(["project"])),
path: Schema.optional(Schema.String),
roots: Schema.optional(QueryBoolean),
start: Schema.optional(Schema.NumberFromString),
search: Schema.optional(Schema.String),
@@ -444,6 +446,8 @@ export const sessionHandlers = HttpApiBuilder.group(SessionApi, "session", (hand
Array.from(
Session.list({
directory: ctx.query.directory,
scope: ctx.query.scope,
path: ctx.query.path,
roots: ctx.query.roots,
start: ctx.query.start,
search: ctx.query.search,

View File

@@ -62,7 +62,11 @@ export const SessionRoutes = lazy(() =>
validator(
"query",
z.object({
directory: z.string().optional().meta({ description: "Filter sessions by project directory" }),
directory: z.string().optional().meta({ description: "Filter sessions by directory" }),
// TODO: in 2.0 remove `scope` and `directory` and default
// to list all sessions for a project
scope: z.enum(["project"]).optional().meta({ description: "List all sessions for the current project" }),
path: z.string().optional().meta({ description: "Filter sessions by project-relative path" }),
roots: QueryBoolean.optional().meta({ description: "Only return root sessions (no parentID)" }),
start: z.coerce
.number()
@@ -76,7 +80,8 @@ export const SessionRoutes = lazy(() =>
const query = c.req.valid("query")
const sessions: Session.Info[] = []
for await (const session of Session.list({
directory: query.directory,
directory: query.scope === "project" ? undefined : query.directory,
path: query.path,
roots: queryBoolean(query.roots),
start: query.start,
search: query.search,