Built-in design generation now runs as an agentic MCP tool-loop (reusing the agent-rs BuiltInProvider), gated behind OPENPENCIL_DESIGN_AGENT_LOOP / the Settings experimental toggle; the orchestrator stays the default. - design-agent system prompt + in-process design toolset (parity-locked with the MCP surface) + flag-gated Intent::Design routing - spawn_agents execution as sequential sub-loops + live creation-mode badges (per-agent glow + 'N/M designing...' header) - new MCP tools: get_guidelines, ToolSearch, get_screenshot, get_editor_state, export_nodes, spawn_agents; style-guide local audit - #27 AI panel restyle: rounded tool cards + green check-rings, gray user bubbles, model-pill bottom toolbar, header, empty-state pills, the PARALLEL AGENTS (agent_team_size) 1x-6x chip dropdown - multi-chat tabs: ChatSessions model (Deref-to-active) + tab row UI (switch / close / + / Cmd+T) with each run bound to its tab Large checkpoint commit spanning the working tree (Rust shell crates).
27 lines
704 B
TypeScript
27 lines
704 B
TypeScript
export type UnsavedChangesDecision = 'save' | 'discard' | 'cancel';
|
|
|
|
export interface UnsavedChangesDialogLabels {
|
|
message: string;
|
|
detail?: string;
|
|
yesLabel: string;
|
|
noLabel: string;
|
|
cancelLabel: string;
|
|
}
|
|
|
|
export function buildUnsavedChangesDialogOptions(labels: UnsavedChangesDialogLabels) {
|
|
return {
|
|
type: 'question' as const,
|
|
buttons: [labels.yesLabel, labels.noLabel, labels.cancelLabel],
|
|
defaultId: 0,
|
|
cancelId: 2,
|
|
message: labels.message,
|
|
detail: labels.detail ?? '',
|
|
};
|
|
}
|
|
|
|
export function mapUnsavedChangesResponse(response: number): UnsavedChangesDecision {
|
|
if (response === 0) return 'save';
|
|
if (response === 1) return 'discard';
|
|
return 'cancel';
|
|
}
|