@molecule/app-ide-react 1.20.0 → 1.20.2

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.
@@ -7,11 +7,14 @@ import type { BackgroundTaskState } from '@molecule/app-ai-chat';
7
7
  * `exec_command` with `run_in_background` returns a handle immediately, so the
8
8
  * tool call's own card goes green while the command is still running — a test
9
9
  * suite can be four minutes from its verdict with nothing on screen saying so.
10
- * This strip is the one place that state is visible: what is running, how long
11
- * it has been running, and how each one ended.
10
+ * This strip is the one place that state is visible: what each one is for, how
11
+ * long it has been running, and how it ended.
12
+ *
13
+ * @param props - Component props.
14
+ * @param props.tasks - Every background command of the current turn, newest last.
15
+ * @returns The strip, or nothing when no task was started.
12
16
  */
13
17
  export declare function BackgroundTasksStrip({ tasks, }: {
14
- /** Every background command of the current turn, newest last. */
15
18
  tasks: BackgroundTaskState[];
16
19
  }): JSX.Element | null;
17
20
  //# sourceMappingURL=BackgroundTasksStrip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundTasksStrip.d.ts","sourceRoot":"","sources":["../../src/components/BackgroundTasksStrip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAuB,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAKhE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,GACN,EAAE;IACD,iEAAiE;IACjE,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAC7B,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAgGrB"}
