mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 15:46:58 +10:00
174 lines
19 KiB
TypeScript
174 lines
19 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
||
|
|
import React from 'react';
|
||
|
|
import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js';
|
||
|
|
import { Box, Text } from '../../ink.js';
|
||
|
|
import { FeedbackSurveyView, isValidResponseInput } from './FeedbackSurveyView.js';
|
||
|
|
import type { TranscriptShareResponse } from './TranscriptSharePrompt.js';
|
||
|
|
import { TranscriptSharePrompt } from './TranscriptSharePrompt.js';
|
||
|
|
import { useDebouncedDigitInput } from './useDebouncedDigitInput.js';
|
||
|
|
import type { FeedbackSurveyResponse } from './utils.js';
|
||
|
|
type Props = {
|
||
|
|
state: 'closed' | 'open' | 'thanks' | 'transcript_prompt' | 'submitting' | 'submitted';
|
||
|
|
lastResponse: FeedbackSurveyResponse | null;
|
||
|
|
handleSelect: (selected: FeedbackSurveyResponse) => void;
|
||
|
|
handleTranscriptSelect?: (selected: TranscriptShareResponse) => void;
|
||
|
|
inputValue: string;
|
||
|
|
setInputValue: (value: string) => void;
|
||
|
|
onRequestFeedback?: () => void;
|
||
|
|
message?: string;
|
||
|
|
};
|
||
|
|
export function FeedbackSurvey(t0) {
|
||
|
|
const $ = _c(16);
|
||
|
|
const {
|
||
|
|
state,
|
||
|
|
lastResponse,
|
||
|
|
handleSelect,
|
||
|
|
handleTranscriptSelect,
|
||
|
|
inputValue,
|
||
|
|
setInputValue,
|
||
|
|
onRequestFeedback,
|
||
|
|
message
|
||
|
|
} = t0;
|
||
|
|
if (state === "closed") {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
if (state === "thanks") {
|
||
|
|
let t1;
|
||
|
|
if ($[0] !== inputValue || $[1] !== lastResponse || $[2] !== onRequestFeedback || $[3] !== setInputValue) {
|
||
|
|
t1 = <FeedbackSurveyThanks lastResponse={lastResponse} inputValue={inputValue} setInputValue={setInputValue} onRequestFeedback={onRequestFeedback} />;
|
||
|
|
$[0] = inputValue;
|
||
|
|
$[1] = lastResponse;
|
||
|
|
$[2] = onRequestFeedback;
|
||
|
|
$[3] = setInputValue;
|
||
|
|
$[4] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[4];
|
||
|
|
}
|
||
|
|
return t1;
|
||
|
|
}
|
||
|
|
if (state === "submitted") {
|
||
|
|
let t1;
|
||
|
|
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t1 = <Box marginTop={1}><Text color="success">{"\u2713"} Thanks for sharing your transcript!</Text></Box>;
|
||
|
|
$[5] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[5];
|
||
|
|
}
|
||
|
|
return t1;
|
||
|
|
}
|
||
|
|
if (state === "submitting") {
|
||
|
|
let t1;
|
||
|
|
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t1 = <Box marginTop={1}><Text dimColor={true}>Sharing transcript{"\u2026"}</Text></Box>;
|
||
|
|
$[6] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[6];
|
||
|
|
}
|
||
|
|
return t1;
|
||
|
|
}
|
||
|
|
if (state === "transcript_prompt") {
|
||
|
|
if (!handleTranscriptSelect) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
if (inputValue && !["1", "2", "3"].includes(inputValue)) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
let t1;
|
||
|
|
if ($[7] !== handleTranscriptSelect || $[8] !== inputValue || $[9] !== setInputValue) {
|
||
|
|
t1 = <TranscriptSharePrompt onSelect={handleTranscriptSelect} inputValue={inputValue} setInputValue={setInputValue} />;
|
||
|
|
$[7] = handleTranscriptSelect;
|
||
|
|
$[8] = inputValue;
|
||
|
|
$[9] = setInputValue;
|
||
|
|
$[10] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[10];
|
||
|
|
}
|
||
|
|
return t1;
|
||
|
|
}
|
||
|
|
if (inputValue && !isValidResponseInput(inputValue)) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
let t1;
|
||
|
|
if ($[11] !== handleSelect || $[12] !== inputValue || $[13] !== message || $[14] !== setInputValue) {
|
||
|
|
t1 = <FeedbackSurveyView onSelect={handleSelect} inputValue={inputValue} setInputValue={setInputValue} message={message} />;
|
||
|
|
$[11] = handleSelect;
|
||
|
|
$[12] = inputValue;
|
||
|
|
$[13] = message;
|
||
|
|
$[14] = setInputValue;
|
||
|
|
$[15] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[15];
|
||
|
|
}
|
||
|
|
return t1;
|
||
|
|
}
|
||
|
|
type ThanksProps = {
|
||
|
|
lastResponse: FeedbackSurveyResponse | null;
|
||
|
|
inputValue: string;
|
||
|
|
setInputValue: (value: string) => void;
|
||
|
|
onRequestFeedback?: () => void;
|
||
|
|
};
|
||
|
|
const isFollowUpDigit = (char: string): char is '1' => char === '1';
|
||
|
|
function FeedbackSurveyThanks(t0) {
|
||
|
|
const $ = _c(12);
|
||
|
|
const {
|
||
|
|
lastResponse,
|
||
|
|
inputValue,
|
||
|
|
setInputValue,
|
||
|
|
onRequestFeedback
|
||
|
|
} = t0;
|
||
|
|
const showFollowUp = onRequestFeedback && lastResponse === "good";
|
||
|
|
const t1 = Boolean(showFollowUp);
|
||
|
|
let t2;
|
||
|
|
if ($[0] !== lastResponse || $[1] !== onRequestFeedback) {
|
||
|
|
t2 = () => {
|
||
|
|
logEvent("tengu_feedback_survey_event", {
|
||
|
|
event_type: "followup_accepted" as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||
|
|
response: lastResponse as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
|
||
|
|
});
|
||
|
|
onRequestFeedback?.();
|
||
|
|
};
|
||
|
|
$[0] = lastResponse;
|
||
|
|
$[1] = onRequestFeedback;
|
||
|
|
$[2] = t2;
|
||
|
|
} else {
|
||
|
|
t2 = $[2];
|
||
|
|
}
|
||
|
|
let t3;
|
||
|
|
if ($[3] !== inputValue || $[4] !== setInputValue || $[5] !== t1 || $[6] !== t2) {
|
||
|
|
t3 = {
|
||
|
|
inputValue,
|
||
|
|
setInputValue,
|
||
|
|
isValidDigit: isFollowUpDigit,
|
||
|
|
enabled: t1,
|
||
|
|
once: true,
|
||
|
|
onDigit: t2
|
||
|
|
};
|
||
|
|
$[3] = inputValue;
|
||
|
|
$[4] = setInputValue;
|
||
|
|
$[5] = t1;
|
||
|
|
$[6] = t2;
|
||
|
|
$[7] = t3;
|
||
|
|
} else {
|
||
|
|
t3 = $[7];
|
||
|
|
}
|
||
|
|
useDebouncedDigitInput(t3);
|
||
|
|
const feedbackCommand = false ? "/issue" : "/feedback";
|
||
|
|
let t4;
|
||
|
|
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t4 = <Text color="success">Thanks for the feedback!</Text>;
|
||
|
|
$[8] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[8];
|
||
|
|
}
|
||
|
|
let t5;
|
||
|
|
if ($[9] !== lastResponse || $[10] !== showFollowUp) {
|
||
|
|
t5 = <Box marginTop={1} flexDirection="column">{t4}{showFollowUp ? <Text dimColor={true}>(Optional) Press [<Text color="ansi:cyan">1</Text>] to tell us what went well {" \xB7 "}{feedbackCommand}</Text> : lastResponse === "bad" ? <Text dimColor={true}>Use /issue to report model behavior issues.</Text> : <Text dimColor={true}>Use {feedbackCommand} to share detailed feedback anytime.</Text>}</Box>;
|
||
|
|
$[9] = lastResponse;
|
||
|
|
$[10] = showFollowUp;
|
||
|
|
$[11] = t5;
|
||
|
|
} else {
|
||
|
|
t5 = $[11];
|
||
|
|
}
|
||
|
|
return t5;
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMiLCJsb2dFdmVudCIsIkJveCIsIlRleHQiLCJGZWVkYmFja1N1cnZleVZpZXciLCJpc1ZhbGlkUmVzcG9uc2VJbnB1dCIsIlRyYW5zY3JpcHRTaGFyZVJlc3BvbnNlIiwiVHJhbnNjcmlwdFNoYXJlUHJvbXB0IiwidXNlRGVib3VuY2VkRGlnaXRJbnB1dCIsIkZlZWRiYWNrU3VydmV5UmVzcG9uc2UiLCJQcm9wcyIsInN0YXRlIiwibGFzdFJlc3BvbnNlIiwiaGFuZGxlU2VsZWN0Iiwic2VsZWN0ZWQiLCJoYW5kbGVUcmFuc2NyaXB0U2VsZWN0IiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJ2YWx1ZSIsIm9uUmVxdWVzdEZlZWRiYWNrIiwibWVzc2FnZSIsIkZlZWRiYWNrU3VydmV5IiwidDAiLCIkIiwiX2MiLCJ0MSIsIlN5bWJvbCIsImZvciIsImluY2x1ZGVzIiwiVGhhbmtzUHJvcHMiLCJpc0ZvbGxvd1VwRGlnaXQiLCJjaGFyIiwiRmVlZGJhY2tTdXJ2ZXlUaGFua3MiLCJzaG93Rm9sbG93VXAiLCJCb29sZWFuIiwidDIiLCJldmVudF90eXBlIiwicmVzcG9uc2UiLCJ0MyIsImlzVmFsaWREaWdpdCIsImVuYWJsZWQiLCJvbmNlIiwib25EaWdpdCIsImZlZWRiYWNrQ29tbWFuZCIsInQ0IiwidDUiXSwic291cmNlcyI6WyJGZWVkYmFja1N1cnZleS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgdHlwZSBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICBsb2dFdmVudCxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7XG4gIEZlZWRiYWNrU3VydmV5VmlldyxcbiAgaXNWYWxpZFJlc3BvbnNlSW5wdXQsXG59IGZyb20gJy4vRmVlZGJhY2tTdXJ2ZXlWaWV3LmpzJ1xuaW1wb3J0IHR5cGUgeyBUcmFuc2NyaXB0U2hhcmVSZXNwb25zZSB9IGZyb20gJy4vVHJhbnNjcmlwdFNoYXJlUHJvbXB0LmpzJ1xuaW1wb3J0IHsgVHJhbnNjcmlwdFNoYXJlUHJvbXB0IH0gZnJvbSAnLi9UcmFuc2NyaXB0U2hhcmVQcm9tcHQuanMnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWREaWdpdElucHV0IH0gZnJvbSAnLi91c2VEZWJvdW5jZWREaWdpdElucHV0LmpzJ1xuaW1wb3J0IHR5cGUgeyBGZWVkYmFja1N1cnZleVJlc3BvbnNlIH0gZnJvbSAnLi91dGlscy5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgc3RhdGU6XG4gICAgfCAnY2xvc2VkJ1xuICAgIHwgJ29wZW4nXG4gICAgfCAndGhhbmtzJ1xuICAgIHwgJ3RyYW5zY3JpcHRfcHJvbXB0J1xuICAgIHwgJ3N1Ym1pdHRpbmcnXG4gICAgfCAnc3VibWl0dGVkJ1xuICBsYXN0UmVzcG9uc2U6IEZlZWRiYWNrU3VydmV5UmVzcG9uc2UgfCBudWxsXG4gIGhhbmRsZVNlbGVjdDogKHNlbGVjdGVkOiBGZWVkYmFja1N1cnZleVJlc3BvbnNlKSA9PiB2b2lkXG4gIGhhbmRsZVRyYW5zY3JpcHRTZWxlY3Q/OiAoc2VsZWN0ZWQ6IFRyYW5zY3JpcHRTaGFyZVJlc3BvbnNlKSA9PiB2b2lkXG4gIGlucHV0VmFsdWU6IHN0cmluZ1xuICBzZXRJbnB1dFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZFxuICBvblJlcXVlc3RGZWVkYmFjaz86ICgpID0+IHZvaWRcbiAgbWVzc2FnZT86IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRmVlZGJhY2tTdXJ2ZXkoe1xuICBzdGF0ZSxcbiAgbGFzdFJlc3BvbnNlLFxuICBoYW5kbGVTZWxlY3QsXG4gIGhhbmRsZVRyYW5zY3JpcHRTZWxlY3QsXG4gIGlucHV0VmFsdWUsXG4gIHNldElucHV0VmFsdWUsXG4gIG9uUmVxdWVzdEZlZWRiYWNrLFxuICBtZXNzYWdlLFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBpZiAoc3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlmIChzdGF0ZSA9PT0gJ3RoYW5rcycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZlZWRiYWNrU3VydmV5VGhhbmtzXG4gICAgICAgIGxhc3RSZXNwb25zZT17bGFzdFJlc3BvbnNlfVxuICAgICAgICBpbnB1dFZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICBzZXRJbnB1dFZhbHVlPXtzZXRJbnB1dFZhbHVlfVxuICAgICAgICBvblJlcXVlc3RGZWVkYmFjaz17b25SZXF1ZXN0RmVlZGJhY2t9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGlmIChzdGF0ZSA9PT0gJ3N1Ym1pdHRlZCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICA8VGV4dCBjb2xvcj1cInN1Y2Nlc3NcIj5cbiAgICAgICAgICB7J1xcdTI3MTMnfSBUaGFua3MgZm9yIHNoYXJpbmcgeW91ciB0cmFuc2NyaXB0IVxuICAgICAgICA8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICApXG4gIH1cblxuICBpZiAoc3RhdGUgPT09ICdzdWJtaXR0aW5nJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPlNoYXJpbmcgdHJhbnNjcmlwdHsnXFx1MjAyNid9PC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKHN0YXRlID09PSAndHJhbnNjcmlwdF9wcm9tcHQnKSB7XG4gICAgaWYgKCFoYW5kbGVUcmFuc2NyaXB0U2VsZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICAvLyBIaWRlIHByb21wdCBpZiB1c2VyIGlzIHR5cGluZyBub24tcmVzcG9uc2UgY2hhcmFjdGVyc1xuICAgIGlmIChpbnB1dFZhbHVlICYmICFbJzEnLCAnMicsICczJ10uaW5jbHVkZXMoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8VHJhbnNjcmlwdFNoYXJlUHJvbXB0XG4gICAgICAgIG9uU2VsZWN0PXtoYW5kbGVUcmFuc2NyaXB0U2VsZWN0fVxuICAgICAgICBpbnB1dFZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICBzZXRJbnB1dFZhbHVlPXtzZXRJbnB1dFZhbHVlfVxuICAgICAgLz5
|