feat(maestro): web spawn form stops naming sessions
The name field starts empty and the reroll is gone; the worktree branch keeps a default by borrowing one handle from /api/names. A card whose name the daemon generated renders dimmed until a first prompt settles it. Refs #131
This commit is contained in:
@@ -292,6 +292,27 @@ export function customSessionName(s: Session): string | undefined {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/** Where a session's name came from (#131). Mirrors
|
||||
* `maestro_protocol::NameSource`. */
|
||||
export type NameSource = "User" | "Generated" | "Haiku";
|
||||
|
||||
/** Read `metadata.name_source`, leniently: anything unrecognised — including
|
||||
* a session named before the field existed — is a settled `User` name, so an
|
||||
* existing name is never dimmed or overwritten. */
|
||||
export function nameSource(s: Session): NameSource {
|
||||
const meta = s.metadata as Record<string, unknown>;
|
||||
const source = meta?.name_source;
|
||||
if (source === "Generated" || source === "Haiku") return source;
|
||||
return "User";
|
||||
}
|
||||
|
||||
/** Whether line 1 renders the name as provisional (#131): a handle the daemon
|
||||
* generated at spawn and may still replace with one derived from the first
|
||||
* prompt. See docs/SIDEBAR.md. */
|
||||
export function isProvisionalName(s: Session): boolean {
|
||||
return customSessionName(s) !== undefined && nameSource(s) === "Generated";
|
||||
}
|
||||
|
||||
/** Longest session name the daemon stores (#125), in characters. Mirrors
|
||||
* `maestro_protocol::MAX_SESSION_NAME_LEN`. */
|
||||
export const MAX_SESSION_NAME_LEN = 64;
|
||||
|
||||
Reference in New Issue
Block a user