1
+ {"version":3,"file":"BackgroundTasksStrip.d.ts","sourceRoot":"","sources":["../../src/components/BackgroundTasksStrip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAuB,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAMhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,GACN,EAAE;IACD,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAC7B,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA2FrB"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { t } from '@molecule/app-i18n';
4
4
  import { getClassMap } from '@molecule/app-ui';
5
- import { Icon } from '@molecule/app-ui-react';
5
+ import { DockStrip, StatusMark } from './DockStrip.js';
6
6
  /**
7
7
  * The commands running in the sandbox that outlived the tool call that started
8
8
  * them.
@@ -10,8 +10,12 @@ import { Icon } from '@molecule/app-ui-react';
10
10
  * `exec_command` with `run_in_background` returns a handle immediately, so the
11
11
  * tool call's own card goes green while the command is still running — a test
12
12
  * suite can be four minutes from its verdict with nothing on screen saying so.
13
- * This strip is the one place that state is visible: what is running, how long
14
- * it has been running, and how each one ended.
13
+ * This strip is the one place that state is visible: what each one is for, how
14
+ * long it has been running, and how it ended.
15
+ *
16
+ * @param props - Component props.
17
+ * @param props.tasks - Every background command of the current turn, newest last.
18
+ * @returns The strip, or nothing when no task was started.
15
19
  */
16
20
  export function BackgroundTasksStrip({ tasks, }) {
17
21
  const cm = getClassMap();
@@ -33,13 +37,17 @@ export function BackgroundTasksStrip({ tasks, }) {
33
37
  : failed.length > 0
34
38
  ? t('ide.chat.backgroundFailed', { count: failed.length }, { defaultValue: '{{count}} background task failed' })
35
39
  : t('ide.chat.backgroundDone', { count: tasks.length }, { defaultValue: '{{count}} background task finished' });
36
- return (_jsxs("div", { "data-mol-id": "chat-background-tasks", className: cm.cn(cm.shrink0, cm.borderT), style: { padding: '6px 12px', fontSize: 12 }, children: [_jsxs("button", { type: "button", "data-mol-id": "chat-background-tasks-toggle", onClick: () => setExpanded((open) => !open), className: cm.cn(cm.button({ color: 'secondary', size: 'sm' }), cm.touchTargetCompact), style: { display: 'flex', alignItems: 'center', gap: 8, width: '100%' }, children: [_jsx(Icon, { name: running.length > 0 ? 'sync' : failed.length > 0 ? 'x-circle' : 'check-circle', size: 14, className: running.length > 0 ? cm.textMuted : failed.length > 0 ? cm.textError : cm.textSuccess }), _jsx("span", { className: cm.textMuted, children: summary }), _jsx(Icon, { name: expanded ? 'chevron-up' : 'chevron-down', size: 12, className: cm.textMuted, style: { marginLeft: 'auto' } })] }), expanded && (_jsx("ul", { style: { listStyle: 'none', margin: '6px 0 0', padding: 0 }, children: tasks.map((task) => (_jsxs("li", { "data-mol-id": "chat-background-task", style: { display: 'flex', alignItems: 'baseline', gap: 8, padding: '2px 0' }, children: [_jsx(Icon, { name: task.kind === 'agent' ? 'search' : 'chevron-right', size: 11, className: cm.textMuted }), _jsx("code", { className: cm.textMuted, style: {
37
- flex: 1,
38
- minWidth: 0,
39
- overflow: 'hidden',
40
- textOverflow: 'ellipsis',
41
- whiteSpace: 'nowrap',
42
- }, title: task.command, children: task.command }), _jsx("span", { className: cm.textMuted, children: describe(task) })] }, task.id))) }))] }));
40
+ // Collapsed, name what the strip is about: the purpose of the task in flight.
41
+ const lead = running[0] ?? failed[0];
42
+ return (_jsx(DockStrip, { molId: "chat-background-tasks", toggleMolId: "chat-background-tasks-toggle", expanded: expanded, onToggle: () => setExpanded((open) => !open), icon: _jsx(StatusMark, { state: running.length > 0 ? 'active' : failed.length > 0 ? 'failed' : 'done', size: 14 }), label: summary, hint: !expanded && lead ? `· ${purpose(lead)}` : undefined, children: _jsx("ul", { style: { listStyle: 'none', margin: 0, padding: 0 }, children: tasks.map((task) => (_jsxs("li", { "data-mol-id": "chat-background-task", className: cm.textSize('xs'), style: { display: 'flex', alignItems: 'flex-start', gap: 8, padding: '3px 0' }, children: [_jsx("span", { style: { flexShrink: 0, display: 'inline-flex', paddingTop: 1 }, children: _jsx(StatusMark, { state: task.status === 'running'
43
+ ? 'active'
44
+ : task.status === 'failed'
45
+ ? 'failed'
46
+ : 'done', size: 14 }) }), _jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsx("div", { children: purpose(task) }), task.description ? (_jsx("code", { className: cm.textMuted, style: { display: 'block', whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }, children: task.command })) : null] }), _jsx("span", { className: cm.textMuted, style: { flexShrink: 0, whiteSpace: 'nowrap' }, children: describe(task) })] }, task.id))) }) }));
47
+ }
48
+ /** What a task is for: the executor's own reason, else the command itself. */
49
+ function purpose(task) {
50
+ return task.description ?? task.command;
43
51
  }
44
52
  /** The right-hand status for one command: how long it ran, and how it ended. */
