feat(tui): show project copy in session list (#31421)

This commit is contained in:
James Long 2026-06-09 12:10:37 -04:00 committed by GitHub
commit ffcb45d7c9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 59 additions and 37 deletions

View file

@ -36,7 +36,12 @@ export const DirectoriesInput = Schema.Struct({
}).annotate({ identifier: "Project.DirectoriesInput" })
export type DirectoriesInput = typeof DirectoriesInput.Type
export const Directories = Schema.Array(AbsolutePath).annotate({ identifier: "Project.Directories" })
export const Directories = Schema.Array(
Schema.Struct({
directory: AbsolutePath,
type: Schema.Literals(["main", "root", "git_worktree"]),
}),
).annotate({ identifier: "Project.Directories" })
export type Directories = typeof Directories.Type
export interface Interface {
@ -73,13 +78,13 @@ export const layer = Layer.effect(
const directories = Effect.fn("Project.directories")(function* (input: DirectoriesInput) {
const rows = yield* db
.select({ directory: ProjectDirectoryTable.directory })
.select({ directory: ProjectDirectoryTable.directory, type: ProjectDirectoryTable.type })
.from(ProjectDirectoryTable)
.where(eq(ProjectDirectoryTable.project_id, input.projectID))
.orderBy(desc(ProjectDirectoryTable.time_created), asc(ProjectDirectoryTable.directory))
.all()
.pipe(Effect.orDie)
return rows.map((row) => AbsolutePath.make(row.directory))
return rows.map((row) => ({ directory: AbsolutePath.make(row.directory), type: row.type }))
})
const cached = Effect.fnUntraced(function* (dir: string) {