{
  "version": 3,
  "sources": ["../../src/commands.ts", "../../src/command-configuration.ts", "../../src/command-preview.ts", "../../src/effective-config.ts", "../../src/presets/bracketed-segments.ts", "../../src/presets/catppuccin-powerline.ts", "../../src/presets/gruvbox-rainbow.ts", "../../src/presets/jetpack.ts", "../../src/presets/minimal.ts", "../../src/presets/nerd-font-symbols.ts", "../../src/presets/no-empty-icons.ts", "../../src/presets/no-nerd-font.ts", "../../src/presets/no-runtime-versions.ts", "../../src/presets/pastel-powerline.ts", "../../src/presets/plain-text-symbols.ts", "../../src/presets/pure-preset.ts", "../../src/presets/tokyo-night.ts", "../../src/presets/catalog.ts", "../../src/command-inspector.ts", "../../src/command-preset-picker.ts"],
  "sourcesContent": ["import type { ExtensionAPI, ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport { defineMenu, runMenu } from \"@narumitw/pi-tui-kit\";\nimport {\n\ttype ConfigurationCommandOptions,\n\tconfigurationMenuScreen,\n\tconfigurationOverviewScreen,\n\tconfigurationPresentation,\n\teffectiveConfigurationScreen,\n\treloadConfiguration,\n\tsettingsDocumentScreen,\n\ttype WorkflowOwner,\n} from \"./command-configuration.js\";\nimport { completeStarshipArguments, STARSHIP_SUBCOMMANDS } from \"./command-contract.js\";\nimport { formatFooterExplanation } from \"./command-inspector.js\";\nimport { showPresetPicker } from \"./command-preset-picker.js\";\nimport { type PreviewMenuResult, showPreviewActionMenu } from \"./command-preview.js\";\nimport {\n\tatomicRestoreConfigDocument,\n\tatomicSaveConfigDocument,\n\tBUILT_IN_EXAMPLE,\n\ttype LoadedStarshipConfig,\n\tremoveConfigDocumentIfMatches,\n\tvalidateConfigDocument,\n} from \"./config.js\";\nimport { inspectUnavailableModules, type StatuslineInspection } from \"./modules/inspection.js\";\nimport {\n\tgetStarshipPreset,\n\tpresetForDocument,\n\tSTARSHIP_PRESETS,\n\ttype StarshipPreset,\n} from \"./presets/catalog.js\";\n\nconst MAIN_ACTIONS = {\n\tcustomize: \"customize\",\n\tpresets: \"presets\",\n\texplain: \"explain\",\n\tmodules: \"modules\",\n\tconfiguration: \"configuration\",\n\thelp: \"help\",\n\trestore: \"restore\",\n} as const;\n\nconst PREVIEW_ACTIONS = {\n\tcontinue: \"continue\",\n\tedit: \"edit\",\n\tcancel: \"cancel\",\n} as const;\n\nexport interface StarshipCommandOptions extends ConfigurationCommandOptions {\n\tgetInspection?(): StatuslineInspection | undefined;\n\tpreview?(loaded: LoadedStarshipConfig | undefined, ctx: ExtensionCommandContext): void;\n\tsave?: (settingsPath: string, rawDocument: string) => LoadedStarshipConfig;\n\trestore?: (settingsPath: string, rawDocument: string) => void;\n\tvalidate?: (settingsPath: string, rawDocument: string) => LoadedStarshipConfig;\n\tgetMenuOwner?(): WorkflowOwner;\n}\n\ntype ReviewIntent =\n\t| { kind: \"customize\" }\n\t| { kind: \"restore\" }\n\t| { kind: \"preset\"; preset: StarshipPreset };\n\nexport function registerStarshipCommand(pi: ExtensionAPI, options: StarshipCommandOptions) {\n\tpi.registerCommand(\"starship\", {\n\t\tdescription: \"Customize or inspect the native Starship-style footer\",\n\t\tgetArgumentCompletions: completeStarshipArguments,\n\t\thandler: (args, ctx) => handleStarshipCommand(args, ctx, options),\n\t});\n}\n\nexport async function handleStarshipCommand(\n\targs: string,\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n) {\n\tconst normalized = args.trim();\n\tif (!normalized) {\n\t\tif (ctx.mode === \"tui\") await showMainMenu(ctx, options);\n\t\telse showHelp(ctx, options.settingsPath);\n\t\treturn;\n\t}\n\n\tconst [subcommand = \"\", ...trailing] = normalized.split(/\\s+/u);\n\tconst route = subcommand.toLowerCase();\n\tif (trailing.length > 0 || !STARSHIP_SUBCOMMANDS.some((item) => item.value === route)) {\n\t\tif (canNotify(ctx)) {\n\t\t\tconst reason =\n\t\t\t\ttrailing.length > 0\n\t\t\t\t\t? `Unexpected arguments for /starship ${safeText(route)}.`\n\t\t\t\t\t: `Unknown /starship subcommand: ${safeText(route)}.`;\n\t\t\tctx.ui.notify(`${reason} Usage: /starship [settings|status|help]`, \"warning\");\n\t\t}\n\t\treturn;\n\t}\n\tswitch (route) {\n\t\tcase \"settings\":\n\t\t\tawait editSettings(ctx, options);\n\t\t\treturn;\n\t\tcase \"status\":\n\t\t\tshowStatus(ctx, options);\n\t\t\treturn;\n\t\tcase \"help\":\n\t\t\tshowHelp(ctx, options.settingsPath);\n\t\t\treturn;\n\t}\n}\n\nasync function showMainMenu(ctx: ExtensionCommandContext, options: StarshipCommandOptions) {\n\tconst fallbackController = new AbortController();\n\tconst owner = options.getMenuOwner?.() ?? {\n\t\tsignal: fallbackController.signal,\n\t\tisCurrent: () => !fallbackController.signal.aborted,\n\t};\n\ttype Screen =\n\t\t| \"main\"\n\t\t| \"explain\"\n\t\t| \"modules\"\n\t\t| \"configuration\"\n\t\t| \"configuration-overview\"\n\t\t| \"configuration-effective\"\n\t\t| \"configuration-document\"\n\t\t| \"help\";\n\ttype Action = \"customize\" | \"presets\" | \"configuration-reload\" | \"restore\";\n\tconst menu = defineMenu<undefined, Screen, Action, ExtensionCommandContext>({\n\t\tstart: \"main\",\n\t\tscreens: {\n\t\t\tmain: () => {\n\t\t\t\tconst loaded = options.getLoaded();\n\t\t\t\tconst presentation = configurationPresentation(loaded);\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"actions\",\n\t\t\t\t\ttitle: \"pi-starship\",\n\t\t\t\t\tlines: [`${presentation.state} \u00B7 ${presentation.health}`],\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.customize,\n\t\t\t\t\t\t\tlabel: \"Customize footer\",\n\t\t\t\t\t\t\tdescription: `${presentation.state} \u00B7 preview before applying`,\n\t\t\t\t\t\t\taction: \"customize\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.presets,\n\t\t\t\t\t\t\tlabel: \"Presets\",\n\t\t\t\t\t\t\tdescription: \"Browse and live-preview bundled footer starting points\",\n\t\t\t\t\t\t\taction: \"presets\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.explain,\n\t\t\t\t\t\t\tlabel: \"Explain footer\",\n\t\t\t\t\t\t\tdescription: \"Why each visible module appears\",\n\t\t\t\t\t\t\tto: \"explain\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.modules,\n\t\t\t\t\t\t\tlabel: \"Modules\",\n\t\t\t\t\t\t\tdescription: \"Browse supported modules and current states\",\n\t\t\t\t\t\t\tto: \"modules\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.configuration,\n\t\t\t\t\t\t\tlabel: \"Configuration\",\n\t\t\t\t\t\t\tdescription: presentation.health,\n\t\t\t\t\t\t\tto: \"configuration\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.help,\n\t\t\t\t\t\t\tlabel: \"Help\",\n\t\t\t\t\t\t\tdescription: \"Formats, modules, and commands\",\n\t\t\t\t\t\t\tto: \"help\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: MAIN_ACTIONS.restore,\n\t\t\t\t\t\t\tlabel: \"Restore built-in\u2026\",\n\t\t\t\t\t\t\tdescription: presentation.restoreDescription,\n\t\t\t\t\t\t\tdisabled: presentation.restoreDisabled,\n\t\t\t\t\t\t\taction: \"restore\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\thint: \"close\",\n\t\t\t\t};\n\t\t\t},\n\t\t\texplain: () => ({\n\t\t\t\tkind: \"review\",\n\t\t\t\ttitle: \"Explain footer\",\n\t\t\t\tcontent: formatFooterExplanation(options.getInspection?.()),\n\t\t\t\tformat: { kind: \"text\" },\n\t\t\t\tviewportSize: \"adaptive\",\n\t\t\t\thint: \"back\",\n\t\t\t}),\n\t\t\tmodules: () => {\n\t\t\t\tconst inspection =\n\t\t\t\t\toptions.getInspection?.() ?? inspectUnavailableModules(options.getLoaded().config);\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"browse\",\n\t\t\t\t\ttitle: \"Modules\",\n\t\t\t\t\titems: inspection.modules.map((module) => ({\n\t\t\t\t\t\tid: module.name,\n\t\t\t\t\t\tlabel: module.name,\n\t\t\t\t\t\tstatusText: module.state,\n\t\t\t\t\t\tdescription: module.description,\n\t\t\t\t\t\tsearchText: [...module.variables, ...module.styleFields, ...module.displayRules].join(\n\t\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tdetails: [\n\t\t\t\t\t\t\t`Root: ${module.rootReferenced ? \"Referenced\" : \"Not referenced\"}`,\n\t\t\t\t\t\t\t`Reachable: ${module.reachable ? \"Yes\" : \"No\"}`,\n\t\t\t\t\t\t\t...modulePreviewDetails(module.preview),\n\t\t\t\t\t\t\t`Reason: ${module.reason}`,\n\t\t\t\t\t\t\t`Variables: ${module.variables.join(\", \") || \"none\"}`,\n\t\t\t\t\t\t\t`Style fields: ${module.styleFields.join(\", \") || \"none\"}`,\n\t\t\t\t\t\t\t`Display rules: ${module.displayRules.join(\" \u00B7 \") || \"none\"}`,\n\t\t\t\t\t\t],\n\t\t\t\t\t})),\n\t\t\t\t\tviewportSize: \"adaptive\",\n\t\t\t\t\thint: \"back\",\n\t\t\t\t};\n\t\t\t},\n\t\t\tconfiguration: () => configurationMenuScreen(options.getLoaded()),\n\t\t\t\"configuration-overview\": () =>\n\t\t\t\tconfigurationOverviewScreen(options.getLoaded(), options.settingsPath),\n\t\t\t\"configuration-effective\": () => effectiveConfigurationScreen(options.getLoaded()),\n\t\t\t\"configuration-document\": () =>\n\t\t\t\tsettingsDocumentScreen(options.getLoaded(), options.settingsPath),\n\t\t\thelp: () => ({\n\t\t\t\tkind: \"detail\",\n\t\t\t\ttitle: \"pi-starship help\",\n\t\t\t\tlines: [\n\t\t\t\t\t\"Customize footer opens the TOML editor, then previews and confirms before saving.\",\n\t\t\t\t\t\"Presets live-previews the cursor in the footer; Enter confirms apply and e customizes first.\",\n\t\t\t\t\t\"Explain footer breaks down the modules currently showing from the existing snapshot.\",\n\t\t\t\t\t\"Modules searches every supported module and explains its current read-only state.\",\n\t\t\t\t\t\"Configuration separates overview, effective TOML, loaded settings text, and safe disk reload.\",\n\t\t\t\t\t`Settings: ${safeText(options.settingsPath)}`,\n\t\t\t\t\t\"Docs: https://github.com/narumiruna/pi-extensions/tree/main/packages/pi-starship\",\n\t\t\t\t],\n\t\t\t\thint: \"back\",\n\t\t\t}),\n\t\t},\n\t\tactions: {\n\t\t\tcustomize: async () => {\n\t\t\t\tconst result = await editSettings(ctx, options);\n\t\t\t\treturn result === \"applied\" || result === \"close\" ? { kind: \"close\" } : { kind: \"stay\" };\n\t\t\t},\n\t\t\tpresets: async () => {\n\t\t\t\tconst result = await choosePreset(ctx, options, owner);\n\t\t\t\treturn result === \"applied\" || result === \"close\" ? { kind: \"close\" } : { kind: \"stay\" };\n\t\t\t},\n\t\t\t\"configuration-reload\": async () => {\n\t\t\t\tconst result = await reloadConfiguration(ctx, options, owner);\n\t\t\t\treturn result === \"close\" ? { kind: \"close\" } : { kind: \"stay\" };\n\t\t\t},\n\t\t\trestore: async () => {\n\t\t\t\tconst presentation = configurationPresentation(options.getLoaded());\n\t\t\t\tif (presentation.restoreDisabled) {\n\t\t\t\t\tctx.ui.notify(presentation.restoreDescription, \"info\");\n\t\t\t\t\treturn { kind: \"stay\" };\n\t\t\t\t}\n\t\t\t\tconst result = await restoreBuiltIn(ctx, options);\n\t\t\t\treturn result === \"applied\" || result === \"close\" ? { kind: \"close\" } : { kind: \"stay\" };\n\t\t\t},\n\t\t},\n\t});\n\ttry {\n\t\tawait runMenu(ctx, menu, {\n\t\t\tgetState: () => undefined,\n\t\t\tsignal: owner.signal,\n\t\t\tisCurrent: owner.isCurrent,\n\t\t});\n\t} finally {\n\t\tfallbackController.abort(new DOMException(\"Starship menu closed\", \"AbortError\"));\n\t}\n}\n\nasync function editSettings(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n): Promise<\"applied\" | \"cancel\" | \"close\"> {\n\tconst owner = workflowOwner(options);\n\tif (!isCurrentOwner(owner)) return \"cancel\";\n\tif (ctx.mode !== \"tui\") {\n\t\tif (ctx.hasUI) ctx.ui.notify(`Edit settings manually: ${options.settingsPath}`, \"info\");\n\t\treturn \"cancel\";\n\t}\n\tlet draft = options.getLoaded().rawDocument ?? BUILT_IN_EXAMPLE;\n\twhile (true) {\n\t\tconst edited = await ctx.ui.editor(\"Customize footer \u2014 close to preview\", draft);\n\t\tif (!isCurrentOwner(owner) || edited === undefined) return \"cancel\";\n\t\tdraft = edited;\n\t\tlet validated: LoadedStarshipConfig;\n\t\ttry {\n\t\t\tvalidated = (options.validate ?? validateConfigDocument)(options.settingsPath, draft);\n\t\t} catch (error) {\n\t\t\tctx.ui.notify(`Footer draft is invalid: ${safeText(formatError(error))}`, \"error\");\n\t\t\tconst action = await showPreviewActionMenu(\n\t\t\t\tctx,\n\t\t\t\t\"Configuration needs attention\",\n\t\t\t\t() => [safeText(formatError(error)), \"The current footer has not changed.\"],\n\t\t\t\t[\n\t\t\t\t\t{ value: PREVIEW_ACTIONS.edit, label: \"Continue editing\" },\n\t\t\t\t\t{ value: PREVIEW_ACTIONS.cancel, label: \"Discard draft\" },\n\t\t\t\t],\n\t\t\t\towner.signal,\n\t\t\t\towner.isCurrent,\n\t\t\t);\n\t\t\tif (!isCurrentOwner(owner)) return \"cancel\";\n\t\t\tif (action?.kind === \"closed\") return \"close\";\n\t\t\tif (selectedPreviewAction(action) === PREVIEW_ACTIONS.edit) continue;\n\t\t\treturn \"cancel\";\n\t\t}\n\n\t\tconst result = await reviewAndApply(ctx, options, validated, { kind: \"customize\" }, owner);\n\t\tif (result === \"edit\") continue;\n\t\treturn result;\n\t}\n}\n\nasync function choosePreset(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\towner: WorkflowOwner,\n): Promise<\"applied\" | \"cancel\" | \"close\"> {\n\tconst activePreset = presetForDocument(options.getLoaded().rawDocument);\n\tconst selection = await showPresetPicker(ctx, {\n\t\tpresets: STARSHIP_PRESETS,\n\t\tactivePresetId: activePreset?.id,\n\t\tinitialPresetId: activePreset?.id ?? STARSHIP_PRESETS[0]?.id,\n\t\tsignal: owner.signal,\n\t\tisCurrent: owner.isCurrent,\n\t\tpreview(preset) {\n\t\t\tconst loaded = (options.validate ?? validateConfigDocument)(\n\t\t\t\toptions.settingsPath,\n\t\t\t\tpreset.rawDocument,\n\t\t\t);\n\t\t\toptions.preview?.(loaded, ctx);\n\t\t},\n\t});\n\tif (!isCurrentOwner(owner)) {\n\t\toptions.preview?.(undefined, ctx);\n\t\treturn \"cancel\";\n\t}\n\tif (selection.kind === \"back\" || selection.kind === \"close\") {\n\t\toptions.preview?.(undefined, ctx);\n\t\treturn selection.kind === \"close\" ? \"close\" : \"cancel\";\n\t}\n\n\tconst preset = getStarshipPreset(selection.presetId);\n\ttry {\n\t\treturn await applyPreset(\n\t\t\tctx,\n\t\t\toptions,\n\t\t\tpreset,\n\t\t\tselection.kind === \"customize\" ? \"customize\" : \"confirm\",\n\t\t);\n\t} finally {\n\t\toptions.preview?.(undefined, ctx);\n\t}\n}\n\nasync function applyPreset(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\tpreset: StarshipPreset,\n\tstart: \"review\" | \"confirm\" | \"customize\" = \"review\",\n): Promise<\"applied\" | \"cancel\" | \"close\"> {\n\tconst owner = workflowOwner(options);\n\tif (!isCurrentOwner(owner)) return \"cancel\";\n\tlet draft = preset.rawDocument;\n\tif (start === \"customize\") {\n\t\tconst edited = await ctx.ui.editor(`Customize ${preset.label} preset`, draft);\n\t\tif (!isCurrentOwner(owner) || edited === undefined) return \"cancel\";\n\t\tdraft = edited;\n\t}\n\twhile (true) {\n\t\tlet validated: LoadedStarshipConfig;\n\t\ttry {\n\t\t\tvalidated = (options.validate ?? validateConfigDocument)(options.settingsPath, draft);\n\t\t} catch (error) {\n\t\t\tctx.ui.notify(`Preset draft is invalid: ${safeText(formatError(error))}`, \"error\");\n\t\t\tconst action = await showPreviewActionMenu(\n\t\t\t\tctx,\n\t\t\t\t\"Preset needs attention\",\n\t\t\t\t() => [safeText(formatError(error)), \"The current footer has not changed.\"],\n\t\t\t\t[\n\t\t\t\t\t{ value: PREVIEW_ACTIONS.edit, label: \"Continue editing\" },\n\t\t\t\t\t{ value: PREVIEW_ACTIONS.cancel, label: \"Choose another preset\" },\n\t\t\t\t],\n\t\t\t\towner.signal,\n\t\t\t\towner.isCurrent,\n\t\t\t);\n\t\t\tif (!isCurrentOwner(owner)) return \"cancel\";\n\t\t\tif (action?.kind === \"closed\") return \"close\";\n\t\t\tif (selectedPreviewAction(action) !== PREVIEW_ACTIONS.edit) return \"cancel\";\n\t\t\tconst edited = await ctx.ui.editor(`Customize ${preset.label} preset`, draft);\n\t\t\tif (!isCurrentOwner(owner) || edited === undefined) return \"cancel\";\n\t\t\tdraft = edited;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst result = await reviewAndApply(\n\t\t\tctx,\n\t\t\toptions,\n\t\t\tvalidated,\n\t\t\t{ kind: \"preset\", preset },\n\t\t\towner,\n\t\t\tstart === \"confirm\",\n\t\t);\n\t\tif (result !== \"edit\") return result;\n\t\tconst edited = await ctx.ui.editor(`Customize ${preset.label} preset`, draft);\n\t\tif (!isCurrentOwner(owner) || edited === undefined) return \"cancel\";\n\t\tdraft = edited;\n\t}\n}\n\nasync function restoreBuiltIn(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n): Promise<\"applied\" | \"cancel\" | \"close\"> {\n\tconst owner = workflowOwner(options);\n\tif (!isCurrentOwner(owner)) return \"cancel\";\n\tconst validated = (options.validate ?? validateConfigDocument)(\n\t\toptions.settingsPath,\n\t\tBUILT_IN_EXAMPLE,\n\t);\n\tconst result = await reviewAndApply(ctx, options, validated, { kind: \"restore\" }, owner);\n\treturn result === \"edit\" ? \"cancel\" : result;\n}\n\nasync function reviewAndApply(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\tvalidated: LoadedStarshipConfig,\n\tintent: ReviewIntent,\n\towner: WorkflowOwner,\n\tskipReview = false,\n): Promise<\"applied\" | \"edit\" | \"cancel\" | \"close\"> {\n\tlet reviewRequired = !skipReview;\n\twhile (true) {\n\t\tconst directAttempt = !reviewRequired;\n\t\tif (reviewRequired) {\n\t\t\tconst selection = await showPreviewActionMenu(\n\t\t\t\tctx,\n\t\t\t\treviewTitle(intent),\n\t\t\t\t(width) => reviewPreviewBody(ctx, options, validated, width, intent),\n\t\t\t\t[\n\t\t\t\t\t{ value: PREVIEW_ACTIONS.continue, label: continueLabel(intent) },\n\t\t\t\t\t...(intent.kind === \"restore\"\n\t\t\t\t\t\t? []\n\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: PREVIEW_ACTIONS.edit,\n\t\t\t\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\t\t\t\tintent.kind === \"preset\" ? \"Customize before applying\" : \"Continue editing\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: PREVIEW_ACTIONS.cancel,\n\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\tintent.kind === \"restore\"\n\t\t\t\t\t\t\t\t? \"Cancel\"\n\t\t\t\t\t\t\t\t: intent.kind === \"preset\"\n\t\t\t\t\t\t\t\t\t? \"Choose another preset\"\n\t\t\t\t\t\t\t\t\t: \"Discard draft\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\towner.signal,\n\t\t\t\towner.isCurrent,\n\t\t\t);\n\t\t\tif (!isCurrentOwner(owner)) return \"cancel\";\n\t\t\tif (selection?.kind === \"closed\") return \"close\";\n\t\t\tconst selected = selectedPreviewAction(selection);\n\t\t\tif (selected === PREVIEW_ACTIONS.edit) return \"edit\";\n\t\t\tif (selected !== PREVIEW_ACTIONS.continue) return \"cancel\";\n\t\t}\n\t\treviewRequired = true;\n\n\t\tconst confirmed = await ctx.ui.confirm(\n\t\t\tconfirmationTitle(intent),\n\t\t\tconfirmationMessage(options.settingsPath, intent),\n\t\t);\n\t\tif (!isCurrentOwner(owner)) return \"cancel\";\n\t\tif (!confirmed) {\n\t\t\tif (directAttempt) return \"cancel\";\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst save = options.save ?? atomicSaveConfigDocument;\n\t\tconst previous = options.getLoaded();\n\t\tlet saved: LoadedStarshipConfig;\n\t\ttry {\n\t\t\tsaved = save(options.settingsPath, validated.rawDocument ?? BUILT_IN_EXAMPLE);\n\t\t} catch (error) {\n\t\t\tctx.ui.notify(\n\t\t\t\t`Footer settings were not saved: ${safeText(formatError(error))}. The previous footer remains active.`,\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t\tif (directAttempt) return \"cancel\";\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\toptions.apply(saved, ctx);\n\t\t} catch (error) {\n\t\t\tconst rollbackError = restorePreviousConfiguration(ctx, options, previous, saved);\n\t\t\tctx.ui.notify(\n\t\t\t\trollbackError\n\t\t\t\t\t? `Footer settings could not be applied: ${safeText(formatError(error))}. Restoring the previous configuration also failed: ${safeText(formatError(rollbackError))}.`\n\t\t\t\t\t: `Footer settings could not be applied: ${safeText(formatError(error))}. The previous configuration was restored.`,\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t\tif (directAttempt) return \"cancel\";\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst warningSuffix =\n\t\t\tsaved.diagnostics.length > 0\n\t\t\t\t? ` (${saved.diagnostics.length} warning${saved.diagnostics.length === 1 ? \"\" : \"s\"})`\n\t\t\t\t: \"\";\n\t\tctx.ui.notify(`${successMessage(intent)}${warningSuffix}.`, \"info\");\n\t\treturn \"applied\";\n\t}\n}\n\nfunction reviewTitle(intent: ReviewIntent): string {\n\tswitch (intent.kind) {\n\t\tcase \"customize\":\n\t\t\treturn \"Footer preview\";\n\t\tcase \"restore\":\n\t\t\treturn \"Restore preview\";\n\t\tcase \"preset\":\n\t\t\treturn `${intent.preset.label} preset preview`;\n\t}\n}\n\nfunction continueLabel(intent: ReviewIntent): string {\n\tswitch (intent.kind) {\n\t\tcase \"customize\":\n\t\t\treturn \"Apply changes\u2026\";\n\t\tcase \"restore\":\n\t\t\treturn \"Replace with built-in\u2026\";\n\t\tcase \"preset\":\n\t\t\treturn `Apply ${intent.preset.label} preset\u2026`;\n\t}\n}\n\nfunction confirmationTitle(intent: ReviewIntent): string {\n\tswitch (intent.kind) {\n\t\tcase \"customize\":\n\t\t\treturn \"Apply footer changes?\";\n\t\tcase \"restore\":\n\t\t\treturn \"Restore built-in footer?\";\n\t\tcase \"preset\":\n\t\t\treturn `Apply ${intent.preset.label} preset?`;\n\t}\n}\n\nfunction confirmationMessage(settingsPath: string, intent: ReviewIntent): string {\n\tif (intent.kind === \"customize\") return \"Save this configuration and apply it immediately?\";\n\tconst replacement =\n\t\tintent.kind === \"restore\" ? \"the built-in configuration\" : `the ${intent.preset.label} preset`;\n\treturn `Replace ${safeText(settingsPath)} entirely with ${replacement}? All custom settings, unknown fields, and comments will be removed. No backup is kept after success.`;\n}\n\nfunction successMessage(intent: ReviewIntent): string {\n\tswitch (intent.kind) {\n\t\tcase \"customize\":\n\t\t\treturn \"Footer settings saved and applied\";\n\t\tcase \"restore\":\n\t\t\treturn \"Built-in footer restored and applied\";\n\t\tcase \"preset\":\n\t\t\treturn `${intent.preset.label} preset saved and applied`;\n\t}\n}\n\nfunction modulePreviewDetails(preview: string): string[] {\n\tconst lines = preview ? preview.split(\"\\n\") : [\"(no current preview)\"];\n\treturn lines.map((line, index) => `${index === 0 ? \"Preview: \" : \"         \"}${line}`);\n}\n\nfunction workflowOwner(options: StarshipCommandOptions): WorkflowOwner {\n\tif (options.getMenuOwner) return options.getMenuOwner();\n\tconst controller = new AbortController();\n\treturn { signal: controller.signal, isCurrent: () => true };\n}\n\nfunction isCurrentOwner(owner: WorkflowOwner): boolean {\n\treturn !owner.signal.aborted && owner.isCurrent();\n}\n\nfunction restorePreviousConfiguration(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\tprevious: LoadedStarshipConfig,\n\tsaved: LoadedStarshipConfig,\n): unknown {\n\ttry {\n\t\tif (saved.rawDocument === undefined || saved.fileIdentity === undefined) {\n\t\t\tthrow new Error(\"The saved settings document identity is unavailable\");\n\t\t}\n\t\tremoveConfigDocumentIfMatches(options.settingsPath, saved.rawDocument, saved.fileIdentity);\n\t\tif (previous.rawDocument !== undefined) {\n\t\t\t(options.restore ?? atomicRestoreConfigDocument)(options.settingsPath, previous.rawDocument);\n\t\t}\n\t\toptions.apply(previous, ctx);\n\t\treturn undefined;\n\t} catch (error) {\n\t\treturn error;\n\t}\n}\n\nfunction reviewPreviewBody(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\tloaded: LoadedStarshipConfig,\n\twidth: number,\n\tintent: ReviewIntent,\n): string[] {\n\tif (intent.kind === \"restore\") return restorePreviewBody(ctx, options, loaded, width);\n\tif (intent.kind === \"customize\") return previewBody(ctx, options, loaded, width);\n\tconst current = configurationPresentation(options.getLoaded());\n\treturn [\n\t\t`Preset: ${intent.preset.label}`,\n\t\t`Requirement: ${intent.preset.requiresNerdFont ? \"Nerd Font\" : \"No special font\"}`,\n\t\t`Current: ${current.state}`,\n\t\t`Path: ${safeText(options.settingsPath)}`,\n\t\t\"Applying replaces the entire settings document, including custom settings, unknown fields, and comments.\",\n\t\t\"No backup is kept after a successful apply.\",\n\t\t\"\",\n\t\t...previewBody(ctx, options, loaded, width),\n\t];\n}\n\nfunction restorePreviewBody(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\tloaded: LoadedStarshipConfig,\n\twidth: number,\n): string[] {\n\tconst current = configurationPresentation(options.getLoaded());\n\treturn [\n\t\t`Current: ${current.state}`,\n\t\t`Path: ${safeText(options.settingsPath)}`,\n\t\t\"The entire settings document will be replaced, including custom settings, unknown fields, and comments.\",\n\t\t\"No backup is kept after a successful restore.\",\n\t\t\"\",\n\t\t...previewBody(ctx, options, loaded, width),\n\t];\n}\n\nfunction previewBody(\n\tctx: ExtensionCommandContext,\n\toptions: StarshipCommandOptions,\n\tloaded: LoadedStarshipConfig,\n\twidth: number,\n): string[] {\n\tlet lines: string[];\n\ttry {\n\t\tlines = options.renderPreview?.(loaded, width, ctx) ?? [\n\t\t\t\"Live preview is unavailable until the footer is ready.\",\n\t\t\t\"The draft is valid and can still be applied.\",\n\t\t];\n\t} catch (error) {\n\t\tlines = [`Preview unavailable: ${safeText(formatError(error))}`];\n\t}\n\tconst warning =\n\t\tloaded.diagnostics.length === 0\n\t\t\t? \"Draft validation: Healthy\"\n\t\t\t: `Draft validation: ${loaded.diagnostics.length} warning${loaded.diagnostics.length === 1 ? \"\" : \"s\"}`;\n\treturn [...lines, \"\", warning];\n}\n\nfunction selectedPreviewAction<Value extends string>(\n\tresult: PreviewMenuResult<Value> | undefined,\n): Value | null {\n\treturn result?.kind === \"selected\" ? result.value : null;\n}\n\nfunction showStatus(ctx: ExtensionCommandContext, options: StarshipCommandOptions) {\n\tif (!canNotify(ctx)) return;\n\tconst loaded = options.getLoaded();\n\tconst diagnostics = loaded.diagnostics\n\t\t.slice(0, 5)\n\t\t.map((item) => `${safeText(item.path || \"root\")}: ${safeText(item.message)}`)\n\t\t.join(\"; \");\n\tctx.ui.notify(\n\t\t[\n\t\t\t`pi-starship source: ${loaded.source}`,\n\t\t\t`path: ${options.settingsPath}`,\n\t\t\tdiagnostics ? `warnings: ${diagnostics}` : \"warnings: none\",\n\t\t].join(\"\\n\"),\n\t\tloaded.diagnostics.length > 0 ? \"warning\" : \"info\",\n\t);\n}\n\nfunction showHelp(ctx: ExtensionCommandContext, settingsPath: string) {\n\tif (!canNotify(ctx)) return;\n\tctx.ui.notify(\n\t\t[\n\t\t\t\"/starship \u2014 customize, live-preview presets, explain, or inspect the footer in TUI mode\",\n\t\t\t\"/starship settings \u2014 customize, preview, and apply TOML\",\n\t\t\t\"/starship status \u2014 show source, path, and warnings\",\n\t\t\t\"/starship help \u2014 show this help\",\n\t\t\t`Settings: ${settingsPath}`,\n\t\t\t\"Format/module docs: https://github.com/narumiruna/pi-extensions/tree/main/packages/pi-starship\",\n\t\t].join(\"\\n\"),\n\t\t\"info\",\n\t);\n}\n\nfunction canNotify(ctx: ExtensionCommandContext): boolean {\n\treturn ctx.mode === \"tui\" || ctx.hasUI;\n}\n\nfunction safeText(value: string): string {\n\treturn Array.from(value, (character) => {\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\t\tconst unsafe =\n\t\t\tcodePoint <= 0x08 ||\n\t\t\t(codePoint >= 0x0b && codePoint <= 0x1f) ||\n\t\t\t(codePoint >= 0x7f && codePoint <= 0x9f);\n\t\treturn unsafe ? `\\\\u${codePoint.toString(16).padStart(4, \"0\")}` : character;\n\t}).join(\"\");\n}\n\nfunction formatError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n", "import type { ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport { sanitizeTerminalText } from \"@narumitw/pi-tui-kit/terminal-text\";\nimport { type PreviewMenuResult, showPreviewActionMenu } from \"./command-preview.js\";\nimport { BUILT_IN_EXAMPLE, type LoadedStarshipConfig, loadStarshipConfig } from \"./config.js\";\nimport { serializeEffectiveConfig } from \"./effective-config.js\";\nimport { presetForDocument } from \"./presets/catalog.js\";\n\nconst RELOAD_ACTIONS = {\n\tapply: \"apply\",\n\tcancel: \"cancel\",\n} as const;\n\nexport interface WorkflowOwner {\n\tsignal: AbortSignal;\n\tisCurrent(): boolean;\n}\n\nexport interface ConfigurationCommandOptions {\n\tgetLoaded(): LoadedStarshipConfig;\n\tgetLoadedRevision?(): number;\n\tapply(loaded: LoadedStarshipConfig, ctx: ExtensionCommandContext): void;\n\tsettingsPath: string;\n\trenderPreview?(\n\t\tloaded: LoadedStarshipConfig,\n\t\twidth: number,\n\t\tctx: ExtensionCommandContext,\n\t): string[];\n\tread?: (settingsPath: string) => LoadedStarshipConfig;\n}\n\nexport interface ConfigurationPresentation {\n\tstate: string;\n\tsource: string;\n\thealth: string;\n\trestoreDisabled: boolean;\n\trestoreDescription: string;\n}\n\nexport function configurationPresentation(loaded: LoadedStarshipConfig): ConfigurationPresentation {\n\tconst healthyMissing = isHealthyMissing(loaded);\n\tconst savedBuiltIn = loaded.source === \"user\" && loaded.rawDocument === BUILT_IN_EXAMPLE;\n\tconst activePreset = presetForDocument(loaded.rawDocument);\n\tconst fallback = loaded.source === \"built-in\" && loaded.diagnostics.length > 0;\n\treturn {\n\t\tstate: healthyMissing\n\t\t\t? \"Built-in defaults\"\n\t\t\t: savedBuiltIn\n\t\t\t\t? \"Saved built-in configuration\"\n\t\t\t\t: activePreset\n\t\t\t\t\t? `${activePreset.label} preset`\n\t\t\t\t\t: fallback\n\t\t\t\t\t\t? \"Built-in fallback\"\n\t\t\t\t\t\t: \"Custom configuration\",\n\t\tsource: healthyMissing\n\t\t\t? \"No settings file\"\n\t\t\t: activePreset\n\t\t\t\t? \"Bundled preset\"\n\t\t\t\t: loaded.source === \"user\"\n\t\t\t\t\t? \"User file\"\n\t\t\t\t\t: \"Built-in fallback\",\n\t\thealth: configurationHealth(loaded),\n\t\trestoreDisabled: healthyMissing || savedBuiltIn,\n\t\trestoreDescription: healthyMissing\n\t\t\t? \"Already using defaults \u00B7 no file to replace\"\n\t\t\t: savedBuiltIn\n\t\t\t\t? \"Built-in configuration already saved\"\n\t\t\t\t: fallback\n\t\t\t\t\t? \"Preview before replacing invalid settings\"\n\t\t\t\t\t: \"Preview before replacing the document\",\n\t};\n}\n\nexport function configurationMenuScreen(loaded: LoadedStarshipConfig) {\n\tconst presentation = configurationPresentation(loaded);\n\treturn {\n\t\tkind: \"actions\" as const,\n\t\ttitle: \"Configuration\",\n\t\tlines: [`${presentation.state} \u00B7 ${presentation.health}`],\n\t\titems: [\n\t\t\t{\n\t\t\t\tid: \"configuration-overview\",\n\t\t\t\tlabel: \"Overview\",\n\t\t\t\tdescription: \"State, source, path, health, and warnings\",\n\t\t\t\tto: \"configuration-overview\" as const,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"configuration-effective\",\n\t\t\t\tlabel: \"Effective configuration\",\n\t\t\t\tdescription: \"Normalized public TOML currently in use\",\n\t\t\t\tto: \"configuration-effective\" as const,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"configuration-document\",\n\t\t\t\tlabel: \"Settings document\",\n\t\t\t\tdescription: isHealthyMissing(loaded)\n\t\t\t\t\t? \"No settings file \u00B7 built-in defaults are active\"\n\t\t\t\t\t: \"Exact loaded UTF-8 text \u00B7 read-only\",\n\t\t\t\tto: \"configuration-document\" as const,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"configuration-reload\",\n\t\t\t\tlabel: \"Reload from disk\u2026\",\n\t\t\t\tdescription: \"Validate and preview external changes\",\n\t\t\t\taction: \"configuration-reload\" as const,\n\t\t\t},\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function configurationOverviewScreen(loaded: LoadedStarshipConfig, settingsPath: string) {\n\tconst presentation = configurationPresentation(loaded);\n\treturn {\n\t\tkind: \"detail\" as const,\n\t\ttitle: \"Configuration overview\",\n\t\tlines: [\n\t\t\t`State: ${presentation.state}`,\n\t\t\t`Source: ${presentation.source}`,\n\t\t\t`Path: ${sanitizeTerminalText(settingsPath)}`,\n\t\t\t...diagnosticLines(loaded, true),\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function effectiveConfigurationScreen(loaded: LoadedStarshipConfig) {\n\tconst presentation = configurationPresentation(loaded);\n\treturn {\n\t\tkind: \"review\" as const,\n\t\ttitle: \"Effective configuration\",\n\t\tlines: [\n\t\t\t`${presentation.state} \u00B7 ${presentation.health}`,\n\t\t\t\"Normalized public TOML; comments and unknown fields are intentionally excluded.\",\n\t\t],\n\t\tcontent: serializeEffectiveConfig(loaded.config),\n\t\tformat: { kind: \"code\" as const, language: \"toml\" },\n\t\tviewportSize: \"adaptive\" as const,\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function settingsDocumentScreen(loaded: LoadedStarshipConfig, settingsPath: string) {\n\tconst path = sanitizeTerminalText(settingsPath);\n\tif (loaded.rawDocument !== undefined) {\n\t\treturn {\n\t\t\tkind: \"review\" as const,\n\t\t\ttitle: \"Settings document\",\n\t\t\tlines: [\"Exact loaded UTF-8 text \u00B7 display controls sanitized \u00B7 read-only\", `Path: ${path}`],\n\t\t\tcontent: loaded.rawDocument,\n\t\t\tformat: { kind: \"code\" as const, language: \"toml\" },\n\t\t\tviewportSize: \"adaptive\" as const,\n\t\t\thint: \"back\" as const,\n\t\t};\n\t}\n\treturn {\n\t\tkind: \"detail\" as const,\n\t\ttitle: \"Settings document\",\n\t\tlines: [\n\t\t\t...(isHealthyMissing(loaded)\n\t\t\t\t? [\n\t\t\t\t\t\t\"No settings document exists.\",\n\t\t\t\t\t\t\"Built-in defaults are active; this read created no file.\",\n\t\t\t\t\t]\n\t\t\t\t: [\"The settings document could not be loaded.\", ...diagnosticLines(loaded, false)]),\n\t\t\t`Path: ${path}`,\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport async function reloadConfiguration(\n\tctx: ExtensionCommandContext,\n\toptions: ConfigurationCommandOptions,\n\towner: WorkflowOwner,\n): Promise<\"applied\" | \"stay\" | \"close\"> {\n\tif (!isCurrentOwner(owner)) return \"stay\";\n\tconst previous = options.getLoaded();\n\tconst revision = options.getLoadedRevision?.();\n\tconst candidate = readReloadCandidate(options);\n\tif (!candidate.ok) {\n\t\tctx.ui.notify(`Footer reload was blocked: ${safeError(candidate.error)}`, \"error\");\n\t\treturn \"stay\";\n\t}\n\tif (sameLoadedDocument(previous, candidate.loaded)) {\n\t\tctx.ui.notify(\"The current disk configuration is already loaded.\", \"info\");\n\t\treturn \"stay\";\n\t}\n\n\tconst selection = await showPreviewActionMenu(\n\t\tctx,\n\t\t\"Reload preview\",\n\t\t(width) => reloadPreviewBody(ctx, options, candidate.loaded, width),\n\t\t[\n\t\t\t{ value: RELOAD_ACTIONS.apply, label: \"Apply reloaded configuration\u2026\" },\n\t\t\t{ value: RELOAD_ACTIONS.cancel, label: \"Cancel\" },\n\t\t],\n\t\towner.signal,\n\t\towner.isCurrent,\n\t);\n\tif (!isCurrentOwner(owner) || activeRevisionChanged(options, revision)) return \"stay\";\n\tif (selection?.kind === \"closed\") return \"close\";\n\tif (selectedReloadAction(selection) !== RELOAD_ACTIONS.apply) return \"stay\";\n\n\tconst confirmed = await ctx.ui.confirm(\n\t\t\"Apply configuration from disk?\",\n\t\tcandidate.loaded.rawDocument === undefined\n\t\t\t? \"Use built-in defaults for this session? No settings file will be created.\"\n\t\t\t: \"Apply the validated settings document to this session without changing its bytes?\",\n\t);\n\tif (!isCurrentOwner(owner) || activeRevisionChanged(options, revision) || !confirmed) {\n\t\treturn \"stay\";\n\t}\n\n\tconst fresh = readReloadCandidate(options);\n\tif (!fresh.ok) {\n\t\tctx.ui.notify(\n\t\t\t`Footer reload was blocked after confirmation: ${safeError(fresh.error)}. The previous footer remains active.`,\n\t\t\t\"error\",\n\t\t);\n\t\treturn \"stay\";\n\t}\n\tif (!sameLoadedDocument(candidate.loaded, fresh.loaded)) {\n\t\tctx.ui.notify(\n\t\t\t\"The settings document changed after preview. The previous footer remains active; reload again to review the latest version.\",\n\t\t\t\"warning\",\n\t\t);\n\t\treturn \"stay\";\n\t}\n\n\ttry {\n\t\toptions.apply(fresh.loaded, ctx);\n\t} catch (error) {\n\t\tlet rollbackError: unknown;\n\t\ttry {\n\t\t\toptions.apply(previous, ctx);\n\t\t} catch (rollback) {\n\t\t\trollbackError = rollback;\n\t\t}\n\t\tctx.ui.notify(\n\t\t\trollbackError\n\t\t\t\t? `Footer reload failed: ${safeError(error)}. Restoring the previous configuration also failed: ${safeError(rollbackError)}.`\n\t\t\t\t: `Footer reload failed: ${safeError(error)}. The previous configuration was restored.`,\n\t\t\t\"error\",\n\t\t);\n\t\treturn \"stay\";\n\t}\n\n\tconst warnings = fresh.loaded.diagnostics.length;\n\tctx.ui.notify(\n\t\twarnings === 0\n\t\t\t? \"Footer configuration reloaded and applied.\"\n\t\t\t: `Footer configuration reloaded and applied with ${warnings} warning${warnings === 1 ? \"\" : \"s\"}.`,\n\t\t\"info\",\n\t);\n\treturn \"applied\";\n}\n\nfunction readReloadCandidate(\n\toptions: ConfigurationCommandOptions,\n): { ok: true; loaded: LoadedStarshipConfig } | { ok: false; error: string } {\n\tlet loaded: LoadedStarshipConfig;\n\ttry {\n\t\tloaded = (options.read ?? loadStarshipConfig)(options.settingsPath);\n\t} catch (error) {\n\t\treturn { ok: false, error: formatError(error) };\n\t}\n\tconst errors = loaded.diagnostics.filter((item) => item.severity === \"error\");\n\tif (errors.length > 0) {\n\t\treturn { ok: false, error: errors.map((item) => item.message).join(\"; \") };\n\t}\n\treturn { ok: true, loaded };\n}\n\nfunction reloadPreviewBody(\n\tctx: ExtensionCommandContext,\n\toptions: ConfigurationCommandOptions,\n\tloaded: LoadedStarshipConfig,\n\twidth: number,\n): string[] {\n\tconst presentation = configurationPresentation(loaded);\n\tlet preview: string[];\n\ttry {\n\t\tpreview = options.renderPreview?.(loaded, width, ctx) ?? [\n\t\t\t\"Live preview is unavailable until the footer is ready.\",\n\t\t];\n\t} catch (error) {\n\t\tpreview = [`Preview unavailable: ${safeError(formatError(error))}`];\n\t}\n\treturn [\n\t\t`Candidate: ${presentation.state}`,\n\t\t`Source: ${presentation.source}`,\n\t\t`Path: ${sanitizeTerminalText(options.settingsPath)}`,\n\t\tloaded.rawDocument === undefined\n\t\t\t? \"Applying uses built-in defaults and creates no settings file.\"\n\t\t\t: \"Applying changes only the active session; the settings document bytes stay unchanged.\",\n\t\t...diagnosticLines(loaded, true),\n\t\t\"\",\n\t\t...preview,\n\t];\n}\n\nexport function diagnosticLines(loaded: LoadedStarshipConfig, includeSummary: boolean): string[] {\n\tconst diagnostics = loaded.diagnostics\n\t\t.slice(0, 8)\n\t\t.map(\n\t\t\t(item) =>\n\t\t\t\t`${sanitizeTerminalText(item.path || \"root\")}: ${sanitizeTerminalText(item.message)}`,\n\t\t);\n\tconst remaining = loaded.diagnostics.length - diagnostics.length;\n\treturn [\n\t\t...(includeSummary ? [`Health: ${configurationHealth(loaded)}`] : []),\n\t\t...(diagnostics.length > 0 ? diagnostics : [\"No configuration warnings.\"]),\n\t\t...(remaining > 0 ? [`${remaining} additional warnings not shown.`] : []),\n\t];\n}\n\nfunction configurationHealth(loaded: LoadedStarshipConfig): string {\n\tconst errors = loaded.diagnostics.filter((item) => item.severity === \"error\").length;\n\tif (errors > 0) return `${errors} error${errors === 1 ? \"\" : \"s\"}`;\n\tconst warnings = loaded.diagnostics.length;\n\treturn warnings === 0 ? \"Healthy\" : `${warnings} warning${warnings === 1 ? \"\" : \"s\"}`;\n}\n\nfunction isHealthyMissing(loaded: LoadedStarshipConfig): boolean {\n\treturn (\n\t\tloaded.source === \"built-in\" &&\n\t\tloaded.rawDocument === undefined &&\n\t\tloaded.diagnostics.length === 0\n\t);\n}\n\nfunction sameLoadedDocument(left: LoadedStarshipConfig, right: LoadedStarshipConfig): boolean {\n\treturn (\n\t\tleft.source === right.source &&\n\t\tleft.rawDocument === right.rawDocument &&\n\t\tJSON.stringify(left.diagnostics) === JSON.stringify(right.diagnostics)\n\t);\n}\n\nfunction activeRevisionChanged(\n\toptions: ConfigurationCommandOptions,\n\trevision: number | undefined,\n): boolean {\n\treturn revision !== undefined && options.getLoadedRevision?.() !== revision;\n}\n\nfunction isCurrentOwner(owner: WorkflowOwner): boolean {\n\treturn !owner.signal.aborted && owner.isCurrent();\n}\n\nfunction selectedReloadAction(\n\tresult: PreviewMenuResult<(typeof RELOAD_ACTIONS)[keyof typeof RELOAD_ACTIONS]> | undefined,\n) {\n\treturn result?.kind === \"selected\" ? result.value : null;\n}\n\nfunction safeError(value: unknown): string {\n\treturn sanitizeTerminalText(typeof value === \"string\" ? value : formatError(value));\n}\n\nfunction formatError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n", "import { stripVTControlCharacters } from \"node:util\";\nimport type { ExtensionCommandContext, KeybindingsManager } from \"@earendil-works/pi-coding-agent\";\nimport { Key, matchesKey, truncateToWidth, wrapTextWithAnsi } from \"@earendil-works/pi-tui\";\nimport { runCustomInteraction } from \"@narumitw/pi-tui-kit\";\n\nconst RESERVED_HOST_ROWS = 3;\n\nexport interface PreviewMenuItem<Value extends string> {\n\tvalue: Value;\n\tlabel: string;\n}\n\nexport type PreviewMenuResult<Value extends string> =\n\t| { kind: \"selected\"; value: Value }\n\t| { kind: \"cancelled\" }\n\t| { kind: \"closed\" };\n\nexport async function showPreviewActionMenu<Value extends string>(\n\tctx: ExtensionCommandContext,\n\ttitle: string,\n\tbody: (width: number) => readonly string[],\n\titems: readonly PreviewMenuItem<Value>[],\n\tsignal?: AbortSignal,\n\tisCurrent: () => boolean = () => !signal?.aborted,\n): Promise<PreviewMenuResult<Value> | undefined> {\n\tif (signal?.aborted || !isCurrent()) return { kind: \"closed\" };\n\tconst result = await runCustomInteraction<PreviewMenuResult<Value>>(ctx, {\n\t\tsignal,\n\t\tisCurrent,\n\t\tcreate: ({ tui, theme, keybindings, complete }) => {\n\t\t\tlet selectedIndex = 0;\n\t\t\tlet scrollOffset = 0;\n\t\t\tlet lastMaximumScroll = 0;\n\t\t\tlet lastViewportSize = 1;\n\t\t\tlet disposed = false;\n\n\t\t\tconst requestRender = () => {\n\t\t\t\tif (!disposed) tui.requestRender();\n\t\t\t};\n\t\t\tconst moveSelection = (delta: number) => {\n\t\t\t\tif (items.length === 0) return;\n\t\t\t\tselectedIndex = (selectedIndex + delta + items.length) % items.length;\n\t\t\t\trequestRender();\n\t\t\t};\n\t\t\tconst movePreview = (offset: number) => {\n\t\t\t\tscrollOffset = Math.max(0, Math.min(offset, lastMaximumScroll));\n\t\t\t\trequestRender();\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\trender(width: number): string[] {\n\t\t\t\t\tconst safeWidth = Math.max(1, width);\n\t\t\t\t\tconst terminalRows = Number.isFinite(tui.terminal.rows)\n\t\t\t\t\t\t? Math.floor(tui.terminal.rows)\n\t\t\t\t\t\t: 24;\n\t\t\t\t\tconst availableRows = Math.max(1, terminalRows - RESERVED_HOST_ROWS);\n\t\t\t\t\tconst bodyLines = body(safeWidth).flatMap((line) =>\n\t\t\t\t\t\tline ? wrapTextWithAnsi(line, safeWidth) : [\"\"],\n\t\t\t\t\t);\n\t\t\t\t\tconst layout = allocateLayout(availableRows, items.length, bodyLines.length);\n\t\t\t\t\tlastViewportSize = layout.previewRows;\n\t\t\t\t\tlastMaximumScroll = Math.max(0, bodyLines.length - layout.previewRows);\n\t\t\t\t\tscrollOffset = Math.max(0, Math.min(scrollOffset, lastMaximumScroll));\n\t\t\t\t\tconst actionStart = actionWindowStart(selectedIndex, items.length, layout.actionRows);\n\t\t\t\t\tconst actionLines = items\n\t\t\t\t\t\t.slice(actionStart, actionStart + layout.actionRows)\n\t\t\t\t\t\t.map((item, index) => {\n\t\t\t\t\t\t\tconst absoluteIndex = actionStart + index;\n\t\t\t\t\t\t\tconst prefix = absoluteIndex === selectedIndex ? \"\u2192 \" : \"  \";\n\t\t\t\t\t\t\treturn theme.fg(\n\t\t\t\t\t\t\t\tabsoluteIndex === selectedIndex ? \"accent\" : \"text\",\n\t\t\t\t\t\t\t\t`${prefix}${safeDisplayText(item.label)}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\tconst position = layout.positionRows\n\t\t\t\t\t\t? [theme.fg(\"dim\", previewPosition(scrollOffset, layout.previewRows, bodyLines.length))]\n\t\t\t\t\t\t: [];\n\t\t\t\t\tconst lines = [\n\t\t\t\t\t\t...(layout.titleRows ? [theme.fg(\"accent\", theme.bold(safeDisplayText(title)))] : []),\n\t\t\t\t\t\t...bodyLines.slice(scrollOffset, scrollOffset + layout.previewRows),\n\t\t\t\t\t\t...position,\n\t\t\t\t\t\t...actionLines,\n\t\t\t\t\t\t...(layout.hintRows ? [theme.fg(\"dim\", previewHint(keybindings))] : []),\n\t\t\t\t\t];\n\t\t\t\t\treturn lines.map((line) => truncateToWidth(line, safeWidth, \"\"));\n\t\t\t\t},\n\t\t\t\tinvalidate() {},\n\t\t\t\thandleInput(data: string) {\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tif (matchesKey(data, Key.ctrl(\"c\"))) {\n\t\t\t\t\t\tcomplete({ kind: \"closed\" });\n\t\t\t\t\t} else if (keybindings.matches(data, \"tui.select.cancel\")) {\n\t\t\t\t\t\tcomplete({ kind: \"cancelled\" });\n\t\t\t\t\t} else if (keybindings.matches(data, \"tui.select.up\")) {\n\t\t\t\t\t\tmoveSelection(-1);\n\t\t\t\t\t} else if (keybindings.matches(data, \"tui.select.down\")) {\n\t\t\t\t\t\tmoveSelection(1);\n\t\t\t\t\t} else if (keybindings.matches(data, \"tui.select.pageUp\")) {\n\t\t\t\t\t\tmovePreview(scrollOffset - lastViewportSize);\n\t\t\t\t\t} else if (keybindings.matches(data, \"tui.select.pageDown\")) {\n\t\t\t\t\t\tmovePreview(scrollOffset + lastViewportSize);\n\t\t\t\t\t} else if (matchesKey(data, Key.home)) {\n\t\t\t\t\t\tmovePreview(0);\n\t\t\t\t\t} else if (matchesKey(data, Key.end)) {\n\t\t\t\t\t\tmovePreview(lastMaximumScroll);\n\t\t\t\t\t} else if (keybindings.matches(data, \"tui.select.confirm\")) {\n\t\t\t\t\t\tconst item = items[selectedIndex];\n\t\t\t\t\t\tif (item) complete({ kind: \"selected\", value: item.value });\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdispose() {\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tdisposed = true;\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t});\n\tif (result.kind === \"completed\") return result.value;\n\tif (result.kind === \"error\") throw result.error;\n\tif (result.kind === \"stale\" && (signal?.aborted || !isCurrent())) return { kind: \"closed\" };\n\treturn undefined;\n}\n\ninterface PreviewLayout {\n\ttitleRows: number;\n\tpreviewRows: number;\n\tpositionRows: number;\n\tactionRows: number;\n\thintRows: number;\n}\n\nfunction allocateLayout(\n\tavailableRows: number,\n\tactionCount: number,\n\tbodyLineCount: number,\n): PreviewLayout {\n\tif (availableRows === 1) {\n\t\treturn { titleRows: 0, previewRows: 0, positionRows: 0, actionRows: 1, hintRows: 0 };\n\t}\n\tconst titleRows = availableRows >= 3 ? 1 : 0;\n\tconst hintRows = availableRows >= 3 ? 1 : 0;\n\tconst minimumPreviewRows = bodyLineCount > 0 && availableRows >= 4 ? 1 : 0;\n\tconst availableActionRows = Math.max(\n\t\t1,\n\t\tavailableRows - titleRows - hintRows - minimumPreviewRows,\n\t);\n\tconst actionRows = Math.min(Math.max(1, actionCount), availableActionRows);\n\tlet previewRows = Math.max(0, availableRows - titleRows - hintRows - actionRows);\n\tconst positionRows = previewRows >= 2 && bodyLineCount > previewRows ? 1 : 0;\n\tpreviewRows -= positionRows;\n\treturn { titleRows, previewRows, positionRows, actionRows, hintRows };\n}\n\nfunction actionWindowStart(selectedIndex: number, itemCount: number, viewportSize: number): number {\n\tif (itemCount <= viewportSize) return 0;\n\treturn Math.max(0, Math.min(selectedIndex, itemCount - viewportSize));\n}\n\nfunction previewPosition(offset: number, viewportSize: number, lineCount: number): string {\n\tif (lineCount === 0) return \"0/0\";\n\treturn `${offset + 1}-${Math.min(lineCount, offset + viewportSize)}/${lineCount}`;\n}\n\nfunction previewHint(keybindings: Pick<KeybindingsManager, \"getKeys\">): string {\n\tconst up = bindingText(keybindings, \"tui.select.up\");\n\tconst down = bindingText(keybindings, \"tui.select.down\");\n\tconst confirm = bindingText(keybindings, \"tui.select.confirm\");\n\tconst cancel = bindingText(keybindings, \"tui.select.cancel\", \"ctrl+c\");\n\tconst pageUp = bindingText(keybindings, \"tui.select.pageUp\");\n\tconst pageDown = bindingText(keybindings, \"tui.select.pageDown\");\n\treturn [\n\t\t...(up || down ? [`${[up, down].filter(Boolean).join(\"/\")} navigate`] : []),\n\t\t...(confirm ? [`${confirm} select`] : []),\n\t\t...(cancel ? [`${cancel} discard`] : []),\n\t\t\"ctrl+c close\",\n\t\t...(pageUp || pageDown ? [`${[pageUp, pageDown].filter(Boolean).join(\"/\")} preview`] : []),\n\t].join(\" \u2022 \");\n}\n\nfunction bindingText(\n\tkeybindings: Pick<KeybindingsManager, \"getKeys\">,\n\tbinding: Parameters<KeybindingsManager[\"getKeys\"]>[0],\n\texcluded?: string,\n): string {\n\treturn keybindings\n\t\t.getKeys(binding)\n\t\t.filter((key) => key !== excluded)\n\t\t.map((key) => {\n\t\t\tif (key === \"up\") return \"\u2191\";\n\t\t\tif (key === \"down\") return \"\u2193\";\n\t\t\tif (key === \"escape\") return \"esc\";\n\t\t\tif (key === \"return\") return \"enter\";\n\t\t\treturn safeDisplayText(key);\n\t\t})\n\t\t.join(\"/\");\n}\n\nfunction safeDisplayText(value: string): string {\n\treturn Array.from(stripVTControlCharacters(value), (character) => {\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\t\tconst control = codePoint <= 0x1f || (codePoint >= 0x7f && codePoint <= 0x9f);\n\t\treturn control ? \"\" : character;\n\t}).join(\"\");\n}\n", "import { stringify, type TomlTable, type TomlValue } from \"smol-toml\";\nimport type { StarshipConfig } from \"./config.js\";\nimport { MODULE_DEFINITIONS } from \"./modules/catalog.js\";\nimport type { ModuleOptionValue } from \"./modules/types.js\";\n\nexport function projectEffectiveConfig(config: StarshipConfig): TomlTable {\n\tconst projected: TomlTable = {\n\t\tformat: config.format,\n\t};\n\tif (config.palette !== undefined) projected.palette = config.palette;\n\tprojected.palettes = Object.fromEntries(\n\t\tsortedEntries(config.palettes).map(([name, colors]) => [name, sortedRecord(colors)]),\n\t);\n\tfor (const definition of MODULE_DEFINITIONS) {\n\t\tconst module = config.modules[definition.name];\n\t\tconst table: TomlTable = {\n\t\t\tformat: module.format,\n\t\t\tsymbol: module.symbol,\n\t\t};\n\t\tif (definition.styleDefaults) {\n\t\t\tfor (const field of Object.keys(definition.styleDefaults)) {\n\t\t\t\ttable[field] = module.styles[field] ?? \"\";\n\t\t\t}\n\t\t} else if (!definition.displayDefaults) {\n\t\t\ttable.style = module.style;\n\t\t}\n\t\tif (definition.displayDefaults) {\n\t\t\ttable.display = module.display.map((entry) => ({ ...entry }));\n\t\t}\n\t\ttable.disabled = module.disabled;\n\t\tfor (const key of Object.keys(definition.options ?? {})) {\n\t\t\ttable[key] = cloneOptionValue(module.options[key]);\n\t\t}\n\t\tif (definition.name === \"extension_status\") {\n\t\t\ttable.separator = config.extensionStatus.separator;\n\t\t\ttable.max_statuses = config.extensionStatus.maxStatuses;\n\t\t\ttable.icons = sortedRecord(config.extensionStatus.icons);\n\t\t}\n\t\tprojected[definition.name] = table;\n\t}\n\treturn projected;\n}\n\nexport function serializeEffectiveConfig(config: StarshipConfig): string {\n\treturn stringify(projectEffectiveConfig(config));\n}\n\nfunction cloneOptionValue(value: ModuleOptionValue | undefined): TomlValue {\n\tif (value === undefined) throw new Error(\"Missing normalized module option\");\n\tif (Array.isArray(value)) return [...(value as readonly string[])];\n\tif (typeof value === \"object\") {\n\t\treturn sortedRecord(value as Readonly<Record<string, string>>);\n\t}\n\treturn value;\n}\n\nfunction sortedRecord(values: Readonly<Record<string, string>>): Record<string, string> {\n\treturn Object.fromEntries(sortedEntries(values));\n}\n\nfunction sortedEntries<Value>(values: Readonly<Record<string, Value>>): Array<[string, Value]> {\n\treturn Object.entries(values).sort(([left], [right]) =>\n\t\tleft < right ? -1 : left > right ? 1 : 0,\n\t);\n}\n", "export const BRACKETED_SEGMENTS_PRESET = String.raw`# Font-safe bracketed segments inspired by Starship.\nformat = \"$brand$model$thinking$directory$git_branch$git_status$activity$context$time\"\n\n[brand]\nformat = '[\\[$symbol\\]]($style) '\nstyle = \"bold white\"\n\n[model]\nformat = '[\\[$symbol $model\\]]($style) '\nsymbol = \"AI\"\nstyle = \"bold blue\"\n\n[thinking]\nformat = '[\\[$symbol $level\\]]($style) '\nsymbol = \"think\"\nstyle = \"bold purple\"\n\n[directory]\nformat = '[\\[$symbol $path\\]]($style) '\nsymbol = \"dir\"\nstyle = \"cyan bold\"\n\n[git_branch]\nformat = '[\\[$symbol $branch\\]]($style) '\nsymbol = \"git\"\nstyle = \"bold purple\"\n\n[git_status]\nformat = '[\\[$all_status( $ahead_behind)\\]]($style) '\nstyle = \"red bold\"\n\n[activity]\nformat = '[\\[$text\\]]($style) '\nsymbol = \"run\"\nstyle = \"bold yellow\"\n\n[context]\nformat = '[\\[$symbol $percentage\\]]($style) '\nsymbol = \"ctx\"\n\n[time]\nformat = '[\\[$time\\]]($style)'\nsymbol = \"\"\nstyle = \"bold yellow\"\n`;\n", "export const CATPPUCCIN_POWERLINE_PRESET = `# Pi-native adaptation of Starship's Catppuccin Powerline preset.\nformat = \"[\uE0B6](red)$brand$model[\uE0B0](bg:peach fg:red)$directory[\uE0B0](bg:yellow fg:peach)$git_branch$git_status[\uE0B0](fg:yellow bg:green)$thinking$activity[\uE0B0](fg:green bg:sapphire)$context[\uE0B0](fg:sapphire bg:lavender)$time[\uE0B4](fg:lavender)\"\npalette = \"catppuccin_mocha\"\n\n[brand]\nformat = \"[ $symbol ]($style)\"\nsymbol = \"\uE285\"\nstyle = \"fg:crust bg:red bold\"\n\n[model]\nformat = \"[$model ]($style)\"\nsymbol = \"\"\nstyle = \"fg:crust bg:red bold\"\n\n[directory]\nformat = \"[ $path ]($style)\"\nsymbol = \"\"\nstyle = \"fg:crust bg:peach bold\"\ntruncation_length = 3\ntruncation_symbol = \"\u2026/\"\n\n[git_branch]\nformat = \"[ $symbol $branch ]($style)\"\nsymbol = \"\uF418\"\nstyle = \"fg:crust bg:yellow bold\"\n\n[git_status]\nformat = \"[$all_status$ahead_behind ]($style)\"\nstyle = \"fg:crust bg:yellow bold\"\n\n[thinking]\nformat = \"[ $symbol $level ]($style)\"\nsymbol = \"\uDB81\uDD1F\"\nstyle = \"fg:crust bg:green bold\"\n\n[activity]\nformat = \"[ $text ]($style)\"\nsymbol = \"\uDB81\uDC6E\"\nstyle = \"fg:crust bg:green bold\"\n\n[context]\nformat = \"[ $symbol $percentage ](fg:crust bg:sapphire bold)\"\nsymbol = \"\uDB80\uDF5B\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"sapphire\"\nhidden = false\n\n[time]\nformat = \"[ \uF43A $time ]($style)\"\nsymbol = \"\"\nstyle = \"fg:crust bg:lavender bold\"\n\n[palettes.catppuccin_mocha]\nred = \"#f38ba8\"\npeach = \"#fab387\"\nyellow = \"#f9e2af\"\ngreen = \"#a6e3a1\"\nsapphire = \"#74c7ec\"\nlavender = \"#b4befe\"\ncrust = \"#11111b\"\n\n[palettes.catppuccin_frappe]\nred = \"#e78284\"\npeach = \"#ef9f76\"\nyellow = \"#e5c890\"\ngreen = \"#a6d189\"\nsapphire = \"#85c1dc\"\nlavender = \"#babbf1\"\ncrust = \"#232634\"\n\n[palettes.catppuccin_latte]\nred = \"#d20f39\"\npeach = \"#fe640b\"\nyellow = \"#df8e1d\"\ngreen = \"#40a02b\"\nsapphire = \"#209fb5\"\nlavender = \"#7287fd\"\ncrust = \"#dce0e8\"\n\n[palettes.catppuccin_macchiato]\nred = \"#ed8796\"\npeach = \"#f5a97f\"\nyellow = \"#eed49f\"\ngreen = \"#a6da95\"\nsapphire = \"#7dc4e4\"\nlavender = \"#b7bdf8\"\ncrust = \"#181926\"\n`;\n", "export const GRUVBOX_RAINBOW_PRESET = `# Pi-native adaptation of Starship's Gruvbox Rainbow preset.\nformat = \"[\uE0B6](color_orange)$brand$model[\uE0B0](bg:color_yellow fg:color_orange)$directory[\uE0B0](fg:color_yellow bg:color_aqua)$git_branch$git_status[\uE0B0](fg:color_aqua bg:color_blue)$thinking$activity[\uE0B0](fg:color_blue bg:color_bg3)$context[\uE0B0](fg:color_bg3 bg:color_bg1)$time[\uE0B4](fg:color_bg1)\"\npalette = \"gruvbox_dark\"\n\n[palettes.gruvbox_dark]\ncolor_fg0 = \"#fbf1c7\"\ncolor_bg1 = \"#3c3836\"\ncolor_bg3 = \"#665c54\"\ncolor_blue = \"#458588\"\ncolor_aqua = \"#689d6a\"\ncolor_green = \"#98971a\"\ncolor_orange = \"#d65d0e\"\ncolor_purple = \"#b16286\"\ncolor_red = \"#cc241d\"\ncolor_yellow = \"#d79921\"\n\n[brand]\nformat = \"[ $symbol ]($style)\"\nsymbol = \"\uE285\"\nstyle = \"fg:color_fg0 bg:color_orange bold\"\n\n[model]\nformat = \"[$model ]($style)\"\nsymbol = \"\"\nstyle = \"fg:color_fg0 bg:color_orange bold\"\n\n[directory]\nformat = \"[ $path ]($style)\"\nsymbol = \"\"\nstyle = \"fg:color_fg0 bg:color_yellow bold\"\ntruncation_length = 3\ntruncation_symbol = \"\u2026/\"\n\n[git_branch]\nformat = \"[ $symbol $branch ]($style)\"\nsymbol = \"\uF418\"\nstyle = \"fg:color_fg0 bg:color_aqua bold\"\n\n[git_status]\nformat = \"[$all_status$ahead_behind ]($style)\"\nstyle = \"fg:color_fg0 bg:color_aqua bold\"\n\n[thinking]\nformat = \"[ $symbol $level ]($style)\"\nsymbol = \"\uDB81\uDD1F\"\nstyle = \"fg:color_fg0 bg:color_blue bold\"\n\n[activity]\nformat = \"[ $text ]($style)\"\nsymbol = \"\uDB81\uDC6E\"\nstyle = \"fg:color_fg0 bg:color_blue bold\"\n\n[context]\nformat = \"[ $symbol $percentage ](fg:color_fg0 bg:color_bg3 bold)\"\nsymbol = \"\uDB80\uDF5B\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"color_bg3\"\nhidden = false\n\n[time]\nformat = \"[ \uF43A $time ]($style)\"\nsymbol = \"\"\nstyle = \"fg:color_fg0 bg:color_bg1 bold\"\n`;\n", "export const JETPACK_PRESET = `# Pi-native adaptation of Starship's Jetpack preset.\n# Left-side session activity and right-side workspace context meet at $fill.\nformat = \"$activity$context$fill$directory$git_branch$git_state$git_status$time\"\n\n[activity]\nformat = \"[\u25C4 $text ]($style)\"\nsymbol = \"\"\nstyle = \"italic white\"\n\n[context]\nformat = \"[\u25EF $percentage]($style) \"\nsymbol = \"\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"bold purple\"\nhidden = false\n\n[fill]\nsymbol = \" \"\nstyle = \"none\"\n\n[directory]\nformat = \"[$path]($style) \"\nsymbol = \"\"\nstyle = \"italic blue\"\ntruncation_length = 2\ntruncation_symbol = \"\u25A1 \"\nhome_symbol = \"\u2302\"\n\n[git_branch]\nformat = \"[$symbol$branch]($style)\"\nsymbol = \"\u25B3 \"\nstyle = \"italic bright-blue\"\ntruncation_length = 11\ntruncation_symbol = \"\u22EF\"\n\n[git_state]\nformat = \"([\u23AA$state $progress_current/$progress_total\u23A5]($style))\"\nsymbol = \"\"\nstyle = \"italic bright-purple\"\n\n[git_status]\nformat = \"([\u23AA$all_status$ahead_behind\u23A5]($style))\"\nstyle = \"bold italic bright-blue\"\n\n[time]\nformat = \"[ $time]($style)\"\nsymbol = \"\"\nstyle = \"italic dimmed white\"\n`;\n", "export const MINIMAL_PRESET = `# A compact, font-safe Pi footer.\nformat = \"$model$directory$git_branch$activity\"\n\n[model]\nformat = \"[$model]($style) \"\nsymbol = \"\"\nstyle = \"bold blue\"\n\n[directory]\nformat = \"[$path]($style) \"\nsymbol = \"\"\nstyle = \"cyan bold\"\n\n[git_branch]\nformat = \"[git:$branch]($style) \"\nsymbol = \"\"\nstyle = \"bold purple\"\n\n[activity]\nformat = \"[$text]($style)\"\nsymbol = \"*\"\nstyle = \"bold yellow\"\n`;\n", "export const NERD_FONT_SYMBOLS_PRESET = `# Balanced Pi footer with Nerd Font symbols.\nformat = \"$brand$model$thinking$directory$git_branch$git_status$activity$context$time\"\n\n[brand]\nsymbol = \"\uE285\"\n\n[model]\nsymbol = \"\uDB81\uDEA9\"\n\n[thinking]\nsymbol = \"\uDB81\uDD1F\"\n\n[directory]\nsymbol = \"\uDB80\uDE4B\"\n\n[git_branch]\nsymbol = \"\uF418\"\n\n[activity]\nsymbol = \"\uDB81\uDC6E\"\n\n[context]\nsymbol = \"\uDB80\uDF5B\"\n\n[time]\nsymbol = \"\uF43A\"\n`;\n", "export const NO_EMPTY_ICONS_PRESET = `# Pi-native adaptation of Starship's No Empty Icons preset.\n# Each label lives inside the same conditional group as its value.\nformat = \"$model$thinking$directory$git_branch$git_status$activity$context$time\"\n\n[model]\nformat = \"([model $model]($style) )\"\nsymbol = \"\"\nstyle = \"bold blue\"\n\n[thinking]\nformat = \"([thinking $level]($style) )\"\nsymbol = \"\"\nstyle = \"bold purple\"\n\n[directory]\nformat = \"([in $path]($style) )\"\nsymbol = \"\"\nstyle = \"cyan bold\"\n\n[git_branch]\nformat = \"([on $branch]($style) )\"\nsymbol = \"\"\nstyle = \"bold purple\"\n\n[git_status]\nformat = \"([$all_status$ahead_behind]($style) )\"\nstyle = \"red bold\"\n\n[activity]\nformat = \"([while $text]($style) )\"\nsymbol = \"\"\nstyle = \"bold yellow\"\n\n[context]\nformat = \"([using $percentage context]($style) )\"\nsymbol = \"\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"bold green\"\nhidden = false\n\n[time]\nformat = \"([at $time]($style))\"\nsymbol = \"\"\nstyle = \"bold yellow\"\n`;\n", "export const NO_NERD_FONT_PRESET = `# Pi-native adaptation of Starship's No Nerd Font preset.\nformat = \"$brand$model$thinking$directory$git_branch$git_status$activity$context$time\"\n\n[brand]\nformat = \"[$symbol]($style) \"\nsymbol = \"\u2726\"\nstyle = \"bold white\"\n\n[model]\nformat = \"[$symbol $model]($style) \"\nsymbol = \"\u25C6\"\nstyle = \"bold blue\"\n\n[thinking]\nformat = \"[$symbol $level]($style) \"\nsymbol = \"\u25C7\"\nstyle = \"bold purple\"\n\n[directory]\nformat = \"[$symbol $path]($style) \"\nsymbol = \"\u2302\"\nstyle = \"cyan bold\"\n\n[git_branch]\nformat = \"[$symbol $branch]($style) \"\nsymbol = \"\u2387\"\nstyle = \"bold purple\"\n\n[git_status]\nformat = \"[$all_status( $ahead_behind)]($style) \"\nstyle = \"red bold\"\n\n[activity]\nformat = \"[$text]($style) \"\nsymbol = \"\u25CF\"\nstyle = \"bold yellow\"\n\n[context]\nformat = \"[$symbol $percentage]($style) \"\nsymbol = \"\u25CC\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"bold green\"\nhidden = false\n\n[time]\nformat = \"[$symbol $time]($style)\"\nsymbol = \"\u25F4\"\nstyle = \"bold yellow\"\n`;\n", "export const NO_RUNTIME_VERSIONS_PRESET = `# Pi-native adaptation of Starship's No Runtime Versions preset.\n# Model and thinking modules retain presence symbols while hiding version-like details.\nformat = \"$brand$model$thinking$directory$git_branch$git_status$activity$context$time\"\n\n[brand]\nformat = \"[$symbol]($style) \"\nsymbol = \"\u03C0\"\nstyle = \"bold white\"\n\n[model]\nformat = \"[$symbol]($style) \"\nsymbol = \"AI\"\nstyle = \"bold blue\"\n\n[thinking]\nformat = \"[$symbol]($style) \"\nsymbol = \"think\"\nstyle = \"bold purple\"\n\n[directory]\nformat = \"[$path]($style) \"\nsymbol = \"\"\nstyle = \"cyan bold\"\n\n[git_branch]\nformat = \"[$symbol$branch]($style) \"\nsymbol = \"git:\"\nstyle = \"bold purple\"\n\n[git_status]\nformat = \"[$all_status( $ahead_behind)]($style) \"\nstyle = \"red bold\"\n\n[activity]\nformat = \"[$symbol]($style) \"\nsymbol = \"run\"\nstyle = \"bold yellow\"\n\n[context]\nformat = \"[$percentage]($style) \"\nsymbol = \"\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"bold green\"\nhidden = false\n\n[time]\nformat = \"[$time]($style)\"\nsymbol = \"\"\nstyle = \"bold yellow\"\n`;\n", "export const PASTEL_POWERLINE_PRESET = `# Pi-native adaptation of Starship's Pastel Powerline preset.\nformat = \"[\uE0B6](#9A348E)$brand$model[\uE0B0](bg:#DA627D fg:#9A348E)$directory[\uE0B0](fg:#DA627D bg:#FCA17D)$git_branch$git_status[\uE0B0](fg:#FCA17D bg:#86BBD8)$thinking$activity[\uE0B0](fg:#86BBD8 bg:#06969A)$context[\uE0B0](fg:#06969A bg:#33658A)$time[\uE0B4](fg:#33658A)\"\n\n[brand]\nformat = \"[ $symbol ]($style)\"\nsymbol = \"\uE285\"\nstyle = \"fg:#ffffff bg:#9A348E bold\"\n\n[model]\nformat = \"[$model ]($style)\"\nsymbol = \"\"\nstyle = \"fg:#ffffff bg:#9A348E bold\"\n\n[directory]\nformat = \"[ $path ]($style)\"\nsymbol = \"\"\nstyle = \"fg:#ffffff bg:#DA627D bold\"\ntruncation_length = 3\ntruncation_symbol = \"\u2026/\"\n\n[git_branch]\nformat = \"[ $symbol $branch ]($style)\"\nsymbol = \"\uF418\"\nstyle = \"fg:#1f1f1f bg:#FCA17D bold\"\n\n[git_status]\nformat = \"[$all_status$ahead_behind ]($style)\"\nstyle = \"fg:#1f1f1f bg:#FCA17D bold\"\n\n[thinking]\nformat = \"[ $symbol $level ]($style)\"\nsymbol = \"\uDB81\uDD1F\"\nstyle = \"fg:#1f1f1f bg:#86BBD8 bold\"\n\n[activity]\nformat = \"[ $text ]($style)\"\nsymbol = \"\uDB81\uDC6E\"\nstyle = \"fg:#1f1f1f bg:#86BBD8 bold\"\n\n[context]\nformat = \"[ $symbol $percentage ](fg:#ffffff bg:#06969A bold)\"\nsymbol = \"\uDB80\uDF5B\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"#06969A\"\nhidden = false\n\n[time]\nformat = \"[ \u2665 $time ]($style)\"\nsymbol = \"\"\nstyle = \"fg:#ffffff bg:#33658A bold\"\n`;\n", "export const PLAIN_TEXT_SYMBOLS_PRESET = `# Pi-native adaptation of Starship's Plain Text Symbols preset.\nformat = \"$brand$model$thinking$directory$git_branch$git_status$activity$context$time\"\n\n[brand]\nformat = \"[$symbol]($style) \"\nsymbol = \"pi\"\nstyle = \"bold white\"\n\n[model]\nformat = \"[$symbol $model]($style) \"\nsymbol = \"model\"\nstyle = \"bold blue\"\n\n[thinking]\nformat = \"[$symbol $level]($style) \"\nsymbol = \"thinking\"\nstyle = \"bold purple\"\n\n[directory]\nformat = \"[$symbol $path]($style) \"\nsymbol = \"dir\"\nstyle = \"cyan bold\"\n\n[git_branch]\nformat = \"[$symbol $branch]($style) \"\nsymbol = \"git\"\nstyle = \"bold purple\"\ntruncation_symbol = \"...\"\n\n[git_status]\nformat = \"[$all_status( $ahead_behind)]($style) \"\nstyle = \"red bold\"\n\n[activity]\nformat = \"[$text]($style) \"\nsymbol = \"active\"\nstyle = \"bold yellow\"\n\n[context]\nformat = \"[$symbol $percentage]($style) \"\nsymbol = \"context\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"bold green\"\nhidden = false\n\n[time]\nformat = \"[$symbol $time]($style)\"\nsymbol = \"time\"\nstyle = \"bold yellow\"\n`;\n", "export const PURE_PRESET = `# Pi-native adaptation of Starship's Pure preset.\nformat = \"$directory$git_branch$git_state$git_status$activity\\\\n$model$thinking$context$fill$time\"\n\n[directory]\nformat = \"[$path]($style) \"\nsymbol = \"\"\nstyle = \"blue\"\n\n[git_branch]\nformat = \"[$branch]($style) \"\nsymbol = \"\"\nstyle = \"bright-black\"\n\n[git_state]\nformat = '([($state( $progress_current/$progress_total))]($style) )'\nsymbol = \"\"\nstyle = \"bright-black\"\n\n[git_status]\nformat = \"[(*$all_status)](218) [$ahead_behind]($style) \"\nstyle = \"cyan\"\n\n[activity]\nformat = \"[$text]($style) \"\nsymbol = \"\"\nstyle = \"yellow\"\n\n[model]\nformat = \"[$model]($style) \"\nsymbol = \"\"\nstyle = \"bright-black\"\n\n[thinking]\nformat = \"[$level]($style) \"\nsymbol = \"\"\nstyle = \"bright-black\"\n\n[context]\nformat = \"[$percentage]($style)\"\nsymbol = \"\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"bright-black\"\nhidden = false\n\n[fill]\nsymbol = \" \"\nstyle = \"none\"\n\n[time]\nformat = \"[$time]($style)\"\nsymbol = \"\"\nstyle = \"bright-black\"\n`;\n", "export const TOKYO_NIGHT_PRESET = `# Pi-native adaptation of Starship's Tokyo Night preset.\nformat = \"[\u2591\u2592\u2593](#a3aed2)$brand$model[\uE0B4](bg:#769ff0 fg:#a3aed2)$directory[\uE0B4](fg:#769ff0 bg:#394260)$git_branch$git_status[\uE0B4](fg:#394260 bg:#212736)$thinking$activity[\uE0B4](fg:#212736 bg:#1d2230)$context$time[\uE0B4](fg:#1d2230)\"\n\n[brand]\nformat = \"[ $symbol ]($style)\"\nsymbol = \"\uE285\"\nstyle = \"fg:#090c0c bg:#a3aed2 bold\"\n\n[model]\nformat = \"[$model ]($style)\"\nsymbol = \"\"\nstyle = \"fg:#090c0c bg:#a3aed2 bold\"\n\n[directory]\nformat = \"[ $path ]($style)\"\nsymbol = \"\"\nstyle = \"fg:#e3e5e5 bg:#769ff0 bold\"\ntruncation_length = 3\ntruncation_symbol = \"\u2026/\"\n\n[git_branch]\nformat = \"[ $symbol $branch ]($style)\"\nsymbol = \"\uF418\"\nstyle = \"fg:#769ff0 bg:#394260 bold\"\n\n[git_status]\nformat = \"[$all_status$ahead_behind ]($style)\"\nstyle = \"fg:#769ff0 bg:#394260 bold\"\n\n[thinking]\nformat = \"[ $symbol $level ]($style)\"\nsymbol = \"\uDB81\uDD1F\"\nstyle = \"fg:#769ff0 bg:#212736 bold\"\n\n[activity]\nformat = \"[ $text ]($style)\"\nsymbol = \"\uDB81\uDC6E\"\nstyle = \"fg:#769ff0 bg:#212736 bold\"\n\n[context]\nformat = \"[ $symbol $percentage ](fg:#a0a9cb bg:#1d2230 bold)\"\nsymbol = \"\uDB80\uDF5B\"\n\n[[context.display]]\nthreshold = 0\nstyle = \"#1d2230\"\nhidden = false\n\n[time]\nformat = \"[\uF43A $time ]($style)\"\nsymbol = \"\"\nstyle = \"fg:#a0a9cb bg:#1d2230 bold\"\n`;\n", "import { BRACKETED_SEGMENTS_PRESET } from \"./bracketed-segments.js\";\nimport { CATPPUCCIN_POWERLINE_PRESET } from \"./catppuccin-powerline.js\";\nimport { GRUVBOX_RAINBOW_PRESET } from \"./gruvbox-rainbow.js\";\nimport { JETPACK_PRESET } from \"./jetpack.js\";\nimport { MINIMAL_PRESET } from \"./minimal.js\";\nimport { NERD_FONT_SYMBOLS_PRESET } from \"./nerd-font-symbols.js\";\nimport { NO_EMPTY_ICONS_PRESET } from \"./no-empty-icons.js\";\nimport { NO_NERD_FONT_PRESET } from \"./no-nerd-font.js\";\nimport { NO_RUNTIME_VERSIONS_PRESET } from \"./no-runtime-versions.js\";\nimport { PASTEL_POWERLINE_PRESET } from \"./pastel-powerline.js\";\nimport { PLAIN_TEXT_SYMBOLS_PRESET } from \"./plain-text-symbols.js\";\nimport { PURE_PRESET } from \"./pure-preset.js\";\nimport { TOKYO_NIGHT_PRESET } from \"./tokyo-night.js\";\n\nexport interface StarshipPreset {\n\tid:\n\t\t| \"minimal\"\n\t\t| \"bracketed-segments\"\n\t\t| \"catppuccin-powerline\"\n\t\t| \"gruvbox-rainbow\"\n\t\t| \"jetpack\"\n\t\t| \"nerd-font-symbols\"\n\t\t| \"no-empty-icons\"\n\t\t| \"no-nerd-font\"\n\t\t| \"no-runtime-versions\"\n\t\t| \"pastel-powerline\"\n\t\t| \"plain-text-symbols\"\n\t\t| \"pure-preset\"\n\t\t| \"tokyo-night\";\n\tlabel: string;\n\tdescription: string;\n\trequiresNerdFont: boolean;\n\trawDocument: string;\n}\n\nexport const STARSHIP_PRESETS = [\n\t{\n\t\tid: \"minimal\",\n\t\tlabel: \"Minimal\",\n\t\tdescription: \"Compact Pi essentials \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: MINIMAL_PRESET,\n\t},\n\t{\n\t\tid: \"bracketed-segments\",\n\t\tlabel: \"Bracketed Segments\",\n\t\tdescription: \"Balanced Pi and Git details in brackets \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: BRACKETED_SEGMENTS_PRESET,\n\t},\n\t{\n\t\tid: \"catppuccin-powerline\",\n\t\tlabel: \"Catppuccin Powerline\",\n\t\tdescription: \"Mocha connected color blocks \u00B7 requires Nerd Font\",\n\t\trequiresNerdFont: true,\n\t\trawDocument: CATPPUCCIN_POWERLINE_PRESET,\n\t},\n\t{\n\t\tid: \"gruvbox-rainbow\",\n\t\tlabel: \"Gruvbox Rainbow\",\n\t\tdescription: \"Warm Gruvbox connected segments \u00B7 requires Nerd Font\",\n\t\trequiresNerdFont: true,\n\t\trawDocument: GRUVBOX_RAINBOW_PRESET,\n\t},\n\t{\n\t\tid: \"jetpack\",\n\t\tlabel: \"Jetpack\",\n\t\tdescription: \"Airy geometric left/right layout \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: JETPACK_PRESET,\n\t},\n\t{\n\t\tid: \"nerd-font-symbols\",\n\t\tlabel: \"Nerd Font Symbols\",\n\t\tdescription: \"Balanced default layout with icon-rich symbols \u00B7 requires Nerd Font\",\n\t\trequiresNerdFont: true,\n\t\trawDocument: NERD_FONT_SYMBOLS_PRESET,\n\t},\n\t{\n\t\tid: \"no-empty-icons\",\n\t\tlabel: \"No Empty Icons\",\n\t\tdescription: \"Conditional labels never appear without values \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: NO_EMPTY_ICONS_PRESET,\n\t},\n\t{\n\t\tid: \"no-nerd-font\",\n\t\tlabel: \"No Nerd Font\",\n\t\tdescription: \"Portable Unicode symbols without private-use glyphs \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: NO_NERD_FONT_PRESET,\n\t},\n\t{\n\t\tid: \"no-runtime-versions\",\n\t\tlabel: \"No Runtime Versions\",\n\t\tdescription: \"Presence indicators without model or thinking details \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: NO_RUNTIME_VERSIONS_PRESET,\n\t},\n\t{\n\t\tid: \"pastel-powerline\",\n\t\tlabel: \"Pastel Powerline\",\n\t\tdescription: \"Pastel connected color blocks \u00B7 requires Nerd Font\",\n\t\trequiresNerdFont: true,\n\t\trawDocument: PASTEL_POWERLINE_PRESET,\n\t},\n\t{\n\t\tid: \"plain-text-symbols\",\n\t\tlabel: \"Plain Text Symbols\",\n\t\tdescription: \"Plain words replace pictograms \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: PLAIN_TEXT_SYMBOLS_PRESET,\n\t},\n\t{\n\t\tid: \"pure-preset\",\n\t\tlabel: \"Pure Preset\",\n\t\tdescription: \"Clean two-line workspace and session context \u00B7 font-safe\",\n\t\trequiresNerdFont: false,\n\t\trawDocument: PURE_PRESET,\n\t},\n\t{\n\t\tid: \"tokyo-night\",\n\t\tlabel: \"Tokyo Night\",\n\t\tdescription: \"Cool connected color blocks \u00B7 requires Nerd Font\",\n\t\trequiresNerdFont: true,\n\t\trawDocument: TOKYO_NIGHT_PRESET,\n\t},\n] as const satisfies readonly StarshipPreset[];\n\nexport function getStarshipPreset(id: StarshipPreset[\"id\"]): StarshipPreset {\n\tconst preset = STARSHIP_PRESETS.find((candidate) => candidate.id === id);\n\tif (!preset) throw new Error(`Unknown pi-starship preset: ${id}`);\n\treturn preset;\n}\n\nexport function presetForDocument(rawDocument: string | undefined): StarshipPreset | undefined {\n\treturn STARSHIP_PRESETS.find((preset) => preset.rawDocument === rawDocument);\n}\n", "import { stripVTControlCharacters } from \"node:util\";\nimport type { StatuslineInspection } from \"./modules/inspection.js\";\n\nexport function formatFooterExplanation(inspection: StatuslineInspection | undefined): string {\n\tif (!inspection) {\n\t\treturn safeLines([\n\t\t\t\"Footer inspection is unavailable until the TUI footer is ready.\",\n\t\t\t\"No collection work was started.\",\n\t\t]);\n\t}\n\tif (inspection.showing.length === 0) {\n\t\treturn safeLines([\n\t\t\t\"No modules are currently showing.\",\n\t\t\t\"Open Modules to inspect empty, disabled, or unreachable modules.\",\n\t\t]);\n\t}\n\treturn safeLines(\n\t\tinspection.showing.flatMap((module, index) => [\n\t\t\t...(index > 0 ? [\"\"] : []),\n\t\t\tmodule.name,\n\t\t\t...previewLines(module.preview),\n\t\t\tmodule.description,\n\t\t]),\n\t);\n}\n\nfunction previewLines(preview: string): string[] {\n\tconst lines = preview ? preview.split(\"\\n\") : [\"(no text)\"];\n\treturn lines.map((line, index) => `${index === 0 ? \"Value: \" : \"       \"}${line}`);\n}\n\nfunction safeLines(lines: readonly string[]): string {\n\treturn lines.map(safeDisplayText).join(\"\\n\");\n}\n\nfunction safeDisplayText(value: string): string {\n\treturn Array.from(stripVTControlCharacters(value), (character) => {\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\t\treturn codePoint <= 0x1f || (codePoint >= 0x7f && codePoint <= 0x9f) ? \"\" : character;\n\t}).join(\"\");\n}\n", "import type { ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport { runLiveChoice } from \"@narumitw/pi-tui-kit\";\nimport type { StarshipPreset } from \"./presets/catalog.js\";\n\nexport type PresetPickerResult =\n\t| { kind: \"apply\"; presetId: StarshipPreset[\"id\"] }\n\t| { kind: \"customize\"; presetId: StarshipPreset[\"id\"] }\n\t| { kind: \"back\" }\n\t| { kind: \"close\" };\n\nexport interface PresetPickerOptions {\n\tpresets: readonly StarshipPreset[];\n\tactivePresetId?: StarshipPreset[\"id\"];\n\tinitialPresetId?: StarshipPreset[\"id\"];\n\tsignal: AbortSignal;\n\tisCurrent(): boolean;\n\tpreview(preset: StarshipPreset): void;\n}\n\nexport async function showPresetPicker(\n\tctx: ExtensionCommandContext,\n\toptions: PresetPickerOptions,\n): Promise<PresetPickerResult> {\n\tconst current =\n\t\toptions.presets.find((preset) => preset.id === options.activePresetId)?.label ??\n\t\t\"Custom configuration\";\n\tconst result = await runLiveChoice(ctx, {\n\t\ttitle: `Presets \u00B7 current: ${current}`,\n\t\titems: options.presets.map((preset) => ({\n\t\t\tid: preset.id,\n\t\t\tlabel: preset.label,\n\t\t\tdescription:\n\t\t\t\tpreset.id === options.activePresetId\n\t\t\t\t\t? `Currently applied \u00B7 ${preset.description}`\n\t\t\t\t\t: preset.description,\n\t\t\tdetails: [\n\t\t\t\t`Selected: ${preset.label} \u00B7 ${preset.requiresNerdFont ? \"requires Nerd Font\" : \"font-safe\"}`,\n\t\t\t],\n\t\t\tconfirmationDisabled: preset.id === options.activePresetId,\n\t\t\tconfirmationDisabledReason: \"Already applied; press e to customize\",\n\t\t})),\n\t\tcurrentItemId: options.activePresetId,\n\t\tinitialItemId: options.initialPresetId ?? options.activePresetId,\n\t\tviewportSize: Math.min(options.presets.length, 10),\n\t\thint: \"back\",\n\t\tnavigationLabel: \"live preview\",\n\t\tconfirmLabel: \"apply\",\n\t\tshortcuts: [{ id: \"customize\", keys: [\"e\", \"shift+e\"], label: \"customize\" }],\n\t\tonSelectionChange: ({ item }) => {\n\t\t\tconst preset = options.presets.find((candidate) => candidate.id === item.id);\n\t\t\tif (preset) options.preview(preset);\n\t\t},\n\t\tsignal: options.signal,\n\t\tisCurrent: options.isCurrent,\n\t});\n\tif (result.kind === \"selected\") return { kind: \"apply\", presetId: result.itemId };\n\tif (result.kind === \"shortcut\") {\n\t\treturn { kind: \"customize\", presetId: result.itemId };\n\t}\n\tif (result.kind === \"closed\" && result.reason === \"back\") return { kind: \"back\" };\n\treturn { kind: \"close\" };\n}\n"],
  "mappings": "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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA/B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAM,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjC,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA9B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA5B,IAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAnC,IAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAhC,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlC,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
  "names": ["stripVTControlCharacters", "safeDisplayText", "isCurrentOwner", "formatError", "preset", "edited"]
}
