{
  "version": 3,
  "sources": ["../../src/command-contract.ts", "../../src/config.ts", "../../src/format/style.ts", "../../src/format/formatter.ts", "../../src/modules/types.ts", "../../src/modules/activity.ts", "../../src/modules/brand.ts", "../../src/modules/helpers.ts", "../../src/modules/cache.ts", "../../src/modules/workspace-helpers.ts", "../../src/modules/cloud.ts", "../../src/modules/display.ts", "../../src/modules/context.ts", "../../src/modules/cost.ts", "../../src/modules/deployment.ts", "../../src/modules/truncation.ts", "../../src/modules/development.ts", "../../src/modules/directory.ts", "../../src/modules/execution.ts", "../../src/modules/extension-status.ts", "../../src/modules/fill.ts", "../../src/modules/git/branch.ts", "../../src/modules/git/commit.ts", "../../src/modules/git/metrics.ts", "../../src/modules/git/state.ts", "../../src/modules/git/status.ts", "../../src/modules/git/worktree.ts", "../../src/modules/github-pr.ts", "../../src/modules/languages.ts", "../../src/modules/model.ts", "../../src/modules/package.ts", "../../src/modules/provider.ts", "../../src/modules/thinking.ts", "../../src/modules/time.ts", "../../src/modules/tokens.ts", "../../src/modules/turn.ts", "../../src/modules/catalog.ts", "../../src/modules/inspection.ts", "../../src/modules/render.ts"],
  "sourcesContent": ["import type { AutocompleteItem } from \"@earendil-works/pi-tui\";\n\nexport const STARSHIP_SUBCOMMANDS: readonly AutocompleteItem[] = [\n\t{ value: \"settings\", label: \"settings\", description: \"Customize the footer TOML\" },\n\t{ value: \"status\", label: \"status\", description: \"Show configuration health and source\" },\n\t{ value: \"help\", label: \"help\", description: \"Show configuration help\" },\n];\n\nexport function completeStarshipArguments(prefix: string): AutocompleteItem[] | null {\n\tconst normalized = prefix.trim().toLowerCase();\n\tconst matches = STARSHIP_SUBCOMMANDS.filter((item) => item.value.startsWith(normalized));\n\treturn matches.length > 0 ? [...matches] : null;\n}\n", "import { randomUUID } from \"node:crypto\";\nimport {\n\texistsSync,\n\tlstatSync,\n\tmkdirSync,\n\treadFileSync,\n\trenameSync,\n\trmSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport type { TomlTable } from \"smol-toml\";\nimport {\n\ttype FormatNode,\n\tformatVariables,\n\tparseFormat,\n\tstyleVariables,\n} from \"./format/formatter.js\";\nimport { type ColorPalette, isValidStyle, parseColor } from \"./format/style.js\";\nimport { MODULE_DEFINITIONS, MODULE_NAMES, type ModuleName } from \"./modules/catalog.js\";\nimport type {\n\tModuleDisplayConfig,\n\tModuleOptionSchema,\n\tModuleOptionValue,\n} from \"./modules/types.js\";\n\nexport const CONFIG_FILE_NAME = \"pi-starship.toml\";\nexport { MODULE_NAMES, type ModuleName } from \"./modules/catalog.js\";\n\nconst MODULE_CONTENT_VARIABLES = Object.fromEntries(\n\tMODULE_DEFINITIONS.map((definition) => [definition.name, definition.variables]),\n) as Record<ModuleName, readonly string[]>;\n\nexport interface ModuleConfig {\n\tformat: string;\n\tformatAst: FormatNode[];\n\tsymbol: string;\n\tstyle: string;\n\tstyles: Record<string, string>;\n\tdisplay: ModuleDisplayConfig[];\n\tdisabled: boolean;\n\toptions: Record<string, ModuleOptionValue>;\n}\n\nexport interface ExtensionStatusConfig {\n\tseparator: string;\n\tmaxStatuses: number;\n\ticons: Record<string, string>;\n}\n\nexport interface StarshipConfig {\n\tformat: string;\n\tformatAst: FormatNode[];\n\tpalette?: string;\n\tpalettes: Record<string, Record<string, string>>;\n\tmodules: Record<ModuleName, ModuleConfig>;\n\textensionStatus: ExtensionStatusConfig;\n}\n\nexport interface ConfigDiagnostic {\n\tseverity: \"warning\" | \"error\";\n\tpath: string;\n\tmessage: string;\n}\n\nexport interface LoadedStarshipConfig {\n\tconfig: StarshipConfig;\n\tsource: \"built-in\" | \"user\";\n\tsettingsPath: string;\n\trawDocument?: string;\n\tfileIdentity?: { dev: number; ino: number };\n\tdiagnostics: ConfigDiagnostic[];\n}\n\nconst BUILT_IN_FORMAT_DOCUMENT = String.raw`format = \"\"\"\n$brand\\\n$model\\\n$thinking\\\n$directory\\\n$git_branch\\\n$git_status\\\n$activity\\\n$context\\\n$time\"\"\"`;\n\nconst BUILT_IN_FORMAT =\n\t\"$brand$model$thinking$directory$git_branch$git_status$activity$context$time\";\n\nconst BUILT_IN_MODULES = Object.fromEntries(\n\tMODULE_DEFINITIONS.map(({ name, defaults, styleDefaults, displayDefaults, options }) => [\n\t\tname,\n\t\t{\n\t\t\t...defaults,\n\t\t\tformatAst: parseFormat(defaults.format),\n\t\t\tstyles: { ...styleDefaults },\n\t\t\tdisplay: structuredClone(displayDefaults ?? []),\n\t\t\toptions: Object.fromEntries(\n\t\t\t\tObject.entries(options ?? {}).map(([key, schema]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tcloneOptionValue(schema.default),\n\t\t\t\t]),\n\t\t\t),\n\t\t},\n\t]),\n) as Record<ModuleName, ModuleConfig>;\n\nexport const BUILT_IN_CONFIG: StarshipConfig = {\n\tformat: BUILT_IN_FORMAT,\n\tformatAst: parseFormat(BUILT_IN_FORMAT),\n\tpalette: undefined,\n\tpalettes: {},\n\tmodules: BUILT_IN_MODULES,\n\textensionStatus: { separator: \" \u2022 \", maxStatuses: 5, icons: {} },\n};\n\nexport const BUILT_IN_EXAMPLE = `# Native Pi modules with Starship-compatible format and style syntax.\\n${BUILT_IN_FORMAT_DOCUMENT}\\n`;\n\nconst require = createRequire(import.meta.url);\nlet parseTomlImplementation: typeof import(\"smol-toml\")[\"parse\"] | undefined;\n\nfunction parseToml(document: string): TomlTable {\n\tparseTomlImplementation ??= (require(\"smol-toml\") as typeof import(\"smol-toml\")).parse;\n\treturn parseTomlImplementation(document);\n}\n\nexport function settingsFilePath(agentDir: string): string {\n\treturn join(agentDir, CONFIG_FILE_NAME);\n}\n\nexport function loadStarshipConfig(settingsPath: string): LoadedStarshipConfig {\n\tlet rawDocument: string;\n\ttry {\n\t\trawDocument = readFileSync(settingsPath, \"utf8\");\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\" && !existsSync(settingsPath)) {\n\t\t\treturn {\n\t\t\t\tconfig: cloneBuiltInConfig(),\n\t\t\t\tsource: \"built-in\",\n\t\t\t\tsettingsPath,\n\t\t\t\tdiagnostics: [],\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tconfig: cloneBuiltInConfig(),\n\t\t\tsource: \"built-in\",\n\t\t\tsettingsPath,\n\t\t\tdiagnostics: [diagnostic(\"error\", \"\", `Unable to read settings: ${formatError(error)}`)],\n\t\t};\n\t}\n\n\tlet parsed: TomlTable;\n\ttry {\n\t\tparsed = parseToml(rawDocument);\n\t} catch (error) {\n\t\treturn {\n\t\t\tconfig: cloneBuiltInConfig(),\n\t\t\tsource: \"built-in\",\n\t\t\tsettingsPath,\n\t\t\trawDocument,\n\t\t\tdiagnostics: [diagnostic(\"error\", \"\", `Unable to parse TOML: ${formatError(error)}`)],\n\t\t};\n\t}\n\tconst normalized = normalizeConfig(parsed);\n\treturn {\n\t\t...normalized,\n\t\tsource: \"user\",\n\t\tsettingsPath,\n\t\trawDocument,\n\t};\n}\n\nexport function normalizeConfig(value: unknown): {\n\tconfig: StarshipConfig;\n\tdiagnostics: ConfigDiagnostic[];\n} {\n\tconst config = cloneBuiltInConfig();\n\tconst diagnostics: ConfigDiagnostic[] = [];\n\tif (!isRecord(value)) {\n\t\treturn {\n\t\t\tconfig,\n\t\t\tdiagnostics: [diagnostic(\"error\", \"\", \"Settings must contain a TOML table\")],\n\t\t};\n\t}\n\n\tconst knownRoot = new Set([\"format\", \"palette\", \"palettes\", ...MODULE_NAMES]);\n\tfor (const key of Object.keys(value)) {\n\t\tif (!knownRoot.has(key)) diagnostics.push(unknownDiagnostic(key));\n\t}\n\n\tif (value.format !== undefined) {\n\t\tif (typeof value.format !== \"string\") {\n\t\t\tdiagnostics.push(typeDiagnostic(\"format\", \"string\"));\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconfig.formatAst = parseFormat(value.format);\n\t\t\t\tconfig.format = value.format;\n\t\t\t} catch (error) {\n\t\t\t\tdiagnostics.push(\n\t\t\t\t\tdiagnostic(\"warning\", \"format\", `Invalid format; using built-in: ${formatError(error)}`),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (value.palettes !== undefined) {\n\t\tif (!isRecord(value.palettes)) {\n\t\t\tdiagnostics.push(typeDiagnostic(\"palettes\", \"table\"));\n\t\t} else {\n\t\t\tfor (const [paletteName, paletteValue] of Object.entries(value.palettes)) {\n\t\t\t\tif (!isRecord(paletteValue)) {\n\t\t\t\t\tdiagnostics.push(typeDiagnostic(`palettes.${paletteName}`, \"table\"));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst palette: Record<string, string> = {};\n\t\t\t\tfor (const [name, color] of Object.entries(paletteValue)) {\n\t\t\t\t\tif (typeof color !== \"string\" || !parseColor(color.toLowerCase())) {\n\t\t\t\t\t\tdiagnostics.push(\n\t\t\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`palettes.${paletteName}.${name}`,\n\t\t\t\t\t\t\t\t\"Palette colors must be named, ANSI 0-255, or #RRGGBB\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tsetOwn(palette, name, color);\n\t\t\t\t}\n\t\t\t\tsetOwn(config.palettes, paletteName, palette);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (value.palette !== undefined) {\n\t\tif (typeof value.palette !== \"string\") diagnostics.push(typeDiagnostic(\"palette\", \"string\"));\n\t\telse {\n\t\t\tconfig.palette = value.palette;\n\t\t\tif (!Object.hasOwn(config.palettes, value.palette)) {\n\t\t\t\tdiagnostics.push(\n\t\t\t\t\tdiagnostic(\"warning\", \"palette\", `Unknown palette ${JSON.stringify(value.palette)}`),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const name of MODULE_NAMES) {\n\t\tconst moduleValue = value[name];\n\t\tif (moduleValue === undefined) continue;\n\t\tif (!isRecord(moduleValue)) {\n\t\t\tdiagnostics.push(typeDiagnostic(name, \"table\"));\n\t\t\tcontinue;\n\t\t}\n\t\tnormalizeModule(name, moduleValue, config, diagnostics);\n\t}\n\n\tvalidateFormatVariables(\n\t\tconfig.formatAst,\n\t\tnew Set([...MODULE_NAMES, \"all\"]),\n\t\t\"format\",\n\t\tdiagnostics,\n\t);\n\tvalidateStyleVariables(config.formatAst, new Set(), \"format\", diagnostics);\n\tconst palette = activePalette(config);\n\tvalidateLiteralStyles(config.formatAst, palette, \"format\", diagnostics);\n\tfor (const definition of MODULE_DEFINITIONS) {\n\t\tconst name = definition.name;\n\t\tconst module = config.modules[name];\n\t\tvalidateFormatVariables(\n\t\t\tmodule.formatAst,\n\t\t\tnew Set(MODULE_CONTENT_VARIABLES[name]),\n\t\t\t`${name}.format`,\n\t\t\tdiagnostics,\n\t\t);\n\t\tvalidateStyleVariables(\n\t\t\tmodule.formatAst,\n\t\t\tnew Set(definition.styleVariables ?? [\"style\"]),\n\t\t\t`${name}.format`,\n\t\t\tdiagnostics,\n\t\t);\n\t\tvalidateLiteralStyles(module.formatAst, palette, `${name}.format`, diagnostics);\n\t\tif (definition.styleDefaults) {\n\t\t\tfor (const field of Object.keys(definition.styleDefaults)) {\n\t\t\t\tvalidateModuleStyleField(name, field, module, palette, diagnostics);\n\t\t\t}\n\t\t} else if (!definition.displayDefaults) {\n\t\t\tvalidateModuleStyleField(name, \"style\", module, palette, diagnostics);\n\t\t}\n\t}\n\n\treturn { config, diagnostics };\n}\n\nfunction normalizeModule(\n\tname: ModuleName,\n\tvalue: Record<string, unknown>,\n\tconfig: StarshipConfig,\n\tdiagnostics: ConfigDiagnostic[],\n) {\n\tconst definition = MODULE_DEFINITIONS.find((candidate) => candidate.name === name);\n\tif (!definition) return;\n\tconst optionSchemas: Readonly<Record<string, ModuleOptionSchema>> = definition.options ?? {};\n\tconst known = new Set([\"format\", \"symbol\", \"disabled\", ...Object.keys(optionSchemas)]);\n\tif (definition.styleDefaults) {\n\t\tfor (const field of Object.keys(definition.styleDefaults)) known.add(field);\n\t} else if (!definition.displayDefaults) known.add(\"style\");\n\tif (definition.displayDefaults) known.add(\"display\");\n\tif (name === \"extension_status\") {\n\t\tknown.add(\"separator\");\n\t\tknown.add(\"max_statuses\");\n\t\tknown.add(\"icons\");\n\t}\n\tfor (const key of Object.keys(value)) {\n\t\tif (!known.has(key)) diagnostics.push(unknownDiagnostic(`${name}.${key}`));\n\t}\n\tconst module = config.modules[name];\n\tif (value.format !== undefined) {\n\t\tif (typeof value.format !== \"string\")\n\t\t\tdiagnostics.push(typeDiagnostic(`${name}.format`, \"string\"));\n\t\telse {\n\t\t\ttry {\n\t\t\t\tmodule.formatAst = parseFormat(value.format);\n\t\t\t\tmodule.format = value.format;\n\t\t\t} catch (error) {\n\t\t\t\tdiagnostics.push(\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t`${name}.format`,\n\t\t\t\t\t\t`Invalid format; using module default: ${formatError(error)}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tif (value.symbol !== undefined) {\n\t\tif (typeof value.symbol !== \"string\") {\n\t\t\tdiagnostics.push(typeDiagnostic(`${name}.symbol`, \"string\"));\n\t\t} else module.symbol = value.symbol;\n\t}\n\tif (definition.styleDefaults) {\n\t\tfor (const field of Object.keys(definition.styleDefaults)) {\n\t\t\tif (value[field] === undefined) continue;\n\t\t\tif (typeof value[field] !== \"string\") {\n\t\t\t\tdiagnostics.push(typeDiagnostic(`${name}.${field}`, \"string\"));\n\t\t\t} else module.styles[field] = value[field];\n\t\t}\n\t} else if (!definition.displayDefaults && value.style !== undefined) {\n\t\tif (typeof value.style !== \"string\") {\n\t\t\tdiagnostics.push(typeDiagnostic(`${name}.style`, \"string\"));\n\t\t} else module.style = value.style;\n\t}\n\tif (definition.displayDefaults && value.display !== undefined) {\n\t\tmodule.display = normalizeDisplay(\n\t\t\tname,\n\t\t\tvalue.display,\n\t\t\tdefinition.displayDefaults,\n\t\t\tactivePalette(config),\n\t\t\tdiagnostics,\n\t\t);\n\t}\n\tif (value.disabled !== undefined) {\n\t\tif (typeof value.disabled !== \"boolean\") {\n\t\t\tdiagnostics.push(typeDiagnostic(`${name}.disabled`, \"boolean\"));\n\t\t} else module.disabled = value.disabled;\n\t}\n\tfor (const [key, schema] of Object.entries(optionSchemas)) {\n\t\tif (value[key] === undefined) continue;\n\t\tconst normalized = normalizeModuleOption(value[key], schema);\n\t\tif (normalized.ok) module.options[key] = normalized.value;\n\t\telse diagnostics.push(diagnostic(\"warning\", `${name}.${key}`, normalized.message));\n\t}\n\tif (name !== \"extension_status\") return;\n\tif (value.separator !== undefined) {\n\t\tif (typeof value.separator !== \"string\") {\n\t\t\tdiagnostics.push(typeDiagnostic(\"extension_status.separator\", \"string\"));\n\t\t} else config.extensionStatus.separator = value.separator;\n\t}\n\tif (value.max_statuses !== undefined) {\n\t\tif (\n\t\t\ttypeof value.max_statuses !== \"number\" ||\n\t\t\t!Number.isInteger(value.max_statuses) ||\n\t\t\tvalue.max_statuses < 0 ||\n\t\t\tvalue.max_statuses > 100\n\t\t) {\n\t\t\tdiagnostics.push(\n\t\t\t\tdiagnostic(\n\t\t\t\t\t\"warning\",\n\t\t\t\t\t\"extension_status.max_statuses\",\n\t\t\t\t\t\"Expected an integer from 0 through 100\",\n\t\t\t\t),\n\t\t\t);\n\t\t} else config.extensionStatus.maxStatuses = value.max_statuses;\n\t}\n\tif (value.icons !== undefined) {\n\t\tif (!isRecord(value.icons)) diagnostics.push(typeDiagnostic(\"extension_status.icons\", \"table\"));\n\t\telse {\n\t\t\tconfig.extensionStatus.icons = Object.fromEntries(\n\t\t\t\tObject.entries(value.icons).flatMap(([key, icon]) => {\n\t\t\t\t\tif (typeof icon === \"string\") return [[key, icon]];\n\t\t\t\t\tdiagnostics.push(typeDiagnostic(`extension_status.icons.${key}`, \"string\"));\n\t\t\t\t\treturn [];\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n\ninterface AtomicFileSystem {\n\tmkdirSync: typeof mkdirSync;\n\twriteFileSync: typeof writeFileSync;\n\trenameSync: typeof renameSync;\n\trmSync: typeof rmSync;\n}\n\nexport function validateConfigDocument(\n\tsettingsPath: string,\n\trawDocument: string,\n): LoadedStarshipConfig {\n\tlet parsed: TomlTable;\n\ttry {\n\t\tparsed = parseToml(rawDocument);\n\t} catch (error) {\n\t\tthrow new Error(`Unable to parse TOML: ${formatError(error)}`);\n\t}\n\tconst normalized = normalizeConfig(parsed);\n\tif (normalized.diagnostics.some((item) => item.severity === \"error\")) {\n\t\tthrow new Error(normalized.diagnostics.map((item) => item.message).join(\"\\n\"));\n\t}\n\treturn {\n\t\t...normalized,\n\t\tsource: \"user\",\n\t\tsettingsPath,\n\t\trawDocument,\n\t};\n}\n\nexport function atomicSaveConfigDocument(\n\tsettingsPath: string,\n\trawDocument: string,\n\toverrides: Partial<AtomicFileSystem> = {},\n): LoadedStarshipConfig {\n\tconst validated = validateConfigDocument(settingsPath, rawDocument);\n\treturn {\n\t\t...validated,\n\t\tfileIdentity: atomicWriteConfigDocument(settingsPath, rawDocument, overrides),\n\t};\n}\n\nexport function atomicRestoreConfigDocument(\n\tsettingsPath: string,\n\trawDocument: string,\n\toverrides: Partial<AtomicFileSystem> = {},\n) {\n\tatomicWriteConfigDocument(settingsPath, rawDocument, overrides);\n}\n\nexport function removeConfigDocumentIfMatches(\n\tsettingsPath: string,\n\texpectedRawDocument: string,\n\texpectedIdentity: { dev: number; ino: number },\n\toverrides: Pick<Partial<AtomicFileSystem>, \"rmSync\"> = {},\n) {\n\tconst quarantinePath = join(\n\t\tdirname(settingsPath),\n\t\t`.${CONFIG_FILE_NAME}.${randomUUID()}.rollback`,\n\t);\n\tconst before = lstatSync(settingsPath);\n\tif (before.dev !== expectedIdentity.dev || before.ino !== expectedIdentity.ino) {\n\t\tthrow new Error(\"Starship settings changed concurrently; the newer file was preserved\");\n\t}\n\trenameSync(settingsPath, quarantinePath);\n\tconst quarantined = lstatSync(quarantinePath);\n\tconst quarantinedSavedFile =\n\t\tquarantined.isFile() &&\n\t\t!quarantined.isSymbolicLink() &&\n\t\tquarantined.dev === expectedIdentity.dev &&\n\t\tquarantined.ino === expectedIdentity.ino;\n\tif (quarantinedSavedFile && readFileSync(quarantinePath, \"utf8\") === expectedRawDocument) {\n\t\t(overrides.rmSync ?? rmSync)(quarantinePath);\n\t\treturn;\n\t}\n\tif (quarantinedSavedFile && !pathEntryExists(settingsPath)) {\n\t\ttry {\n\t\t\trenameSync(quarantinePath, settingsPath);\n\t\t} catch {\n\t\t\t// Keep the quarantine for recovery when its atomic restoration fails.\n\t\t}\n\t}\n\tthrow new Error(\"Starship settings changed concurrently; the newer file was preserved\");\n}\n\nfunction atomicWriteConfigDocument(\n\tsettingsPath: string,\n\trawDocument: string,\n\toverrides: Partial<AtomicFileSystem>,\n): { dev: number; ino: number } {\n\tconst fs = { mkdirSync, writeFileSync, renameSync, rmSync, ...overrides };\n\tconst replaceExisting = pathEntryExists(settingsPath);\n\tfs.mkdirSync(dirname(settingsPath), { recursive: true });\n\tconst tempPath = join(dirname(settingsPath), `.${CONFIG_FILE_NAME}.${randomUUID()}.tmp`);\n\ttry {\n\t\tfs.writeFileSync(tempPath, rawDocument, { encoding: \"utf8\", flag: \"wx\" });\n\t\tconst info = lstatSync(tempPath);\n\t\tif (!replaceExisting && pathEntryExists(settingsPath)) {\n\t\t\tthrow new Error(`${CONFIG_FILE_NAME} was created concurrently; reopen settings and retry.`);\n\t\t}\n\t\tfs.renameSync(tempPath, settingsPath);\n\t\treturn { dev: info.dev, ino: info.ino };\n\t} finally {\n\t\ttry {\n\t\t\tfs.rmSync(tempPath, { force: true });\n\t\t} catch {\n\t\t\t// Best-effort cleanup must not replace the publication result.\n\t\t}\n\t}\n}\n\nfunction cloneBuiltInConfig(): StarshipConfig {\n\treturn {\n\t\t...BUILT_IN_CONFIG,\n\t\tformatAst: structuredClone(BUILT_IN_CONFIG.formatAst),\n\t\tpalettes: Object.fromEntries(\n\t\t\tObject.entries(BUILT_IN_CONFIG.palettes).map(([name, colors]) => [name, { ...colors }]),\n\t\t),\n\t\tmodules: Object.fromEntries(\n\t\t\tMODULE_NAMES.map((name) => [\n\t\t\t\tname,\n\t\t\t\t{\n\t\t\t\t\t...BUILT_IN_CONFIG.modules[name],\n\t\t\t\t\tformatAst: structuredClone(BUILT_IN_CONFIG.modules[name].formatAst),\n\t\t\t\t\tstyles: { ...BUILT_IN_CONFIG.modules[name].styles },\n\t\t\t\t\tdisplay: structuredClone(BUILT_IN_CONFIG.modules[name].display),\n\t\t\t\t\toptions: structuredClone(BUILT_IN_CONFIG.modules[name].options),\n\t\t\t\t},\n\t\t\t]),\n\t\t) as Record<ModuleName, ModuleConfig>,\n\t\textensionStatus: {\n\t\t\t...BUILT_IN_CONFIG.extensionStatus,\n\t\t\ticons: { ...BUILT_IN_CONFIG.extensionStatus.icons },\n\t\t},\n\t};\n}\n\nfunction validateFormatVariables(\n\tast: readonly FormatNode[],\n\tallowed: ReadonlySet<string>,\n\tpath: string,\n\tdiagnostics: ConfigDiagnostic[],\n) {\n\tfor (const variable of formatVariables(ast)) {\n\t\tif (allowed.has(variable)) continue;\n\t\tdiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\t\"warning\",\n\t\t\t\tpath,\n\t\t\t\t`Unknown variable ${JSON.stringify(variable)} in ${path} was ignored`,\n\t\t\t),\n\t\t);\n\t}\n}\n\nfunction validateStyleVariables(\n\tast: readonly FormatNode[],\n\tallowed: ReadonlySet<string>,\n\tpath: string,\n\tdiagnostics: ConfigDiagnostic[],\n) {\n\tfor (const variable of styleVariables(ast)) {\n\t\tif (allowed.has(variable)) continue;\n\t\tdiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\t\"warning\",\n\t\t\t\tpath,\n\t\t\t\t`Unknown style variable ${JSON.stringify(variable)} in ${path} was ignored`,\n\t\t\t),\n\t\t);\n\t}\n}\n\nfunction validateModuleStyleField(\n\tname: ModuleName,\n\tfield: string,\n\tmodule: ModuleConfig,\n\tpalette: ColorPalette,\n\tdiagnostics: ConfigDiagnostic[],\n) {\n\tconst style = field === \"style\" ? module.style : module.styles[field];\n\tif (style === undefined || isValidStyle(style, palette)) return;\n\tdiagnostics.push(\n\t\tdiagnostic(\n\t\t\t\"warning\",\n\t\t\t`${name}.${field}`,\n\t\t\t`Invalid style ${JSON.stringify(style)}; using the module default`,\n\t\t),\n\t);\n\tif (field === \"style\") module.style = BUILT_IN_CONFIG.modules[name].style;\n\telse {\n\t\tconst fallback = BUILT_IN_CONFIG.modules[name].styles[field];\n\t\tif (fallback !== undefined) module.styles[field] = fallback;\n\t}\n}\n\nfunction normalizeDisplay(\n\tname: ModuleName,\n\tvalue: unknown,\n\tdefaults: readonly ModuleDisplayConfig[],\n\tpalette: ColorPalette,\n\tdiagnostics: ConfigDiagnostic[],\n): ModuleDisplayConfig[] {\n\tif (!Array.isArray(value)) {\n\t\tdiagnostics.push(typeDiagnostic(`${name}.display`, \"array of tables\"));\n\t\treturn defaults.map((entry) => ({ ...entry }));\n\t}\n\tconst result: ModuleDisplayConfig[] = [];\n\tfor (const [index, entry] of value.entries()) {\n\t\tconst path = `${name}.display.${index}`;\n\t\tif (!isRecord(entry)) {\n\t\t\tdiagnostics.push(typeDiagnostic(path, \"table\"));\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const field of Object.keys(entry)) {\n\t\t\tif (!new Set([\"threshold\", \"style\", \"hidden\"]).has(field)) {\n\t\t\t\tdiagnostics.push(unknownDiagnostic(`${path}.${field}`));\n\t\t\t}\n\t\t}\n\t\tlet valid = true;\n\t\tif (typeof entry.threshold !== \"number\" || !Number.isFinite(entry.threshold)) {\n\t\t\tdiagnostics.push(diagnostic(\"warning\", `${path}.threshold`, \"Expected a finite number\"));\n\t\t\tvalid = false;\n\t\t}\n\t\tif (typeof entry.style !== \"string\" || !isValidStyle(entry.style, palette)) {\n\t\t\tdiagnostics.push(\n\t\t\t\tdiagnostic(\"warning\", `${path}.style`, \"Expected a valid Starship style string\"),\n\t\t\t);\n\t\t\tvalid = false;\n\t\t}\n\t\tif (typeof entry.hidden !== \"boolean\") {\n\t\t\tdiagnostics.push(typeDiagnostic(`${path}.hidden`, \"boolean\"));\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tresult.push({\n\t\t\t\tthreshold: entry.threshold as number,\n\t\t\t\tstyle: entry.style as string,\n\t\t\t\thidden: entry.hidden as boolean,\n\t\t\t});\n\t\t}\n\t}\n\tif (result.length > 0) return result;\n\tdiagnostics.push(\n\t\tdiagnostic(\"warning\", `${name}.display`, \"Expected at least one valid entry; using defaults\"),\n\t);\n\treturn defaults.map((entry) => ({ ...entry }));\n}\n\nfunction validateLiteralStyles(\n\tast: readonly FormatNode[],\n\tpalette: ColorPalette,\n\tpath: string,\n\tdiagnostics: ConfigDiagnostic[],\n) {\n\tfor (const node of ast) {\n\t\tif (node.type === \"group\" && node.style.every((part) => part.type === \"text\")) {\n\t\t\tconst style = node.style.map((part) => (part.type === \"text\" ? part.value : \"\")).join(\"\");\n\t\t\tif (!isValidStyle(style, palette)) {\n\t\t\t\tdiagnostics.push(\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\t`Invalid literal style ${JSON.stringify(style)}; rendered unstyled`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (node.type === \"group\" || node.type === \"conditional\") {\n\t\t\tvalidateLiteralStyles(node.children, palette, path, diagnostics);\n\t\t}\n\t}\n}\n\nfunction normalizeModuleOption(\n\tvalue: unknown,\n\tschema: ModuleOptionSchema,\n): { ok: true; value: ModuleOptionValue } | { ok: false; message: string } {\n\tswitch (schema.kind) {\n\t\tcase \"string\":\n\t\t\treturn typeof value === \"string\" && (schema.allowEmpty !== false || value.length > 0)\n\t\t\t\t? { ok: true, value }\n\t\t\t\t: { ok: false, message: \"Expected a non-empty string; using the default value\" };\n\t\tcase \"string-enum\":\n\t\t\treturn typeof value === \"string\" && schema.values.includes(value)\n\t\t\t\t? { ok: true, value }\n\t\t\t\t: {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tmessage: `Expected one of: ${schema.values.join(\", \")}; using the default value`,\n\t\t\t\t\t};\n\t\tcase \"boolean\":\n\t\t\treturn typeof value === \"boolean\"\n\t\t\t\t? { ok: true, value }\n\t\t\t\t: { ok: false, message: \"Expected boolean; using the default value\" };\n\t\tcase \"integer\":\n\t\t\treturn typeof value === \"number\" &&\n\t\t\t\tNumber.isInteger(value) &&\n\t\t\t\tvalue >= schema.minimum &&\n\t\t\t\tvalue <= schema.maximum\n\t\t\t\t? { ok: true, value }\n\t\t\t\t: {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tmessage: `Expected an integer from ${schema.minimum} through ${schema.maximum}; using the default value`,\n\t\t\t\t\t};\n\t\tcase \"string-array\": {\n\t\t\tif (\n\t\t\t\t!Array.isArray(value) ||\n\t\t\t\tvalue.some(\n\t\t\t\t\t(item) =>\n\t\t\t\t\t\ttypeof item !== \"string\" ||\n\t\t\t\t\t\titem.length === 0 ||\n\t\t\t\t\t\t(!schema.allowNegative && item.startsWith(\"!\")),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tmessage: \"Expected an array of valid strings; using the default value\",\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn { ok: true, value: [...value] as string[] };\n\t\t}\n\t\tcase \"string-map\": {\n\t\t\tif (!isRecord(value) || Object.values(value).some((item) => typeof item !== \"string\")) {\n\t\t\t\treturn { ok: false, message: \"Expected a table of strings; using the default value\" };\n\t\t\t}\n\t\t\tconst result: Record<string, string> = {};\n\t\t\tfor (const [key, item] of Object.entries(value)) setOwn(result, key, item as string);\n\t\t\treturn { ok: true, value: result };\n\t\t}\n\t}\n}\n\nfunction cloneOptionValue(value: ModuleOptionValue): ModuleOptionValue {\n\treturn typeof value === \"object\" ? structuredClone(value) : value;\n}\n\nfunction setOwn<T>(record: Record<string, T>, key: string, value: T) {\n\tObject.defineProperty(record, key, {\n\t\tvalue,\n\t\twritable: true,\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t});\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction typeDiagnostic(path: string, type: string): ConfigDiagnostic {\n\treturn diagnostic(\"warning\", path, `Expected ${type}; using the default value`);\n}\n\nfunction unknownDiagnostic(path: string): ConfigDiagnostic {\n\treturn diagnostic(\"warning\", path, `Unknown setting ${JSON.stringify(path)} was ignored`);\n}\n\nfunction diagnostic(\n\tseverity: ConfigDiagnostic[\"severity\"],\n\tpath: string,\n\tmessage: string,\n): ConfigDiagnostic {\n\treturn { severity, path, message };\n}\n\nfunction pathEntryExists(path: string): boolean {\n\ttry {\n\t\tlstatSync(path);\n\t\treturn true;\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return false;\n\t\tthrow error;\n\t}\n}\n\nfunction formatError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nexport function activePalette(config: StarshipConfig): ColorPalette {\n\treturn ownPalette(config.palettes, config.palette) ?? {};\n}\n\nfunction ownPalette(\n\tpalettes: Readonly<Record<string, Record<string, string>>>,\n\tname: string | undefined,\n): Record<string, string> | undefined {\n\treturn name !== undefined && Object.hasOwn(palettes, name) ? palettes[name] : undefined;\n}\n", "export type NamedColor =\n\t| \"black\"\n\t| \"red\"\n\t| \"green\"\n\t| \"yellow\"\n\t| \"blue\"\n\t| \"purple\"\n\t| \"cyan\"\n\t| \"white\"\n\t| \"bright-black\"\n\t| \"bright-red\"\n\t| \"bright-green\"\n\t| \"bright-yellow\"\n\t| \"bright-blue\"\n\t| \"bright-purple\"\n\t| \"bright-cyan\"\n\t| \"bright-white\";\n\nexport type ColorSpec =\n\t| { kind: \"named\"; name: NamedColor }\n\t| { kind: \"fixed\"; value: number }\n\t| { kind: \"rgb\"; red: number; green: number; blue: number };\n\nexport type PreviousColorSource = \"foreground\" | \"background\";\n\nexport interface TextStyle {\n\tforeground?: ColorSpec;\n\tbackground?: ColorSpec;\n\tforegroundPrevious?: PreviousColorSource;\n\tbackgroundPrevious?: PreviousColorSource;\n\tbold?: boolean;\n\titalic?: boolean;\n\tunderline?: boolean;\n\tdimmed?: boolean;\n\tinverted?: boolean;\n\tblink?: boolean;\n\thidden?: boolean;\n\tstrikethrough?: boolean;\n}\n\nexport type StyleParseResult =\n\t| { valid: true; style: TextStyle | undefined }\n\t| { valid: false; style: undefined };\n\nexport interface StyledChunk {\n\ttext: string;\n\tstyle?: TextStyle;\n}\n\nexport interface FillChunk {\n\ttype: \"fill\";\n\tpattern: readonly StyledChunk[];\n}\n\nexport type LayoutChunk = StyledChunk | FillChunk;\n\nexport function isFillChunk(chunk: LayoutChunk): chunk is FillChunk {\n\treturn \"type\" in chunk && chunk.type === \"fill\";\n}\n\nexport type ColorPalette = Readonly<Record<string, string>>;\n\nconst NAMED_COLORS = new Set<NamedColor>([\n\t\"black\",\n\t\"red\",\n\t\"green\",\n\t\"yellow\",\n\t\"blue\",\n\t\"purple\",\n\t\"cyan\",\n\t\"white\",\n\t\"bright-black\",\n\t\"bright-red\",\n\t\"bright-green\",\n\t\"bright-yellow\",\n\t\"bright-blue\",\n\t\"bright-purple\",\n\t\"bright-cyan\",\n\t\"bright-white\",\n]);\n\nconst FOREGROUND_CODES: Record<NamedColor, number> = {\n\tblack: 30,\n\tred: 31,\n\tgreen: 32,\n\tyellow: 33,\n\tblue: 34,\n\tpurple: 35,\n\tcyan: 36,\n\twhite: 37,\n\t\"bright-black\": 90,\n\t\"bright-red\": 91,\n\t\"bright-green\": 92,\n\t\"bright-yellow\": 93,\n\t\"bright-blue\": 94,\n\t\"bright-purple\": 95,\n\t\"bright-cyan\": 96,\n\t\"bright-white\": 97,\n};\n\nexport function isValidStyle(styleString: string, palette: ColorPalette = {}): boolean {\n\treturn parseStyleResult(styleString, palette).valid;\n}\n\nexport function parseStyleResult(\n\tstyleString: string,\n\tpalette: ColorPalette = {},\n): StyleParseResult {\n\tconst tokens = styleString.split(/\\s+/u).filter(Boolean).map(normalizeStyleToken);\n\tif (tokens.some(({ token, foreground }) => foreground && token === \"none\")) {\n\t\treturn { valid: true, style: undefined };\n\t}\n\n\tconst style: TextStyle = {};\n\tfor (const { token, foreground } of tokens) {\n\t\tif (applyModifier(style, token)) continue;\n\t\tif (token === \"prev_fg\" || token === \"prev_bg\") {\n\t\t\tconst source = token === \"prev_fg\" ? \"foreground\" : \"background\";\n\t\t\tif (foreground) style.foregroundPrevious = source;\n\t\t\telse style.backgroundPrevious = source;\n\t\t\tcontinue;\n\t\t}\n\t\tconst color = parseColor(token, palette);\n\t\tif (!foreground && !color) {\n\t\t\tdelete style.background;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!color) return { valid: false, style: undefined };\n\t\tif (foreground) style.foreground = color;\n\t\telse style.background = color;\n\t}\n\treturn { valid: true, style };\n}\n\nexport function parseStyle(styleString: string, palette: ColorPalette = {}): TextStyle | undefined {\n\treturn parseStyleResult(styleString, palette).style;\n}\n\nfunction normalizeStyleToken(rawToken: string): { token: string; foreground: boolean } {\n\tlet token = rawToken.toLowerCase();\n\tif (token.startsWith(\"fg:\")) {\n\t\treturn { token: token.replace(/^(?:fg:)+/u, \"\"), foreground: true };\n\t}\n\tif (token.startsWith(\"bg:\")) {\n\t\ttoken = token.replace(/^(?:bg:)+/u, \"\");\n\t\treturn { token, foreground: false };\n\t}\n\treturn { token, foreground: true };\n}\n\nfunction applyModifier(style: TextStyle, token: string): boolean {\n\tswitch (token) {\n\t\tcase \"bold\":\n\t\t\tstyle.bold = true;\n\t\t\treturn true;\n\t\tcase \"italic\":\n\t\t\tstyle.italic = true;\n\t\t\treturn true;\n\t\tcase \"underline\":\n\t\t\tstyle.underline = true;\n\t\t\treturn true;\n\t\tcase \"dimmed\":\n\t\t\tstyle.dimmed = true;\n\t\t\treturn true;\n\t\tcase \"inverted\":\n\t\t\tstyle.inverted = true;\n\t\t\treturn true;\n\t\tcase \"blink\":\n\t\t\tstyle.blink = true;\n\t\t\treturn true;\n\t\tcase \"hidden\":\n\t\t\tstyle.hidden = true;\n\t\t\treturn true;\n\t\tcase \"strikethrough\":\n\t\t\tstyle.strikethrough = true;\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function parseColor(token: string, palette: ColorPalette = {}): ColorSpec | undefined {\n\tconst paletteValue = Object.hasOwn(palette, token) ? palette[token] : undefined;\n\tif (paletteValue !== undefined) return parseColor(paletteValue.toLowerCase(), {});\n\tif (NAMED_COLORS.has(token as NamedColor)) {\n\t\treturn { kind: \"named\", name: token as NamedColor };\n\t}\n\tif (/^\\d{1,3}$/u.test(token)) {\n\t\tconst value = Number(token);\n\t\treturn value <= 255 ? { kind: \"fixed\", value } : undefined;\n\t}\n\tconst rgb = /^#([0-9a-f]{6})$/iu.exec(token);\n\tif (!rgb?.[1]) return undefined;\n\treturn {\n\t\tkind: \"rgb\",\n\t\tred: Number.parseInt(rgb[1].slice(0, 2), 16),\n\t\tgreen: Number.parseInt(rgb[1].slice(2, 4), 16),\n\t\tblue: Number.parseInt(rgb[1].slice(4, 6), 16),\n\t};\n}\n\ninterface ResolvedStyle\n\textends Omit<\n\t\tTextStyle,\n\t\t\"foreground\" | \"background\" | \"foregroundPrevious\" | \"backgroundPrevious\"\n\t> {\n\tforeground?: ColorSpec;\n\tbackground?: ColorSpec;\n}\n\nexport function renderChunksToAnsi(chunks: readonly LayoutChunk[]): string {\n\tconst runs: Array<{ text: string; style: ResolvedStyle }> = [];\n\tlet previous: ResolvedStyle | undefined;\n\tfor (const chunk of chunks) {\n\t\tif (isFillChunk(chunk)) continue;\n\t\tconst style = resolveStyle(chunk.style, previous);\n\t\tconst last = runs.at(-1);\n\t\tif (chunk.text && last && stylesEqual(last.style, style)) last.text += chunk.text;\n\t\telse if (chunk.text) runs.push({ text: chunk.text, style });\n\t\tprevious = style;\n\t}\n\treturn runs\n\t\t.map(({ text, style }) => {\n\t\t\tconst codes = ansiCodes(style);\n\t\t\treturn codes.length > 0 ? `\\u001b[${codes.join(\";\")}m${text}\\u001b[0m` : text;\n\t\t})\n\t\t.join(\"\");\n}\n\nfunction stylesEqual(left: ResolvedStyle, right: ResolvedStyle): boolean {\n\treturn JSON.stringify(left) === JSON.stringify(right);\n}\n\nfunction resolveStyle(\n\tstyle: TextStyle | undefined,\n\tprevious: ResolvedStyle | undefined,\n): ResolvedStyle {\n\tif (!style) return {};\n\tconst { foregroundPrevious, backgroundPrevious, ...resolved } = style;\n\treturn {\n\t\t...resolved,\n\t\tforeground: resolveColor(style.foreground, foregroundPrevious, previous),\n\t\tbackground: resolveColor(style.background, backgroundPrevious, previous),\n\t};\n}\n\nfunction resolveColor(\n\tfallback: ColorSpec | undefined,\n\tsource: PreviousColorSource | undefined,\n\tprevious: ResolvedStyle | undefined,\n): ColorSpec | undefined {\n\tif (!source || !previous) return fallback;\n\treturn source === \"foreground\" ? previous.foreground : previous.background;\n}\n\nfunction ansiCodes(style: ResolvedStyle): string[] {\n\tconst codes: string[] = [];\n\tif (style.foreground) codes.push(...colorCodes(style.foreground, false));\n\tif (style.background) codes.push(...colorCodes(style.background, true));\n\tif (style.bold) codes.push(\"1\");\n\tif (style.dimmed) codes.push(\"2\");\n\tif (style.italic) codes.push(\"3\");\n\tif (style.underline) codes.push(\"4\");\n\tif (style.blink) codes.push(\"5\");\n\tif (style.inverted) codes.push(\"7\");\n\tif (style.hidden) codes.push(\"8\");\n\tif (style.strikethrough) codes.push(\"9\");\n\treturn codes;\n}\n\nfunction colorCodes(color: ColorSpec, background: boolean): string[] {\n\tif (color.kind === \"named\") {\n\t\tconst foreground = FOREGROUND_CODES[color.name];\n\t\treturn [`${background ? foreground + 10 : foreground}`];\n\t}\n\tif (color.kind === \"fixed\") return [background ? \"48\" : \"38\", \"5\", `${color.value}`];\n\treturn [background ? \"48\" : \"38\", \"2\", `${color.red}`, `${color.green}`, `${color.blue}`];\n}\n", "import {\n\ttype ColorPalette,\n\tisFillChunk,\n\ttype LayoutChunk,\n\tparseStyle,\n\ttype TextStyle,\n} from \"./style.js\";\n\nexport type FormatNode =\n\t| { type: \"text\"; value: string }\n\t| { type: \"variable\"; name: string }\n\t| { type: \"group\"; children: FormatNode[]; style: StyleNode[] }\n\t| { type: \"conditional\"; children: FormatNode[] };\n\nexport type StyleNode = { type: \"text\"; value: string } | { type: \"variable\"; name: string };\nexport type FormatValue = string | readonly LayoutChunk[] | undefined;\n\nexport interface RenderFormatOptions {\n\tvariables: Readonly<Record<string, FormatValue>>;\n\tstyleVariables?: Readonly<Record<string, string | undefined>>;\n\tpalette?: ColorPalette;\n}\n\nexport class FormatSyntaxError extends Error {\n\treadonly offset: number;\n\n\tconstructor(message: string, offset: number) {\n\t\tsuper(`${message} at offset ${offset}`);\n\t\tthis.name = \"FormatSyntaxError\";\n\t\tthis.offset = offset;\n\t}\n}\n\nconst FUNCTIONAL = new Set([\"[\", \"]\", \"(\", \")\", \"\\\\\", \"$\"]);\n\nexport function parseFormat(format: string): FormatNode[] {\n\tconst parser = new FormatParser(format);\n\tconst nodes = parser.parseNodes();\n\tif (!parser.done()) throw new FormatSyntaxError(\"Unexpected character\", parser.offset());\n\treturn nodes;\n}\n\nclass FormatParser {\n\tprivate index = 0;\n\n\tconstructor(private readonly input: string) {}\n\n\toffset() {\n\t\treturn this.index;\n\t}\n\n\tdone() {\n\t\treturn this.index === this.input.length;\n\t}\n\n\tparseNodes(end?: \"]\" | \")\"): FormatNode[] {\n\t\tconst nodes: FormatNode[] = [];\n\t\tlet text = \"\";\n\t\tconst flushText = () => {\n\t\t\tif (!text) return;\n\t\t\tnodes.push({ type: \"text\", value: text });\n\t\t\ttext = \"\";\n\t\t};\n\n\t\twhile (!this.done()) {\n\t\t\tconst current = this.input[this.index];\n\t\t\tif (current === end) {\n\t\t\t\tflushText();\n\t\t\t\tthis.index += 1;\n\t\t\t\treturn nodes;\n\t\t\t}\n\t\t\tif (current === \"\\\\\") {\n\t\t\t\tconst escaped = this.input[this.index + 1];\n\t\t\t\tif (!escaped || !FUNCTIONAL.has(escaped)) {\n\t\t\t\t\tthrow new FormatSyntaxError(\"Invalid escape\", this.index);\n\t\t\t\t}\n\t\t\t\ttext += escaped;\n\t\t\t\tthis.index += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (current === \"$\") {\n\t\t\t\tflushText();\n\t\t\t\tnodes.push({ type: \"variable\", name: this.parseVariable() });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (current === \"[\") {\n\t\t\t\tflushText();\n\t\t\t\tthis.index += 1;\n\t\t\t\tconst children = this.parseNodes(\"]\");\n\t\t\t\tif (this.input[this.index] !== \"(\") {\n\t\t\t\t\tthrow new FormatSyntaxError(\"Text group requires a style\", this.index);\n\t\t\t\t}\n\t\t\t\tthis.index += 1;\n\t\t\t\tnodes.push({ type: \"group\", children, style: this.parseStyleNodes() });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (current === \"(\") {\n\t\t\t\tflushText();\n\t\t\t\tthis.index += 1;\n\t\t\t\tnodes.push({ type: \"conditional\", children: this.parseNodes(\")\") });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (current === \"]\" || current === \")\") {\n\t\t\t\tthrow new FormatSyntaxError(`Unexpected ${current}`, this.index);\n\t\t\t}\n\t\t\ttext += current;\n\t\t\tthis.index += 1;\n\t\t}\n\n\t\tif (end) throw new FormatSyntaxError(`Missing ${end}`, this.index);\n\t\tflushText();\n\t\treturn nodes;\n\t}\n\n\tprivate parseVariable(): string {\n\t\tconst start = this.index;\n\t\tthis.index += 1;\n\t\tif (this.input[this.index] === \"{\") {\n\t\t\tthis.index += 1;\n\t\t\tconst nameStart = this.index;\n\t\t\twhile (!this.done() && this.input[this.index] !== \"}\") {\n\t\t\t\tconst current = this.input[this.index];\n\t\t\t\tif (!current || FUNCTIONAL.has(current) || current === \"{\") {\n\t\t\t\t\tthrow new FormatSyntaxError(\"Invalid scoped variable\", this.index);\n\t\t\t\t}\n\t\t\t\tthis.index += 1;\n\t\t\t}\n\t\t\tif (this.done() || this.index === nameStart) {\n\t\t\t\tthrow new FormatSyntaxError(\"Unclosed scoped variable\", start);\n\t\t\t}\n\t\t\tconst name = this.input.slice(nameStart, this.index);\n\t\t\tthis.index += 1;\n\t\t\treturn name;\n\t\t}\n\t\tconst match = /^[A-Za-z_][A-Za-z0-9_]*/u.exec(this.input.slice(this.index));\n\t\tif (!match) throw new FormatSyntaxError(\"Invalid variable\", start);\n\t\tthis.index += match[0].length;\n\t\treturn match[0];\n\t}\n\n\tprivate parseStyleNodes(): StyleNode[] {\n\t\tconst nodes: StyleNode[] = [];\n\t\tlet text = \"\";\n\t\tconst flushText = () => {\n\t\t\tif (!text) return;\n\t\t\tnodes.push({ type: \"text\", value: text });\n\t\t\ttext = \"\";\n\t\t};\n\t\twhile (!this.done()) {\n\t\t\tconst current = this.input[this.index];\n\t\t\tif (current === \")\") {\n\t\t\t\tflushText();\n\t\t\t\tthis.index += 1;\n\t\t\t\treturn nodes;\n\t\t\t}\n\t\t\tif (current === \"$\") {\n\t\t\t\tflushText();\n\t\t\t\tnodes.push({ type: \"variable\", name: this.parseVariable() });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (current === \"(\" || current === \"[\" || current === \"]\" || current === \"\\\\\") {\n\t\t\t\tthrow new FormatSyntaxError(\"Invalid style character\", this.index);\n\t\t\t}\n\t\t\ttext += current;\n\t\t\tthis.index += 1;\n\t\t}\n\t\tthrow new FormatSyntaxError(\"Missing )\", this.index);\n\t}\n}\n\nexport function formatVariables(nodes: readonly FormatNode[]): Set<string> {\n\tconst variables = new Set<string>();\n\tfor (const node of nodes) {\n\t\tif (node.type === \"variable\") variables.add(node.name);\n\t\telse if (node.type === \"group\" || node.type === \"conditional\") {\n\t\t\tfor (const variable of formatVariables(node.children)) variables.add(variable);\n\t\t}\n\t}\n\treturn variables;\n}\n\nexport function styleVariables(nodes: readonly FormatNode[]): Set<string> {\n\tconst variables = new Set<string>();\n\tfor (const node of nodes) {\n\t\tif (node.type === \"group\") {\n\t\t\tfor (const part of node.style) {\n\t\t\t\tif (part.type === \"variable\") variables.add(part.name);\n\t\t\t}\n\t\t}\n\t\tif (node.type === \"group\" || node.type === \"conditional\") {\n\t\t\tfor (const variable of styleVariables(node.children)) variables.add(variable);\n\t\t}\n\t}\n\treturn variables;\n}\n\nexport function renderFormat(\n\tnodes: readonly FormatNode[],\n\toptions: RenderFormatOptions,\n): LayoutChunk[] {\n\treturn renderNodes(nodes, options, undefined);\n}\n\nfunction renderNodes(\n\tnodes: readonly FormatNode[],\n\toptions: RenderFormatOptions,\n\tinheritedStyle: TextStyle | undefined,\n): LayoutChunk[] {\n\tconst chunks: LayoutChunk[] = [];\n\tfor (const node of nodes) {\n\t\tswitch (node.type) {\n\t\t\tcase \"text\":\n\t\t\t\tchunks.push({ text: node.value, style: inheritedStyle });\n\t\t\t\tbreak;\n\t\t\tcase \"variable\":\n\t\t\t\tchunks.push(...chunksForValue(ownValue(options.variables, node.name), inheritedStyle));\n\t\t\t\tbreak;\n\t\t\tcase \"conditional\":\n\t\t\t\tif (conditionalVisible(node.children, options.variables)) {\n\t\t\t\t\tchunks.push(...renderNodes(node.children, options, inheritedStyle));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"group\": {\n\t\t\t\tconst styleString = node.style\n\t\t\t\t\t.map((part) =>\n\t\t\t\t\t\tpart.type === \"text\" ? part.value : (ownValue(options.styleVariables, part.name) ?? \"\"),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\");\n\t\t\t\tconst style = parseStyle(styleString, options.palette);\n\t\t\t\tconst rendered = renderNodes(node.children, options, style);\n\t\t\t\tif (node.children.length === 0) chunks.push({ text: \"\", style });\n\t\t\t\telse chunks.push(...rendered);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn chunks;\n}\n\nfunction ownValue<T>(record: Readonly<Record<string, T>> | undefined, key: string): T | undefined {\n\treturn record && Object.hasOwn(record, key) ? record[key] : undefined;\n}\n\nfunction chunksForValue(value: FormatValue, inheritedStyle: TextStyle | undefined): LayoutChunk[] {\n\tif (value === undefined) return [];\n\tif (typeof value === \"string\") return [{ text: value, style: inheritedStyle }];\n\treturn value.map((chunk) =>\n\t\tisFillChunk(chunk)\n\t\t\t? {\n\t\t\t\t\ttype: \"fill\" as const,\n\t\t\t\t\tpattern: chunk.pattern.map((part) => ({\n\t\t\t\t\t\t...part,\n\t\t\t\t\t\tstyle: part.style ?? inheritedStyle,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t: { ...chunk, style: chunk.style ?? inheritedStyle },\n\t);\n}\n\nfunction conditionalVisible(\n\tnodes: readonly FormatNode[],\n\tvariables: Readonly<Record<string, FormatValue>>,\n): boolean {\n\tfor (const variable of formatVariables(nodes)) {\n\t\tconst value = ownValue(variables, variable);\n\t\tif (\n\t\t\ttypeof value === \"string\"\n\t\t\t\t? value.length > 0\n\t\t\t\t: value?.some((chunk) => isFillChunk(chunk) || chunk.text.length > 0)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n", "import type { StyledChunk } from \"../format/style.js\";\n\nexport interface GitBranchSnapshot {\n\tname: string;\n\tremoteName?: string;\n\tremoteBranch?: string;\n\tdetached: boolean;\n}\n\nexport interface GitCommitSnapshot {\n\thash: string;\n\ttag?: string;\n\tdetached: boolean;\n}\n\nexport interface GitStateSnapshot {\n\tstate: string;\n\tprogressCurrent?: number;\n\tprogressTotal?: number;\n}\n\nexport interface GitMetricsSnapshot {\n\tadded: number;\n\tdeleted: number;\n}\n\nexport interface GitStatusSnapshot {\n\tahead: number;\n\tbehind: number;\n\tstashed: number;\n\tconflicted: number;\n\tdeleted: number;\n\trenamed: number;\n\tmodified: number;\n\tstaged: number;\n\ttypechanged: number;\n\tuntracked: number;\n\tworktreeAdded: number;\n\tworktreeDeleted: number;\n\tworktreeModified: number;\n\tworktreeTypechanged: number;\n\tindexAdded: number;\n\tindexDeleted: number;\n\tindexModified: number;\n\tindexTypechanged: number;\n}\n\nexport interface GitWorktreeSnapshot {\n\tname: string;\n\tpath: string;\n}\n\nexport type GithubPrState = \"open\" | \"draft\" | \"merged\" | \"closed\";\n\nexport interface GithubPrSnapshot {\n\treadonly number: string;\n\treadonly link: string;\n\treadonly state: GithubPrState;\n\treadonly checks: string;\n\treadonly review: string;\n\treadonly status: string;\n\treadonly expiresAt?: number;\n}\n\nexport interface GitSnapshot {\n\troot?: string;\n\tbranch?: GitBranchSnapshot;\n\tcommit?: GitCommitSnapshot;\n\tstate?: GitStateSnapshot;\n\tmetrics?: GitMetricsSnapshot;\n\tstatus: GitStatusSnapshot;\n\tworktree?: GitWorktreeSnapshot;\n}\n\nexport interface WorkspaceSnapshot {\n\tmodules: Readonly<Record<string, Readonly<Record<string, string>>>>;\n\tstyleSelectors?: Readonly<Record<string, string>>;\n}\n\nexport interface StarshipRuntimeSnapshot {\n\tcwd: string;\n\thomeDir?: string;\n\tgitRoot?: string;\n\tmodel?: { provider: string; id: string };\n\tthinkingLevel: string;\n\tturnCount: number;\n\tactiveTools: ReadonlyMap<string, number>;\n\tisStreaming: boolean;\n\tlastCompletedTool?: string;\n\tcontextUsage?: {\n\t\tpercent?: number | null;\n\t\ttokens?: number | null;\n\t\tcontextWindow?: number | null;\n\t};\n\ttokenTotals: {\n\t\tinput: number;\n\t\toutput: number;\n\t\tcacheRead: number;\n\t\tcacheWrite: number;\n\t\tcost: number;\n\t\tlatestCacheHitRate?: number;\n\t};\n\tusingSubscription: boolean;\n\tgitBranch: string | null;\n\tgitBranchDetails?: GitBranchSnapshot;\n\tgitCommit?: GitCommitSnapshot;\n\tgitState?: GitStateSnapshot;\n\tgitMetrics?: GitMetricsSnapshot;\n\tgitStatus?: GitStatusSnapshot;\n\tgitWorktree?: GitWorktreeSnapshot;\n\tgithubPr?: GithubPrSnapshot;\n\textensionStatuses: ReadonlyMap<string, string>;\n\tnow: Date;\n\tworkspace?: WorkspaceSnapshot;\n}\n\nexport interface ExtensionStatusPresentation {\n\tseparator: string;\n\tmaxStatuses: number;\n\ticons: Readonly<Record<string, string>>;\n}\n\nexport type ModuleOptionValue =\n\t| string\n\t| boolean\n\t| number\n\t| readonly string[]\n\t| Readonly<Record<string, string>>;\n\nexport interface ModuleValueContext {\n\truntime: StarshipRuntimeSnapshot;\n\tsymbol: string;\n\toptions: Readonly<Record<string, ModuleOptionValue>>;\n\textensionStatus: ExtensionStatusPresentation;\n}\n\nexport type ModuleOptionSchema =\n\t| { kind: \"string\"; default: string; allowEmpty?: boolean }\n\t| { kind: \"string-enum\"; default: string; values: readonly string[] }\n\t| { kind: \"boolean\"; default: boolean }\n\t| { kind: \"integer\"; default: number; minimum: number; maximum: number }\n\t| { kind: \"string-array\"; default: readonly string[]; allowNegative?: boolean }\n\t| { kind: \"string-map\"; default: Readonly<Record<string, string>> };\n\nexport interface ModuleDisplayConfig {\n\tthreshold: number;\n\tstyle: string;\n\thidden: boolean;\n}\n\nexport interface ModuleDefaults {\n\tformat: string;\n\tsymbol: string;\n\tstyle: string;\n\tdisabled: boolean;\n}\n\nexport interface ModuleStyleContext {\n\truntime: StarshipRuntimeSnapshot;\n\tvalues: Readonly<Record<string, string>>;\n\tstyle: string;\n\tstyles: Readonly<Record<string, string>>;\n\tdisplay: readonly ModuleDisplayConfig[];\n}\n\nexport interface ModuleDefinition<Name extends string> {\n\tname: Name;\n\tvariables: readonly string[];\n\tdefaults: ModuleDefaults;\n\tstyleDefaults?: Readonly<Record<string, string>>;\n\tdisplayDefaults?: readonly ModuleDisplayConfig[];\n\tstyleVariables?: readonly string[];\n\tresolveStyleVariables?(context: ModuleStyleContext): Readonly<Record<string, string>> | undefined;\n\toptions?: Readonly<Record<string, ModuleOptionSchema>>;\n\tlayout?: \"fill\";\n\tvalues(context: ModuleValueContext): Record<string, string> | undefined;\n}\n\nexport function defineModule<const Name extends string>(\n\tdefinition: ModuleDefinition<Name>,\n): ModuleDefinition<Name> {\n\treturn definition;\n}\n\nexport interface RenderedStatusline<Name extends string = string> {\n\tansi: string;\n\tchunks: StyledChunk[];\n\tmodules: Record<Name, StyledChunk[]>;\n}\n", "import { defineModule } from \"./types.js\";\n\nexport const activityModule = defineModule({\n\tname: \"activity\",\n\tvariables: [\"symbol\", \"state\", \"tool\", \"count\", \"text\"],\n\tdefaults: {\n\t\tformat: \"[ $text ]($style)\",\n\t\tsymbol: \"\u2699\",\n\t\tstyle: \"bold yellow\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime, symbol }) => {\n\t\tconst active = [...runtime.activeTools.entries()];\n\t\tif (active.length > 0) {\n\t\t\tconst [tool = \"tool\", count = 1] = active[0] ?? [];\n\t\t\tconst suffix = count > 1 ? `\u00D7${count}` : \"\";\n\t\t\tconst more = active.length > 1 ? `+${active.length - 1}` : \"\";\n\t\t\treturn {\n\t\t\t\tstate: \"active\",\n\t\t\t\ttool,\n\t\t\t\tcount: `${count}`,\n\t\t\t\ttext: `${symbol} ${tool}${suffix}${more}`,\n\t\t\t};\n\t\t}\n\t\tif (runtime.isStreaming) {\n\t\t\treturn { state: \"thinking\", tool: \"\", count: \"0\", text: `${symbol} thinking` };\n\t\t}\n\t\tif (runtime.lastCompletedTool) {\n\t\t\treturn {\n\t\t\t\tstate: \"completed\",\n\t\t\t\ttool: runtime.lastCompletedTool,\n\t\t\t\tcount: \"0\",\n\t\t\t\ttext: `${symbol} completed ${runtime.lastCompletedTool}`,\n\t\t\t};\n\t\t}\n\t\treturn { state: \"idle\", tool: \"\", count: \"0\", text: `${symbol} idle` };\n\t},\n});\n", "import { defineModule } from \"./types.js\";\n\nexport const brandModule = defineModule({\n\tname: \"brand\",\n\tvariables: [\"symbol\"],\n\tdefaults: {\n\t\tformat: \"[ $symbol ]($style)\",\n\t\tsymbol: \"\u03C0\",\n\t\tstyle: \"bold white\",\n\t\tdisabled: false,\n\t},\n\tvalues: () => ({}),\n});\n", "export function formatCount(value: number): string {\n\tif (value < 1000) return `${value}`;\n\tif (value < 1_000_000) return `${(value / 1000).toFixed(value < 10_000 ? 1 : 0)}k`;\n\treturn `${(value / 1_000_000).toFixed(1)}m`;\n}\n", "import { formatCount } from \"./helpers.js\";\nimport { defineModule } from \"./types.js\";\n\nexport const cacheModule = defineModule({\n\tname: \"cache\",\n\tvariables: [\"symbol\", \"rate\", \"read\", \"write\"],\n\tdefaults: {\n\t\tformat: \"[$symbol (CH$rate )]($style)\",\n\t\tsymbol: \"\uD83D\uDCE6\",\n\t\tstyle: \"bold green\",\n\t\tdisabled: true,\n\t},\n\tvalues: ({ runtime }) => {\n\t\tconst { cacheRead, cacheWrite, latestCacheHitRate } = runtime.tokenTotals;\n\t\tif (cacheRead === 0 && cacheWrite === 0) return undefined;\n\t\tconst rate = latestCacheHitRate === undefined ? \"\" : `${latestCacheHitRate.toFixed(1)}%`;\n\t\treturn {\n\t\t\trate,\n\t\t\tread: cacheRead > 0 ? formatCount(cacheRead) : \"\",\n\t\t\twrite: cacheWrite > 0 ? formatCount(cacheWrite) : \"\",\n\t\t};\n\t},\n});\n", "import type { ModuleValueContext } from \"./types.js\";\n\nexport function workspaceModuleValues(\n\tname: string,\n\tcontext: ModuleValueContext,\n): Record<string, string> | undefined {\n\tconst values = context.runtime.workspace?.modules[name];\n\tif (!values) return undefined;\n\treturn { ...values };\n}\n", "import { defineModule, type ModuleDefinition, type ModuleOptionSchema } from \"./types.js\";\nimport { workspaceModuleValues } from \"./workspace-helpers.js\";\n\nfunction cloudModule<const Name extends string>(definition: {\n\tname: Name;\n\tvariables: readonly string[];\n\tformat: string;\n\tsymbol: string;\n\tstyle: string;\n\toptions: Readonly<Record<string, ModuleOptionSchema>>;\n}): ModuleDefinition<Name> {\n\treturn defineModule({\n\t\tname: definition.name,\n\t\tvariables: [\"symbol\", ...definition.variables],\n\t\tdefaults: {\n\t\t\tformat: definition.format,\n\t\t\tsymbol: definition.symbol,\n\t\t\tstyle: definition.style,\n\t\t\tdisabled: false,\n\t\t},\n\t\toptions: definition.options,\n\t\tvalues: (context) => workspaceModuleValues(definition.name, context),\n\t});\n}\n\nexport const awsModule = cloudModule({\n\tname: \"aws\",\n\tvariables: [\"profile\", \"region\"],\n\tformat: \"on [$symbol($profile )(\\\\($region\\\\) )]($style)\",\n\tsymbol: \"\u2601\uFE0F  \",\n\tstyle: \"bold yellow\",\n\toptions: {\n\t\tprofile_aliases: { kind: \"string-map\", default: {} },\n\t\tregion_aliases: { kind: \"string-map\", default: {} },\n\t},\n});\n\nexport const gcloudModule = cloudModule({\n\tname: \"gcloud\",\n\tvariables: [\"active\", \"account\", \"domain\", \"project\", \"region\"],\n\tformat: \"on [$symbol$project]($style) \",\n\tsymbol: \"\u2601\uFE0F  \",\n\tstyle: \"bold blue\",\n\toptions: {\n\t\tproject_aliases: { kind: \"string-map\", default: {} },\n\t\tregion_aliases: { kind: \"string-map\", default: {} },\n\t},\n});\n\nexport const azureModule = cloudModule({\n\tname: \"azure\",\n\tvariables: [\"subscription\", \"username\"],\n\tformat: \"on [$symbol$subscription]($style) \",\n\tsymbol: \"\uDB82\uDC05 \",\n\tstyle: \"blue bold\",\n\toptions: {\n\t\tsubscription_aliases: { kind: \"string-map\", default: {} },\n\t\tshow_username: { kind: \"boolean\", default: false },\n\t},\n});\n\nexport const openstackModule = cloudModule({\n\tname: \"openstack\",\n\tvariables: [\"cloud\", \"project\"],\n\tformat: \"on [$symbol$cloud( \\\\($project\\\\))]($style) \",\n\tsymbol: \"\u2601\uFE0F  \",\n\tstyle: \"bold yellow\",\n\toptions: {\n\t\tcloud_aliases: { kind: \"string-map\", default: {} },\n\t\tproject_aliases: { kind: \"string-map\", default: {} },\n\t},\n});\n\nexport const cloudModules = [awsModule, gcloudModule, azureModule, openstackModule] as const;\n", "import type { ModuleDisplayConfig } from \"./types.js\";\n\nexport function resolveDisplayStyle(\n\tdisplay: readonly ModuleDisplayConfig[],\n\tvalue: number | null | undefined,\n): string | undefined {\n\tif (value === null || value === undefined || !Number.isFinite(value)) return undefined;\n\tlet selected: ModuleDisplayConfig | undefined;\n\tfor (const entry of display) {\n\t\tif (entry.threshold > value) continue;\n\t\tif (!selected || entry.threshold >= selected.threshold) selected = entry;\n\t}\n\treturn selected && !selected.hidden ? selected.style : undefined;\n}\n", "import { resolveDisplayStyle } from \"./display.js\";\nimport { formatCount } from \"./helpers.js\";\nimport { defineModule } from \"./types.js\";\n\nexport const contextModule = defineModule({\n\tname: \"context\",\n\tvariables: [\"symbol\", \"percentage\", \"tokens\", \"window\"],\n\tdefaults: {\n\t\tformat: \"[$symbol ctx $percentage ]($style)\",\n\t\tsymbol: \"\uD83E\uDE9F\",\n\t\tstyle: \"none\",\n\t\tdisabled: false,\n\t},\n\tdisplayDefaults: [\n\t\t{ threshold: 0, style: \"bold green\", hidden: true },\n\t\t{ threshold: 30, style: \"bold green\", hidden: false },\n\t\t{ threshold: 60, style: \"bold yellow\", hidden: false },\n\t\t{ threshold: 80, style: \"bold red\", hidden: false },\n\t],\n\tstyleVariables: [\"style\"],\n\tresolveStyleVariables: ({ runtime, display }) => {\n\t\tconst style = resolveDisplayStyle(display, runtime.contextUsage?.percent);\n\t\treturn style === undefined ? undefined : { style };\n\t},\n\tvalues: ({ runtime }) => {\n\t\tconst percent = runtime.contextUsage?.percent;\n\t\treturn {\n\t\t\tpercentage: percent === null || percent === undefined ? \"?\" : `${percent.toFixed(1)}%`,\n\t\t\ttokens: formatCount(runtime.contextUsage?.tokens ?? 0),\n\t\t\twindow: formatCount(runtime.contextUsage?.contextWindow ?? 0),\n\t\t};\n\t},\n});\n", "import { resolveDisplayStyle } from \"./display.js\";\nimport { defineModule } from \"./types.js\";\n\nexport const costModule = defineModule({\n\tname: \"cost\",\n\tvariables: [\"symbol\", \"cost\", \"subscription\"],\n\tdefaults: {\n\t\tformat: \"[ $symbol \\\\$$cost( $subscription) ]($style)\",\n\t\tsymbol: \"\uD83D\uDCB8\",\n\t\tstyle: \"none\",\n\t\tdisabled: false,\n\t},\n\tdisplayDefaults: [\n\t\t{ threshold: 0, style: \"bold green\", hidden: true },\n\t\t{ threshold: 1, style: \"bold yellow\", hidden: false },\n\t\t{ threshold: 5, style: \"bold red\", hidden: false },\n\t],\n\tstyleVariables: [\"style\"],\n\tresolveStyleVariables: ({ runtime, display }) => {\n\t\tconst style = resolveDisplayStyle(display, runtime.tokenTotals.cost);\n\t\treturn style === undefined ? undefined : { style };\n\t},\n\tvalues: ({ runtime }) => ({\n\t\tcost: formatCost(runtime.tokenTotals.cost),\n\t\tsubscription: runtime.usingSubscription ? \"(sub)\" : \"\",\n\t}),\n});\n\nfunction formatCost(value: number): string {\n\treturn value.toFixed(value >= 1 ? 2 : 3);\n}\n", "import { defineModule } from \"./types.js\";\nimport { workspaceModuleValues } from \"./workspace-helpers.js\";\n\nconst directDetection = {\n\tdetect_files: { kind: \"string-array\", default: [] },\n\tdetect_extensions: { kind: \"string-array\", default: [] },\n\tdetect_folders: { kind: \"string-array\", default: [] },\n} as const;\n\nexport const dockerContextModule = defineModule({\n\tname: \"docker_context\",\n\tvariables: [\"symbol\", \"context\"],\n\tdefaults: {\n\t\tformat: \"via [$symbol$context]($style) \",\n\t\tsymbol: \"\uF308 \",\n\t\tstyle: \"blue bold\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\t...directDetection,\n\t\tonly_with_files: { kind: \"boolean\", default: false },\n\t},\n\tvalues: (context) => workspaceModuleValues(\"docker_context\", context),\n});\n\nexport const kubernetesModule = defineModule({\n\tname: \"kubernetes\",\n\tvariables: [\"symbol\", \"context\", \"namespace\", \"cluster\", \"user\"],\n\tdefaults: {\n\t\tformat: \"on [$symbol$context( \\\\($namespace\\\\))]($style) \",\n\t\tsymbol: \"\u2638 \",\n\t\tstyle: \"cyan bold\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\tcontext_aliases: { kind: \"string-map\", default: {} },\n\t\tnamespace_aliases: { kind: \"string-map\", default: {} },\n\t\tcluster_aliases: { kind: \"string-map\", default: {} },\n\t\tuser_aliases: { kind: \"string-map\", default: {} },\n\t\tmax_config_files: { kind: \"integer\", default: 8, minimum: 1, maximum: 32 },\n\t},\n\tvalues: (context) => workspaceModuleValues(\"kubernetes\", context),\n});\n\nexport const terraformModule = defineModule({\n\tname: \"terraform\",\n\tvariables: [\"symbol\", \"workspace\", \"version\"],\n\tdefaults: {\n\t\tformat: \"via [$symbol$workspace]($style) \",\n\t\tsymbol: \"\uD83D\uDCA0 \",\n\t\tstyle: \"bold 105\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\t...directDetection,\n\t\tversion_format: { kind: \"string\", default: \"v$raw\" },\n\t},\n\tvalues: (context) => workspaceModuleValues(\"terraform\", context),\n});\n\nexport const deploymentModules = [dockerContextModule, kubernetesModule, terraformModule] as const;\n", "import { sep } from \"node:path\";\n\nconst graphemeSegmenter = new Intl.Segmenter(undefined, { granularity: \"grapheme\" });\n\nexport function graphemes(value: string): string[] {\n\treturn [...graphemeSegmenter.segment(value)].map(({ segment }) => segment);\n}\n\nexport function firstGrapheme(value: string): string {\n\treturn graphemes(value)[0] ?? \"\";\n}\n\nexport function truncateLeadingGraphemes(value: string, length: number, symbol: string): string {\n\tif (length <= 0) return value;\n\tconst parts = graphemes(value);\n\tif (parts.length <= length) return value;\n\treturn `${parts.slice(0, length).join(\"\")}${firstGrapheme(symbol)}`;\n}\n\nexport function toSlashPath(value: string): string {\n\treturn sep === \"\\\\\" ? value.replaceAll(\"\\\\\", \"/\") : value;\n}\n\nexport function truncatePathComponents(\n\tvalue: string,\n\tlength: number,\n): { value: string; truncated: boolean } {\n\tif (length <= 0) return { value, truncated: false };\n\tconst normalized = toSlashPath(value);\n\tconst components = normalized.split(\"/\").filter((component) => component.length > 0);\n\tif (components.length <= length) return { value: normalized, truncated: false };\n\treturn { value: components.slice(-length).join(\"/\"), truncated: true };\n}\n\nexport function useNativePathSeparator(value: string): string {\n\treturn sep === \"/\" ? value : value.replaceAll(\"/\", sep);\n}\n", "import { truncatePathComponents } from \"./truncation.js\";\nimport { defineModule, type ModuleDefinition, type ModuleOptionSchema } from \"./types.js\";\nimport { workspaceModuleValues } from \"./workspace-helpers.js\";\n\nfunction developmentModule<const Name extends string>(definition: {\n\tname: Name;\n\tvariables: readonly string[];\n\tformat: string;\n\tsymbol: string;\n\tstyle: string;\n\toptions?: Readonly<Record<string, ModuleOptionSchema>>;\n}): ModuleDefinition<Name> {\n\treturn defineModule({\n\t\tname: definition.name,\n\t\tvariables: [\"symbol\", ...definition.variables],\n\t\tdefaults: {\n\t\t\tformat: definition.format,\n\t\t\tsymbol: definition.symbol,\n\t\t\tstyle: definition.style,\n\t\t\tdisabled: false,\n\t\t},\n\t\toptions: definition.options,\n\t\tvalues: (context) => workspaceModuleValues(definition.name, context),\n\t});\n}\n\nconst directDetection = {\n\tdetect_files: { kind: \"string-array\", default: [] },\n\tdetect_extensions: { kind: \"string-array\", default: [] },\n\tdetect_folders: { kind: \"string-array\", default: [] },\n} as const;\n\nexport const miseModule = developmentModule({\n\tname: \"mise\",\n\tvariables: [\"health\"],\n\tformat: \"via [$symbol$health]($style) \",\n\tsymbol: \"mise \",\n\tstyle: \"bold purple\",\n\toptions: directDetection,\n});\n\nexport const direnvModule = developmentModule({\n\tname: \"direnv\",\n\tvariables: [\"rc_path\", \"allowed\", \"loaded\"],\n\tformat: \"[$symbol$loaded]($style) \",\n\tsymbol: \"direnv \",\n\tstyle: \"bold bright-yellow\",\n\toptions: directDetection,\n});\n\nexport const condaModule = defineModule({\n\tname: \"conda\",\n\tvariables: [\"symbol\", \"environment\"],\n\tdefaults: {\n\t\tformat: \"via [$symbol$environment]($style) \",\n\t\tsymbol: \"\uD83C\uDD52 \",\n\t\tstyle: \"green bold\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\tignore_base: { kind: \"boolean\", default: true },\n\t\ttruncation_length: { kind: \"integer\", default: 1, minimum: 0, maximum: 1_000_000 },\n\t},\n\tvalues: (context) => {\n\t\tconst values = workspaceModuleValues(\"conda\", context);\n\t\tconst environment = values?.environment;\n\t\tif (!environment) return undefined;\n\t\tconst length =\n\t\t\ttypeof context.options.truncation_length === \"number\" ? context.options.truncation_length : 1;\n\t\treturn {\n\t\t\tenvironment: truncatePathComponents(environment, length).value,\n\t\t};\n\t},\n});\n\nexport const pixiModule = developmentModule({\n\tname: \"pixi\",\n\tvariables: [\"version\", \"environment\", \"project_name\"],\n\tformat: \"via [$symbol$environment]($style) \",\n\tsymbol: \"\uD83E\uDDDA \",\n\tstyle: \"yellow bold\",\n\toptions: {\n\t\t...directDetection,\n\t\tversion_format: { kind: \"string\", default: \"v$raw\" },\n\t\tshow_default_environment: { kind: \"boolean\", default: false },\n\t},\n});\n\nexport const nixShellModule = developmentModule({\n\tname: \"nix_shell\",\n\tvariables: [\"state\", \"name\", \"level\"],\n\tformat: \"via [$symbol$state( \\\\($name\\\\))]($style) \",\n\tsymbol: \"\uF313 \",\n\tstyle: \"bold blue\",\n});\n\nexport const guixShellModule = developmentModule({\n\tname: \"guix_shell\",\n\tvariables: [\"state\"],\n\tformat: \"via [$symbol]($style) \",\n\tsymbol: \"\uD83D\uDC03 \",\n\tstyle: \"yellow bold\",\n});\n\nexport const developmentModules = [\n\tmiseModule,\n\tdirenvModule,\n\tcondaModule,\n\tpixiModule,\n\tnixShellModule,\n\tguixShellModule,\n] as const;\n", "import { basename, isAbsolute, relative, sep } from \"node:path\";\nimport { sanitizeTerminalText } from \"@narumitw/pi-tui-kit/terminal-text\";\nimport {\n\tgraphemes,\n\ttoSlashPath,\n\ttruncatePathComponents,\n\tuseNativePathSeparator,\n} from \"./truncation.js\";\nimport { defineModule, type ModuleOptionValue } from \"./types.js\";\n\nexport const directoryModule = defineModule({\n\tname: \"directory\",\n\tvariables: [\"symbol\", \"path\", \"full_path\"],\n\tdefaults: {\n\t\tformat: \"[ $symbol $path ]($style)\",\n\t\tsymbol: \"\uD83D\uDCC1\",\n\t\tstyle: \"cyan bold\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\ttruncation_length: { kind: \"integer\", default: 3, minimum: 0, maximum: 1_000_000 },\n\t\ttruncate_to_repo: { kind: \"boolean\", default: true },\n\t\tfish_style_pwd_dir_length: { kind: \"integer\", default: 0, minimum: 0, maximum: 1_000 },\n\t\ttruncation_symbol: { kind: \"string\", default: \"\" },\n\t\thome_symbol: { kind: \"string\", default: \"~\" },\n\t\tuse_os_path_sep: { kind: \"boolean\", default: true },\n\t\tsubstitutions: { kind: \"string-map\", default: {} },\n\t},\n\tvalues: ({ runtime, options }) => {\n\t\tconst fullPath = runtime.cwd;\n\t\tconst home = runtime.homeDir;\n\t\tconst repoRoot = runtime.gitRoot;\n\t\tconst homeSymbol = stringOption(options, \"home_symbol\", \"~\");\n\t\tconst truncateToRepo = booleanOption(options, \"truncate_to_repo\", true);\n\t\tconst substitutions = mapOption(options, \"substitutions\");\n\t\tconst homeContracted = contractPath(fullPath, home, homeSymbol);\n\t\tconst repoContracted =\n\t\t\ttruncateToRepo && repoRoot && (!home || !samePath(repoRoot, home))\n\t\t\t\t? contractRepositoryPath(fullPath, repoRoot)\n\t\t\t\t: undefined;\n\t\tlet path = sanitizeTerminalText(repoContracted ?? homeContracted);\n\t\tlet truncated = repoContracted !== undefined;\n\n\t\tfor (const [from, to] of Object.entries(substitutions)) {\n\t\t\tif (from) path = path.replaceAll(from, to);\n\t\t}\n\n\t\tconst componentResult = truncatePathComponents(\n\t\t\tpath,\n\t\t\tnumberOption(options, \"truncation_length\", 3),\n\t\t);\n\t\tpath = componentResult.value;\n\t\ttruncated ||= componentResult.truncated;\n\n\t\tif (truncated) {\n\t\t\tconst fishLength = numberOption(options, \"fish_style_pwd_dir_length\", 0);\n\t\t\tif (fishLength > 0 && Object.keys(substitutions).length === 0) {\n\t\t\t\tpath = `${fishPrefix(homeContracted, path, fishLength)}${path}`;\n\t\t\t} else {\n\t\t\t\tpath = `${stringOption(options, \"truncation_symbol\", \"\")}${path}`;\n\t\t\t}\n\t\t}\n\n\t\tif (booleanOption(options, \"use_os_path_sep\", true)) path = useNativePathSeparator(path);\n\t\tconst fallback = basename(fullPath) || fullPath;\n\t\treturn {\n\t\t\tpath: sanitizeTerminalText(path || fallback),\n\t\t\tfull_path: sanitizeTerminalText(fullPath),\n\t\t};\n\t},\n});\n\nfunction contractPath(path: string, root: string | undefined, replacement: string): string {\n\tif (!root) return toSlashPath(path);\n\tconst child = relativeWithin(path, root);\n\tif (child === undefined) return toSlashPath(path);\n\treturn child ? `${replacement}/${child}` : replacement;\n}\n\nfunction contractRepositoryPath(path: string, root: string): string | undefined {\n\tconst child = relativeWithin(path, root);\n\tif (child === undefined) return undefined;\n\tconst name = basename(root) || toSlashPath(root);\n\treturn child ? `${name}/${child}` : name;\n}\n\nfunction relativeWithin(path: string, root: string): string | undefined {\n\tconst child = relative(root, path);\n\tif (child === \"\") return \"\";\n\tif (child === \"..\" || child.startsWith(`..${sep}`) || isAbsolute(child)) return undefined;\n\treturn toSlashPath(child);\n}\n\nfunction samePath(left: string, right: string): boolean {\n\treturn relative(left, right) === \"\";\n}\n\nfunction fishPrefix(source: string, displayed: string, length: number): string {\n\tconst prefix = source.endsWith(displayed) ? source.slice(0, -displayed.length) : \"\";\n\tif (!prefix) return \"\";\n\treturn prefix\n\t\t.split(\"/\")\n\t\t.map((component) => abbreviateComponent(component, length))\n\t\t.join(\"/\");\n}\n\nfunction abbreviateComponent(component: string, length: number): string {\n\tif (!component) return \"\";\n\tconst parts = graphemes(component);\n\tif (parts.length <= length) return component;\n\treturn component.startsWith(\".\")\n\t\t? parts.slice(0, length + 1).join(\"\")\n\t\t: parts.slice(0, length).join(\"\");\n}\n\nfunction numberOption(\n\toptions: Readonly<Record<string, ModuleOptionValue>>,\n\tname: string,\n\tfallback: number,\n): number {\n\tconst value = options[name];\n\treturn typeof value === \"number\" ? value : fallback;\n}\n\nfunction stringOption(\n\toptions: Readonly<Record<string, ModuleOptionValue>>,\n\tname: string,\n\tfallback: string,\n): string {\n\tconst value = options[name];\n\treturn typeof value === \"string\" ? value : fallback;\n}\n\nfunction booleanOption(\n\toptions: Readonly<Record<string, ModuleOptionValue>>,\n\tname: string,\n\tfallback: boolean,\n): boolean {\n\tconst value = options[name];\n\treturn typeof value === \"boolean\" ? value : fallback;\n}\n\nfunction mapOption(\n\toptions: Readonly<Record<string, ModuleOptionValue>>,\n\tname: string,\n): Readonly<Record<string, string>> {\n\tconst value = options[name];\n\treturn value && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Readonly<Record<string, string>>)\n\t\t: {};\n}\n", "import { defineModule } from \"./types.js\";\nimport { workspaceModuleValues } from \"./workspace-helpers.js\";\n\nexport const osModule = defineModule({\n\tname: \"os\",\n\tvariables: [\"symbol\", \"type\", \"name\", \"version\", \"edition\", \"codename\"],\n\tdefaults: {\n\t\tformat: \"[$symbol($name )]($style)\",\n\t\tsymbol: \"\",\n\t\tstyle: \"bold white\",\n\t\tdisabled: true,\n\t},\n\toptions: {\n\t\tsymbols: {\n\t\t\tkind: \"string-map\",\n\t\t\tdefault: { linux: \"\uD83D\uDC27 \", macos: \"\uD83C\uDF4E \", windows: \"\uE62A \", wsl: \"\uF31A \" },\n\t\t},\n\t},\n\tvalues: (context) => workspaceModuleValues(\"os\", context),\n});\n\nexport const containerModule = defineModule({\n\tname: \"container\",\n\tvariables: [\"symbol\", \"name\", \"type\"],\n\tdefaults: {\n\t\tformat: \"[$symbol$name]($style) \",\n\t\tsymbol: \"\u2B22 \",\n\t\tstyle: \"bold red dimmed\",\n\t\tdisabled: false,\n\t},\n\tvalues: (context) => workspaceModuleValues(\"container\", context),\n});\n\nexport const hostnameModule = defineModule({\n\tname: \"hostname\",\n\tvariables: [\"symbol\", \"hostname\", \"ssh_symbol\"],\n\tdefaults: {\n\t\tformat: \"[$ssh_symbol$hostname]($style) in \",\n\t\tsymbol: \"\",\n\t\tstyle: \"bold dimmed green\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\tssh_only: { kind: \"boolean\", default: true },\n\t\ttrim_at: { kind: \"string\", default: \".\" },\n\t\taliases: { kind: \"string-map\", default: {} },\n\t},\n\tvalues: (context) => workspaceModuleValues(\"hostname\", context),\n});\n\nexport const usernameModule = defineModule({\n\tname: \"username\",\n\tvariables: [\"symbol\", \"user\"],\n\tdefaults: {\n\t\tformat: \"[$user]($style) in \",\n\t\tsymbol: \"\",\n\t\tstyle: \"none\",\n\t\tdisabled: false,\n\t},\n\tstyleDefaults: {\n\t\tstyle_user: \"yellow bold\",\n\t\tstyle_root: \"red bold\",\n\t},\n\tstyleVariables: [\"style\"],\n\tresolveStyleVariables: ({ runtime, styles }) => ({\n\t\tstyle:\n\t\t\truntime.workspace?.styleSelectors?.username === \"root\"\n\t\t\t\t? (styles.style_root ?? \"\")\n\t\t\t\t: (styles.style_user ?? \"\"),\n\t}),\n\toptions: {\n\t\tshow_always: { kind: \"boolean\", default: false },\n\t\taliases: { kind: \"string-map\", default: {} },\n\t\tdetect_env_vars: { kind: \"string-array\", default: [] },\n\t},\n\tvalues: (context) => workspaceModuleValues(\"username\", context),\n});\n\nexport const executionModules = [\n\tosModule,\n\tcontainerModule,\n\thostnameModule,\n\tusernameModule,\n] as const;\n", "import { defineModule } from \"./types.js\";\n\nexport const extensionStatusModule = defineModule({\n\tname: \"extension_status\",\n\tvariables: [\"symbol\", \"statuses\", \"count\"],\n\tdefaults: {\n\t\tformat: \"[$statuses]($style)\",\n\t\tsymbol: \"\",\n\t\tstyle: \"dimmed white\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime, extensionStatus }) => {\n\t\tconst statuses = [...runtime.extensionStatuses.entries()]\n\t\t\t.filter(([key, value]) => key !== \"starship\" && value.trim())\n\t\t\t.map(([key, value]) => formatExtensionStatus(key, value, extensionStatus.icons))\n\t\t\t.slice(0, extensionStatus.maxStatuses);\n\t\tif (statuses.length === 0) return undefined;\n\t\treturn {\n\t\t\tstatuses: statuses.join(extensionStatus.separator),\n\t\t\tcount: `${statuses.length}`,\n\t\t};\n\t},\n});\n\nexport function formatExtensionStatus(\n\tkey: string,\n\tvalue: string,\n\tconfiguredIcons: Readonly<Record<string, string>>,\n): string {\n\tconst status = splitExtensionStatusIcon(stripExtensionStatusPrefix(key, value));\n\tconst icon = extensionStatusIcon(key, status.icon, configuredIcons);\n\tconst text = simplifyExtensionStatusText(status.text);\n\treturn icon ? `${icon} ${text}` : text;\n}\n\nfunction extensionStatusIcon(\n\tkey: string,\n\tleadingIcon: string | undefined,\n\tconfiguredIcons: Readonly<Record<string, string>>,\n): string {\n\tif (Object.hasOwn(configuredIcons, key)) return configuredIcons[key] ?? \"\";\n\tconst namespaceIcon = configuredNamespaceIcon(key, configuredIcons);\n\tif (namespaceIcon !== undefined) return namespaceIcon;\n\tconst fallbackIcon = Object.hasOwn(configuredIcons, \"fallback\")\n\t\t? configuredIcons.fallback\n\t\t: undefined;\n\treturn leadingIcon ?? fallbackIcon ?? \"\uD83D\uDD0C\";\n}\n\nfunction configuredNamespaceIcon(\n\tkey: string,\n\tconfiguredIcons: Readonly<Record<string, string>>,\n): string | undefined {\n\tlet match: { baseLength: number; icon: string } | undefined;\n\tfor (const [selector, icon] of Object.entries(configuredIcons)) {\n\t\tif (!selector.endsWith(\":*\")) continue;\n\t\tconst base = selector.slice(0, -2);\n\t\tif (!base || !key.startsWith(`${base}:`)) continue;\n\t\tif (!match || base.length > match.baseLength) match = { baseLength: base.length, icon };\n\t}\n\treturn match?.icon;\n}\n\nfunction splitExtensionStatusIcon(value: string): { icon?: string; text: string } {\n\tconst trimmed = value.trim();\n\tconst [first, ...rest] = trimmed.split(/\\s+/u);\n\tif (first && isEmojiOnlyToken(first)) return { icon: first, text: rest.join(\" \") };\n\treturn { text: trimmed };\n}\n\nfunction isEmojiOnlyToken(value: string): boolean {\n\treturn /^(?=.*(?:\\p{Extended_Pictographic}|\\p{Regional_Indicator}|[0-9#*]\\ufe0f?\\u20e3))(?:\\p{Extended_Pictographic}|\\p{Emoji_Modifier}|\\p{Regional_Indicator}|\\u200d|\\ufe0f|[0-9#*]\\ufe0f?\\u20e3)+$/u.test(\n\t\tvalue,\n\t);\n}\n\nfunction stripExtensionStatusPrefix(key: string, value: string): string {\n\treturn value.trim().replace(new RegExp(`^${escapeRegExp(key)}\\\\s*:\\\\s*`, \"iu\"), \"\");\n}\n\nfunction simplifyExtensionStatusText(value: string): string {\n\treturn value\n\t\t.trim()\n\t\t.replace(/\\bready\\b/giu, \"\u2713\")\n\t\t.replace(/\\bmissing\\b/giu, \"\u2717\")\n\t\t.replace(/,\\s*/g, \" \")\n\t\t.replace(/\\s+\\([^)]*\\)\\s*$/u, \"\")\n\t\t.replace(/\\s+/gu, \" \");\n}\n\nfunction escapeRegExp(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n", "import { defineModule } from \"./types.js\";\n\nexport const fillModule = defineModule({\n\tname: \"fill\",\n\tvariables: [\"symbol\"],\n\tdefaults: {\n\t\tformat: \"[$symbol]($style)\",\n\t\tsymbol: \" \",\n\t\tstyle: \"bold black\",\n\t\tdisabled: false,\n\t},\n\tlayout: \"fill\",\n\tvalues: () => ({}),\n});\n", "import { truncateLeadingGraphemes } from \"../truncation.js\";\nimport { defineModule } from \"../types.js\";\n\nexport const gitBranchModule = defineModule({\n\tname: \"git_branch\",\n\tvariables: [\"symbol\", \"branch\", \"remote_name\", \"remote_branch\"],\n\tdefaults: {\n\t\tformat: \"[ $symbol $branch ]($style)\",\n\t\tsymbol: \"\uD83C\uDF3F\",\n\t\tstyle: \"bold purple\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\t// Starship uses i64::MAX as its effective no-truncation default. Zero is the\n\t\t// equivalent stable TOML representation in pi-starship's bounded integer schema.\n\t\ttruncation_length: { kind: \"integer\", default: 0, minimum: 0, maximum: 1_000_000 },\n\t\ttruncation_symbol: { kind: \"string\", default: \"\u2026\" },\n\t},\n\tvalues: ({ runtime, options }) => {\n\t\tconst branch = runtime.gitBranchDetails;\n\t\tconst name = branch?.name ?? runtime.gitBranch;\n\t\tif (!name) return undefined;\n\t\tconst length = typeof options.truncation_length === \"number\" ? options.truncation_length : 0;\n\t\tconst symbol = typeof options.truncation_symbol === \"string\" ? options.truncation_symbol : \"\u2026\";\n\t\treturn {\n\t\t\tbranch: truncateLeadingGraphemes(name, length, symbol),\n\t\t\tremote_name: truncateLeadingGraphemes(branch?.remoteName ?? \"\", length, symbol),\n\t\t\tremote_branch: truncateLeadingGraphemes(branch?.remoteBranch ?? \"\", length, symbol),\n\t\t};\n\t},\n});\n", "import { defineModule } from \"../types.js\";\n\nconst DEFAULT_HASH_LENGTH = 7;\n\nexport const gitCommitModule = defineModule({\n\tname: \"git_commit\",\n\tvariables: [\"symbol\", \"hash\", \"tag\"],\n\tdefaults: {\n\t\tformat: \"[ ($hash) ]($style)\",\n\t\tsymbol: \"\",\n\t\tstyle: \"green bold\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\tcommit_hash_length: { kind: \"integer\", default: DEFAULT_HASH_LENGTH, minimum: 0, maximum: 64 },\n\t},\n\tvalues: ({ runtime, options }) => {\n\t\tconst commit = runtime.gitCommit;\n\t\tif (!commit) return undefined;\n\t\tconst hashLength =\n\t\t\ttypeof options.commit_hash_length === \"number\"\n\t\t\t\t? options.commit_hash_length\n\t\t\t\t: DEFAULT_HASH_LENGTH;\n\t\treturn {\n\t\t\thash: commit.hash.slice(0, hashLength),\n\t\t\ttag: commit.tag ? ` \uD83C\uDFF7 ${commit.tag}` : \"\",\n\t\t};\n\t},\n});\n", "import { defineModule } from \"../types.js\";\n\nexport const gitMetricsModule = defineModule({\n\tname: \"git_metrics\",\n\tvariables: [\"symbol\", \"added\", \"deleted\"],\n\tdefaults: {\n\t\tformat: \"([+$added]($added_style) )([-$deleted]($deleted_style) )\",\n\t\tsymbol: \"\",\n\t\tstyle: \"none\",\n\t\tdisabled: true,\n\t},\n\tstyleDefaults: {\n\t\tadded_style: \"bold green\",\n\t\tdeleted_style: \"bold red\",\n\t},\n\tstyleVariables: [\"added_style\", \"deleted_style\"],\n\tresolveStyleVariables: ({ styles }) => styles,\n\tvalues: ({ runtime }) => {\n\t\tconst metrics = runtime.gitMetrics;\n\t\tif (!metrics || (metrics.added === 0 && metrics.deleted === 0)) return undefined;\n\t\treturn {\n\t\t\tadded: metrics.added > 0 ? metrics.added.toString() : \"\",\n\t\t\tdeleted: metrics.deleted > 0 ? metrics.deleted.toString() : \"\",\n\t\t};\n\t},\n});\n", "import { defineModule } from \"../types.js\";\n\nexport const gitStateModule = defineModule({\n\tname: \"git_state\",\n\tvariables: [\"symbol\", \"state\", \"progress_current\", \"progress_total\"],\n\tdefaults: {\n\t\tformat: \"[ ($state( $progress_current/$progress_total)) ]($style)\",\n\t\tsymbol: \"\",\n\t\tstyle: \"bold yellow\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => {\n\t\tconst state = runtime.gitState;\n\t\tif (!state) return undefined;\n\t\treturn {\n\t\t\tstate: state.state,\n\t\t\tprogress_current: state.progressCurrent?.toString() ?? \"\",\n\t\t\tprogress_total: state.progressTotal?.toString() ?? \"\",\n\t\t};\n\t},\n});\n", "import { formatCount } from \"../helpers.js\";\nimport { defineModule } from \"../types.js\";\n\nexport const gitStatusModule = defineModule({\n\tname: \"git_status\",\n\tvariables: [\n\t\t\"symbol\",\n\t\t\"all_status\",\n\t\t\"ahead_behind\",\n\t\t\"ahead\",\n\t\t\"behind\",\n\t\t\"up_to_date\",\n\t\t\"diverged\",\n\t\t\"conflicted\",\n\t\t\"stashed\",\n\t\t\"deleted\",\n\t\t\"renamed\",\n\t\t\"modified\",\n\t\t\"typechanged\",\n\t\t\"staged\",\n\t\t\"untracked\",\n\t\t\"worktree_added\",\n\t\t\"worktree_deleted\",\n\t\t\"worktree_modified\",\n\t\t\"worktree_typechanged\",\n\t\t\"index_added\",\n\t\t\"index_deleted\",\n\t\t\"index_modified\",\n\t\t\"index_typechanged\",\n\t],\n\tdefaults: {\n\t\tformat: \"[$all_status( $ahead_behind) ]($style)\",\n\t\tsymbol: \"\",\n\t\tstyle: \"red bold\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => {\n\t\tif (!runtime.gitBranch || !runtime.gitStatus) return undefined;\n\t\tconst status = runtime.gitStatus;\n\t\tconst ahead = count(\"\u21E1\", status.ahead);\n\t\tconst behind = count(\"\u21E3\", status.behind);\n\t\tconst diverged =\n\t\t\tstatus.ahead > 0 && status.behind > 0\n\t\t\t\t? `\u21D5\u21E1${formatCount(status.ahead)}\u21E3${formatCount(status.behind)}`\n\t\t\t\t: \"\";\n\t\tconst values = {\n\t\t\tahead,\n\t\t\tbehind,\n\t\t\tup_to_date: \"\",\n\t\t\tdiverged,\n\t\t\tahead_behind: diverged || ahead || behind,\n\t\t\tconflicted: count(\"=\", status.conflicted),\n\t\t\tstashed: count(\"$\", status.stashed),\n\t\t\tdeleted: count(\"\u2718\", status.deleted),\n\t\t\trenamed: count(\"\u00BB\", status.renamed),\n\t\t\tmodified: count(\"!\", status.modified),\n\t\t\ttypechanged: count(\"T\", status.typechanged),\n\t\t\tstaged: count(\"+\", status.staged),\n\t\t\tuntracked: count(\"?\", status.untracked),\n\t\t\tworktree_added: count(\"A\", status.worktreeAdded),\n\t\t\tworktree_deleted: count(\"D\", status.worktreeDeleted),\n\t\t\tworktree_modified: count(\"M\", status.worktreeModified),\n\t\t\tworktree_typechanged: count(\"T\", status.worktreeTypechanged),\n\t\t\tindex_added: count(\"A\", status.indexAdded),\n\t\t\tindex_deleted: count(\"D\", status.indexDeleted),\n\t\t\tindex_modified: count(\"M\", status.indexModified),\n\t\t\tindex_typechanged: count(\"T\", status.indexTypechanged),\n\t\t};\n\t\tconst allStatus = [\n\t\t\tvalues.conflicted,\n\t\t\tvalues.stashed,\n\t\t\tvalues.deleted,\n\t\t\tvalues.renamed,\n\t\t\tvalues.modified,\n\t\t\tvalues.typechanged,\n\t\t\tvalues.staged,\n\t\t\tvalues.untracked,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" \");\n\t\treturn allStatus || values.ahead_behind ? { ...values, all_status: allStatus } : undefined;\n\t},\n});\n\nfunction count(symbol: string, value: number): string {\n\treturn value > 0 ? `${symbol}${formatCount(value)}` : \"\";\n}\n", "import { defineModule } from \"../types.js\";\n\nexport const gitWorktreeModule = defineModule({\n\tname: \"git_worktree\",\n\tvariables: [\"symbol\", \"name\", \"path\"],\n\tdefaults: {\n\t\tformat: \"[ $symbol $name ]($style)\",\n\t\tsymbol: \"\uD83C\uDF33\",\n\t\tstyle: \"cyan bold\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) =>\n\t\truntime.gitWorktree\n\t\t\t? { name: runtime.gitWorktree.name, path: runtime.gitWorktree.path }\n\t\t\t: undefined,\n});\n", "import { defineModule } from \"./types.js\";\n\nexport const githubPrModule = defineModule({\n\tname: \"github_pr\",\n\tvariables: [\"symbol\", \"number\", \"link\", \"state\", \"checks\", \"review\", \"status\"],\n\tdefaults: {\n\t\tformat: \"[ $symbol$link( \u00B7 $status) ]($style)\",\n\t\tsymbol: \"PR \",\n\t\tstyle: \"bold blue\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => {\n\t\tconst snapshot = runtime.githubPr;\n\t\tif (!snapshot) return undefined;\n\t\treturn {\n\t\t\tnumber: snapshot.number,\n\t\t\tlink: snapshot.link,\n\t\t\tstate: snapshot.state,\n\t\t\tchecks: snapshot.checks,\n\t\t\treview: snapshot.review,\n\t\t\tstatus: snapshot.status,\n\t\t};\n\t},\n});\n", "import { defineModule, type ModuleDefinition } from \"./types.js\";\nimport { workspaceModuleValues } from \"./workspace-helpers.js\";\n\nconst detectionOptions = {\n\tversion_format: { kind: \"string\", default: \"v$raw\" },\n\tdetect_files: { kind: \"string-array\", default: [], allowNegative: true },\n\tdetect_extensions: { kind: \"string-array\", default: [], allowNegative: true },\n\tdetect_folders: { kind: \"string-array\", default: [], allowNegative: true },\n} as const;\n\nfunction languageModule<const Name extends string>(definition: {\n\tname: Name;\n\tvariables: readonly string[];\n\tformat: string;\n\tsymbol: string;\n\tstyle: string;\n}): ModuleDefinition<Name> {\n\treturn defineModule({\n\t\tname: definition.name,\n\t\tvariables: [\"symbol\", ...definition.variables],\n\t\tdefaults: {\n\t\t\tformat: definition.format,\n\t\t\tsymbol: definition.symbol,\n\t\t\tstyle: definition.style,\n\t\t\tdisabled: false,\n\t\t},\n\t\toptions: detectionOptions,\n\t\tvalues: (context) => workspaceModuleValues(definition.name, context),\n\t});\n}\n\nexport const nodejsModule = languageModule({\n\tname: \"nodejs\",\n\tvariables: [\"version\", \"engines_version\"],\n\tformat: \"via [$symbol($version )]($style)\",\n\tsymbol: \"\uE718 \",\n\tstyle: \"bold green\",\n});\n\nexport const pythonModule = languageModule({\n\tname: \"python\",\n\tvariables: [\"version\", \"virtualenv\", \"pyenv_prefix\"],\n\tformat: \"via [$symbol$pyenv_prefix($version )(\\\\($virtualenv\\\\) )]($style)\",\n\tsymbol: \"\uE235 \",\n\tstyle: \"yellow bold\",\n});\n\nexport const rustModule = languageModule({\n\tname: \"rust\",\n\tvariables: [\"version\", \"numver\", \"toolchain\"],\n\tformat: \"via [$symbol($version )]($style)\",\n\tsymbol: \"\uE7A8 \",\n\tstyle: \"bold red\",\n});\n\nexport const golangModule = languageModule({\n\tname: \"golang\",\n\tvariables: [\"version\", \"mod_version\"],\n\tformat: \"via [$symbol($version )]($style)\",\n\tsymbol: \"\uE627 \",\n\tstyle: \"bold cyan\",\n});\n\nexport const bunModule = languageModule({\n\tname: \"bun\",\n\tvariables: [\"version\"],\n\tformat: \"via [$symbol($version )]($style)\",\n\tsymbol: \"\uD83C\uDF5E \",\n\tstyle: \"bold red\",\n});\n\nexport const denoModule = languageModule({\n\tname: \"deno\",\n\tvariables: [\"version\"],\n\tformat: \"via [$symbol($version )]($style)\",\n\tsymbol: \"\uD83E\uDD95 \",\n\tstyle: \"green bold\",\n});\n\nexport const languageModules = [\n\tnodejsModule,\n\tpythonModule,\n\trustModule,\n\tgolangModule,\n\tbunModule,\n\tdenoModule,\n] as const;\n", "import { sanitizeTerminalText } from \"@narumitw/pi-tui-kit/terminal-text\";\nimport { defineModule } from \"./types.js\";\n\nconst TRUNCATION_DIRECTIONS = [\"start\", \"middle\", \"end\"] as const;\ntype TruncationDirection = (typeof TRUNCATION_DIRECTIONS)[number];\nconst graphemeSegmenter = new Intl.Segmenter(undefined, { granularity: \"grapheme\" });\n\nexport const modelModule = defineModule({\n\tname: \"model\",\n\tvariables: [\"symbol\", \"model\"],\n\tdefaults: {\n\t\tformat: \"[$symbol $model ]($style)\",\n\t\tsymbol: \"\uD83E\uDD16\",\n\t\tstyle: \"bold blue\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\ttruncation_length: { kind: \"integer\", default: 0, minimum: 0, maximum: 1000 },\n\t\ttruncation_symbol: { kind: \"string\", default: \"\u2026\" },\n\t\ttruncation_direction: {\n\t\t\tkind: \"string-enum\",\n\t\t\tdefault: \"end\",\n\t\t\tvalues: TRUNCATION_DIRECTIONS,\n\t\t},\n\t\tmodel_aliases: { kind: \"string-map\", default: {} },\n\t},\n\tvalues: ({ runtime, options }) => {\n\t\tif (!runtime.model) return undefined;\n\t\tconst length = typeof options.truncation_length === \"number\" ? options.truncation_length : 0;\n\t\tconst symbol = typeof options.truncation_symbol === \"string\" ? options.truncation_symbol : \"\u2026\";\n\t\tconst direction = isTruncationDirection(options.truncation_direction)\n\t\t\t? options.truncation_direction\n\t\t\t: \"end\";\n\t\tconst aliases = options.model_aliases;\n\t\tconst aliasMap =\n\t\t\taliases && typeof aliases === \"object\" && !Array.isArray(aliases)\n\t\t\t\t? (aliases as Readonly<Record<string, string>>)\n\t\t\t\t: undefined;\n\t\tconst alias =\n\t\t\taliasMap && Object.hasOwn(aliasMap, runtime.model.id)\n\t\t\t\t? aliasMap[runtime.model.id]\n\t\t\t\t: undefined;\n\t\treturn {\n\t\t\tmodel: truncateModel(alias ?? shortenModel(runtime.model.id), length, symbol, direction),\n\t\t};\n\t},\n});\n\nexport function truncateModel(\n\tmodel: string,\n\tlength: number,\n\tsymbol: string,\n\tdirection: TruncationDirection,\n): string {\n\tconst safeModel = sanitizeTerminalText(model);\n\tif (length === 0) return safeModel;\n\tconst graphemes = [...graphemeSegmenter.segment(safeModel)].map(({ segment }) => segment);\n\tif (graphemes.length <= length) return safeModel;\n\tconst safeSymbol = sanitizeTerminalText(symbol);\n\n\tswitch (direction) {\n\t\tcase \"start\":\n\t\t\treturn `${safeSymbol}${graphemes.slice(-length).join(\"\")}`;\n\t\tcase \"middle\": {\n\t\t\tconst headLength = Math.ceil(length / 2);\n\t\t\tconst tailLength = Math.floor(length / 2);\n\t\t\tconst tail = tailLength > 0 ? graphemes.slice(-tailLength).join(\"\") : \"\";\n\t\t\treturn `${graphemes.slice(0, headLength).join(\"\")}${safeSymbol}${tail}`;\n\t\t}\n\t\tcase \"end\":\n\t\t\treturn `${graphemes.slice(0, length).join(\"\")}${safeSymbol}`;\n\t}\n}\n\nfunction isTruncationDirection(value: unknown): value is TruncationDirection {\n\treturn TRUNCATION_DIRECTIONS.includes(value as TruncationDirection);\n}\n\nexport function shortenModel(model: string): string {\n\treturn model\n\t\t.replace(/^claude-/u, \"\")\n\t\t.replace(/^gpt-/u, \"gpt \")\n\t\t.replace(/-20\\d{6}$/u, \"\")\n\t\t.replace(/-latest$/u, \"\");\n}\n", "import { defineModule } from \"./types.js\";\nimport { workspaceModuleValues } from \"./workspace-helpers.js\";\n\nexport const packageModule = defineModule({\n\tname: \"package\",\n\tvariables: [\"symbol\", \"version\", \"source\"],\n\tdefaults: {\n\t\tformat: \"via [$symbol$version]($style) \",\n\t\tsymbol: \"\uD83D\uDCE6 \",\n\t\tstyle: \"bold 208\",\n\t\tdisabled: false,\n\t},\n\toptions: {\n\t\tversion_format: { kind: \"string\", default: \"v$raw\" },\n\t},\n\tvalues: (context) => workspaceModuleValues(\"package\", context),\n});\n", "import { defineModule } from \"./types.js\";\n\nexport const providerModule = defineModule({\n\tname: \"provider\",\n\tvariables: [\"symbol\", \"provider\"],\n\tdefaults: {\n\t\tformat: \"[$symbol $provider ]($style)\",\n\t\tsymbol: \"\uD83D\uDD0C\",\n\t\tstyle: \"bold blue\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => (runtime.model ? { provider: runtime.model.provider } : undefined),\n});\n", "import { defineModule } from \"./types.js\";\n\nexport const thinkingModule = defineModule({\n\tname: \"thinking\",\n\tvariables: [\"symbol\", \"level\"],\n\tdefaults: {\n\t\tformat: \"[$symbol $level ]($style)\",\n\t\tsymbol: \"\uD83E\uDDE0\",\n\t\tstyle: \"bold purple\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => ({ level: runtime.thinkingLevel }),\n});\n", "import { defineModule } from \"./types.js\";\n\nexport const timeModule = defineModule({\n\tname: \"time\",\n\tvariables: [\"symbol\", \"time\"],\n\tdefaults: {\n\t\tformat: \"[$symbol $time ]($style)\",\n\t\tsymbol: \"\uD83D\uDD52\",\n\t\tstyle: \"bold yellow\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => ({ time: formatTime(runtime.now) }),\n});\n\nfunction formatTime(now: Date): string {\n\treturn `${now.getHours().toString().padStart(2, \"0\")}:${now\n\t\t.getMinutes()\n\t\t.toString()\n\t\t.padStart(2, \"0\")}`;\n}\n", "import { formatCount } from \"./helpers.js\";\nimport { defineModule } from \"./types.js\";\n\nexport const tokensModule = defineModule({\n\tname: \"tokens\",\n\tvariables: [\"symbol\", \"input\", \"output\", \"total\"],\n\tdefaults: {\n\t\tformat: \"[$symbol \u2191$input \u2193$output ]($style)\",\n\t\tsymbol: \"\uD83D\uDD22\",\n\t\tstyle: \"bold cyan\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => ({\n\t\tinput: formatCount(runtime.tokenTotals.input),\n\t\toutput: formatCount(runtime.tokenTotals.output),\n\t\ttotal: formatCount(runtime.tokenTotals.input + runtime.tokenTotals.output),\n\t}),\n});\n", "import { defineModule } from \"./types.js\";\n\nexport const turnModule = defineModule({\n\tname: \"turn\",\n\tvariables: [\"symbol\", \"count\"],\n\tdefaults: {\n\t\tformat: \"[$symbol #$count ]($style)\",\n\t\tsymbol: \"\uD83D\uDD01\",\n\t\tstyle: \"bold purple\",\n\t\tdisabled: false,\n\t},\n\tvalues: ({ runtime }) => ({ count: `${runtime.turnCount}` }),\n});\n", "import { activityModule } from \"./activity.js\";\nimport { brandModule } from \"./brand.js\";\nimport { cacheModule } from \"./cache.js\";\nimport { cloudModules } from \"./cloud.js\";\nimport { contextModule } from \"./context.js\";\nimport { costModule } from \"./cost.js\";\nimport { deploymentModules } from \"./deployment.js\";\nimport { developmentModules } from \"./development.js\";\nimport { directoryModule } from \"./directory.js\";\nimport { executionModules } from \"./execution.js\";\nimport { extensionStatusModule } from \"./extension-status.js\";\nimport { fillModule } from \"./fill.js\";\nimport { gitBranchModule } from \"./git/branch.js\";\nimport { gitCommitModule } from \"./git/commit.js\";\nimport { gitMetricsModule } from \"./git/metrics.js\";\nimport { gitStateModule } from \"./git/state.js\";\nimport { gitStatusModule } from \"./git/status.js\";\nimport { gitWorktreeModule } from \"./git/worktree.js\";\nimport { githubPrModule } from \"./github-pr.js\";\nimport { languageModules } from \"./languages.js\";\nimport { modelModule } from \"./model.js\";\nimport { packageModule } from \"./package.js\";\nimport { providerModule } from \"./provider.js\";\nimport { thinkingModule } from \"./thinking.js\";\nimport { timeModule } from \"./time.js\";\nimport { tokensModule } from \"./tokens.js\";\nimport { turnModule } from \"./turn.js\";\nimport type { ModuleDefinition } from \"./types.js\";\n\nconst MODULE_IMPLEMENTATIONS = [\n\tbrandModule,\n\tproviderModule,\n\tmodelModule,\n\tthinkingModule,\n\tdirectoryModule,\n\tgitWorktreeModule,\n\tgitBranchModule,\n\tgithubPrModule,\n\tgitCommitModule,\n\tgitStateModule,\n\tgitMetricsModule,\n\tgitStatusModule,\n\tpackageModule,\n\t...languageModules,\n\t...developmentModules,\n\t...deploymentModules,\n\t...cloudModules,\n\t...executionModules,\n\tactivityModule,\n\tcontextModule,\n\ttokensModule,\n\tcacheModule,\n\tcostModule,\n\ttimeModule,\n\tturnModule,\n\tfillModule,\n\t// Keep arbitrary third-party statuses after the native modules.\n\textensionStatusModule,\n] as const satisfies readonly ModuleDefinition<string>[];\n\nexport type ModuleName = (typeof MODULE_IMPLEMENTATIONS)[number][\"name\"];\n\nconst MODULE_DESCRIPTIONS = {\n\tactivity: \"Current Pi activity or most recently completed tool.\",\n\taws: \"Active AWS profile and region.\",\n\tazure: \"Active Azure subscription and optional username.\",\n\tbrand: \"pi-starship brand mark.\",\n\tbun: \"Bun version detected in the current workspace.\",\n\tcache: \"Prompt-cache usage and latest cache hit rate.\",\n\tconda: \"Active Conda environment.\",\n\tcontainer: \"Current container or remote development environment.\",\n\tcontext: \"Current model context-window usage.\",\n\tcost: \"Reported estimated session cost or subscription state.\",\n\tdeno: \"Deno version detected in the current workspace.\",\n\tdirectory: \"Current working directory.\",\n\tdirenv: \"Current direnv loading and permission state.\",\n\tdocker_context: \"Active Docker context.\",\n\textension_status: \"Statuses published through Pi's extension-neutral status map.\",\n\tfill: \"Flexible spacing that aligns content within the footer width.\",\n\tgcloud: \"Active Google Cloud project, account, and region.\",\n\tgit_branch: \"Current Git branch and upstream identity.\",\n\tgit_commit: \"Current Git commit hash or tag.\",\n\tgit_metrics: \"Added and deleted lines in the current Git worktree.\",\n\tgit_state: \"Current Git operation such as merge, rebase, or cherry-pick.\",\n\tgit_status: \"Current Git worktree and index status summary.\",\n\tgit_worktree: \"Current linked Git worktree identity.\",\n\tgithub_pr: \"Current branch's GitHub pull request state, checks, and review.\",\n\tgolang: \"Go version detected in the current workspace.\",\n\tguix_shell: \"Current Guix shell state.\",\n\thostname: \"Current host name, normally shown for remote sessions.\",\n\tkubernetes: \"Active Kubernetes context, namespace, cluster, and user.\",\n\tmise: \"Current mise configuration health.\",\n\tmodel: \"Current Pi model.\",\n\tnix_shell: \"Current Nix shell state, name, and nesting level.\",\n\tnodejs: \"Node.js version detected in the current workspace.\",\n\topenstack: \"Active OpenStack cloud and project.\",\n\tos: \"Current operating system identity.\",\n\tpackage: \"Current workspace package name and version.\",\n\tpixi: \"Active Pixi environment and project.\",\n\tprovider: \"Current Pi model provider.\",\n\tpython: \"Python version, virtual environment, and pyenv state.\",\n\trust: \"Rust toolchain detected in the current workspace.\",\n\tterraform: \"Active Terraform workspace and version.\",\n\tthinking: \"Current Pi thinking level or streaming state.\",\n\ttime: \"Current local time.\",\n\ttokens: \"Session input and output token totals.\",\n\tturn: \"Current user-turn count.\",\n\tusername: \"Current user identity when configured to display.\",\n} as const satisfies Record<ModuleName, string>;\n\nexport type CatalogModuleDefinition<Name extends string = ModuleName> = ModuleDefinition<Name> & {\n\treadonly description: string;\n};\n\nexport const MODULE_DEFINITIONS: readonly CatalogModuleDefinition[] = MODULE_IMPLEMENTATIONS.map(\n\t(definition) => ({\n\t\t...definition,\n\t\tdescription: MODULE_DESCRIPTIONS[definition.name],\n\t}),\n);\n\nexport const MODULE_NAMES: readonly ModuleName[] = MODULE_IMPLEMENTATIONS.map(\n\t(definition) => definition.name,\n);\n", "import { stripVTControlCharacters } from \"node:util\";\nimport type { StarshipConfig } from \"../config.js\";\nimport { formatVariables } from \"../format/formatter.js\";\nimport { MODULE_DEFINITIONS, type ModuleName } from \"./catalog.js\";\nimport { reachableModuleRequirements, renderStatusline } from \"./render.js\";\nimport type { StarshipRuntimeSnapshot } from \"./types.js\";\n\nexport type ModuleInspectionState =\n\t| \"Showing\"\n\t| \"Empty\"\n\t| \"Disabled\"\n\t| \"Not in format\"\n\t| \"Unavailable\";\n\nexport interface ModuleInspection {\n\tname: ModuleName;\n\tdescription: string;\n\tstate: ModuleInspectionState;\n\tpreview: string;\n\tvariables: readonly string[];\n\tstyleFields: readonly string[];\n\tdisplayRules: readonly string[];\n\trootReferenced: boolean;\n\treachable: boolean;\n\treason: string;\n}\n\nexport interface StatuslineInspection {\n\tmodules: readonly ModuleInspection[];\n\tshowing: readonly ModuleInspection[];\n}\n\nexport function inspectStatuslineModules(\n\tconfig: StarshipConfig,\n\truntime: StarshipRuntimeSnapshot,\n\twidth = 80,\n): StatuslineInspection {\n\tconst rendered = renderStatusline(config, runtime, width);\n\tconst requirements = reachableModuleRequirements(config);\n\tconst rootVariables = formatVariables(config.formatAst);\n\tconst includeAll = rootVariables.has(\"all\");\n\tconst modules = MODULE_DEFINITIONS.map((definition): ModuleInspection => {\n\t\tconst module = config.modules[definition.name];\n\t\tconst reachable = requirements.has(definition.name);\n\t\tconst preview = plainPreview(\n\t\t\trendered.modules[definition.name].map((chunk) => chunk.text).join(\"\"),\n\t\t);\n\t\tconst state = module.disabled\n\t\t\t? \"Disabled\"\n\t\t\t: !reachable\n\t\t\t\t? \"Not in format\"\n\t\t\t\t: preview.length > 0\n\t\t\t\t\t? \"Showing\"\n\t\t\t\t\t: \"Empty\";\n\t\treturn moduleInspection(\n\t\t\tconfig,\n\t\t\tdefinition,\n\t\t\tstate,\n\t\t\tpreview,\n\t\t\tincludeAll || rootVariables.has(definition.name),\n\t\t\treachable,\n\t\t);\n\t});\n\treturn {\n\t\tmodules,\n\t\tshowing: modules.filter((module) => module.state === \"Showing\"),\n\t};\n}\n\nexport function inspectUnavailableModules(config: StarshipConfig): StatuslineInspection {\n\tconst requirements = reachableModuleRequirements(config);\n\tconst rootVariables = formatVariables(config.formatAst);\n\tconst includeAll = rootVariables.has(\"all\");\n\treturn {\n\t\tmodules: MODULE_DEFINITIONS.map((definition) => {\n\t\t\tconst module = config.modules[definition.name];\n\t\t\tconst reachable = requirements.has(definition.name);\n\t\t\tconst state = module.disabled ? \"Disabled\" : reachable ? \"Unavailable\" : \"Not in format\";\n\t\t\treturn moduleInspection(\n\t\t\t\tconfig,\n\t\t\t\tdefinition,\n\t\t\t\tstate,\n\t\t\t\t\"\",\n\t\t\t\tincludeAll || rootVariables.has(definition.name),\n\t\t\t\treachable,\n\t\t\t);\n\t\t}),\n\t\tshowing: [],\n\t};\n}\n\nfunction moduleInspection(\n\tconfig: StarshipConfig,\n\tdefinition: (typeof MODULE_DEFINITIONS)[number],\n\tstate: ModuleInspectionState,\n\tpreview: string,\n\trootReferenced: boolean,\n\treachable: boolean,\n): ModuleInspection {\n\tconst module = config.modules[definition.name];\n\treturn {\n\t\tname: definition.name,\n\t\tdescription: definition.description,\n\t\tstate,\n\t\tpreview,\n\t\tvariables: [...definition.variables],\n\t\tstyleFields: [\"style\", ...Object.keys(module.styles)],\n\t\tdisplayRules: module.display.map(\n\t\t\t(rule) => `${rule.threshold}: ${rule.hidden ? \"hidden\" : rule.style || \"unstyled\"}`,\n\t\t),\n\t\trootReferenced,\n\t\treachable,\n\t\treason: inspectionReason(state),\n\t};\n}\n\nfunction inspectionReason(state: ModuleInspectionState): string {\n\tswitch (state) {\n\t\tcase \"Showing\":\n\t\t\treturn \"Rendered in the current footer.\";\n\t\tcase \"Empty\":\n\t\t\treturn \"Referenced by the root format, but the current snapshot produced no output.\";\n\t\tcase \"Disabled\":\n\t\t\treturn \"Disabled by this module's configuration.\";\n\t\tcase \"Not in format\":\n\t\t\treturn \"Not referenced by the root format or $all.\";\n\t\tcase \"Unavailable\":\n\t\t\treturn \"Current footer inspection is unavailable; no collector failure was inferred.\";\n\t}\n}\n\nfunction plainPreview(value: string): string {\n\treturn Array.from(stripVTControlCharacters(value), (character) => {\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\t\tif (character === \"\\n\") return character;\n\t\treturn codePoint <= 0x1f || (codePoint >= 0x7f && codePoint <= 0x9f) ? \" \" : character;\n\t}).join(\"\");\n}\n", "import { visibleWidth } from \"@earendil-works/pi-tui\";\nimport { activePalette, type ModuleConfig, type StarshipConfig } from \"../config.js\";\nimport { type FormatValue, formatVariables, renderFormat } from \"../format/formatter.js\";\nimport {\n\tisFillChunk,\n\ttype LayoutChunk,\n\trenderChunksToAnsi,\n\ttype StyledChunk,\n} from \"../format/style.js\";\nimport { MODULE_DEFINITIONS, MODULE_NAMES, type ModuleName } from \"./catalog.js\";\nimport type { ModuleValueContext, RenderedStatusline, StarshipRuntimeSnapshot } from \"./types.js\";\n\nexport function renderStatusline(\n\tconfig: StarshipConfig,\n\truntime: StarshipRuntimeSnapshot,\n\twidth = 80,\n): RenderedStatusline<ModuleName> {\n\tconst palette = activePalette(config);\n\tconst modules = {} as Record<ModuleName, StyledChunk[]>;\n\tconst layoutModules = {} as Record<ModuleName, LayoutChunk[]>;\n\tfor (const name of MODULE_NAMES) {\n\t\tmodules[name] = [];\n\t\tlayoutModules[name] = [];\n\t}\n\tfor (const definition of MODULE_DEFINITIONS) {\n\t\tconst name = definition.name;\n\t\tconst module = config.modules[name];\n\t\tconst values = definition.values(valueContext(config, name, runtime));\n\t\tif (!values) continue;\n\t\tconst styleVariables = definition.resolveStyleVariables\n\t\t\t? definition.resolveStyleVariables({\n\t\t\t\t\truntime,\n\t\t\t\t\tvalues,\n\t\t\t\t\tstyle: module.style,\n\t\t\t\t\tstyles: module.styles,\n\t\t\t\t\tdisplay: module.display,\n\t\t\t\t})\n\t\t\t: { style: module.style };\n\t\tif (!styleVariables) continue;\n\t\tconst contentValues = Object.fromEntries(\n\t\t\tdefinition.variables.flatMap((variable) =>\n\t\t\t\tvariable !== \"symbol\" && Object.hasOwn(values, variable)\n\t\t\t\t\t? [[variable, values[variable]]]\n\t\t\t\t\t: [],\n\t\t\t),\n\t\t);\n\t\tconst rendered = renderModule(module, contentValues, styleVariables, palette);\n\t\tmodules[name] = rendered;\n\t\tlayoutModules[name] =\n\t\t\tdefinition.layout === \"fill\" && !module.disabled\n\t\t\t\t? [{ type: \"fill\", pattern: rendered }]\n\t\t\t\t: rendered;\n\t}\n\n\tconst explicitModules = formatVariables(config.formatAst);\n\tconst all = MODULE_NAMES.flatMap((name) =>\n\t\texplicitModules.has(name) || config.modules[name].disabled ? [] : layoutModules[name],\n\t);\n\tconst rootVariables: Record<string, FormatValue> = { all };\n\tfor (const name of MODULE_NAMES) rootVariables[name] = layoutModules[name];\n\tconst layout = renderFormat(config.formatAst, { variables: rootVariables, palette });\n\tconst chunks = resolveFillLayout(layout, width);\n\treturn {\n\t\tansi: renderChunksToAnsi(chunks),\n\t\tchunks,\n\t\tmodules,\n\t};\n}\n\nfunction valueContext(\n\tconfig: StarshipConfig,\n\tname: ModuleName,\n\truntime: StarshipRuntimeSnapshot,\n): ModuleValueContext {\n\treturn {\n\t\truntime,\n\t\tsymbol: config.modules[name].symbol,\n\t\toptions: config.modules[name].options,\n\t\textensionStatus: config.extensionStatus,\n\t};\n}\n\nfunction renderModule(\n\tmodule: ModuleConfig,\n\tvalues: Readonly<Record<string, FormatValue>>,\n\tstyleVariables: Readonly<Record<string, string>>,\n\tpalette: Readonly<Record<string, string>>,\n): StyledChunk[] {\n\tif (module.disabled) return [];\n\treturn renderFormat(module.formatAst, {\n\t\tvariables: { symbol: module.symbol, ...values },\n\t\tstyleVariables,\n\t\tpalette,\n\t}).filter((chunk): chunk is StyledChunk => !isFillChunk(chunk));\n}\n\nexport function reachableModuleRequirements(\n\tconfig: StarshipConfig,\n): ReadonlyMap<ModuleName, ReadonlySet<string>> {\n\tconst rootVariables = formatVariables(config.formatAst);\n\tconst includeAll = rootVariables.has(\"all\");\n\tconst requirements = new Map<ModuleName, ReadonlySet<string>>();\n\tfor (const definition of MODULE_DEFINITIONS) {\n\t\tif (config.modules[definition.name].disabled) continue;\n\t\tif (!includeAll && !rootVariables.has(definition.name)) continue;\n\t\trequirements.set(definition.name, formatVariables(config.modules[definition.name].formatAst));\n\t}\n\treturn requirements;\n}\n\nfunction resolveFillLayout(layout: readonly LayoutChunk[], width: number): StyledChunk[] {\n\tconst lines = splitLogicalLines(layout);\n\tconst resolved: StyledChunk[] = [];\n\tfor (const [lineIndex, line] of lines.entries()) {\n\t\tconst fills = line.filter(isFillChunk);\n\t\tconst fixedWidth = line.reduce(\n\t\t\t(total, chunk) =>\n\t\t\t\ttotal + (isFillChunk(chunk) ? 0 : visibleWidth(renderChunksToAnsi([chunk]))),\n\t\t\t0,\n\t\t);\n\t\tconst remaining = Math.max(0, width - fixedWidth);\n\t\tconst base = fills.length > 0 ? Math.floor(remaining / fills.length) : 0;\n\t\tlet remainder = fills.length > 0 ? remaining % fills.length : 0;\n\t\tfor (const chunk of line) {\n\t\t\tif (!isFillChunk(chunk)) {\n\t\t\t\tresolved.push(chunk);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst allocation = base + (remainder > 0 ? 1 : 0);\n\t\t\tif (remainder > 0) remainder -= 1;\n\t\t\tresolved.push(...expandFill(chunk.pattern, allocation));\n\t\t}\n\t\tif (lineIndex < lines.length - 1) resolved.push({ text: \"\\n\" });\n\t}\n\treturn resolved;\n}\n\nfunction splitLogicalLines(layout: readonly LayoutChunk[]): LayoutChunk[][] {\n\tconst lines: LayoutChunk[][] = [[]];\n\tfor (const chunk of layout) {\n\t\tif (isFillChunk(chunk)) {\n\t\t\tlines.at(-1)?.push(chunk);\n\t\t\tcontinue;\n\t\t}\n\t\tconst parts = chunk.text.split(\"\\n\");\n\t\tfor (const [index, text] of parts.entries()) {\n\t\t\tif (text) lines.at(-1)?.push({ ...chunk, text });\n\t\t\tif (index < parts.length - 1) lines.push([]);\n\t\t}\n\t}\n\treturn lines;\n}\n\nfunction expandFill(pattern: readonly StyledChunk[], width: number): StyledChunk[] {\n\tif (width <= 0) return [];\n\tconst patternWidth = visibleWidth(renderChunksToAnsi(pattern));\n\tif (patternWidth <= 0) return [{ text: \" \".repeat(width), style: pattern[0]?.style }];\n\tconst repetitions = Math.floor(width / patternWidth);\n\tconst result: StyledChunk[] = [];\n\tfor (let index = 0; index < repetitions; index += 1) {\n\t\tresult.push(...pattern.map((chunk) => ({ ...chunk })));\n\t}\n\tconst remainder = width - repetitions * patternWidth;\n\tif (remainder > 0) result.push({ text: \" \".repeat(remainder), style: pattern.at(-1)?.style });\n\treturn result;\n}\n"],
  "mappings": "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",
  "names": ["count", "directDetection", "sep", "sep", "sanitizeTerminalText", "graphemeSegmenter", "sanitizeTerminalText", "graphemes", "require", "palette", "styleVariables"]
}
