Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion packages/ui/src/components/message-part.css
Original file line number Diff line number Diff line change
Expand Up @@ -225,13 +225,35 @@
}
}

[data-component="reasoning-part-trigger"] {
width: 100%;
min-height: 24px;
display: flex;
align-items: center;
justify-content: flex-start;
gap: 0px;
cursor: pointer;

[data-slot="reasoning-part-label"] {
font-family: var(--font-family-sans);
font-size: 14px;
font-weight: var(--font-weight-medium);
line-height: var(--line-height-large);
color: var(--text-strong);
}

[data-slot="collapsible-arrow"] {
color: var(--icon-weaker);
}
}

[data-component="reasoning-part"] {
width: 100%;
color: var(--text-base);
line-height: var(--line-height-normal);

[data-component="markdown"] {
margin-top: 24px;
margin-top: 4px;
font-style: normal;
font-size: inherit;
color: var(--text-weak);
Expand Down
25 changes: 22 additions & 3 deletions packages/ui/src/components/message-part.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ export interface MessagePartProps {
defaultOpen?: boolean
showAssistantCopyPartID?: string | null
turnDurationMs?: number
working?: boolean
}

export type PartComponent = Component<MessagePartProps>
Expand Down Expand Up @@ -382,6 +383,7 @@ export function AssistantParts(props: {
showAssistantCopyPartID={props.showAssistantCopyPartID}
turnDurationMs={props.turnDurationMs}
defaultOpen={partDefaultOpen(entry().part, props.shellToolDefaultOpen, props.editToolDefaultOpen)}
working={props.working && tail()}
/>
)}
</Show>
Expand Down Expand Up @@ -869,6 +871,7 @@ export function Part(props: MessagePartProps) {
defaultOpen={props.defaultOpen}
showAssistantCopyPartID={props.showAssistantCopyPartID}
turnDurationMs={props.turnDurationMs}
working={props.working}
/>
</Show>
)
Expand Down Expand Up @@ -1125,15 +1128,31 @@ PART_MAPPING["text"] = function TextPartDisplay(props) {
}

PART_MAPPING["reasoning"] = function ReasoningPartDisplay(props) {
const i18n = useI18n()
const part = props.part as ReasoningPart
const text = () => part.text.trim()
const throttledText = createThrottledValue(text)
const [open, setOpen] = createSignal(true)

return (
<Show when={throttledText()}>
<div data-component="reasoning-part">
<Markdown text={throttledText()} cacheKey={part.id} />
</div>
<Collapsible open={open()} onOpenChange={setOpen} variant="ghost">
<Collapsible.Trigger>
<div data-component="reasoning-part-trigger">
<span data-slot="reasoning-part-label">
<Show when={props.working} fallback={i18n.t("ui.sessionTurn.status.reasoningSummary")}>
<TextShimmer text={i18n.t("ui.sessionTurn.status.reasoning")} />
</Show>
</span>
<Collapsible.Arrow />
</div>
</Collapsible.Trigger>
<Collapsible.Content>
<div data-component="reasoning-part">
<Markdown text={throttledText()} cacheKey={part.id} />
</div>
</Collapsible.Content>
</Collapsible>
</Show>
)
}
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "تفكير - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "جمع الأفكار",
"ui.sessionTurn.status.consideringNextSteps": "النظر في الخطوات التالية",
"ui.sessionTurn.status.reasoning": "التفكير",
"ui.sessionTurn.status.reasoningSummary": "ملخّص التفكير",

"ui.messagePart.diagnostic.error": "خطأ",
"ui.messagePart.title.edit": "تحرير",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/br.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Pensando - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Organizando pensamentos",
"ui.sessionTurn.status.consideringNextSteps": "Considerando próximos passos",
"ui.sessionTurn.status.reasoning": "Raciocínio",
"ui.sessionTurn.status.reasoningSummary": "Resumo do Raciocínio",

"ui.messagePart.diagnostic.error": "Erro",
"ui.messagePart.title.edit": "Editar",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/bs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Razmišljanje - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Sređivanje misli",
"ui.sessionTurn.status.consideringNextSteps": "Razmatranje sljedećih koraka",
"ui.sessionTurn.status.reasoning": "Razmišljanje",
"ui.sessionTurn.status.reasoningSummary": "Sažetak Razmišljanja",

"ui.messagePart.diagnostic.error": "Greška",
"ui.messagePart.title.edit": "Uredi",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/da.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Tænker - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Samler tanker",
"ui.sessionTurn.status.consideringNextSteps": "Overvejer næste skridt",
"ui.sessionTurn.status.reasoning": "Ræsonnering",
"ui.sessionTurn.status.reasoningSummary": "Ræsonnerings Oversigt",

"ui.messagePart.diagnostic.error": "Fejl",
"ui.messagePart.title.edit": "Rediger",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Denken - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Gedanken sammeln",
"ui.sessionTurn.status.consideringNextSteps": "Nächste Schritte erwägen",
"ui.sessionTurn.status.reasoning": "Überlegung",
"ui.sessionTurn.status.reasoningSummary": "Überlegungs Zusammenfassung",

"ui.messagePart.diagnostic.error": "Fehler",
"ui.messagePart.title.edit": "Bearbeiten",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Thinking - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Gathering thoughts",
"ui.sessionTurn.status.consideringNextSteps": "Considering next steps",
"ui.sessionTurn.status.reasoning": "Reasoning",
"ui.sessionTurn.status.reasoningSummary": "Reasoning Summary",

"ui.messagePart.diagnostic.error": "Error",
"ui.messagePart.title.edit": "Edit",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Pensando - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Recopilando pensamientos",
"ui.sessionTurn.status.consideringNextSteps": "Considerando siguientes pasos",
"ui.sessionTurn.status.reasoning": "Razonamiento",
"ui.sessionTurn.status.reasoningSummary": "Resumen del Razonamiento",

"ui.messagePart.diagnostic.error": "Error",
"ui.messagePart.title.edit": "Editar",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Réflexion - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Rassemblement des idées",
"ui.sessionTurn.status.consideringNextSteps": "Examen des prochaines étapes",
"ui.sessionTurn.status.reasoning": "Raisonnement",
"ui.sessionTurn.status.reasoningSummary": "Résumé du Raisonnement",

"ui.messagePart.diagnostic.error": "Erreur",
"ui.messagePart.title.edit": "Modifier",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "思考中 - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "考えをまとめています",
"ui.sessionTurn.status.consideringNextSteps": "次のステップを検討中",
"ui.sessionTurn.status.reasoning": "推論",
"ui.sessionTurn.status.reasoningSummary": "推論サマリー",

"ui.messagePart.diagnostic.error": "エラー",
"ui.messagePart.title.edit": "編集",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "생각 중 - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "생각 정리 중",
"ui.sessionTurn.status.consideringNextSteps": "다음 단계 고려 중",
"ui.sessionTurn.status.reasoning": "추론",
"ui.sessionTurn.status.reasoningSummary": "추론 요약",

"ui.messagePart.diagnostic.error": "오류",
"ui.messagePart.title.edit": "편집",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/no.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ export const dict: Record<Keys, string> = {
"ui.sessionTurn.status.thinkingWithTopic": "Tenker - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Samler tanker",
"ui.sessionTurn.status.consideringNextSteps": "Vurderer neste trinn",
"ui.sessionTurn.status.reasoning": "Resonnering",
"ui.sessionTurn.status.reasoningSummary": "Resonnerings Sammendrag",

"ui.messagePart.diagnostic.error": "Feil",
"ui.messagePart.title.edit": "Rediger",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Myślenie - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Zbieranie myśli",
"ui.sessionTurn.status.consideringNextSteps": "Rozważanie kolejnych kroków",
"ui.sessionTurn.status.reasoning": "Rozumowanie",
"ui.sessionTurn.status.reasoningSummary": "Podsumowanie Rozumowania",

"ui.messagePart.diagnostic.error": "Błąd",
"ui.messagePart.title.edit": "Edycja",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "Размышление - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Сбор мыслей",
"ui.sessionTurn.status.consideringNextSteps": "Рассмотрение следующих шагов",
"ui.sessionTurn.status.reasoning": "Рассуждение",
"ui.sessionTurn.status.reasoningSummary": "Сводка Рассуждений",

"ui.messagePart.diagnostic.error": "Ошибка",
"ui.messagePart.title.edit": "Редактировать",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/th.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "กำลังคิด - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "รวบรวมความคิด",
"ui.sessionTurn.status.consideringNextSteps": "พิจารณาขั้นตอนถัดไป",
"ui.sessionTurn.status.reasoning": "การใช้เหตุผล",
"ui.sessionTurn.status.reasoningSummary": "สรุปการใช้เหตุผล",

"ui.messagePart.diagnostic.error": "ข้อผิดพลาด",
"ui.messagePart.title.edit": "แก้ไข",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "思考:{{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "正在整理思路",
"ui.sessionTurn.status.consideringNextSteps": "正在考虑下一步",
"ui.sessionTurn.status.reasoning": "推理",
"ui.sessionTurn.status.reasoningSummary": "推理摘要",

"ui.messagePart.diagnostic.error": "错误",
"ui.messagePart.title.edit": "编辑",
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/i18n/zht.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ export const dict = {
"ui.sessionTurn.status.thinkingWithTopic": "思考 - {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "正在整理思緒",
"ui.sessionTurn.status.consideringNextSteps": "正在考慮下一步",
"ui.sessionTurn.status.reasoning": "推理",
"ui.sessionTurn.status.reasoningSummary": "推理摘要",

"ui.messagePart.diagnostic.error": "錯誤",
"ui.messagePart.title.edit": "編輯",
Expand Down
Loading