45
53
  function describe(task) {
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundTasksStrip.js","sourceRoot":"","sources":["../../src/components/BackgroundTasksStrip.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackgroundTasksStrip.js","sourceRoot":"","sources":["../../src/components/BackgroundTasksStrip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAY,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGrD,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEtD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,KAAK,GAGN;IACC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,8EAA8E;IAC9E,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAA;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACzD,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAA;IAC/D,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,CAAC,CACC,4BAA4B,EAC5B,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EACzB,EAAE,YAAY,EAAE,0CAA0C,EAAE,CAC7D;QACH,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC,CAAC,CACC,2BAA2B,EAC3B,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EACxB,EAAE,YAAY,EAAE,kCAAkC,EAAE,CACrD;YACH,CAAC,CAAC,CAAC,CACC,yBAAyB,EACzB,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EACvB,EAAE,YAAY,EAAE,oCAAoC,EAAE,CACvD,CAAA;IAET,8EAA8E;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IAEpC,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAC,uBAAuB,EAC7B,WAAW,EAAC,8BAA8B,EAC1C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAC5C,IAAI,EACF,KAAC,UAAU,IACT,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAC5E,IAAI,EAAE,EAAE,GACR,EAEJ,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,YAE1D,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YACpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,6BAEc,sBAAsB,EAClC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAE9E,eAAM,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,EAAE,YACnE,KAAC,UAAU,IACT,KAAK,EACH,IAAI,CAAC,MAAM,KAAK,SAAS;gCACvB,CAAC,CAAC,QAAQ;gCACV,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;oCACxB,CAAC,CAAC,QAAQ;oCACV,CAAC,CAAC,MAAM,EAEd,IAAI,EAAE,EAAE,GACR,GACG,EACP,eAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAClC,wBAAM,OAAO,CAAC,IAAI,CAAC,GAAO,EACzB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAClB,eACE,SAAS,EAAE,EAAE,CAAC,SAAS,EACvB,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAE5E,IAAI,CAAC,OAAO,GACR,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,eAAM,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAC1E,QAAQ,CAAC,IAAI,CAAC,GACV,KA9BF,IAAI,CAAC,EAAE,CA+BT,CACN,CAAC,GACC,GACK,CACb,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,OAAO,CAAC,IAAyB;IACxC,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAA;AACzC,CAAC;AAED,gFAAgF;AAChF,SAAS,QAAQ,CAAC,IAAyB;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAClG,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,EAAE,GAAG,CAAA;IAC9F,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,CACN,yBAAyB,EACzB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,OAAO,EAAE,EACrC,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAChD,CAAA;IACH,CAAC;IACD,OAAO,CAAC,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAA;AACxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
@@ -37,9 +37,11 @@ import { getChatTimestampsVisible, parseTimestampsCommand, planChatTimestamps, r
37
37
  import { ENTRY_TIP, pickIdleTip, shouldShowIdleTip, TIP_IDLE_MS, TIP_MIN_MESSAGES, } from './chat-tips-utilities.js';
38
38
  import { ChatItemBoundary } from './ChatItemBoundary.js';
39
39
  import { ChatTimestamp } from './ChatTimestamp.js';
40
+ import { DockStrip } from './DockStrip.js';
40
41
  import { HelpCard } from './HelpCard.js';
41
42
  import { Icon } from './Icon.js';
42
43
  import { isAllowedLinkHref, MarkdownContent } from './MarkdownContent.js';
44
+ import { latestPlan, PlanCard } from './PlanCard.js';
43
45
  import { RelevantSkillSuggestion } from './RelevantSkillSuggestion.js';
44
46
  import { ReportModal } from './ReportModal.js';
45
47
  import { ScriptsCard } from './ScriptsCard.js';
@@ -5992,6 +5994,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
5992
5994
  return (_jsxs(_Fragment, { children: [_jsx(ChatTimestamp, { timestamp: slot.timestamp, variant: "line", align: slot.align }), node] }));
5993
5995
  };
5994
5996
  const bgCommands = useMemo(() => backgroundTaskCommands(messages), [messages]);
5997
+ const plan = useMemo(() => latestPlan(messages), [messages]);
5995
5998
  // ── Render ─────────────────────────────────────────────────────────────────
5996
5999
  const root = (_jsxs("div", { style: {
5997
6000
  display: 'flex',
@@ -6244,7 +6247,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
6244
6247
  pointerEvents: showActivity ? 'auto' : 'none',
6245
6248
  transition: 'opacity 0.18s ease-out',
6246
6249
  }, children: showActivity && (_jsx(StreamingIndicator, { label: label, tokens: streamingLike ? turnTokens : undefined, startedAt: streamingLike ? turnStartedAt : undefined })) }));
6247
- })(), _jsx("div", { ref: messagesEndRef })] }), _jsx(BackgroundTasksStrip, { tasks: backgroundTasks }), autoFixCountdown && (_jsxs("div", { className: cm.cn(cm.shrink0, cm.borderT), style: {
6250
+ })(), _jsx("div", { ref: messagesEndRef })] }), _jsx(PlanCard, { todos: plan }), _jsx(BackgroundTasksStrip, { tasks: backgroundTasks }), autoFixCountdown && (_jsxs("div", { className: cm.cn(cm.shrink0, cm.borderT), style: {
6248
6251
  display: 'flex',
6249
6252
  alignItems: 'center',
6250
6253
  gap: 8,
@@ -7539,139 +7542,116 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
7539
7542
  !commandMenu &&
7540
7543
  !modelPicker &&
7541
7544
  !effortPicker &&
7542
- !panelOverlay && (_jsxs("div", { style: {
7543
- borderTop: '1px solid rgba(128,128,128,0.15)',
7544
- // Equal top/right/bottom (8px) so the commit button — flush to the
7545
- // right edge via the row's space-between — has the same gap on its
7546
- // top, right, and bottom (P5-05). Left stays 10px so the chevron +
7547
- // "N uncommitted files" text keep their indent. The green
7548
- // AutoCommitBadge (inline) shares this slot + box model, so it
7549
- // inherits the identical margins and sits in the same spot.
7550
- padding: '8px 8px 8px 10px',
7551
- }, children: [_jsxs("div", { role: "button", tabIndex: 0, onClick: () => setCommitBarExpanded((v) => !v), onKeyDown: (e) => {
7552
- if (e.key === 'Enter' || e.key === ' ') {
7553
- e.preventDefault();
7554
- setCommitBarExpanded((v) => !v);
7555
- }
7545
+ !panelOverlay && (_jsx(DockStrip, { molId: "chat-commit-bar", toggleMolId: "chat-commit-toggle", expanded: commitBarExpanded, onToggle: () => setCommitBarExpanded((v) => !v), label: commitState?.status === 'committed'
7546
+ ? stripCommitCoauthorTrailer(commitState.message ?? '')
7547
+ : commitState?.status === 'error'
7548
+ ? t('ide.chat.commitFailed')
7549
+ : t('ide.chat.uncommittedFileCount', { count: pendingFiles.length }, { defaultValue: '{{count}} uncommitted files' }), actions: _jsx(_Fragment, { children: isAutoCommitEnabled(autoCommit) &&
7550
+ commitState?.status !== 'committing' &&
7551
+ commitState?.status !== 'committed' ? (_jsx(AutoCommitBadge, { state: autoCommit, disabled: autoCommitHeld, onCommitNow: () => {
7552
+ // Pause the countdown before committing so a due auto-fire
7553
+ // doesn't race the manual commit onto a freshly clean tree
7554
+ // (which would drop a noisy "No changes to commit" card).
7555
+ dispatchAutoCommit({ type: 'fired' });
7556
+ void handleCommit();
7557
+ }, inline: true })) : ((() => {
7558
+ const commitBusy = commitState?.status === 'committing' ||
7559
+ commitState?.status === 'committed' ||
7560
+ autoCommitHeld;
7561
+ return (_jsx("button", { type: "button", "data-mol-id": "chat-commit-button", onClick: (e) => {
7562
+ e.stopPropagation();
7563
+ if (commitBusy)
7564
+ return;
7565
+ handleCommit();
7566
+ }, disabled: commitBusy,
7567
+ // The SAME design-system button as the tests bar's action
7568
+ // one strip above (and as the green AutoCommitBadge that
7569
+ // replaces this one when auto-commit is on) — only the
7570
+ // semantic colour differs. The CVA owns hover/active/focus
7571
+ // and the disabled look, so there is nothing to hand-roll:
7572
+ // this used to be an inline 12px/6px-radius button with
7573
+ // hardcoded rgba(64,112,224,*) and hand-written hover, and
7574
+ // it visibly mismatched the 13px/3px tests-bar button.
7575
+ className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: commitState?.status === 'committing'
7576
+ ? t('ide.chat.committing')
7577
+ : t('ide.chat.commit') }));
7578
+ })()) }), children: _jsx("div", { style: { maxHeight: 200, overflowY: 'auto' }, children: pendingFiles.map((f) => (_jsxs("button", { type: "button", onClick: () => onFileDiff?.(f.path), onMouseEnter: (e) => {
7579
+ // Theme PRIMARY token, not a literal blue — the row sits in
7580
+ // the same bar as the commit button, which is now primary.
7581
+ e.currentTarget.style.color = 'var(--mol-color-primary, #4070e0)';
7582
+ }, onMouseLeave: (e) => {
7583
+ e.currentTarget.style.color = '';
7556
7584
  }, style: {
7557
7585
  display: 'flex',
7558
7586
  alignItems: 'center',
7559
- justifyContent: 'space-between',
7560
- cursor: 'pointer',
7561
- }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "12", height: "12", style: {
7562
- transform: commitBarExpanded ? 'rotate(90deg)' : 'rotate(0deg)',
7563
- transition: 'transform 120ms',
7564
- opacity: 0.5,
7565
- }, children: _jsx("path", { d: "M6 4l4 4-4 4", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }), _jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), children: commitState?.status === 'committed'
7566
- ? stripCommitCoauthorTrailer(commitState.message ?? '')
7567
- : commitState?.status === 'error'
7568
- ? t('ide.chat.commitFailed')
7569
- : t('ide.chat.uncommittedFileCount', { count: pendingFiles.length }, { defaultValue: '{{count}} uncommitted files' }) })] }), isAutoCommitEnabled(autoCommit) &&
7570
- commitState?.status !== 'committing' &&
7571
- commitState?.status !== 'committed' ? (_jsx(AutoCommitBadge, { state: autoCommit, disabled: autoCommitHeld, onCommitNow: () => {
7572
- // Pause the countdown before committing so a due auto-fire
7573
- // doesn't race the manual commit onto a freshly clean tree
7574
- // (which would drop a noisy "No changes to commit" card).
7575
- dispatchAutoCommit({ type: 'fired' });
7576
- void handleCommit();
7577
- }, inline: true })) : ((() => {
7578
- const commitBusy = commitState?.status === 'committing' ||
7579
- commitState?.status === 'committed' ||
7580
- autoCommitHeld;
7581
- return (_jsx("button", { type: "button", "data-mol-id": "chat-commit-button", onClick: (e) => {
7582
- e.stopPropagation();
7583
- if (commitBusy)
7584
- return;
7585
- handleCommit();
7586
- }, disabled: commitBusy,
7587
- // The SAME design-system button as the tests bar's action
7588
- // one strip above (and as the green AutoCommitBadge that
7589
- // replaces this one when auto-commit is on) — only the
7590
- // semantic colour differs. The CVA owns hover/active/focus
7591
- // and the disabled look, so there is nothing to hand-roll:
7592
- // this used to be an inline 12px/6px-radius button with
7593
- // hardcoded rgba(64,112,224,*) and hand-written hover, and
7594
- // it visibly mismatched the 13px/3px tests-bar button.
7595
- className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: commitState?.status === 'committing'
7596
- ? t('ide.chat.committing')
7597
- : t('ide.chat.commit') }));
7598
- })())] }), commitBarExpanded && (_jsx("div", { style: { marginTop: 4, paddingLeft: 16, maxHeight: 200, overflowY: 'auto' }, children: pendingFiles.map((f) => (_jsxs("button", { type: "button", onClick: () => onFileDiff?.(f.path), onMouseEnter: (e) => {
7599
- // Theme PRIMARY token, not a literal blue — the row sits in
7600
- // the same bar as the commit button, which is now primary.
7601
- e.currentTarget.style.color = 'var(--mol-color-primary, #4070e0)';
7602
- }, onMouseLeave: (e) => {
7603
- e.currentTarget.style.color = '';
7604
- }, style: {
7605
- display: 'flex',
7606
- alignItems: 'center',
7607
- gap: 6,
7608
- background: 'none',
7609
- border: 'none',
7610
- padding: '1px 0',
7611
- // Touch: ~15px rows are untappable — 32px is the floor for
7612
- // these dense file rows.
7613
- ...(isCoarse ? { minHeight: 32 } : {}),
7614
- cursor: onFileDiff ? 'pointer' : 'default',
7615
- fontFamily: "'SF Mono', 'Fira Code', monospace",
7616
- fontSize: 11,
7617
- color: 'inherit',
7618
- opacity: 0.7,
7619
- textAlign: 'left',
7620
- width: '100%',
7621
- overflow: 'hidden',
7622
- whiteSpace: 'nowrap',
7623
- }, className: cm.textMuted, children: [_jsx("span", { style: { overflow: 'hidden', textOverflow: 'ellipsis' }, children: f.path }), (!!f.additions || !!f.deletions) && (_jsxs("span", { style: { marginLeft: 'auto', flexShrink: 0, fontSize: 10, opacity: 0.8 }, children: [!!f.additions && (_jsxs("span", { style: { color: '#3fb950' }, children: ["+", f.additions] })), !!f.additions && !!f.deletions && ' ', !!f.deletions && (_jsxs("span", { style: { color: '#f85149' }, children: ["-", f.deletions] }))] })), onFileRevert && (_jsx("span", {
7624
- /* mol-bespoke-button: icon-only per-file revert affordance — 18px (32px coarse) hit box on a dense file row */
7625
- role: "button", tabIndex: 0, title: t('ide.chat.revertFile', undefined, {
7626
- defaultValue: 'Revert to last commit',
7627
- }), onClick: (e) => {
7628
- e.stopPropagation();
7629
- // Revert file to last committed state (handles modified, new, and deleted files)
7630
- http
7631
- .post(`/projects/${projectId}/git-revert`, { path: f.path })
7632
- .then(() => {
7633
- refreshGitStatus();
7634
- // Refresh editor if the file is open — fetch fresh content for modified/restored,
7635
- // or close if it was a new file that got deleted
7636
- if (f.status === 'untracked' || f.status === 'added') {
7637
- onFileDeleted?.(f.path);
7638
- }
7639
- else {
7640
- // Re-fetch file content from sandbox to update editor
7641
- http
7642
- .get(`/projects/${projectId}/files/${f.path}`)
7643
- .then((res) => onFileChange?.(f.path, res.data.content))
7644
- .catch(() => {
7645
- /* ignore */
7646
- });
7647
- }
7648
- })
7649
- .catch(() => {
7650
- /* ignore */
7651
- });
7652
- }, onKeyDown: (e) => {
7653
- if (e.key === 'Enter' || e.key === ' ')
7654
- e.currentTarget.click();
7655
- }, onMouseEnter: (e) => {
7656
- e.currentTarget.style.background = 'rgba(128,128,128,0.2)';
7657
- e.currentTarget.style.opacity = '1';
7658
- }, onMouseLeave: (e) => {
7659
- e.currentTarget.style.background = 'transparent';
7660
- e.currentTarget.style.opacity = '0.5';
7661
- }, style: {
7662
- display: 'inline-flex',
7663
- alignItems: 'center',
7664
- justifyContent: 'center',
7665
- // Touch: 32px hit box (dense-row floor); glyph unchanged.
7666
- width: isCoarse ? 32 : 18,
7667
- height: isCoarse ? 32 : 18,
7668
- borderRadius: 3,
7669
- flexShrink: 0,
7670
- cursor: 'pointer',
7671
- opacity: 0.5,
7672
- transition: 'opacity 100ms, background 100ms',
7673
- ...(!(f.additions || f.deletions) ? { marginLeft: 'auto' } : {}),
7674
- }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "12", height: "12", fill: "currentColor", children: _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" }) }) }))] }, f.path))) }))] })), _jsxs("div", { className: cm.surfaceSecondary, ...(canEdit === false ? { 'data-mol-viewer': '' } : {}), style: {
7587
+ gap: 6,
7588
+ background: 'none',
7589
+ border: 'none',
7590
+ padding: '1px 0',
7591
+ // Touch: ~15px rows are untappable — 32px is the floor for
7592
+ // these dense file rows.
7593
+ ...(isCoarse ? { minHeight: 32 } : {}),
7594
+ cursor: onFileDiff ? 'pointer' : 'default',
7595
+ fontFamily: "'SF Mono', 'Fira Code', monospace",
7596
+ fontSize: 11,
7597
+ color: 'inherit',
7598
+ opacity: 0.7,
7599
+ textAlign: 'left',
7600
+ width: '100%',
7601
+ overflow: 'hidden',
7602
+ whiteSpace: 'nowrap',
7603
+ }, className: cm.textMuted, children: [_jsx("span", { style: { overflow: 'hidden', textOverflow: 'ellipsis' }, children: f.path }), (!!f.additions || !!f.deletions) && (_jsxs("span", { style: { marginLeft: 'auto', flexShrink: 0, fontSize: 10, opacity: 0.8 }, children: [!!f.additions && _jsxs("span", { style: { color: '#3fb950' }, children: ["+", f.additions] }), !!f.additions && !!f.deletions && ' ', !!f.deletions && _jsxs("span", { style: { color: '#f85149' }, children: ["-", f.deletions] })] })), onFileRevert && (_jsx("span", {
7604
+ /* mol-bespoke-button: icon-only per-file revert affordance — 18px (32px coarse) hit box on a dense file row */
7605
+ role: "button", tabIndex: 0, title: t('ide.chat.revertFile', undefined, {
7606
+ defaultValue: 'Revert to last commit',
7607
+ }), onClick: (e) => {
7608
+ e.stopPropagation();
7609
+ // Revert file to last committed state (handles modified, new, and deleted files)
7610
+ http
7611
+ .post(`/projects/${projectId}/git-revert`, { path: f.path })
7612
+ .then(() => {
7613
+ refreshGitStatus();
7614
+ // Refresh editor if the file is open — fetch fresh content for modified/restored,
7615
+ // or close if it was a new file that got deleted
7616
+ if (f.status === 'untracked' || f.status === 'added') {
7617
+ onFileDeleted?.(f.path);
7618
+ }
7619
+ else {
7620
+ // Re-fetch file content from sandbox to update editor
7621
+ http
7622
+ .get(`/projects/${projectId}/files/${f.path}`)
7623
+ .then((res) => onFileChange?.(f.path, res.data.content))
7624
+ .catch(() => {
7625
+ /* ignore */
7626
+ });
7627
+ }
7628
+ })
7629
+ .catch(() => {
7630
+ /* ignore */
7631
+ });
7632
+ }, onKeyDown: (e) => {
7633
+ if (e.key === 'Enter' || e.key === ' ')
7634
+ e.currentTarget.click();
7635
+ }, onMouseEnter: (e) => {
7636
+ e.currentTarget.style.background = 'rgba(128,128,128,0.2)';
7637
+ e.currentTarget.style.opacity = '1';
7638
+ }, onMouseLeave: (e) => {
7639
+ e.currentTarget.style.background = 'transparent';
7640
+ e.currentTarget.style.opacity = '0.5';
7641
+ }, style: {
7642
+ display: 'inline-flex',
7643
+ alignItems: 'center',
7644
+ justifyContent: 'center',
7645
+ // Touch: 32px hit box (dense-row floor); glyph unchanged.
7646
+ width: isCoarse ? 32 : 18,
7647
+ height: isCoarse ? 32 : 18,
7648
+ borderRadius: 3,
7649
+ flexShrink: 0,
7650
+ cursor: 'pointer',
7651
+ opacity: 0.5,
7652
+ transition: 'opacity 100ms, background 100ms',
7653
+ ...(!(f.additions || f.deletions) ? { marginLeft: 'auto' } : {}),
7654
+ }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "12", height: "12", fill: "currentColor", children: _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" }) }) }))] }, f.path))) }) })), _jsxs("div", { className: cm.surfaceSecondary, ...(canEdit === false ? { 'data-mol-viewer': '' } : {}), style: {
7675
7655
  // Round the TOP corners only (8px) so the composer reads as a self-contained
7676
7656
  // input with its own border on all sides, flush at the bottom-left/right with
7677
7657
  // the panel's bottom edge. Discovery rounds ALL FOUR corners (the centered