mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 17:36:57 +10:00
93 lines
11 KiB
TypeScript
93 lines
11 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
|||
|
|
import figures from 'figures';
|
|||
|
|
import * as React from 'react';
|
|||
|
|
import { Box, Text } from 'src/ink.js';
|
|||
|
|
import { AGENT_COLOR_TO_THEME_COLOR, AGENT_COLORS, type AgentColorName } from 'src/tools/AgentTool/agentColorManager.js';
|
|||
|
|
import type { PromptInputMode } from 'src/types/textInputTypes.js';
|
|||
|
|
import { getTeammateColor } from 'src/utils/teammate.js';
|
|||
|
|
import type { Theme } from 'src/utils/theme.js';
|
|||
|
|
import { isAgentSwarmsEnabled } from '../../utils/agentSwarmsEnabled.js';
|
|||
|
|
type Props = {
|
|||
|
|
mode: PromptInputMode;
|
|||
|
|
isLoading: boolean;
|
|||
|
|
viewingAgentName?: string;
|
|||
|
|
viewingAgentColor?: AgentColorName;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Gets the theme color key for the teammate's assigned color.
|
|||
|
|
* Returns undefined if not a teammate or if the color is invalid.
|
|||
|
|
*/
|
|||
|
|
function getTeammateThemeColor(): keyof Theme | undefined {
|
|||
|
|
if (!isAgentSwarmsEnabled()) {
|
|||
|
|
return undefined;
|
|||
|
|
}
|
|||
|
|
const colorName = getTeammateColor();
|
|||
|
|
if (!colorName) {
|
|||
|
|
return undefined;
|
|||
|
|
}
|
|||
|
|
if (AGENT_COLORS.includes(colorName as AgentColorName)) {
|
|||
|
|
return AGENT_COLOR_TO_THEME_COLOR[colorName as AgentColorName];
|
|||
|
|
}
|
|||
|
|
return undefined;
|
|||
|
|
}
|
|||
|
|
type PromptCharProps = {
|
|||
|
|
isLoading: boolean;
|
|||
|
|
// Dead code elimination: parameter named themeColor to avoid "teammate" string in external builds
|
|||
|
|
themeColor?: keyof Theme;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Renders the prompt character (❯).
|
|||
|
|
* Teammate color overrides the default color when set.
|
|||
|
|
*/
|
|||
|
|
function PromptChar(t0) {
|
|||
|
|
const $ = _c(3);
|
|||
|
|
const {
|
|||
|
|
isLoading,
|
|||
|
|
themeColor
|
|||
|
|
} = t0;
|
|||
|
|
const teammateColor = themeColor;
|
|||
|
|
const color = teammateColor ?? (false ? "subtle" : undefined);
|
|||
|
|
let t1;
|
|||
|
|
if ($[0] !== color || $[1] !== isLoading) {
|
|||
|
|
t1 = <Text color={color} dimColor={isLoading}>{figures.pointer} </Text>;
|
|||
|
|
$[0] = color;
|
|||
|
|
$[1] = isLoading;
|
|||
|
|
$[2] = t1;
|
|||
|
|
} else {
|
|||
|
|
t1 = $[2];
|
|||
|
|
}
|
|||
|
|
return t1;
|
|||
|
|
}
|
|||
|
|
export function PromptInputModeIndicator(t0) {
|
|||
|
|
const $ = _c(6);
|
|||
|
|
const {
|
|||
|
|
mode,
|
|||
|
|
isLoading,
|
|||
|
|
viewingAgentName,
|
|||
|
|
viewingAgentColor
|
|||
|
|
} = t0;
|
|||
|
|
let t1;
|
|||
|
|
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|||
|
|
t1 = getTeammateThemeColor();
|
|||
|
|
$[0] = t1;
|
|||
|
|
} else {
|
|||
|
|
t1 = $[0];
|
|||
|
|
}
|
|||
|
|
const teammateColor = t1;
|
|||
|
|
const viewedTeammateThemeColor = viewingAgentColor ? AGENT_COLOR_TO_THEME_COLOR[viewingAgentColor] : undefined;
|
|||
|
|
let t2;
|
|||
|
|
if ($[1] !== isLoading || $[2] !== mode || $[3] !== viewedTeammateThemeColor || $[4] !== viewingAgentName) {
|
|||
|
|
t2 = <Box alignItems="flex-start" alignSelf="flex-start" flexWrap="nowrap" justifyContent="flex-start">{viewingAgentName ? <PromptChar isLoading={isLoading} themeColor={viewedTeammateThemeColor} /> : mode === "bash" ? <Text color="bashBorder" dimColor={isLoading}>! </Text> : <PromptChar isLoading={isLoading} themeColor={isAgentSwarmsEnabled() ? teammateColor : undefined} />}</Box>;
|
|||
|
|
$[1] = isLoading;
|
|||
|
|
$[2] = mode;
|
|||
|
|
$[3] = viewedTeammateThemeColor;
|
|||
|
|
$[4] = viewingAgentName;
|
|||
|
|
$[5] = t2;
|
|||
|
|
} else {
|
|||
|
|
t2 = $[5];
|
|||
|
|
}
|
|||
|
|
return t2;
|
|||
|
|
}
|
|||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJCb3giLCJUZXh0IiwiQUdFTlRfQ09MT1JfVE9fVEhFTUVfQ09MT1IiLCJBR0VOVF9DT0xPUlMiLCJBZ2VudENvbG9yTmFtZSIsIlByb21wdElucHV0TW9kZSIsImdldFRlYW1tYXRlQ29sb3IiLCJUaGVtZSIsImlzQWdlbnRTd2FybXNFbmFibGVkIiwiUHJvcHMiLCJtb2RlIiwiaXNMb2FkaW5nIiwidmlld2luZ0FnZW50TmFtZSIsInZpZXdpbmdBZ2VudENvbG9yIiwiZ2V0VGVhbW1hdGVUaGVtZUNvbG9yIiwidW5kZWZpbmVkIiwiY29sb3JOYW1lIiwiaW5jbHVkZXMiLCJQcm9tcHRDaGFyUHJvcHMiLCJ0aGVtZUNvbG9yIiwiUHJvbXB0Q2hhciIsInQwIiwiJCIsIl9jIiwidGVhbW1hdGVDb2xvciIsImNvbG9yIiwidDEiLCJwb2ludGVyIiwiUHJvbXB0SW5wdXRNb2RlSW5kaWNhdG9yIiwiU3ltYm9sIiwiZm9yIiwidmlld2VkVGVhbW1hdGVUaGVtZUNvbG9yIiwidDIiXSwic291cmNlcyI6WyJQcm9tcHRJbnB1dE1vZGVJbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaWd1cmVzIGZyb20gJ2ZpZ3VyZXMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJ3NyYy9pbmsuanMnXG5pbXBvcnQge1xuICBBR0VOVF9DT0xPUl9UT19USEVNRV9DT0xPUixcbiAgQUdFTlRfQ09MT1JTLFxuICB0eXBlIEFnZW50Q29sb3JOYW1lLFxufSBmcm9tICdzcmMvdG9vbHMvQWdlbnRUb29sL2FnZW50Q29sb3JNYW5hZ2VyLmpzJ1xuaW1wb3J0IHR5cGUgeyBQcm9tcHRJbnB1dE1vZGUgfSBmcm9tICdzcmMvdHlwZXMvdGV4dElucHV0VHlwZXMuanMnXG5pbXBvcnQgeyBnZXRUZWFtbWF0ZUNvbG9yIH0gZnJvbSAnc3JjL3V0aWxzL3RlYW1tYXRlLmpzJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZSB9IGZyb20gJ3NyYy91dGlscy90aGVtZS5qcydcbmltcG9ydCB7IGlzQWdlbnRTd2FybXNFbmFibGVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWdlbnRTd2FybXNFbmFibGVkLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBtb2RlOiBQcm9tcHRJbnB1dE1vZGVcbiAgaXNMb2FkaW5nOiBib29sZWFuXG4gIHZpZXdpbmdBZ2VudE5hbWU/OiBzdHJpbmdcbiAgdmlld2luZ0FnZW50Q29sb3I/OiBBZ2VudENvbG9yTmFtZVxufVxuXG4vKipcbiAqIEdldHMgdGhlIHRoZW1lIGNvbG9yIGtleSBmb3IgdGhlIHRlYW1tYXRlJ3MgYXNzaWduZWQgY29sb3IuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgYSB0ZWFtbWF0ZSBvciBpZiB0aGUgY29sb3IgaXMgaW52YWxpZC5cbiAqL1xuZnVuY3Rpb24gZ2V0VGVhbW1hdGVUaGVtZUNvbG9yKCk6IGtleW9mIFRoZW1lIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpc0FnZW50U3dhcm1zRW5hYmxlZCgpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IGNvbG9yTmFtZSA9IGdldFRlYW1tYXRlQ29sb3IoKVxuICBpZiAoIWNvbG9yTmFtZSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBpZiAoQUdFTlRfQ09MT1JTLmluY2x1ZGVzKGNvbG9yTmFtZSBhcyBBZ2VudENvbG9yTmFtZSkpIHtcbiAgICByZXR1cm4gQUdFTlRfQ09MT1JfVE9fVEhFTUVfQ09MT1JbY29sb3JOYW1lIGFzIEFnZW50Q29sb3JOYW1lXVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxudHlwZSBQcm9tcHRDaGFyUHJvcHMgPSB7XG4gIGlzTG9hZGluZzogYm9vbGVhblxuICAvLyBEZWFkIGNvZGUgZWxpbWluYXRpb246IHBhcmFtZXRlciBuYW1lZCB0aGVtZUNvbG9yIHRvIGF2b2lkIFwidGVhbW1hdGVcIiBzdHJpbmcgaW4gZXh0ZXJuYWwgYnVpbGRzXG4gIHRoZW1lQ29sb3I/OiBrZXlvZiBUaGVtZVxufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIHByb21wdCBjaGFyYWN0ZXIgKOKdrykuXG4gKiBUZWFtbWF0ZSBjb2xvciBvdmVycmlkZXMgdGhlIGRlZmF1bHQgY29sb3Igd2hlbiBzZXQuXG4gKi9cbmZ1bmN0aW9uIFByb21wdENoYXIoe1xuICBpc0xvYWRpbmcsXG4gIHRoZW1lQ29sb3IsXG59OiBQcm9tcHRDaGFyUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAvLyBBc3NpZ24gdG8gb3JpZ2luYWwgbmFtZSBmb3IgY2xhcml0eSB3aXRoaW4gdGhlIGZ1bmN0aW9uXG4gIGNvbnN0IHRlYW1tYXRlQ29sb3IgPSB0aGVtZUNvbG9yXG4gIGNvbnN0IGlzQW50ID0gXCJleHRlcm5hbFwiID09PSAnYW50J1xuICBjb25zdCBjb2xvciA9IHRlYW1tYXRlQ29sb3IgPz8gKGlzQW50ID8gJ3N1YnRsZScgOiB1bmRlZmluZWQpXG5cbiAgcmV0dXJuIChcbiAgICA8VGV4dCBjb2xvcj17Y29sb3J9IGRpbUNvbG9yPXtpc0xvYWRpbmd9PlxuICAgICAge2ZpZ3VyZXMucG9pbnRlcn0mbmJzcDtcbiAgICA8L1RleHQ+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByb21wdElucHV0TW9kZUluZGljYXRvcih7XG4gIG1vZGUsXG4gIGlzTG9hZGluZyxcbiAgdmlld2luZ0FnZW50TmFtZSxcbiAgdmlld2luZ0FnZW50Q29sb3IsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHRlYW1tYXRlQ29sb3IgPSBnZXRUZWFtbWF0ZVRoZW1lQ29sb3IoKVxuXG4gIC8vIENvbnZlcnQgdmlld2VkIHRlYW1tYXRlJ3MgY29sb3IgdG8gdGhlbWUgY29sb3JcbiAgLy8gRmFsbHMgYmFjayB0byBQcm9tcHRDaGFyJ3MgZGVmYXVsdCAoc3VidGxlIGZvciBhbnRzLCB1bmRlZmluZWQgZm9yIGV4dGVybmFsKVxuICBjb25zdCB2aWV3ZWRUZWFtbWF0ZVRoZW1lQ29sb3IgPSB2aWV3aW5nQWdlbnRDb2xvclxuICAgID8gQUdFTlRfQ09MT1JfVE9fVEhFTUVfQ09MT1Jbdmlld2luZ0FnZW50Q29sb3JdXG4gICAgOiB1bmRlZmluZWRcblxuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGFsaWduSXRlbXM9XCJmbGV4LXN0YXJ0XCJcbiAgICAgIGFsaWduU2VsZj1cImZsZXgtc3RhcnRcIlxuICAgICAgZmxleFdyYXA9XCJub3dyYXBcIlxuICAgICAganVzdGlmeUNvbnRlbnQ9XCJmbGV4LXN0YXJ0XCJcbiAgICA+XG4gICAgICB7dmlld2luZ0FnZW50TmFtZSA/IChcbiAgICAgICA
|