Files
orcs-code/src/tools/BriefTool/UI.tsx
Anandan 462a985d7e Remove embedded source map directives from tracked sources (#329)
Inline base64 source maps had been checked into tracked src files. This strips those comments from the repository without changing runtime behavior or adding ongoing guardrails, per the requested one-time cleanup scope.

Constraint: Keep this change limited to tracked source cleanup only
Rejected: Add CI/source verification guard | user requested one-time cleanup only
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: If these directives reappear, fix the producing transform instead of reintroducing repo-side cleanup code
Tested: rg -n "sourceMappingURL" ., bun run smoke, bun run verify:privacy, bun run test:provider, npm run test:provider-recommendation
Not-tested: bun run typecheck (repository has many pre-existing unrelated failures)

Co-authored-by: anandh8x <test@example.com>
2026-04-04 21:19:27 +08:00

101 lines
3.7 KiB
TypeScript

import { c as _c } from "react-compiler-runtime";
import figures from 'figures';
import React from 'react';
import { Markdown } from '../../components/Markdown.js';
import { BLACK_CIRCLE } from '../../constants/figures.js';
import { Box, Text } from '../../ink.js';
import type { ProgressMessage } from '../../types/message.js';
import { getDisplayPath } from '../../utils/file.js';
import { formatFileSize } from '../../utils/format.js';
import { formatBriefTimestamp } from '../../utils/formatBriefTimestamp.js';
import type { Output } from './BriefTool.js';
export function renderToolUseMessage(): React.ReactNode {
return '';
}
export function renderToolResultMessage(output: Output, _progressMessages: ProgressMessage[], options?: {
isTranscriptMode?: boolean;
isBriefOnly?: boolean;
}): React.ReactNode {
const hasAttachments = (output.attachments?.length ?? 0) > 0;
if (!output.message && !hasAttachments) {
return null;
}
// In transcript mode (ctrl+o), model text is NOT filtered — keep the ⏺ so
// SendUserMessage is visually distinct from the surrounding text blocks.
if (options?.isTranscriptMode) {
return <Box flexDirection="row" marginTop={1}>
<Box minWidth={2}>
<Text color="text">{BLACK_CIRCLE}</Text>
</Box>
<Box flexDirection="column">
{output.message ? <Markdown>{output.message}</Markdown> : null}
<AttachmentList attachments={output.attachments} />
</Box>
</Box>;
}
// Brief-only (chat) view: "Claude" label + 2-col indent, matching the "You"
// label UserPromptMessage applies to user input (#20889). The "N in background"
// spinner status lives in BriefSpinner (Spinner.tsx) — stateless label here.
if (options?.isBriefOnly) {
const ts = output.sentAt ? formatBriefTimestamp(output.sentAt) : '';
return <Box flexDirection="column" marginTop={1} paddingLeft={2}>
<Box flexDirection="row">
<Text color="briefLabelClaude">Claude</Text>
{ts ? <Text dimColor> {ts}</Text> : null}
</Box>
<Box flexDirection="column">
{output.message ? <Markdown>{output.message}</Markdown> : null}
<AttachmentList attachments={output.attachments} />
</Box>
</Box>;
}
// Default view: dropTextInBriefTurns (Messages.tsx) hides the redundant
// assistant text that would otherwise precede this — SendUserMessage is the
// only text-like content in its turn. No gutter mark; read as plain text.
// userFacingName() returns '' so UserToolSuccessMessage drops its columns-5
// width constraint and AssistantToolUseMessage renders null (no tool chrome).
// Empty minWidth={2} box mirrors AssistantTextMessage's ⏺ gutter spacing.
return <Box flexDirection="row" marginTop={1}>
<Box minWidth={2} />
<Box flexDirection="column">
{output.message ? <Markdown>{output.message}</Markdown> : null}
<AttachmentList attachments={output.attachments} />
</Box>
</Box>;
}
type AttachmentListProps = {
attachments: Output['attachments'];
};
export function AttachmentList(t0) {
const $ = _c(4);
const {
attachments
} = t0;
if (!attachments || attachments.length === 0) {
return null;
}
let t1;
if ($[0] !== attachments) {
t1 = attachments.map(_temp);
$[0] = attachments;
$[1] = t1;
} else {
t1 = $[1];
}
let t2;
if ($[2] !== t1) {
t2 = <Box flexDirection="column" marginTop={1}>{t1}</Box>;
$[2] = t1;
$[3] = t2;
} else {
t2 = $[3];
}
return t2;
}
function _temp(att) {
return <Box key={att.path} flexDirection="row"><Text dimColor={true}>{figures.pointerSmall} {att.isImage ? "[image]" : "[file]"}{" "}</Text><Text>{getDisplayPath(att.path)}</Text><Text dimColor={true}> ({formatFileSize(att.size)})</Text></Box>;
}