@molecule/app-ide-react 1.0.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/LICENSE +115 -0
- package/dist/chatTimelineOrdering.d.ts +50 -0
- package/dist/chatTimelineOrdering.d.ts.map +1 -0
- package/dist/chatTimelineOrdering.js +46 -0
- package/dist/chatTimelineOrdering.js.map +1 -0
- package/dist/command-metadata.d.ts +78 -0
- package/dist/command-metadata.d.ts.map +1 -0
- package/dist/command-metadata.js +214 -0
- package/dist/command-metadata.js.map +1 -0
- package/dist/components/ActivityCard.d.ts +28 -0
- package/dist/components/ActivityCard.d.ts.map +1 -0
- package/dist/components/ActivityCard.js +62 -0
- package/dist/components/ActivityCard.js.map +1 -0
- package/dist/components/AutoCommitBadge.d.ts +58 -0
- package/dist/components/AutoCommitBadge.d.ts.map +1 -0
- package/dist/components/AutoCommitBadge.js +78 -0
- package/dist/components/AutoCommitBadge.js.map +1 -0
- package/dist/components/ChatPanel.d.ts +184 -0
- package/dist/components/ChatPanel.d.ts.map +1 -0
- package/dist/components/ChatPanel.js +6691 -0
- package/dist/components/ChatPanel.js.map +1 -0
- package/dist/components/CommandPalette.d.ts +18 -0
- package/dist/components/CommandPalette.d.ts.map +1 -0
- package/dist/components/CommandPalette.js +33 -0
- package/dist/components/CommandPalette.js.map +1 -0
- package/dist/components/DeviceFrameSelector.d.ts +60 -0
- package/dist/components/DeviceFrameSelector.d.ts.map +1 -0
- package/dist/components/DeviceFrameSelector.js +230 -0
- package/dist/components/DeviceFrameSelector.js.map +1 -0
- package/dist/components/EditorPanel.d.ts +17 -0
- package/dist/components/EditorPanel.d.ts.map +1 -0
- package/dist/components/EditorPanel.js +241 -0
- package/dist/components/EditorPanel.js.map +1 -0
- package/dist/components/FileExplorer.d.ts +64 -0
- package/dist/components/FileExplorer.d.ts.map +1 -0
- package/dist/components/FileExplorer.js +1111 -0
- package/dist/components/FileExplorer.js.map +1 -0
- package/dist/components/FileExplorerContextMenu.d.ts +37 -0
- package/dist/components/FileExplorerContextMenu.d.ts.map +1 -0
- package/dist/components/FileExplorerContextMenu.js +241 -0
- package/dist/components/FileExplorerContextMenu.js.map +1 -0
- package/dist/components/HelpCard.d.ts +34 -0
- package/dist/components/HelpCard.d.ts.map +1 -0
- package/dist/components/HelpCard.js +28 -0
- package/dist/components/HelpCard.js.map +1 -0
- package/dist/components/Icon.d.ts +50 -0
- package/dist/components/Icon.d.ts.map +1 -0
- package/dist/components/Icon.js +25 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/KeyboardShortcutsPanel.d.ts +19 -0
- package/dist/components/KeyboardShortcutsPanel.d.ts.map +1 -0
- package/dist/components/KeyboardShortcutsPanel.js +187 -0
- package/dist/components/KeyboardShortcutsPanel.js.map +1 -0
- package/dist/components/MarkdownContent.d.ts +52 -0
- package/dist/components/MarkdownContent.d.ts.map +1 -0
- package/dist/components/MarkdownContent.js +303 -0
- package/dist/components/MarkdownContent.js.map +1 -0
- package/dist/components/ModelsTable.d.ts +38 -0
- package/dist/components/ModelsTable.d.ts.map +1 -0
- package/dist/components/ModelsTable.js +96 -0
- package/dist/components/ModelsTable.js.map +1 -0
- package/dist/components/PreviewPanel.d.ts +66 -0
- package/dist/components/PreviewPanel.d.ts.map +1 -0
- package/dist/components/PreviewPanel.js +1752 -0
- package/dist/components/PreviewPanel.js.map +1 -0
- package/dist/components/QuickOpen.d.ts +20 -0
- package/dist/components/QuickOpen.d.ts.map +1 -0
- package/dist/components/QuickOpen.js +72 -0
- package/dist/components/QuickOpen.js.map +1 -0
- package/dist/components/QuickPicker.d.ts +21 -0
- package/dist/components/QuickPicker.d.ts.map +1 -0
- package/dist/components/QuickPicker.js +174 -0
- package/dist/components/QuickPicker.js.map +1 -0
- package/dist/components/RelevantSkillSuggestion.d.ts +41 -0
- package/dist/components/RelevantSkillSuggestion.d.ts.map +1 -0
- package/dist/components/RelevantSkillSuggestion.js +85 -0
- package/dist/components/RelevantSkillSuggestion.js.map +1 -0
- package/dist/components/ReportModal.d.ts +35 -0
- package/dist/components/ReportModal.d.ts.map +1 -0
- package/dist/components/ReportModal.js +112 -0
- package/dist/components/ReportModal.js.map +1 -0
- package/dist/components/ResizeHandle.d.ts +21 -0
- package/dist/components/ResizeHandle.d.ts.map +1 -0
- package/dist/components/ResizeHandle.js +109 -0
- package/dist/components/ResizeHandle.js.map +1 -0
- package/dist/components/ScriptsCard.d.ts +37 -0
- package/dist/components/ScriptsCard.d.ts.map +1 -0
- package/dist/components/ScriptsCard.js +177 -0
- package/dist/components/ScriptsCard.js.map +1 -0
- package/dist/components/SearchPanel.d.ts +18 -0
- package/dist/components/SearchPanel.d.ts.map +1 -0
- package/dist/components/SearchPanel.js +449 -0
- package/dist/components/SearchPanel.js.map +1 -0
- package/dist/components/SettingsCard.d.ts +49 -0
- package/dist/components/SettingsCard.d.ts.map +1 -0
- package/dist/components/SettingsCard.js +59 -0
- package/dist/components/SettingsCard.js.map +1 -0
- package/dist/components/ShareModal.d.ts +32 -0
- package/dist/components/ShareModal.d.ts.map +1 -0
- package/dist/components/ShareModal.js +126 -0
- package/dist/components/ShareModal.js.map +1 -0
- package/dist/components/SidebarTabs.d.ts +18 -0
- package/dist/components/SidebarTabs.d.ts.map +1 -0
- package/dist/components/SidebarTabs.js +20 -0
- package/dist/components/SidebarTabs.js.map +1 -0
- package/dist/components/SkillsCard.d.ts +86 -0
- package/dist/components/SkillsCard.d.ts.map +1 -0
- package/dist/components/SkillsCard.js +227 -0
- package/dist/components/SkillsCard.js.map +1 -0
- package/dist/components/StreamingIndicator.d.ts +50 -0
- package/dist/components/StreamingIndicator.d.ts.map +1 -0
- package/dist/components/StreamingIndicator.js +142 -0
- package/dist/components/StreamingIndicator.js.map +1 -0
- package/dist/components/TabBar.d.ts +37 -0
- package/dist/components/TabBar.d.ts.map +1 -0
- package/dist/components/TabBar.js +187 -0
- package/dist/components/TabBar.js.map +1 -0
- package/dist/components/TipCard.d.ts +22 -0
- package/dist/components/TipCard.d.ts.map +1 -0
- package/dist/components/TipCard.js +73 -0
- package/dist/components/TipCard.js.map +1 -0
- package/dist/components/ToolCallCard.d.ts +18 -0
- package/dist/components/ToolCallCard.d.ts.map +1 -0
- package/dist/components/ToolCallCard.js +716 -0
- package/dist/components/ToolCallCard.js.map +1 -0
- package/dist/components/UserAvatar.d.ts +45 -0
- package/dist/components/UserAvatar.d.ts.map +1 -0
- package/dist/components/UserAvatar.js +80 -0
- package/dist/components/UserAvatar.js.map +1 -0
- package/dist/components/WorkspaceLayout.d.ts +19 -0
- package/dist/components/WorkspaceLayout.d.ts.map +1 -0
- package/dist/components/WorkspaceLayout.js +56 -0
- package/dist/components/WorkspaceLayout.js.map +1 -0
- package/dist/components/activity-utilities.d.ts +107 -0
- package/dist/components/activity-utilities.d.ts.map +1 -0
- package/dist/components/activity-utilities.js +154 -0
- package/dist/components/activity-utilities.js.map +1 -0
- package/dist/components/chat-autocommit-utilities.d.ts +172 -0
- package/dist/components/chat-autocommit-utilities.d.ts.map +1 -0
- package/dist/components/chat-autocommit-utilities.js +185 -0
- package/dist/components/chat-autocommit-utilities.js.map +1 -0
- package/dist/components/chat-card-style.d.ts +64 -0
- package/dist/components/chat-card-style.d.ts.map +1 -0
- package/dist/components/chat-card-style.js +74 -0
- package/dist/components/chat-card-style.js.map +1 -0
- package/dist/components/chat-commands.d.ts +17 -0
- package/dist/components/chat-commands.d.ts.map +1 -0
- package/dist/components/chat-commands.js +17 -0
- package/dist/components/chat-commands.js.map +1 -0
- package/dist/components/chat-commit-utilities.d.ts +29 -0
- package/dist/components/chat-commit-utilities.d.ts.map +1 -0
- package/dist/components/chat-commit-utilities.js +31 -0
- package/dist/components/chat-commit-utilities.js.map +1 -0
- package/dist/components/chat-cost-utilities.d.ts +62 -0
- package/dist/components/chat-cost-utilities.d.ts.map +1 -0
- package/dist/components/chat-cost-utilities.js +66 -0
- package/dist/components/chat-cost-utilities.js.map +1 -0
- package/dist/components/chat-effort-utilities.d.ts +96 -0
- package/dist/components/chat-effort-utilities.d.ts.map +1 -0
- package/dist/components/chat-effort-utilities.js +97 -0
- package/dist/components/chat-effort-utilities.js.map +1 -0
- package/dist/components/chat-help-utilities.d.ts +89 -0
- package/dist/components/chat-help-utilities.d.ts.map +1 -0
- package/dist/components/chat-help-utilities.js +131 -0
- package/dist/components/chat-help-utilities.js.map +1 -0
- package/dist/components/chat-model-mode-utilities.d.ts +143 -0
- package/dist/components/chat-model-mode-utilities.d.ts.map +1 -0
- package/dist/components/chat-model-mode-utilities.js +191 -0
- package/dist/components/chat-model-mode-utilities.js.map +1 -0
- package/dist/components/chat-models-utilities.d.ts +98 -0
- package/dist/components/chat-models-utilities.d.ts.map +1 -0
- package/dist/components/chat-models-utilities.js +136 -0
- package/dist/components/chat-models-utilities.js.map +1 -0
- package/dist/components/chat-report-utilities.d.ts +149 -0
- package/dist/components/chat-report-utilities.d.ts.map +1 -0
- package/dist/components/chat-report-utilities.js +151 -0
- package/dist/components/chat-report-utilities.js.map +1 -0
- package/dist/components/chat-scripts-utilities.d.ts +140 -0
- package/dist/components/chat-scripts-utilities.d.ts.map +1 -0
- package/dist/components/chat-scripts-utilities.js +158 -0
- package/dist/components/chat-scripts-utilities.js.map +1 -0
- package/dist/components/chat-settings-utilities.d.ts +72 -0
- package/dist/components/chat-settings-utilities.d.ts.map +1 -0
- package/dist/components/chat-settings-utilities.js +56 -0
- package/dist/components/chat-settings-utilities.js.map +1 -0
- package/dist/components/chat-share-utilities.d.ts +104 -0
- package/dist/components/chat-share-utilities.d.ts.map +1 -0
- package/dist/components/chat-share-utilities.js +90 -0
- package/dist/components/chat-share-utilities.js.map +1 -0
- package/dist/components/chat-skills-utilities.d.ts +242 -0
- package/dist/components/chat-skills-utilities.d.ts.map +1 -0
- package/dist/components/chat-skills-utilities.js +433 -0
- package/dist/components/chat-skills-utilities.js.map +1 -0
- package/dist/components/chat-stream-utilities.d.ts +74 -0
- package/dist/components/chat-stream-utilities.d.ts.map +1 -0
- package/dist/components/chat-stream-utilities.js +103 -0
- package/dist/components/chat-stream-utilities.js.map +1 -0
- package/dist/components/chat-tips-utilities.d.ts +108 -0
- package/dist/components/chat-tips-utilities.d.ts.map +1 -0
- package/dist/components/chat-tips-utilities.js +137 -0
- package/dist/components/chat-tips-utilities.js.map +1 -0
- package/dist/components/device-cycle.d.ts +84 -0
- package/dist/components/device-cycle.d.ts.map +1 -0
- package/dist/components/device-cycle.js +77 -0
- package/dist/components/device-cycle.js.map +1 -0
- package/dist/components/index.d.ts +36 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +33 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/tool-call-utilities.d.ts +69 -0
- package/dist/components/tool-call-utilities.d.ts.map +1 -0
- package/dist/components/tool-call-utilities.js +368 -0
- package/dist/components/tool-call-utilities.js.map +1 -0
- package/dist/components/user-avatar-utilities.d.ts +41 -0
- package/dist/components/user-avatar-utilities.d.ts.map +1 -0
- package/dist/components/user-avatar-utilities.js +56 -0
- package/dist/components/user-avatar-utilities.js.map +1 -0
- package/dist/components/workspace-layout-utilities.d.ts +37 -0
- package/dist/components/workspace-layout-utilities.d.ts.map +1 -0
- package/dist/components/workspace-layout-utilities.js +58 -0
- package/dist/components/workspace-layout-utilities.js.map +1 -0
- package/dist/customEventCards.d.ts +117 -0
- package/dist/customEventCards.d.ts.map +1 -0
- package/dist/customEventCards.js +36 -0
- package/dist/customEventCards.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts +48 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +112 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/hooks/useViewport.d.ts +42 -0
- package/dist/hooks/useViewport.d.ts.map +1 -0
- package/dist/hooks/useViewport.js +61 -0
- package/dist/hooks/useViewport.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/settings-metadata.d.ts +78 -0
- package/dist/settings-metadata.d.ts.map +1 -0
- package/dist/settings-metadata.js +131 -0
- package/dist/settings-metadata.js.map +1 -0
- package/dist/types.d.ts +751 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +25 -0
- package/dist/types.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
import { t } from '@molecule/app-i18n';
|
|
4
|
+
import { getLogger } from '@molecule/app-logger';
|
|
5
|
+
import { DEFAULT_PRODUCT_NAME, useHttpClient, useThemeMode } from '@molecule/app-react';
|
|
6
|
+
import { getClassMap } from '@molecule/app-ui';
|
|
7
|
+
import { useCoarsePointer, useNarrowViewport } from '../hooks/useViewport.js';
|
|
8
|
+
import { buildReportPayload, collectClientInfo, EMPTY_REPORT_FORM, isReportFormValid, } from './chat-report-utilities.js';
|
|
9
|
+
const logger = getLogger('report-modal');
|
|
10
|
+
/**
|
|
11
|
+
* The bug-report / feedback modal opened by `/report`, `/bug`, and the header
|
|
12
|
+
* bug-report button.
|
|
13
|
+
*
|
|
14
|
+
* @param props - Component props.
|
|
15
|
+
* @returns The rendered report modal.
|
|
16
|
+
*/
|
|
17
|
+
export function ReportModal({ projectId, conversationId, initialTitle, onClose, onSubmitted, productName = DEFAULT_PRODUCT_NAME, appVersion, }) {
|
|
18
|
+
const cm = getClassMap();
|
|
19
|
+
const http = useHttpClient();
|
|
20
|
+
const isLight = useThemeMode() === 'light';
|
|
21
|
+
const [form, setForm] = useState({
|
|
22
|
+
...EMPTY_REPORT_FORM,
|
|
23
|
+
title: initialTitle ?? '',
|
|
24
|
+
});
|
|
25
|
+
const [submitting, setSubmitting] = useState(false);
|
|
26
|
+
const [error, setError] = useState(null);
|
|
27
|
+
// Escape closes the modal.
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const handler = (e) => {
|
|
30
|
+
if (e.key === 'Escape')
|
|
31
|
+
onClose();
|
|
32
|
+
};
|
|
33
|
+
window.addEventListener('keydown', handler);
|
|
34
|
+
return () => window.removeEventListener('keydown', handler);
|
|
35
|
+
}, [onClose]);
|
|
36
|
+
const isNarrow = useNarrowViewport();
|
|
37
|
+
const isCoarse = useCoarsePointer();
|
|
38
|
+
const valid = isReportFormValid(form);
|
|
39
|
+
const border = isLight ? 'rgba(0,0,0,0.12)' : 'rgba(255,255,255,0.12)';
|
|
40
|
+
const fieldStyle = {
|
|
41
|
+
width: '100%',
|
|
42
|
+
padding: '6px 8px',
|
|
43
|
+
borderRadius: 4,
|
|
44
|
+
border: `1px solid ${border}`,
|
|
45
|
+
background: 'transparent',
|
|
46
|
+
color: 'inherit',
|
|
47
|
+
outline: 'none',
|
|
48
|
+
// ≥16px on phones/touch so iOS Safari doesn't zoom the page on focus.
|
|
49
|
+
...(isNarrow || isCoarse ? { fontSize: 16 } : {}),
|
|
50
|
+
};
|
|
51
|
+
const handleSubmit = useCallback(async () => {
|
|
52
|
+
if (!isReportFormValid(form) || submitting)
|
|
53
|
+
return;
|
|
54
|
+
setSubmitting(true);
|
|
55
|
+
setError(null);
|
|
56
|
+
try {
|
|
57
|
+
const url = conversationId
|
|
58
|
+
? `/projects/${projectId}/report?conversationId=${encodeURIComponent(conversationId)}`
|
|
59
|
+
: `/projects/${projectId}/report`;
|
|
60
|
+
const clientInfo = collectClientInfo({
|
|
61
|
+
appVersion,
|
|
62
|
+
theme: isLight ? 'light' : 'dark',
|
|
63
|
+
});
|
|
64
|
+
const res = await http.post(url, buildReportPayload(form, clientInfo));
|
|
65
|
+
onSubmitted(res.data);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
logger.warn('Failed to submit bug report', { error: err });
|
|
69
|
+
setError(t('ide.chat.report.error', undefined, {
|
|
70
|
+
defaultValue: 'Could not submit your report. Please try again.',
|
|
71
|
+
}));
|
|
72
|
+
setSubmitting(false);
|
|
73
|
+
}
|
|
74
|
+
}, [form, submitting, conversationId, projectId, http, onSubmitted, appVersion, isLight]);
|
|
75
|
+
return (_jsx("div", { "data-mol-id": "report-modal-backdrop", onClick: onClose, style: {
|
|
76
|
+
position: 'fixed',
|
|
77
|
+
inset: 0,
|
|
78
|
+
// Dialog layer (1300) — must paint above ambient status chrome like the
|
|
79
|
+
// host's HealthBanner (z 1100), which otherwise overlaps this on phones.
|
|
80
|
+
zIndex: 1300,
|
|
81
|
+
display: 'flex',
|
|
82
|
+
alignItems: 'center',
|
|
83
|
+
justifyContent: 'center',
|
|
84
|
+
background: 'rgba(0,0,0,0.45)',
|
|
85
|
+
padding: 16,
|
|
86
|
+
}, children: _jsxs("div", { "data-mol-id": "report-modal", role: "dialog", "aria-modal": "true", "aria-label": t('ide.chat.report.heading', undefined, { defaultValue: 'Report a bug' }), onClick: (e) => e.stopPropagation(), className: cm.cn(cm.surface, cm.borderAll, cm.textSize('sm')), style: {
|
|
87
|
+
width: '100%',
|
|
88
|
+
maxWidth: 460,
|
|
89
|
+
maxHeight: '85vh',
|
|
90
|
+
overflowY: 'auto',
|
|
91
|
+
borderRadius: 8,
|
|
92
|
+
padding: 16,
|
|
93
|
+
boxShadow: '0 10px 40px rgba(0,0,0,0.35)',
|
|
94
|
+
}, children: [_jsx("div", { className: cm.cn(cm.fontWeight('medium'), cm.textSize('lg')), style: { marginBottom: 4 }, children: t('ide.chat.report.heading', undefined, { defaultValue: 'Report a bug' }) }), _jsx("div", { className: cm.textMuted, style: { marginBottom: 12, lineHeight: 1.4 }, children: t('ide.chat.report.subheading', { productName }, {
|
|
95
|
+
defaultValue: 'Tell us what went wrong or what you’d like to see. Goes to {{productName}}’s team.',
|
|
96
|
+
}) }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 10 }, children: [_jsxs("label", { style: { display: 'flex', flexDirection: 'column', gap: 4 }, children: [_jsx("span", { className: cm.fontWeight('medium'), children: t('ide.chat.report.titleLabel', undefined, { defaultValue: 'Title' }) }), _jsx("input", { value: form.title, "data-mol-id": "report-title", autoFocus: true, onChange: (e) => setForm((f) => ({ ...f, title: e.target.value })), placeholder: t('ide.chat.report.titlePlaceholder', undefined, {
|
|
97
|
+
defaultValue: 'Brief summary',
|
|
98
|
+
}), className: cm.textSize('sm'), style: fieldStyle })] }), _jsxs("label", { style: { display: 'flex', flexDirection: 'column', gap: 4 }, children: [_jsx("span", { className: cm.fontWeight('medium'), children: t('ide.chat.report.descriptionLabel', undefined, { defaultValue: 'Description' }) }), _jsx("textarea", { value: form.description, "data-mol-id": "report-description", onChange: (e) => setForm((f) => ({ ...f, description: e.target.value })), placeholder: t('ide.chat.report.descriptionPlaceholder', undefined, {
|
|
99
|
+
defaultValue: 'What happened? What did you expect?',
|
|
100
|
+
}), rows: 4, className: cm.textSize('sm'), style: { ...fieldStyle, resize: 'vertical' } })] }), _jsxs("label", { style: { display: 'flex', flexDirection: 'column', gap: 4 }, children: [_jsx("span", { className: cm.fontWeight('medium'), children: t('ide.chat.report.stepsLabel', undefined, {
|
|
101
|
+
defaultValue: 'Steps to reproduce (optional)',
|
|
102
|
+
}) }), _jsx("textarea", { value: form.steps, "data-mol-id": "report-steps", onChange: (e) => setForm((f) => ({ ...f, steps: e.target.value })), placeholder: t('ide.chat.report.stepsPlaceholder', undefined, {
|
|
103
|
+
defaultValue: '1. …\n2. …',
|
|
104
|
+
}), rows: 3, className: cm.textSize('sm'), style: { ...fieldStyle, resize: 'vertical' } })] }), _jsxs("label", { style: { display: 'flex', alignItems: 'center', gap: 8, cursor: 'pointer' }, children: [_jsx("input", { type: "checkbox", "data-mol-id": "report-include-chat", checked: form.includeChat, onChange: (e) => setForm((f) => ({ ...f, includeChat: e.target.checked })) }), _jsx("span", { children: t('ide.chat.report.includeChat', undefined, {
|
|
105
|
+
defaultValue: 'Include recent chat for context',
|
|
106
|
+
}) })] }), error && (_jsx("div", { className: cm.textError, style: { lineHeight: 1.4 }, children: error }))] }), _jsx("div", { "data-mol-id": "report-diagnostics-note", className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { marginTop: 12, lineHeight: 1.4 }, children: t('ide.chat.report.diagnosticsNote', undefined, {
|
|
107
|
+
defaultValue: 'Your app version, browser, and screen size are attached to help us debug.',
|
|
108
|
+
}) }), _jsxs("div", { style: { display: 'flex', justifyContent: 'flex-end', gap: 8, marginTop: 16 }, children: [_jsx("button", { type: "button", "data-mol-id": "report-cancel", onClick: onClose, className: cm.cn(cm.button({ variant: 'ghost', size: 'sm' })), children: t('common.cancel', undefined, { defaultValue: 'Cancel' }) }), _jsx("button", { type: "button", "data-mol-id": "report-submit", onClick: () => void handleSubmit(), disabled: !valid || submitting, className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'sm' })), style: { opacity: !valid || submitting ? 0.6 : 1 }, children: submitting
|
|
109
|
+
? t('ide.chat.report.submitting', undefined, { defaultValue: 'Submitting…' })
|
|
110
|
+
: t('ide.chat.report.submit', undefined, { defaultValue: 'Submit report' }) })] })] }) }));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=ReportModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportModal.js","sourceRoot":"","sources":["../../src/components/ReportModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drag handle for resizing panels.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { JSX } from 'react';
|
|
7
|
+
import type { ResizeHandleProps } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Draggable handle for resizing adjacent panels. Uses Pointer Events so it works
|
|
10
|
+
* with mouse, touch, and pen (an iPad drag resizes just like a desktop drag); a
|
|
11
|
+
* wide invisible grab zone wraps a thin visible line that brightens to the
|
|
12
|
+
* primary color on hover/drag for a clear affordance. Arrow keys nudge the split
|
|
13
|
+
* for keyboard users.
|
|
14
|
+
* @param props - Component props.
|
|
15
|
+
* @returns The rendered resize handle element.
|
|
16
|
+
*/
|
|
17
|
+
export declare function ResizeHandle({ onResize, direction, className, }: ResizeHandleProps): JSX.Element;
|
|
18
|
+
export declare namespace ResizeHandle {
|
|
19
|
+
var displayName: string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ResizeHandle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizeHandle.d.ts","sourceRoot":"","sources":["../../src/components/ResizeHandle.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,GAAG,EAGJ,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAcpD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAwB,EACxB,SAAS,GACV,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CA4HjC;yBAhIe,YAAY"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useRef, useState } from 'react';
|
|
3
|
+
import { t } from '@molecule/app-i18n';
|
|
4
|
+
import { getClassMap } from '@molecule/app-ui';
|
|
5
|
+
/**
|
|
6
|
+
* Width (px) of the invisible grab zone — far wider than the visible line so it
|
|
7
|
+
* is a comfortable target for both a mouse and a finger (WCAG 2.5.5).
|
|
8
|
+
*/
|
|
9
|
+
const GRAB_PX = 11;
|
|
10
|
+
/** Visible line thickness (px) at rest. */
|
|
11
|
+
const LINE_PX = 1;
|
|
12
|
+
/** Visible line thickness (px) while hovered or actively dragging. */
|
|
13
|
+
const LINE_ACTIVE_PX = 3;
|
|
14
|
+
/** Pixels moved per arrow-key press for keyboard resize. */
|
|
15
|
+
const KEYBOARD_STEP_PX = 24;
|
|
16
|
+
/**
|
|
17
|
+
* Draggable handle for resizing adjacent panels. Uses Pointer Events so it works
|
|
18
|
+
* with mouse, touch, and pen (an iPad drag resizes just like a desktop drag); a
|
|
19
|
+
* wide invisible grab zone wraps a thin visible line that brightens to the
|
|
20
|
+
* primary color on hover/drag for a clear affordance. Arrow keys nudge the split
|
|
21
|
+
* for keyboard users.
|
|
22
|
+
* @param props - Component props.
|
|
23
|
+
* @returns The rendered resize handle element.
|
|
24
|
+
*/
|
|
25
|
+
export function ResizeHandle({ onResize, direction = 'horizontal', className, }) {
|
|
26
|
+
const cm = getClassMap();
|
|
27
|
+
const startRef = useRef(0);
|
|
28
|
+
const draggingRef = useRef(false);
|
|
29
|
+
const [dragging, setDragging] = useState(false);
|
|
30
|
+
const [hovered, setHovered] = useState(false);
|
|
31
|
+
const isHorizontal = direction === 'horizontal';
|
|
32
|
+
const onPointerDown = useCallback((e) => {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
draggingRef.current = true;
|
|
35
|
+
setDragging(true);
|
|
36
|
+
startRef.current = isHorizontal ? e.clientX : e.clientY;
|
|
37
|
+
// Capture the pointer so move/up keep firing on THIS element even when the
|
|
38
|
+
// cursor leaves it mid-drag — the touch-safe replacement for global
|
|
39
|
+
// document mousemove/mouseup listeners.
|
|
40
|
+
e.currentTarget.setPointerCapture(e.pointerId);
|
|
41
|
+
document.body.style.cursor = isHorizontal ? 'col-resize' : 'row-resize';
|
|
42
|
+
document.body.style.userSelect = 'none';
|
|
43
|
+
}, [isHorizontal]);
|
|
44
|
+
const onPointerMove = useCallback((e) => {
|
|
45
|
+
if (!draggingRef.current)
|
|
46
|
+
return;
|
|
47
|
+
const current = isHorizontal ? e.clientX : e.clientY;
|
|
48
|
+
const delta = current - startRef.current;
|
|
49
|
+
if (delta === 0)
|
|
50
|
+
return;
|
|
51
|
+
startRef.current = current;
|
|
52
|
+
onResize(delta);
|
|
53
|
+
}, [isHorizontal, onResize]);
|
|
54
|
+
const endDrag = useCallback((e) => {
|
|
55
|
+
if (!draggingRef.current)
|
|
56
|
+
return;
|
|
57
|
+
draggingRef.current = false;
|
|
58
|
+
setDragging(false);
|
|
59
|
+
if (e.currentTarget.hasPointerCapture(e.pointerId)) {
|
|
60
|
+
e.currentTarget.releasePointerCapture(e.pointerId);
|
|
61
|
+
}
|
|
62
|
+
document.body.style.cursor = '';
|
|
63
|
+
document.body.style.userSelect = '';
|
|
64
|
+
}, []);
|
|
65
|
+
const onKeyDown = useCallback((e) => {
|
|
66
|
+
const decreaseKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';
|
|
67
|
+
const increaseKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';
|
|
68
|
+
if (e.key === decreaseKey) {
|
|
69
|
+
e.preventDefault();
|
|
70
|
+
onResize(-KEYBOARD_STEP_PX);
|
|
71
|
+
}
|
|
72
|
+
else if (e.key === increaseKey) {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
onResize(KEYBOARD_STEP_PX);
|
|
75
|
+
}
|
|
76
|
+
}, [isHorizontal, onResize]);
|
|
77
|
+
const highlighted = dragging || hovered;
|
|
78
|
+
const lineThickness = highlighted ? LINE_ACTIVE_PX : LINE_PX;
|
|
79
|
+
return (_jsx("div", { "data-mol-id": "workspace-resize-handle", role: "separator", "aria-orientation": isHorizontal ? 'vertical' : 'horizontal', "aria-label": t('ide.resizeHandle.label', undefined, { defaultValue: 'Resize panels' }), tabIndex: 0, className: cm.cn(cm.flex({ direction: 'col', align: 'center', justify: 'center' }), cm.shrink0, className), style: {
|
|
80
|
+
cursor: isHorizontal ? 'col-resize' : 'row-resize',
|
|
81
|
+
// Stop the browser claiming the gesture for scroll/zoom on touch devices.
|
|
82
|
+
touchAction: 'none',
|
|
83
|
+
// Keep the comfortable GRAB_PX touch target, but collapse its LAYOUT
|
|
84
|
+
// footprint to the 1px line with symmetric negative margins, so the divider
|
|
85
|
+
// reads as a single flush line between the panels (no gap) while the extra
|
|
86
|
+
// grab width overflows onto the panel edges. Raised above the panes so that
|
|
87
|
+
// overflow stays grabbable.
|
|
88
|
+
position: 'relative',
|
|
89
|
+
zIndex: 1,
|
|
90
|
+
width: isHorizontal ? GRAB_PX : '100%',
|
|
91
|
+
height: isHorizontal ? '100%' : GRAB_PX,
|
|
92
|
+
...(isHorizontal
|
|
93
|
+
? {
|
|
94
|
+
marginLeft: -(GRAB_PX - LINE_PX) / 2,
|
|
95
|
+
marginRight: -(GRAB_PX - LINE_PX) / 2,
|
|
96
|
+
}
|
|
97
|
+
: {
|
|
98
|
+
marginTop: -(GRAB_PX - LINE_PX) / 2,
|
|
99
|
+
marginBottom: -(GRAB_PX - LINE_PX) / 2,
|
|
100
|
+
}),
|
|
101
|
+
}, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: endDrag, onPointerCancel: endDrag, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), onKeyDown: onKeyDown, children: _jsx("div", { "aria-hidden": "true", className: cm.cn(highlighted ? cm.bgPrimary : cm.bgBorder), style: {
|
|
102
|
+
width: isHorizontal ? lineThickness : '100%',
|
|
103
|
+
height: isHorizontal ? '100%' : lineThickness,
|
|
104
|
+
borderRadius: 9999,
|
|
105
|
+
transition: 'background-color 150ms ease, width 150ms ease, height 150ms ease',
|
|
106
|
+
} }) }));
|
|
107
|
+
}
|
|
108
|
+
ResizeHandle.displayName = 'ResizeHandle';
|
|
109
|
+
//# sourceMappingURL=ResizeHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizeHandle.js","sourceRoot":"","sources":["../../src/components/ResizeHandle.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/scripts` browser.
|
|
3
|
+
*
|
|
4
|
+
* Renders an in-timeline card listing the project's saved scripts (shell files
|
|
5
|
+
* under `.agents/scripts/` with `name`/`description`/`createdAt` frontmatter),
|
|
6
|
+
* loaded via `GET /projects/:id/scripts`. A search box filters by name or
|
|
7
|
+
* description (seeded from `/scripts <query>`), each row has a "Run" action that
|
|
8
|
+
* `POST`s to the run endpoint and shows the captured output inline, and a
|
|
9
|
+
* collapsible "New script" creator `POST`s a script the user (or the agent) just
|
|
10
|
+
* authored back to `POST /projects/:id/scripts`.
|
|
11
|
+
*
|
|
12
|
+
* Styling uses `getClassMap()` (`cm.*`); the only inline styles are layout the
|
|
13
|
+
* ClassMap can't express. All user-facing text goes through `t()`.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import type { JSX } from 'react';
|
|
18
|
+
/**
|
|
19
|
+
* The scripts browser shown by `/scripts`.
|
|
20
|
+
*
|
|
21
|
+
* @param props - Component props.
|
|
22
|
+
* (which already provides the `cm.surface` background + border + a header bar with the title and
|
|
23
|
+
* ✕). The card then renders transparent — dropping its own `cm.surfaceSecondary` fill, outer
|
|
24
|
+
* margin, border-radius, and its redundant "Scripts" heading — so the overlay reads as ONE clean
|
|
25
|
+
* surface (like the /sounds popup) instead of a nested gray card. The inner padding is kept so
|
|
26
|
+
* content isn't flush to the edge. When `false`/omitted (the inline-timeline render path) the
|
|
27
|
+
* card keeps its full card chrome unchanged.
|
|
28
|
+
* @returns The rendered scripts card.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ScriptsCard({ projectId, initialQuery, isLight, agentName, embedded, }: {
|
|
31
|
+
projectId: string;
|
|
32
|
+
initialQuery: string;
|
|
33
|
+
isLight: boolean;
|
|
34
|
+
agentName?: string;
|
|
35
|
+
embedded?: boolean;
|
|
36
|
+
}): JSX.Element;
|
|
37
|
+
//# sourceMappingURL=ScriptsCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptsCard.d.ts","sourceRoot":"","sources":["../../src/components/ScriptsCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AA0BhC;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,YAAY,EACZ,OAAO,EACP,SAA8B,EAC9B,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,GAAG,CAAC,OAAO,CA4Wd"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { t } from '@molecule/app-i18n';
|
|
4
|
+
import { getLogger } from '@molecule/app-logger';
|
|
5
|
+
import { DEFAULT_AGENT_NAME, useHttpClient } from '@molecule/app-react';
|
|
6
|
+
import { getClassMap } from '@molecule/app-ui';
|
|
7
|
+
import { chatCardStyle } from './chat-card-style.js';
|
|
8
|
+
import { buildSaveScriptPayload, filterScripts, formatRunOutput, isSaveScriptValid, runSucceeded, } from './chat-scripts-utilities.js';
|
|
9
|
+
const logger = getLogger('scripts-card');
|
|
10
|
+
/**
|
|
11
|
+
* The scripts browser shown by `/scripts`.
|
|
12
|
+
*
|
|
13
|
+
* @param props - Component props.
|
|
14
|
+
* (which already provides the `cm.surface` background + border + a header bar with the title and
|
|
15
|
+
* ✕). The card then renders transparent — dropping its own `cm.surfaceSecondary` fill, outer
|
|
16
|
+
* margin, border-radius, and its redundant "Scripts" heading — so the overlay reads as ONE clean
|
|
17
|
+
* surface (like the /sounds popup) instead of a nested gray card. The inner padding is kept so
|
|
18
|
+
* content isn't flush to the edge. When `false`/omitted (the inline-timeline render path) the
|
|
19
|
+
* card keeps its full card chrome unchanged.
|
|
20
|
+
* @returns The rendered scripts card.
|
|
21
|
+
*/
|
|
22
|
+
export function ScriptsCard({ projectId, initialQuery, isLight, agentName = DEFAULT_AGENT_NAME, embedded, }) {
|
|
23
|
+
const cm = getClassMap();
|
|
24
|
+
const http = useHttpClient();
|
|
25
|
+
const [status, setStatus] = useState('loading');
|
|
26
|
+
const [scripts, setScripts] = useState([]);
|
|
27
|
+
const [query, setQuery] = useState(initialQuery);
|
|
28
|
+
const [runStates, setRunStates] = useState({});
|
|
29
|
+
const [creating, setCreating] = useState(false);
|
|
30
|
+
const [newName, setNewName] = useState('');
|
|
31
|
+
const [newDescription, setNewDescription] = useState('');
|
|
32
|
+
const [newBody, setNewBody] = useState('');
|
|
33
|
+
const [saving, setSaving] = useState(false);
|
|
34
|
+
const [saveError, setSaveError] = useState(null);
|
|
35
|
+
const loadScripts = useCallback(async () => {
|
|
36
|
+
setStatus('loading');
|
|
37
|
+
try {
|
|
38
|
+
const res = await http.get(`/projects/${projectId}/scripts`);
|
|
39
|
+
setScripts(res.data.scripts ?? []);
|
|
40
|
+
setStatus('ready');
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
logger.warn('Failed to load project scripts', { error });
|
|
44
|
+
setStatus('error');
|
|
45
|
+
}
|
|
46
|
+
}, [http, projectId]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
void loadScripts();
|
|
49
|
+
}, [loadScripts]);
|
|
50
|
+
const handleRun = useCallback(async (name) => {
|
|
51
|
+
setRunStates((prev) => ({ ...prev, [name]: 'running' }));
|
|
52
|
+
try {
|
|
53
|
+
const res = await http.post(`/projects/${projectId}/scripts/${encodeURIComponent(name)}/run`);
|
|
54
|
+
setRunStates((prev) => ({ ...prev, [name]: res.data }));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.warn('Failed to run project script', { error, name });
|
|
58
|
+
setRunStates((prev) => ({
|
|
59
|
+
...prev,
|
|
60
|
+
[name]: { stdout: '', stderr: '', exitCode: 1 },
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
}, [http, projectId]);
|
|
64
|
+
const handleSave = useCallback(async () => {
|
|
65
|
+
const payload = buildSaveScriptPayload({
|
|
66
|
+
name: newName,
|
|
67
|
+
description: newDescription,
|
|
68
|
+
body: newBody,
|
|
69
|
+
});
|
|
70
|
+
if (!isSaveScriptValid(payload)) {
|
|
71
|
+
setSaveError(t('ide.chat.scripts.invalid', undefined, {
|
|
72
|
+
defaultValue: 'A script needs a name and a non-empty body.',
|
|
73
|
+
}));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
setSaving(true);
|
|
77
|
+
setSaveError(null);
|
|
78
|
+
try {
|
|
79
|
+
await http.post(`/projects/${projectId}/scripts`, payload);
|
|
80
|
+
setNewName('');
|
|
81
|
+
setNewDescription('');
|
|
82
|
+
setNewBody('');
|
|
83
|
+
setCreating(false);
|
|
84
|
+
await loadScripts();
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
logger.warn('Failed to save project script', { error });
|
|
88
|
+
setSaveError(t('ide.chat.scripts.saveError', undefined, {
|
|
89
|
+
defaultValue: 'Could not save the script. Please try again.',
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
setSaving(false);
|
|
94
|
+
}
|
|
95
|
+
}, [http, projectId, newName, newDescription, newBody, loadScripts]);
|
|
96
|
+
const filtered = useMemo(() => filterScripts(scripts, query), [scripts, query]);
|
|
97
|
+
const rowBorder = isLight ? 'rgba(0,0,0,0.08)' : 'rgba(255,255,255,0.08)';
|
|
98
|
+
// A subtle neutral inset so the text inputs/textarea READ as fields on the
|
|
99
|
+
// clean overlay surface (not just a faint border). Theme-aware, matching the
|
|
100
|
+
// SettingsCard toggle inset; the SAME value is used in SkillsCard's fields.
|
|
101
|
+
const fieldBg = isLight ? 'rgba(0,0,0,0.05)' : 'rgba(255,255,255,0.06)';
|
|
102
|
+
const fieldStyle = {
|
|
103
|
+
width: '100%',
|
|
104
|
+
padding: '4px 6px',
|
|
105
|
+
borderRadius: 4,
|
|
106
|
+
border: `1px solid ${rowBorder}`,
|
|
107
|
+
background: fieldBg,
|
|
108
|
+
color: 'inherit',
|
|
109
|
+
outline: 'none',
|
|
110
|
+
};
|
|
111
|
+
return (_jsxs("div", { "data-mol-id": "scripts-card", className: cm.textSize('xs'),
|
|
112
|
+
// Non-embedded (inline in the chat timeline) shares the same card chrome as
|
|
113
|
+
// every other info card: subtle primary tint + a uniform 1px border on all
|
|
114
|
+
// sides (chat-card-style). Embedded in an overlay it stays chrome-less.
|
|
115
|
+
style: embedded ? { padding: '10px 12px' } : { ...chatCardStyle(), marginBottom: 16 }, children: [_jsxs("div", { style: {
|
|
116
|
+
display: 'flex',
|
|
117
|
+
alignItems: 'center',
|
|
118
|
+
justifyContent: 'space-between',
|
|
119
|
+
gap: 8,
|
|
120
|
+
marginBottom: 6,
|
|
121
|
+
}, children: [_jsx("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.chat.scripts.heading', undefined, { defaultValue: 'Scripts' }) })) }), !creating && (_jsx("button", { type: "button", "data-mol-id": "scripts-new-toggle", onClick: () => setCreating(true), className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' })), style: { flexShrink: 0 }, children: t('ide.chat.scripts.new', undefined, { defaultValue: 'New script' }) }))] }), creating && (_jsxs("div", { "data-mol-id": "scripts-creator", className: cm.borderT, style: {
|
|
122
|
+
display: 'flex',
|
|
123
|
+
flexDirection: 'column',
|
|
124
|
+
gap: 6,
|
|
125
|
+
padding: '8px 0',
|
|
126
|
+
marginTop: 6,
|
|
127
|
+
borderColor: rowBorder,
|
|
128
|
+
}, children: [_jsx("input", { value: newName, "data-mol-id": "scripts-new-name", onChange: (e) => setNewName(e.target.value), placeholder: t('ide.chat.scripts.namePlaceholder', undefined, {
|
|
129
|
+
defaultValue: 'Script name (e.g. run-tests)',
|
|
130
|
+
}), className: cm.textSize('xs'), style: fieldStyle }), _jsx("input", { value: newDescription, "data-mol-id": "scripts-new-description", onChange: (e) => setNewDescription(e.target.value), placeholder: t('ide.chat.scripts.descriptionPlaceholder', undefined, {
|
|
131
|
+
defaultValue: 'What does it do?',
|
|
132
|
+
}), className: cm.textSize('xs'), style: fieldStyle }), _jsx("textarea", { value: newBody, "data-mol-id": "scripts-new-body", onChange: (e) => setNewBody(e.target.value), placeholder: t('ide.chat.scripts.bodyPlaceholder', undefined, {
|
|
133
|
+
defaultValue: '#!/bin/sh\nnpm test',
|
|
134
|
+
}), rows: 4, className: cm.textSize('xs'), style: {
|
|
135
|
+
...fieldStyle,
|
|
136
|
+
resize: 'vertical',
|
|
137
|
+
fontFamily: 'var(--mol-font-mono, monospace)',
|
|
138
|
+
} }), saveError && (_jsx("div", { className: cm.textError, style: { lineHeight: 1.4 }, children: saveError })), _jsxs("div", { style: { display: 'flex', justifyContent: 'flex-end', gap: 6 }, children: [_jsx("button", { type: "button", "data-mol-id": "scripts-cancel", onClick: () => setCreating(false), className: cm.cn(cm.button({ variant: 'ghost', size: 'xs' })), style: { flexShrink: 0 }, children: t('ide.chat.scripts.cancelNew', undefined, { defaultValue: 'Cancel' }) }), _jsx("button", { type: "button", "data-mol-id": "scripts-save", onClick: () => void handleSave(), disabled: saving, className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' })), style: { flexShrink: 0, opacity: saving ? 0.6 : 1 }, children: saving
|
|
139
|
+
? t('ide.chat.scripts.saving', undefined, { defaultValue: 'Saving…' })
|
|
140
|
+
: t('ide.chat.scripts.save', undefined, { defaultValue: 'Save script' }) })] })] })), _jsx("input", { value: query, "data-mol-id": "scripts-search", onChange: (e) => setQuery(e.target.value), placeholder: t('ide.chat.scripts.searchPlaceholder', undefined, {
|
|
141
|
+
defaultValue: 'Filter scripts…',
|
|
142
|
+
}), className: cm.textSize('xs'), style: { ...fieldStyle, marginBottom: 6 } }), status === 'loading' && (_jsx("div", { className: cm.textMuted, style: { padding: '6px 0' }, children: t('ide.chat.scripts.loading', undefined, { defaultValue: 'Loading scripts…' }) })), status === 'error' && (_jsx("div", { className: cm.textMuted, style: { padding: '6px 0' }, children: t('ide.chat.scripts.error', undefined, {
|
|
143
|
+
defaultValue: 'Could not load scripts for this project.',
|
|
144
|
+
}) })), status === 'ready' && filtered.length === 0 && (_jsx("div", { className: cm.textMuted, style: { padding: '6px 0' }, children: query.trim()
|
|
145
|
+
? t('ide.chat.scripts.noMatch', { query: query.trim() }, { defaultValue: 'No scripts match “{{query}}”.' })
|
|
146
|
+
: t('ide.chat.scripts.empty', { agentName }, {
|
|
147
|
+
defaultValue: 'No saved scripts yet. Create one above, or ask {{agentName}} to write and save one.',
|
|
148
|
+
}) })), status === 'ready' &&
|
|
149
|
+
filtered.map((script) => {
|
|
150
|
+
const run = runStates[script.name];
|
|
151
|
+
return (_jsxs("div", { "data-mol-id": `script-row-${script.name}`, className: cm.borderT, style: { padding: '6px 0', borderColor: rowBorder }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'flex-start', gap: 8 }, children: [_jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsx("div", { className: cm.fontWeight('medium'), children: script.name }), script.description && (_jsx("div", { className: cm.textMuted, style: { marginTop: 2, lineHeight: 1.4 }, children: script.description }))] }), _jsx("button", { type: "button", "data-mol-id": `script-run-${script.name}`, onClick: () => void handleRun(script.name), disabled: run === 'running',
|
|
152
|
+
// Primary per-row action → solid blue, matching SkillsCard's blue "Load"
|
|
153
|
+
// button (a real button, never plain text on transparent). Self-
|
|
154
|
+
// explanatory, so no delayed touch-blind native `title` (consistent with
|
|
155
|
+
// SkillsCard's row actions which carry no native title — P5-09).
|
|
156
|
+
className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' })), style: { flexShrink: 0, opacity: run === 'running' ? 0.6 : 1 }, children: run === 'running'
|
|
157
|
+
? t('ide.chat.scripts.running', undefined, { defaultValue: 'Running…' })
|
|
158
|
+
: t('ide.chat.scripts.run', undefined, { defaultValue: 'Run' }) })] }), run && run !== 'running' && (_jsxs("div", { "data-mol-id": `script-output-${script.name}`, style: { marginTop: 6 }, children: [_jsx("div", { className: cm.textSize('xs'), style: {
|
|
159
|
+
fontWeight: 600,
|
|
160
|
+
color: runSucceeded(run) ? '#3fb950' : '#f85149',
|
|
161
|
+
marginBottom: 2,
|
|
162
|
+
}, children: runSucceeded(run)
|
|
163
|
+
? t('ide.chat.scripts.exitOk', undefined, { defaultValue: 'Exited 0' })
|
|
164
|
+
: t('ide.chat.scripts.exitFail', { code: run.exitCode }, { defaultValue: 'Exited {{code}}' }) }), formatRunOutput(run) ? (_jsx("pre", { className: cm.textSize('xs'), style: {
|
|
165
|
+
margin: 0,
|
|
166
|
+
padding: '6px 8px',
|
|
167
|
+
borderRadius: 4,
|
|
168
|
+
border: `1px solid ${rowBorder}`,
|
|
169
|
+
whiteSpace: 'pre-wrap',
|
|
170
|
+
wordBreak: 'break-word',
|
|
171
|
+
maxHeight: 200,
|
|
172
|
+
overflow: 'auto',
|
|
173
|
+
fontFamily: 'var(--mol-font-mono, monospace)',
|
|
174
|
+
}, children: formatRunOutput(run) })) : (_jsx("div", { className: cm.textMuted, children: t('ide.chat.scripts.noOutput', undefined, { defaultValue: '(no output)' }) }))] }))] }, script.name));
|
|
175
|
+
})] }));
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=ScriptsCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptsCard.js","sourceRoot":"","sources":["../../src/components/ScriptsCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search-in-files panel — provides grep-like search and replace across the project sandbox.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { JSX } from 'react';
|
|
7
|
+
import type { SearchPanelProps } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Search-in-files panel for the IDE sidebar with find-and-replace support.
|
|
10
|
+
*
|
|
11
|
+
* @param props - Component props.
|
|
12
|
+
* @returns The search panel element.
|
|
13
|
+
*/
|
|
14
|
+
export declare function SearchPanel({ projectId, onResultClick, className, excludedDirs, onExcludedDirsChange, }: SearchPanelProps): JSX.Element;
|
|
15
|
+
export declare namespace SearchPanel {
|
|
16
|
+
var displayName: string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=SearchPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchPanel.d.ts","sourceRoot":"","sources":["../../src/components/SearchPanel.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAShC,OAAO,KAAK,EAAE,gBAAgB,EAAgC,MAAM,aAAa,CAAA;AAkRjF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,aAAa,EACb,SAAS,EACT,YAAY,EACZ,oBAAoB,GACrB,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA4ehC;yBAlfe,WAAW"}
|