@molecule/app-ide-react 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +187 -7
- package/dist/components/ChatPanel.d.ts +10 -1
- package/dist/components/ChatPanel.d.ts.map +1 -1
- package/dist/components/ChatPanel.js +79 -13
- package/dist/components/ChatPanel.js.map +1 -1
- package/dist/components/TestsCard.d.ts +15 -2
- package/dist/components/TestsCard.d.ts.map +1 -1
- package/dist/components/TestsCard.js +42 -9
- package/dist/components/TestsCard.js.map +1 -1
- package/dist/components/ToolCallCard.d.ts +7 -1
- package/dist/components/ToolCallCard.d.ts.map +1 -1
- package/dist/components/ToolCallCard.js +133 -94
- package/dist/components/ToolCallCard.js.map +1 -1
- package/dist/components/tests-card-utilities.d.ts +78 -2
- package/dist/components/tests-card-utilities.d.ts.map +1 -1
- package/dist/components/tests-card-utilities.js +134 -6
- package/dist/components/tests-card-utilities.js.map +1 -1
- package/dist/components/tool-call-utilities.d.ts +13 -0
- package/dist/components/tool-call-utilities.d.ts.map +1 -1
- package/dist/components/tool-call-utilities.js +22 -0
- package/dist/components/tool-call-utilities.js.map +1 -1
- package/dist/types.d.ts +60 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
* connected the driver waits and then fails saying so, which the card states
|
|
20
20
|
* next to the end-to-end group rather than leaving it a mystery.
|
|
21
21
|
*
|
|
22
|
+
* A run of end-to-end specs takes minutes, so a running row NAMES the test on
|
|
23
|
+
* screen — the runner's own group and title, from the stream's `case` events —
|
|
24
|
+
* with a live per-file tally beside it, and carries a **Skip** that drops the
|
|
25
|
+
* command the run is on without ending the run. A skipped file's row says
|
|
26
|
+
* `Skipped` and the summary counts it as skipped; nothing in this card lets
|
|
27
|
+
* skipped work read as a pass.
|
|
28
|
+
*
|
|
22
29
|
* This component is PRESENTATIONAL — the list and the in-flight run live in
|
|
23
30
|
* `ChatPanel`, so a run keeps streaming while the overlay is closed and
|
|
24
31
|
* re-opened, and re-running `/test` re-lists without losing it.
|
|
@@ -47,8 +54,14 @@ export interface TestsCardProps {
|
|
|
47
54
|
canRun: boolean;
|
|
48
55
|
/** Runs a selection. */
|
|
49
56
|
onRun: (selection: TestSelection) => void;
|
|
50
|
-
/** Stops the run in flight. */
|
|
57
|
+
/** Stops the run in flight — the whole run, every remaining file. */
|
|
51
58
|
onCancel: () => void;
|
|
59
|
+
/**
|
|
60
|
+
* Skips the command the run is on right now, WITHOUT ending it: that file
|
|
61
|
+
* comes back `Skipped` and the run moves to the next one. Omitted by a host
|
|
62
|
+
* that does not serve skipping — then no Skip control is rendered.
|
|
63
|
+
*/
|
|
64
|
+
onSkipCurrent?: () => void;
|
|
52
65
|
/**
|
|
53
66
|
* Hands the failing tests to the agent as ONE chat message — a real turn it
|
|
54
67
|
* answers, exactly like the editor’s “Fix with AI”.
|
|
@@ -71,7 +84,7 @@ export interface TestsCardProps {
|
|
|
71
84
|
* @param props - See {@link TestsCardProps}.
|
|
72
85
|
* @returns The rendered tests card.
|
|
73
86
|
*/
|
|
74
|
-
export declare function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onCancel, onFix, fixDisabledReason, isLight, embedded, }: TestsCardProps): JSX.Element;
|
|
87
|
+
export declare function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onCancel, onSkipCurrent, onFix, fixDisabledReason, isLight, embedded, }: TestsCardProps): JSX.Element;
|
|
75
88
|
export declare namespace TestsCard {
|
|
76
89
|
var displayName: string;
|
|
77
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestsCard.d.ts","sourceRoot":"","sources":["../../src/components/TestsCard.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"TestsCard.d.ts","sourceRoot":"","sources":["../../src/components/TestsCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,OAAO,CAAA;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAY,aAAa,EAAc,MAAM,aAAa,CAAA;AAEhF,OAAO,KAAK,EAEV,WAAW,EAGX,aAAa,EACd,MAAM,2BAA2B,CAAA;AAiElC,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAA;AAEvE,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,4BAA4B;IAC5B,MAAM,EAAE,WAAW,CAAA;IACnB,iFAAiF;IACjF,GAAG,EAAE,aAAa,CAAA;IAClB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAA;IACf,wBAAwB;IACxB,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAA;IACzC,qEAAqE;IACrE,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B;;;OAGG;IACH,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAA;IACxC;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAA;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAsCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,GAAG,EACH,YAAY,EACZ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,QAAQ,GACT,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAiW9B;yBA9We,SAAS"}
|
|
@@ -3,7 +3,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
3
3
|
import { t } from '@molecule/app-i18n';
|
|
4
4
|
import { getClassMap } from '@molecule/app-ui';
|
|
5
5
|
import { chatCardStyle } from './chat-card-style.js';
|
|
6
|
-
import { countByKind, failedTests, filterTests, groupTests, isRowRunning, summarizeResults, testRowLabel, } from './tests-card-utilities.js';
|
|
6
|
+
import { canSkipRun, countByKind, currentRunRowId, failedTests, filterTests, groupTests, isRowRunning, summarizeResults, testCaseLabel, testRowLabel, } from './tests-card-utilities.js';
|
|
7
7
|
/**
|
|
8
8
|
* The card's button vocabulary, which is the command cards' vocabulary (see
|
|
9
9
|
* molecule DESIGN.md → Command cards). Every ACTION is a button that LOOKS
|
|
@@ -88,7 +88,7 @@ function statusLabel(status) {
|
|
|
88
88
|
* @param props - See {@link TestsCardProps}.
|
|
89
89
|
* @returns The rendered tests card.
|
|
90
90
|
*/
|
|
91
|
-
export function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onCancel, onFix, fixDisabledReason, isLight, embedded, }) {
|
|
91
|
+
export function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onCancel, onSkipCurrent, onFix, fixDisabledReason, isLight, embedded, }) {
|
|
92
92
|
const cm = getClassMap();
|
|
93
93
|
const [query, setQuery] = useState(initialQuery);
|
|
94
94
|
// The run output starts COLLAPSED. ScriptsCard auto-expands nothing while a
|
|
@@ -135,6 +135,15 @@ export function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onC
|
|
|
135
135
|
: null;
|
|
136
136
|
const runnable = canRun && status === 'ready' && !run.running;
|
|
137
137
|
const fixable = fixDisabledReason === null;
|
|
138
|
+
// The row the Skip acts on. The control exists only while the run is on an
|
|
139
|
+
// identifiable row AND the host serves skipping; a viewer still SEES it, with
|
|
140
|
+
// the reason on it, rather than watching it vanish without explanation.
|
|
141
|
+
const skipRowId = onSkipCurrent && canSkipRun(run) ? currentRunRowId(run) : null;
|
|
142
|
+
const skipDisabledReason = !canRun
|
|
143
|
+
? t('ide.tests.viewerCannotSkip', undefined, {
|
|
144
|
+
defaultValue: 'Only editors can skip this project’s tests.',
|
|
145
|
+
})
|
|
146
|
+
: null;
|
|
138
147
|
return (_jsxs("div", { "data-mol-id": "tests-card", className: cm.textSize('xs'), style: embedded ? { padding: '10px 12px' } : { ...chatCardStyle(), marginBottom: 16 }, children: [_jsxs("div", { style: {
|
|
139
148
|
display: 'flex',
|
|
140
149
|
alignItems: 'center',
|
|
@@ -142,7 +151,7 @@ export function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onC
|
|
|
142
151
|
gap: 8,
|
|
143
152
|
marginBottom: 6,
|
|
144
153
|
flexWrap: 'wrap',
|
|
145
|
-
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, flexShrink: 0 }, children: [!embedded && (_jsx("div", { className: cm.cn(cm.fontWeight('medium'), cm.textSize('sm')), style: { flexShrink: 0 }, children: t('ide.tests.heading', undefined, { defaultValue: 'Tests' }) })), run.running ? (_jsxs("span", { "data-mol-id": "tests-card-running", className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { display: 'inline-flex', alignItems: 'center', gap: 4 }, children: [_jsx("span", { className: cm.spinner({ size: 'xs' }), "aria-hidden": "true" }), t('ide.tests.running', undefined, { defaultValue: 'Running…' })] })) : (summary.reported > 0 && (_jsxs("span", { "data-mol-id": "tests-card-summary", className: cm.textSize('xs'), style: { display: 'inline-flex', alignItems: 'center', gap: 6 }, children: [summary.passed > 0 && (_jsx("span", { className: cm.textSuccess, children: t('ide.tests.passedCount', { count: summary.passed }, { defaultValue: '{{count}} passed' }) })), summary.failed > 0 && (_jsx("span", { className: cm.textError, children: t('ide.tests.failedCount', { count: summary.failed }, { defaultValue: '{{count}} failed' }) }))] })))] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, flexWrap: 'wrap' }, children: [counts.e2e > 0 && counts.unit > 0 && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "data-mol-id": "tests-card-run-e2e", onClick: () => onRun({ ids: idsOfKind(filtered, 'e2e') }), disabled: !runnable, title: disabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.runE2e', undefined, { defaultValue: 'Run e2e' }) }), _jsx("button", { type: "button", "data-mol-id": "tests-card-run-unit", onClick: () => onRun({ ids: idsOfKind(filtered, 'unit') }), disabled: !runnable, title: disabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.runUnit', undefined, { defaultValue: 'Run unit' }) })] })), !run.running && failures.length > 0 && (_jsx("button", { type: "button", "data-mol-id": "tests-card-fix-all", onClick: () => onFix(failures), disabled: !fixable, title: fixDisabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: failures.length === 1
|
|
154
|
+
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, flexShrink: 0 }, children: [!embedded && (_jsx("div", { className: cm.cn(cm.fontWeight('medium'), cm.textSize('sm')), style: { flexShrink: 0 }, children: t('ide.tests.heading', undefined, { defaultValue: 'Tests' }) })), run.running ? (_jsxs("span", { "data-mol-id": "tests-card-running", className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { display: 'inline-flex', alignItems: 'center', gap: 4 }, children: [_jsx("span", { className: cm.spinner({ size: 'xs' }), "aria-hidden": "true" }), t('ide.tests.running', undefined, { defaultValue: 'Running…' })] })) : (summary.reported > 0 && (_jsxs("span", { "data-mol-id": "tests-card-summary", className: cm.textSize('xs'), style: { display: 'inline-flex', alignItems: 'center', gap: 6 }, children: [summary.passed > 0 && (_jsx("span", { className: cm.textSuccess, children: t('ide.tests.passedCount', { count: summary.passed }, { defaultValue: '{{count}} passed' }) })), summary.failed > 0 && (_jsx("span", { className: cm.textError, children: t('ide.tests.failedCount', { count: summary.failed }, { defaultValue: '{{count}} failed' }) })), summary.skipped > 0 && (_jsx("span", { "data-mol-id": "tests-card-summary-skipped", className: cm.textMuted, children: t('ide.tests.skippedCount', { count: summary.skipped }, { defaultValue: '{{count}} skipped' }) }))] })))] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, flexWrap: 'wrap' }, children: [counts.e2e > 0 && counts.unit > 0 && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "data-mol-id": "tests-card-run-e2e", onClick: () => onRun({ ids: idsOfKind(filtered, 'e2e') }), disabled: !runnable, title: disabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.runE2e', undefined, { defaultValue: 'Run e2e' }) }), _jsx("button", { type: "button", "data-mol-id": "tests-card-run-unit", onClick: () => onRun({ ids: idsOfKind(filtered, 'unit') }), disabled: !runnable, title: disabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.runUnit', undefined, { defaultValue: 'Run unit' }) })] })), !run.running && failures.length > 0 && (_jsx("button", { type: "button", "data-mol-id": "tests-card-fix-all", onClick: () => onFix(failures), disabled: !fixable, title: fixDisabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: failures.length === 1
|
|
146
155
|
? t('ide.tests.fixWithSynthase', undefined, {
|
|
147
156
|
defaultValue: 'Fix with Synthase',
|
|
148
157
|
})
|
|
@@ -159,7 +168,7 @@ export function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onC
|
|
|
159
168
|
: t('ide.tests.empty', undefined, {
|
|
160
169
|
defaultValue: 'No tests in this project yet.',
|
|
161
170
|
}) })), status === 'ready' &&
|
|
162
|
-
groups.map((group) => (_jsx(TestsCardGroup, { group: group, run: run, runnable: runnable, disabledReason: disabledReason, rowBorder: rowBorder, onRun: onRun, onFix: onFix, fixable: fixable, fixDisabledReason: fixDisabledReason }, `${group.kind}:${group.workspace}`))), run.output.length > 0 && (_jsxs("div", { "data-mol-id": "tests-card-output-area", style: { marginTop: 6 }, children: [_jsx("button", { type: "button", "data-mol-id": "tests-card-output-toggle", "aria-expanded": showOutput, onClick: () => setShowOutput((v) => !v), className: cm.cn(QUIET_TOGGLE(cm)), style: { flexShrink: 0 }, children: showOutput
|
|
171
|
+
groups.map((group) => (_jsx(TestsCardGroup, { group: group, run: run, runnable: runnable, disabledReason: disabledReason, rowBorder: rowBorder, onRun: onRun, onFix: onFix, fixable: fixable, fixDisabledReason: fixDisabledReason, skipRowId: skipRowId, skipPending: run.skipPending, skipDisabledReason: skipDisabledReason, onSkipCurrent: onSkipCurrent }, `${group.kind}:${group.workspace}`))), run.output.length > 0 && (_jsxs("div", { "data-mol-id": "tests-card-output-area", style: { marginTop: 6 }, children: [_jsx("button", { type: "button", "data-mol-id": "tests-card-output-toggle", "aria-expanded": showOutput, onClick: () => setShowOutput((v) => !v), className: cm.cn(QUIET_TOGGLE(cm)), style: { flexShrink: 0 }, children: showOutput
|
|
163
172
|
? t('ide.tests.hideOutput', undefined, { defaultValue: 'Hide output' })
|
|
164
173
|
: t('ide.tests.showOutput', undefined, { defaultValue: 'Show output' }) }), showOutput && (_jsx("pre", { ref: outputRef, "data-mol-id": "tests-card-output", className: cm.textSize('xs'), style: {
|
|
165
174
|
margin: 0,
|
|
@@ -171,7 +180,9 @@ export function TestsCard({ tests, status, run, initialQuery, canRun, onRun, onC
|
|
|
171
180
|
maxHeight: 200,
|
|
172
181
|
overflow: 'auto',
|
|
173
182
|
fontFamily: 'var(--mol-font-mono, monospace)',
|
|
174
|
-
}, children: run.output.join('\n') }))] })), run.error && (_jsx("div", { "data-mol-id": "tests-card-run-error", className: cm.textError, style: { marginTop: 6 }, children: run.error })), !run.running && run.outcome === 'cancelled' && !run.error && (_jsx("div", { "data-mol-id": "tests-card-cancelled", className: cm.textMuted, style: { marginTop: 6 }, children: t('ide.tests.cancelled', undefined, { defaultValue: 'Run stopped.' }) }))
|
|
183
|
+
}, children: run.output.join('\n') }))] })), run.error && (_jsx("div", { "data-mol-id": "tests-card-run-error", className: cm.textError, style: { marginTop: 6 }, children: run.error })), !run.running && run.outcome === 'cancelled' && !run.error && (_jsx("div", { "data-mol-id": "tests-card-cancelled", className: cm.textMuted, style: { marginTop: 6 }, children: t('ide.tests.cancelled', undefined, { defaultValue: 'Run stopped.' }) })), !run.running && run.outcome === 'skipped-by-user' && !run.error && (_jsx("div", { "data-mol-id": "tests-card-skipped", className: cm.textMuted, style: { marginTop: 6 }, children: t('ide.tests.skippedByUser', undefined, {
|
|
184
|
+
defaultValue: 'Run finished. The tests you skipped did not run.',
|
|
185
|
+
}) }))] }));
|
|
175
186
|
}
|
|
176
187
|
TestsCard.displayName = 'TestsCard';
|
|
177
188
|
/**
|
|
@@ -191,7 +202,7 @@ function idsOfKind(tests, kind) {
|
|
|
191
202
|
* @param props - See {@link TestsCardGroupProps}.
|
|
192
203
|
* @returns The rendered group.
|
|
193
204
|
*/
|
|
194
|
-
function TestsCardGroup({ group, run, runnable, disabledReason, rowBorder, onRun, onFix, fixable, fixDisabledReason, }) {
|
|
205
|
+
function TestsCardGroup({ group, run, runnable, disabledReason, rowBorder, onRun, onFix, fixable, fixDisabledReason, skipRowId, skipPending, skipDisabledReason, onSkipCurrent, }) {
|
|
195
206
|
const cm = getClassMap();
|
|
196
207
|
const groupId = `${group.kind}-${group.workspace}`;
|
|
197
208
|
return (_jsxs("div", { "data-mol-id": `tests-card-group-${groupId}`, className: cm.borderT, style: { padding: '6px 0', borderColor: rowBorder }, children: [_jsxs("div", { style: {
|
|
@@ -202,21 +213,28 @@ function TestsCardGroup({ group, run, runnable, disabledReason, rowBorder, onRun
|
|
|
202
213
|
flexWrap: 'wrap',
|
|
203
214
|
}, children: [_jsx("div", { className: cm.cn(cm.fontWeight('medium')), style: { minWidth: 0 }, children: groupHeading(group) }), _jsx("button", { type: "button", "data-mol-id": `tests-card-run-group-${groupId}`, onClick: () => onRun({ ids: group.items.map((item) => item.id) }), disabled: !runnable, title: disabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.runGroup', undefined, { defaultValue: 'Run group' }) })] }), group.kind === 'e2e' && (_jsx("div", { "data-mol-id": "tests-card-e2e-hint", className: cm.textMuted, style: { lineHeight: 1.4 }, children: t('ide.tests.e2eHint', undefined, {
|
|
204
215
|
defaultValue: 'These run against the live preview, so keep the preview open.',
|
|
205
|
-
}) })), group.items.map((item) => (_jsx(TestsCardRow, { item: item, result: run.results[item.id], running: isRowRunning(run, item.id), runnable: runnable, disabledReason: disabledReason, rowBorder: rowBorder, onRun: onRun, onFix: onFix, fixable: fixable, fixDisabledReason: fixDisabledReason }, item.id)))] }));
|
|
216
|
+
}) })), group.items.map((item) => (_jsx(TestsCardRow, { item: item, result: run.results[item.id], running: isRowRunning(run, item.id), progress: run.cases[item.id], runnable: runnable, disabledReason: disabledReason, rowBorder: rowBorder, onRun: onRun, onFix: onFix, fixable: fixable, fixDisabledReason: fixDisabledReason, skippable: skipRowId === item.id, skipPending: skipPending, skipDisabledReason: skipDisabledReason, onSkipCurrent: onSkipCurrent }, item.id)))] }));
|
|
206
217
|
}
|
|
207
218
|
/**
|
|
208
219
|
* One test file: its label, its last status pill, a Run button, and — when it
|
|
209
220
|
* FAILED — the runner's output kept underneath, the same inline output
|
|
210
221
|
* ScriptsCard shows for a script that exited non-zero.
|
|
211
222
|
*
|
|
223
|
+
* While the file is RUNNING it also names the test on screen (its group and
|
|
224
|
+
* title) with a live tally, so a five-minute spec run is something to read
|
|
225
|
+
* rather than a spinner to sit through; that detail collapses the moment the
|
|
226
|
+
* file reports its verdict.
|
|
227
|
+
*
|
|
212
228
|
* @param props - See {@link TestsCardRowProps}.
|
|
213
229
|
* @returns The rendered row.
|
|
214
230
|
*/
|
|
215
|
-
function TestsCardRow({ item, result, running, runnable, disabledReason, rowBorder, onRun, onFix, fixable, fixDisabledReason, }) {
|
|
231
|
+
function TestsCardRow({ item, result, running, progress, runnable, disabledReason, rowBorder, onRun, onFix, fixable, fixDisabledReason, skippable, skipPending, skipDisabledReason, onSkipCurrent, }) {
|
|
216
232
|
const cm = getClassMap();
|
|
217
233
|
// A failure's output starts COLLAPSED too — the row's status pill says what
|
|
218
234
|
// happened; the detail is one click away for whoever wants it.
|
|
219
235
|
const [showFailure, setShowFailure] = useState(false);
|
|
236
|
+
const caseLabel = testCaseLabel(progress?.current);
|
|
237
|
+
const caseTally = (progress?.passed ?? 0) + (progress?.failed ?? 0) + (progress?.skipped ?? 0);
|
|
220
238
|
return (_jsxs("div", { "data-mol-id": `tests-card-row-${item.id}`, style: { padding: '4px 0' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }, children: [_jsx("div", { className: cm.textMuted, title: item.file, style: {
|
|
221
239
|
flex: '1 1 140px',
|
|
222
240
|
minWidth: 0,
|
|
@@ -228,7 +246,22 @@ function TestsCardRow({ item, result, running, runnable, disabledReason, rowBord
|
|
|
228
246
|
? cm.textSuccess
|
|
229
247
|
: result.status === 'failed'
|
|
230
248
|
? cm.textError
|
|
231
|
-
: cm.textMuted, style: { flexShrink: 0 }, children: statusLabel(result.status) }))), _jsx("button", { type: "button", "data-mol-id": `tests-card-
|
|
249
|
+
: cm.textMuted, style: { flexShrink: 0 }, children: statusLabel(result.status) }))), skippable && (_jsx("button", { type: "button", "data-mol-id": `tests-card-skip-${item.id}`, onClick: () => onSkipCurrent?.(), disabled: skipDisabledReason !== null || skipPending, title: skipDisabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: skipPending
|
|
250
|
+
? t('ide.tests.skipping', undefined, { defaultValue: 'Skipping…' })
|
|
251
|
+
: t('ide.tests.skip', undefined, { defaultValue: 'Skip' }) })), _jsx("button", { type: "button", "data-mol-id": `tests-card-run-${item.id}`, onClick: () => onRun({ ids: [item.id] }), disabled: !runnable, title: disabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.run', undefined, { defaultValue: 'Run' }) })] }), running && (caseLabel !== '' || caseTally > 0) && (_jsxs("div", { "data-mol-id": `tests-card-case-${item.id}`, className: cm.textMuted, style: {
|
|
252
|
+
display: 'flex',
|
|
253
|
+
alignItems: 'center',
|
|
254
|
+
gap: 6,
|
|
255
|
+
flexWrap: 'wrap',
|
|
256
|
+
minWidth: 0,
|
|
257
|
+
lineHeight: 1.4,
|
|
258
|
+
}, children: [caseLabel !== '' && (_jsx("span", { "data-mol-id": `tests-card-case-title-${item.id}`, title: caseLabel, style: {
|
|
259
|
+
flex: '1 1 140px',
|
|
260
|
+
minWidth: 0,
|
|
261
|
+
overflow: 'hidden',
|
|
262
|
+
textOverflow: 'ellipsis',
|
|
263
|
+
whiteSpace: 'nowrap',
|
|
264
|
+
}, children: caseLabel })), caseTally > 0 && (_jsxs("span", { "data-mol-id": `tests-card-case-tally-${item.id}`, style: { display: 'inline-flex', alignItems: 'center', gap: 6, flexShrink: 0 }, children: [(progress?.passed ?? 0) > 0 && (_jsx("span", { className: cm.textSuccess, children: t('ide.tests.passedCount', { count: progress?.passed ?? 0 }, { defaultValue: '{{count}} passed' }) })), (progress?.failed ?? 0) > 0 && (_jsx("span", { className: cm.textError, children: t('ide.tests.failedCount', { count: progress?.failed ?? 0 }, { defaultValue: '{{count}} failed' }) })), (progress?.skipped ?? 0) > 0 && (_jsx("span", { children: t('ide.tests.skippedCount', { count: progress?.skipped ?? 0 }, { defaultValue: '{{count}} skipped' }) }))] }))] })), result?.status === 'failed' && (_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, flexWrap: 'wrap' }, children: [result.output && (_jsx("button", { type: "button", "data-mol-id": `tests-card-failure-toggle-${item.id}`, "aria-expanded": showFailure, onClick: () => setShowFailure((v) => !v), className: cm.cn(QUIET_TOGGLE(cm)), style: { flexShrink: 0 }, children: showFailure
|
|
232
265
|
? t('ide.tests.hideOutput', undefined, { defaultValue: 'Hide output' })
|
|
233
266
|
: t('ide.tests.showOutput', undefined, { defaultValue: 'Show output' }) })), _jsx("button", { type: "button", "data-mol-id": `tests-card-fix-${item.id}`, onClick: () => onFix([{ item, output: result.output }]), disabled: !fixable, title: fixDisabledReason ?? undefined, className: cm.cn(SECONDARY_ACTION(cm)), style: { flexShrink: 0 }, children: t('ide.tests.fixWithSynthase', undefined, {
|
|
234
267
|
defaultValue: 'Fix with Synthase',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestsCard.js","sourceRoot":"","sources":["../../src/components/TestsCard.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TestsCard.js","sourceRoot":"","sources":["../../src/components/TestsCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* one-line result summary. Expands on click to reveal formatted IN / OUT
|
|
6
6
|
* sections: diffs for file edits, terminal output for commands, etc.
|
|
7
7
|
*
|
|
8
|
+
* A call that is still RUNNING carries a **Skip** (when the host serves one):
|
|
9
|
+
* it drops that one tool call without ending the turn, so a person does not
|
|
10
|
+
* have to sit through a command they already know they do not want. The result
|
|
11
|
+
* comes back as `skipped_by_user`, and this card renders it as **Skipped** with
|
|
12
|
+
* a gray dot — never as a success, never as a failure.
|
|
13
|
+
*
|
|
8
14
|
* @module
|
|
9
15
|
*/
|
|
10
16
|
import type { JSX } from 'react';
|
|
@@ -14,5 +20,5 @@ import type { ToolCallCardProps } from '../types.js';
|
|
|
14
20
|
* @param props - Component props.
|
|
15
21
|
* @returns The rendered tool call card element.
|
|
16
22
|
*/
|
|
17
|
-
export declare const ToolCallCard: import("react").MemoExoticComponent<({ id, name, input, output, status, fileDiff, isUndone: isUndoneProp, onUndoToggle, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onAskUserResponse, className, }: ToolCallCardProps) => JSX.Element | null>;
|
|
23
|
+
export declare const ToolCallCard: import("react").MemoExoticComponent<({ id, name, input, output, status, fileDiff, isUndone: isUndoneProp, onUndoToggle, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onAskUserResponse, onSkip, skipDisabledReason, className, }: ToolCallCardProps) => JSX.Element | null>;
|
|
18
24
|
//# sourceMappingURL=ToolCallCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallCard.d.ts","sourceRoot":"","sources":["../../src/components/ToolCallCard.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ToolCallCard.d.ts","sourceRoot":"","sources":["../../src/components/ToolCallCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAQ3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AA2mBpD;;;;GAIG;AACH,eAAO,MAAM,YAAY,gPAiBtB,iBAAiB,KAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAkzBvC,CAAA"}
|
|
@@ -5,7 +5,7 @@ import { useThemeMode } from '@molecule/app-react';
|
|
|
5
5
|
import { getClassMap } from '@molecule/app-ui';
|
|
6
6
|
import { useCoarsePointer, useNarrowViewport } from '../hooks/useViewport.js';
|
|
7
7
|
import { MarkdownContent } from './MarkdownContent.js';
|
|
8
|
-
import { basename, extractFilePath, fileDiffStats, moleculeDocPath, normalizeAskUserInput, num, str, toolLabel, toolSummary, } from './tool-call-utilities.js';
|
|
8
|
+
import { basename, extractFilePath, fileDiffStats, isSkippedByUser, moleculeDocPath, normalizeAskUserInput, num, str, toolLabel, toolSummary, } from './tool-call-utilities.js';
|
|
9
9
|
/**
|
|
10
10
|
* Normalize a model-authored string for display: models sometimes double-escape
|
|
11
11
|
* tool arguments, so a literal "\n"/"\t"/"\r" (backslash + letter) ends up in
|
|
@@ -305,7 +305,7 @@ function renderOut(name, output) {
|
|
|
305
305
|
* @param props - Component props.
|
|
306
306
|
* @returns The rendered tool call card element.
|
|
307
307
|
*/
|
|
308
|
-
export const ToolCallCard = memo(function ToolCallCard({ id, name, input, output, status, fileDiff, isUndone: isUndoneProp, onUndoToggle, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onAskUserResponse, className, }) {
|
|
308
|
+
export const ToolCallCard = memo(function ToolCallCard({ id, name, input, output, status, fileDiff, isUndone: isUndoneProp, onUndoToggle, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onAskUserResponse, onSkip, skipDisabledReason, className, }) {
|
|
309
309
|
const cm = getClassMap();
|
|
310
310
|
const isLight = useThemeMode() === 'light';
|
|
311
311
|
// Touch/phone branches (called unconditionally, before the per-tool early
|
|
@@ -319,7 +319,14 @@ export const ToolCallCard = memo(function ToolCallCard({ id, name, input, output
|
|
|
319
319
|
const [isUndoneLocal, setIsUndoneLocal] = useState(false);
|
|
320
320
|
const isUndone = isUndoneProp ?? isUndoneLocal;
|
|
321
321
|
const [isReverting, setIsReverting] = useState(false);
|
|
322
|
+
const [skipRequested, setSkipRequested] = useState(false);
|
|
323
|
+
// The person skipped this call. It is neither a success nor a failure, and
|
|
324
|
+
// the row has to say so — a green dot on a command that never ran is exactly
|
|
325
|
+
// the kind of quiet lie the honesty rule exists to stop.
|
|
326
|
+
const wasSkipped = isSkippedByUser(output);
|
|
322
327
|
const hasError = (() => {
|
|
328
|
+
if (wasSkipped)
|
|
329
|
+
return false;
|
|
323
330
|
if (status === 'error')
|
|
324
331
|
return true;
|
|
325
332
|
if (typeof output !== 'object' || output === null)
|
|
@@ -337,8 +344,9 @@ export const ToolCallCard = memo(function ToolCallCard({ id, name, input, output
|
|
|
337
344
|
}
|
|
338
345
|
return false;
|
|
339
346
|
})();
|
|
340
|
-
// gray → orange → green or red
|
|
341
|
-
|
|
347
|
+
// gray → orange → green or red; a skipped call stays gray, because it did
|
|
348
|
+
// not happen.
|
|
349
|
+
const dotColor = status === 'pending' || wasSkipped
|
|
342
350
|
? '#888888'
|
|
343
351
|
: status === 'running'
|
|
344
352
|
? '#e8a000'
|
|
@@ -382,6 +390,27 @@ export const ToolCallCard = memo(function ToolCallCard({ id, name, input, output
|
|
|
382
390
|
setIsReverting(false);
|
|
383
391
|
}
|
|
384
392
|
}, [canRevert, isReverting, isUndone, fileDiff, filePath, onFileRevert, onUndoToggle, id]);
|
|
393
|
+
// Skip this call while it is still running — the turn keeps going, the model
|
|
394
|
+
// is told the command did not run. A host that answers `false` means the call
|
|
395
|
+
// had already finished (the stale-button race), which is not an error: the
|
|
396
|
+
// button simply returns to its resting state.
|
|
397
|
+
const canSkip = status === 'running' && onSkip != null;
|
|
398
|
+
const handleSkip = useCallback(async () => {
|
|
399
|
+
if (!onSkip || skipRequested || skipDisabledReason)
|
|
400
|
+
return;
|
|
401
|
+
setSkipRequested(true);
|
|
402
|
+
try {
|
|
403
|
+
const accepted = await onSkip(id);
|
|
404
|
+
if (accepted === false)
|
|
405
|
+
setSkipRequested(false);
|
|
406
|
+
}
|
|
407
|
+
catch (_error) {
|
|
408
|
+
// Deliberate noop: the host already logs whatever went wrong on its side,
|
|
409
|
+
// and there is nothing for the PERSON to do here — the call is still
|
|
410
|
+
// running, so the honest UI is the button back at rest to try again.
|
|
411
|
+
setSkipRequested(false);
|
|
412
|
+
}
|
|
413
|
+
}, [onSkip, skipRequested, skipDisabledReason, id]);
|
|
385
414
|
// Tools that expand to show details inline.
|
|
386
415
|
const EXPANDABLE = new Set([
|
|
387
416
|
'exec_command',
|
|
@@ -623,97 +652,107 @@ export const ToolCallCard = memo(function ToolCallCard({ id, name, input, output
|
|
|
623
652
|
opacity: 0.5,
|
|
624
653
|
}, children: askInput.hint }))] }));
|
|
625
654
|
}
|
|
626
|
-
return (_jsxs("div", { className: className, style: { marginBottom: '4px' }, children: [_jsxs("button", { type: "button", onClick: handleClick, onDoubleClick: isNewFile && filePath && onFileDoubleClick
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
display: 'flex',
|
|
632
|
-
// Coarse: the undo icon's 32px touch box inflates the label row, so
|
|
633
|
-
// top-alignment would leave the diff stats/chevron riding high —
|
|
634
|
-
// center everything instead. Desktop keeps flex-start + px nudges.
|
|
635
|
-
alignItems: isCoarse ? 'center' : 'flex-start',
|
|
636
|
-
gap: '6px',
|
|
637
|
-
background: 'none',
|
|
638
|
-
border: 'none',
|
|
639
|
-
cursor: handleClick ? 'pointer' : 'default',
|
|
640
|
-
color: 'inherit',
|
|
641
|
-
textAlign: 'left',
|
|
642
|
-
padding: '2px 0',
|
|
643
|
-
// Touch: ~20px rows are untappable — 32px is the dense-row floor.
|
|
644
|
-
...(isCoarse ? { minHeight: 32 } : {}),
|
|
645
|
-
width: '100%',
|
|
646
|
-
}, children: [_jsx("span", { style: { flex: 1, minWidth: 0 }, children: _jsxs("span", { style: { fontSize: '13px', display: 'flex', alignItems: 'center', gap: '6px' }, children: [_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 10 10", style: { flexShrink: 0 }, children: [_jsx("circle", { cx: "5", cy: "5", r: "3", fill: dotColor, opacity: "0.35" }), _jsx("circle", { cx: "5", cy: "5", r: "3", fill: "none", stroke: dotColor, strokeWidth: "2" })] }), _jsx("span", { style: {
|
|
647
|
-
flex: 1,
|
|
648
|
-
minWidth: 0,
|
|
649
|
-
overflow: 'hidden',
|
|
650
|
-
textOverflow: 'ellipsis',
|
|
651
|
-
whiteSpace: 'nowrap',
|
|
652
|
-
}, children: renderLabel(name, input, filePath, onFileOpen, onFileDoubleClick) }), summary && (_jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { flexShrink: 0, marginLeft: '8px', whiteSpace: 'nowrap' }, children: summary })), canRevert && status !== 'running' && (_jsx("span", { role: "button", tabIndex: 0, title: isUndone
|
|
653
|
-
? t('ide.chat.redoChange', undefined, { defaultValue: 'Re-apply this change' })
|
|
654
|
-
: t('ide.chat.undoChange', undefined, { defaultValue: 'Undo this change' }), onClick: handleRevert, onKeyDown: (e) => {
|
|
655
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
656
|
-
e.preventDefault();
|
|
657
|
-
handleRevert(e);
|
|
658
|
-
}
|
|
659
|
-
}, onMouseEnter: (e) => {
|
|
660
|
-
e.currentTarget.style.background = 'rgba(128,128,128,0.2)';
|
|
661
|
-
e.currentTarget.style.opacity = '1';
|
|
662
|
-
}, onMouseLeave: (e) => {
|
|
663
|
-
e.currentTarget.style.background = 'transparent';
|
|
664
|
-
e.currentTarget.style.opacity = '';
|
|
665
|
-
}, style: {
|
|
666
|
-
display: 'inline-flex',
|
|
667
|
-
alignItems: 'center',
|
|
668
|
-
justifyContent: 'center',
|
|
669
|
-
// Touch: hover can't reveal it, so it rests visible at 0.6 and
|
|
670
|
-
// gets a 32px hit box (the floor for these dense inline rows).
|
|
671
|
-
width: isCoarse ? 32 : 20,
|
|
672
|
-
height: isCoarse ? 32 : 20,
|
|
673
|
-
borderRadius: 4,
|
|
674
|
-
flexShrink: 0,
|
|
675
|
-
// Nudge up 1px: the 13px glyph sat slightly below the text's
|
|
676
|
-
// optical center of the compact 20px box (moot at 32px).
|
|
677
|
-
position: 'relative',
|
|
678
|
-
top: isCoarse ? 0 : '-1px',
|
|
679
|
-
cursor: isReverting ? 'wait' : 'pointer',
|
|
680
|
-
opacity: isReverting ? 0.3 : isHovered || isCoarse ? 0.6 : 0,
|
|
681
|
-
transition: 'opacity 100ms, background 100ms',
|
|
682
|
-
}, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "13", height: "13", fill: "currentColor", children: isUndone ? (_jsx("path", { d: "M14.78 6.28a.749.749 0 0 0 0-1.06l-3.5-3.5a.749.749 0 1 0-1.06 1.06L12.439 5H5.251l-.001.007L5.251 5a.8.8 0 0 0-.171.019A4.501 4.501 0 0 0 5.5 14h1.704a.75.75 0 0 0 0-1.5H5.5a3 3 0 1 1 0-6h6.939L10.22 8.72a.749.749 0 1 0 1.06 1.06l3.5-3.5Z" })) : (_jsx("path", { d: "M1.22 6.28a.749.749 0 0 1 0-1.06l3.5-3.5a.749.749 0 1 1 1.06 1.06L3.561 5h7.188l.001.007L10.749 5c.058 0 .116.007.171.019A4.501 4.501 0 0 1 10.5 14H8.796a.75.75 0 0 1 0-1.5H10.5a3 3 0 1 0 0-6H3.561L5.78 8.72a.749.749 0 1 1-1.06 1.06l-3.5-3.5Z" })) }) }))] }) }), diffStats && (_jsxs("span", { style: {
|
|
655
|
+
return (_jsxs("div", { className: className, style: { marginBottom: '4px' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, minWidth: 0 }, children: [_jsxs("button", { type: "button", onClick: handleClick, onDoubleClick: isNewFile && filePath && onFileDoubleClick
|
|
656
|
+
? () => {
|
|
657
|
+
onFileDoubleClick(filePath);
|
|
658
|
+
}
|
|
659
|
+
: undefined, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), style: {
|
|
683
660
|
display: 'flex',
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
661
|
+
// Coarse: the undo icon's 32px touch box inflates the label row, so
|
|
662
|
+
// top-alignment would leave the diff stats/chevron riding high —
|
|
663
|
+
// center everything instead. Desktop keeps flex-start + px nudges.
|
|
664
|
+
alignItems: isCoarse ? 'center' : 'flex-start',
|
|
665
|
+
gap: '6px',
|
|
666
|
+
background: 'none',
|
|
667
|
+
border: 'none',
|
|
668
|
+
cursor: handleClick ? 'pointer' : 'default',
|
|
669
|
+
color: 'inherit',
|
|
670
|
+
textAlign: 'left',
|
|
671
|
+
padding: '2px 0',
|
|
672
|
+
// Touch: ~20px rows are untappable — 32px is the dense-row floor.
|
|
673
|
+
...(isCoarse ? { minHeight: 32 } : {}),
|
|
674
|
+
width: '100%',
|
|
675
|
+
// The row shares its line with the Skip button: without this it
|
|
676
|
+
// keeps its intrinsic min-width and pushes the Skip off a 390px
|
|
677
|
+
// screen instead of letting the label ellipsise.
|
|
678
|
+
minWidth: 0,
|
|
679
|
+
}, children: [_jsx("span", { style: { flex: 1, minWidth: 0 }, children: _jsxs("span", { style: { fontSize: '13px', display: 'flex', alignItems: 'center', gap: '6px' }, children: [_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 10 10", style: { flexShrink: 0 }, children: [_jsx("circle", { cx: "5", cy: "5", r: "3", fill: dotColor, opacity: "0.35" }), _jsx("circle", { cx: "5", cy: "5", r: "3", fill: "none", stroke: dotColor, strokeWidth: "2" })] }), _jsx("span", { style: {
|
|
680
|
+
flex: 1,
|
|
681
|
+
minWidth: 0,
|
|
682
|
+
overflow: 'hidden',
|
|
683
|
+
textOverflow: 'ellipsis',
|
|
684
|
+
whiteSpace: 'nowrap',
|
|
685
|
+
}, children: renderLabel(name, input, filePath, onFileOpen, onFileDoubleClick) }), summary && (_jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { flexShrink: 0, marginLeft: '8px', whiteSpace: 'nowrap' }, children: summary })), canRevert && status !== 'running' && (_jsx("span", { role: "button", tabIndex: 0, title: isUndone
|
|
686
|
+
? t('ide.chat.redoChange', undefined, {
|
|
687
|
+
defaultValue: 'Re-apply this change',
|
|
688
|
+
})
|
|
689
|
+
: t('ide.chat.undoChange', undefined, { defaultValue: 'Undo this change' }), onClick: handleRevert, onKeyDown: (e) => {
|
|
690
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
691
|
+
e.preventDefault();
|
|
692
|
+
handleRevert(e);
|
|
693
|
+
}
|
|
694
|
+
}, onMouseEnter: (e) => {
|
|
695
|
+
e.currentTarget.style.background = 'rgba(128,128,128,0.2)';
|
|
696
|
+
e.currentTarget.style.opacity = '1';
|
|
697
|
+
}, onMouseLeave: (e) => {
|
|
698
|
+
e.currentTarget.style.background = 'transparent';
|
|
699
|
+
e.currentTarget.style.opacity = '';
|
|
700
|
+
}, style: {
|
|
701
|
+
display: 'inline-flex',
|
|
702
|
+
alignItems: 'center',
|
|
703
|
+
justifyContent: 'center',
|
|
704
|
+
// Touch: hover can't reveal it, so it rests visible at 0.6 and
|
|
705
|
+
// gets a 32px hit box (the floor for these dense inline rows).
|
|
706
|
+
width: isCoarse ? 32 : 20,
|
|
707
|
+
height: isCoarse ? 32 : 20,
|
|
708
|
+
borderRadius: 4,
|
|
709
|
+
flexShrink: 0,
|
|
710
|
+
// Nudge up 1px: the 13px glyph sat slightly below the text's
|
|
711
|
+
// optical center of the compact 20px box (moot at 32px).
|
|
712
|
+
position: 'relative',
|
|
713
|
+
top: isCoarse ? 0 : '-1px',
|
|
714
|
+
cursor: isReverting ? 'wait' : 'pointer',
|
|
715
|
+
opacity: isReverting ? 0.3 : isHovered || isCoarse ? 0.6 : 0,
|
|
716
|
+
transition: 'opacity 100ms, background 100ms',
|
|
717
|
+
}, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "13", height: "13", fill: "currentColor", children: isUndone ? (_jsx("path", { d: "M14.78 6.28a.749.749 0 0 0 0-1.06l-3.5-3.5a.749.749 0 1 0-1.06 1.06L12.439 5H5.251l-.001.007L5.251 5a.8.8 0 0 0-.171.019A4.501 4.501 0 0 0 5.5 14h1.704a.75.75 0 0 0 0-1.5H5.5a3 3 0 1 1 0-6h6.939L10.22 8.72a.749.749 0 1 0 1.06 1.06l3.5-3.5Z" })) : (_jsx("path", { d: "M1.22 6.28a.749.749 0 0 1 0-1.06l3.5-3.5a.749.749 0 1 1 1.06 1.06L3.561 5h7.188l.001.007L10.749 5c.058 0 .116.007.171.019A4.501 4.501 0 0 1 10.5 14H8.796a.75.75 0 0 1 0-1.5H10.5a3 3 0 1 0 0-6H3.561L5.78 8.72a.749.749 0 1 1-1.06 1.06l-3.5-3.5Z" })) }) }))] }) }), diffStats && (_jsxs("span", { style: {
|
|
718
|
+
display: 'flex',
|
|
719
|
+
gap: '4px',
|
|
720
|
+
flexShrink: 0,
|
|
721
|
+
marginTop: isCoarse ? 0 : '2px',
|
|
722
|
+
fontSize: '11px',
|
|
723
|
+
fontFamily: '"SF Mono", Menlo, Consolas, "Courier New", monospace',
|
|
724
|
+
opacity: isHovered ? 1 : 0.6,
|
|
725
|
+
transition: 'opacity 100ms',
|
|
726
|
+
}, children: [diffStats.added > 0 && (_jsxs("span", { style: {
|
|
727
|
+
color: isUndone
|
|
728
|
+
? isLight
|
|
729
|
+
? '#cf222e'
|
|
730
|
+
: '#f47067'
|
|
731
|
+
: isLight
|
|
732
|
+
? '#1a7f37'
|
|
733
|
+
: '#57ab5a',
|
|
734
|
+
textDecoration: isUndone ? 'line-through' : undefined,
|
|
735
|
+
}, children: ["+", diffStats.added] })), diffStats.removed > 0 && (_jsxs("span", { style: {
|
|
736
|
+
color: isUndone
|
|
737
|
+
? isLight
|
|
738
|
+
? '#1a7f37'
|
|
739
|
+
: '#57ab5a'
|
|
740
|
+
: isLight
|
|
741
|
+
? '#cf222e'
|
|
742
|
+
: '#f47067',
|
|
743
|
+
textDecoration: isUndone ? 'line-through' : undefined,
|
|
744
|
+
}, children: ["-", diffStats.removed] }))] })), (hasDetails || isFileDiff || isDocOpen || (isNewFile && filePath && onFileOpen)) && (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "14", height: "14", style: {
|
|
745
|
+
display: 'block',
|
|
746
|
+
flexShrink: 0,
|
|
747
|
+
marginTop: isCoarse ? 0 : '3px',
|
|
748
|
+
transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)',
|
|
749
|
+
transition: 'transform 150ms, opacity 100ms',
|
|
750
|
+
opacity: isHovered ? 0.85 : 0.35,
|
|
751
|
+
}, children: _jsx("polyline", { points: "6,4 10,8 6,12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }))] }), canSkip && (_jsx("button", { type: "button", "data-mol-id": `tool-call-skip-${id}`, onClick: () => {
|
|
752
|
+
void handleSkip();
|
|
753
|
+
}, disabled: skipRequested || skipDisabledReason != null, title: skipDisabledReason ?? undefined, className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' })), style: { flexShrink: 0 }, children: skipRequested
|
|
754
|
+
? t('ide.chat.skippingToolCall', undefined, { defaultValue: 'Skipping…' })
|
|
755
|
+
: t('ide.chat.skipToolCall', undefined, { defaultValue: 'Skip' }) }))] }), expanded && hasDetails && (_jsx("div", { className: cm.surfaceSecondary, style: {
|
|
717
756
|
marginLeft: '14px',
|
|
718
757
|
marginTop: '4px',
|
|
719
758
|
marginBottom: '4px',
|