@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,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-commit button — the commit bar's green commit action.
|
|
3
|
+
*
|
|
4
|
+
* Renders whenever auto-commit is ENABLED, occupying the commit bar's button
|
|
5
|
+
* slot (the blue manual `/commit` button remains for auto-commit-off projects
|
|
6
|
+
* and for the committing/committed status states). Two looks, one button:
|
|
7
|
+
*
|
|
8
|
+
* - **Idle / quiet phase** — a green "Commit" button. Clicking it commits
|
|
9
|
+
* immediately, exactly like the blue button.
|
|
10
|
+
* - **Final countdown** — once the debounce enters its last
|
|
11
|
+
* `AUTO_COMMIT_COUNTDOWN_VISIBLE_SECONDS` seconds it morphs into the live
|
|
12
|
+
* "Auto-commit in Ns" label (still click-to-commit-now). The countdown is
|
|
13
|
+
* deliberately NOT shown for the whole debounce: a bare "12s" pill told
|
|
14
|
+
* users nothing — the button is always a labeled commit action, and the
|
|
15
|
+
* countdown only takes over right before the auto-commit fires.
|
|
16
|
+
*
|
|
17
|
+
* **Disabled while the agent is working.** Committing mid-turn is unsafe — it
|
|
18
|
+
* would stage a half-written tree and races the chat stream's own writes to the
|
|
19
|
+
* conversation. So while a turn is streaming (or an auto-fix follow-up is
|
|
20
|
+
* pending) the button is shown muted and inert: the commit bar still tracks the
|
|
21
|
+
* changing files live, but the commit itself waits until the turn finishes. In
|
|
22
|
+
* that state it always reads "Commit" (a held countdown is paused, not
|
|
23
|
+
* imminent), never the countdown label.
|
|
24
|
+
*
|
|
25
|
+
* Renders nothing when auto-commit is off (`/autocommit 0`).
|
|
26
|
+
*
|
|
27
|
+
* Visually it is the blue `/commit` button, but green: the same compact
|
|
28
|
+
* translucent-bordered, 6px rounded-rectangle button with the same fontSize /
|
|
29
|
+
* padding / transition, recolored from the theme's success token (no hardcoded
|
|
30
|
+
* green, no pulse animation).
|
|
31
|
+
*
|
|
32
|
+
* @module
|
|
33
|
+
*/
|
|
34
|
+
import type { JSX } from 'react';
|
|
35
|
+
import type { AutoCommitState } from './chat-autocommit-utilities.js';
|
|
36
|
+
/**
|
|
37
|
+
* Renders the green auto-commit button while auto-commit is enabled: a "Commit"
|
|
38
|
+
* button that morphs into the live countdown for the debounce's final seconds.
|
|
39
|
+
* Clicking it commits now. Muted and inert while `disabled` (the agent is
|
|
40
|
+
* working). Renders nothing when auto-commit is off.
|
|
41
|
+
*
|
|
42
|
+
* @param props - Component props.
|
|
43
|
+
* (a turn is streaming / an auto-fix is pending): committing mid-turn is
|
|
44
|
+
* unsafe, so the click is suppressed and the label stays "Commit".
|
|
45
|
+
* in normal flow — e.g. occupying the commit bar's button slot — instead of a
|
|
46
|
+
* floating button absolutely positioned over the input area.
|
|
47
|
+
* @returns The rendered button, or `null` when auto-commit is disabled.
|
|
48
|
+
*/
|
|
49
|
+
export declare function AutoCommitBadge({ state, onCommitNow, disabled, inline, }: {
|
|
50
|
+
state: AutoCommitState;
|
|
51
|
+
onCommitNow: () => void;
|
|
52
|
+
disabled?: boolean;
|
|
53
|
+
inline?: boolean;
|
|
54
|
+
}): JSX.Element | null;
|
|
55
|
+
export declare namespace AutoCommitBadge {
|
|
56
|
+
var displayName: string;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=AutoCommitBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoCommitBadge.d.ts","sourceRoot":"","sources":["../../src/components/AutoCommitBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAIhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAkBrE;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,QAAgB,EAChB,MAAc,GACf,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAiErB;yBA3Ee,eAAe"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { t } from '@molecule/app-i18n';
|
|
3
|
+
import { formatAutoCommitBadge, isAutoCommitCountdownVisible, isAutoCommitEnabled, } from './chat-autocommit-utilities.js';
|
|
4
|
+
/** The theme's success color, with a sensible fallback. */
|
|
5
|
+
const SUCCESS_COLOR = 'var(--mol-color-success, #16a34a)';
|
|
6
|
+
/** A lighter success color for the hover state (mirrors the blue button's brighter hover). */
|
|
7
|
+
const SUCCESS_COLOR_BRIGHT = 'color-mix(in srgb, var(--mol-color-success, #16a34a) 70%, #ffffff)';
|
|
8
|
+
/** The theme's success color (with the same fallback) at a given opacity, via color-mix. */
|
|
9
|
+
function successTint(percent) {
|
|
10
|
+
return `color-mix(in srgb, var(--mol-color-success, #16a34a) ${percent}%, transparent)`;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Renders the green auto-commit button while auto-commit is enabled: a "Commit"
|
|
14
|
+
* button that morphs into the live countdown for the debounce's final seconds.
|
|
15
|
+
* Clicking it commits now. Muted and inert while `disabled` (the agent is
|
|
16
|
+
* working). Renders nothing when auto-commit is off.
|
|
17
|
+
*
|
|
18
|
+
* @param props - Component props.
|
|
19
|
+
* (a turn is streaming / an auto-fix is pending): committing mid-turn is
|
|
20
|
+
* unsafe, so the click is suppressed and the label stays "Commit".
|
|
21
|
+
* in normal flow — e.g. occupying the commit bar's button slot — instead of a
|
|
22
|
+
* floating button absolutely positioned over the input area.
|
|
23
|
+
* @returns The rendered button, or `null` when auto-commit is disabled.
|
|
24
|
+
*/
|
|
25
|
+
export function AutoCommitBadge({ state, onCommitNow, disabled = false, inline = false, }) {
|
|
26
|
+
if (!isAutoCommitEnabled(state))
|
|
27
|
+
return null;
|
|
28
|
+
// A held countdown is paused, not imminent — never show the countdown label
|
|
29
|
+
// while disabled, only the plain "Commit".
|
|
30
|
+
const showCountdown = !disabled && isAutoCommitCountdownVisible(state);
|
|
31
|
+
const commitLabel = t('ide.chat.commit', undefined, { defaultValue: 'Commit' });
|
|
32
|
+
const countdownLabel = t('ide.chat.autoCommit.badge', { countdown: formatAutoCommitBadge(state) }, { defaultValue: 'Auto-commit in {{countdown}}' });
|
|
33
|
+
return (_jsx("button", { type: "button", "data-mol-id": "chat-autocommit-badge", disabled: disabled, onClick: (e) => {
|
|
34
|
+
// Stop the click from bubbling to the commit-bar header's toggle
|
|
35
|
+
// (setCommitBarExpanded) — clicking the button should only commit,
|
|
36
|
+
// not expand/collapse the uncommitted-files bar (P5-06).
|
|
37
|
+
// Mirrors the manual commit button, which already stops propagation.
|
|
38
|
+
e.stopPropagation();
|
|
39
|
+
if (disabled)
|
|
40
|
+
return;
|
|
41
|
+
onCommitNow();
|
|
42
|
+
}, "aria-label": showCountdown ? `${countdownLabel} — ${commitLabel}` : commitLabel, title: showCountdown ? commitLabel : undefined, onMouseEnter: (e) => {
|
|
43
|
+
if (disabled)
|
|
44
|
+
return;
|
|
45
|
+
e.currentTarget.style.background = successTint(30);
|
|
46
|
+
e.currentTarget.style.borderColor = successTint(65);
|
|
47
|
+
e.currentTarget.style.color = SUCCESS_COLOR_BRIGHT;
|
|
48
|
+
}, onMouseLeave: (e) => {
|
|
49
|
+
if (disabled)
|
|
50
|
+
return;
|
|
51
|
+
e.currentTarget.style.background = successTint(20);
|
|
52
|
+
e.currentTarget.style.borderColor = successTint(40);
|
|
53
|
+
e.currentTarget.style.color = SUCCESS_COLOR;
|
|
54
|
+
}, style: {
|
|
55
|
+
// Inline (commit-bar slot) sits in normal flow; the default floats over
|
|
56
|
+
// the input's top-right so it never blocks typing.
|
|
57
|
+
...(inline
|
|
58
|
+
? { position: 'relative' }
|
|
59
|
+
: { position: 'absolute', top: -10, right: 8, zIndex: 50 }),
|
|
60
|
+
// The blue /commit button, but green (theme success token, not literal green).
|
|
61
|
+
display: 'inline-flex',
|
|
62
|
+
alignItems: 'center',
|
|
63
|
+
justifyContent: 'center',
|
|
64
|
+
fontSize: 12,
|
|
65
|
+
padding: '4px 10px',
|
|
66
|
+
borderRadius: 6,
|
|
67
|
+
border: `1px solid ${successTint(40)}`,
|
|
68
|
+
background: successTint(20),
|
|
69
|
+
color: SUCCESS_COLOR,
|
|
70
|
+
// Muted + inert while the agent is working; committing mid-turn is unsafe.
|
|
71
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
72
|
+
opacity: disabled ? 0.5 : 1,
|
|
73
|
+
fontVariantNumeric: 'tabular-nums',
|
|
74
|
+
transition: 'background 100ms, border-color 100ms, color 100ms',
|
|
75
|
+
}, children: showCountdown ? countdownLabel : commitLabel }));
|
|
76
|
+
}
|
|
77
|
+
AutoCommitBadge.displayName = 'AutoCommitBadge';
|
|
78
|
+
//# sourceMappingURL=AutoCommitBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoCommitBadge.js","sourceRoot":"","sources":["../../src/components/AutoCommitBadge.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI chat panel — Claude Code-style.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Conversation history dropdown with search + new chat
|
|
6
|
+
* - Markdown rendering for assistant messages
|
|
7
|
+
* - Thinking block with toggle (when backend sends thinking events)
|
|
8
|
+
* - Compact tool-call rows (see ToolCallCard)
|
|
9
|
+
* - @ file mention: type @ to attach a project file as context
|
|
10
|
+
* - / command menu: /clear clears history
|
|
11
|
+
* - Auto-resizing textarea (grows up to 200 px)
|
|
12
|
+
* - Voice dictation via Web Speech API (hidden when unsupported)
|
|
13
|
+
* - Commit button at bottom of messages; commit records appear inline
|
|
14
|
+
* - Escape: close menus or abort the active stream
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import type { JSX } from 'react';
|
|
19
|
+
import type { ChatMessage } from '@molecule/app-ai-chat';
|
|
20
|
+
import type { ChatPanelProps, IdeClientAction } from '../types.js';
|
|
21
|
+
import type { Activity } from './activity-utilities.js';
|
|
22
|
+
import type { ModelMode } from './chat-model-mode-utilities.js';
|
|
23
|
+
interface CommitCard {
|
|
24
|
+
id: string;
|
|
25
|
+
message: string;
|
|
26
|
+
files: string[];
|
|
27
|
+
timestamp: number;
|
|
28
|
+
status: 'running' | 'done' | 'error';
|
|
29
|
+
hash?: string;
|
|
30
|
+
}
|
|
31
|
+
interface ModelPicker {
|
|
32
|
+
selectedIdx: number;
|
|
33
|
+
/**
|
|
34
|
+
* When set, the picker is scoped to a mode: selections persist to that
|
|
35
|
+
* mode's settings field (`planModel` / `executeModel` / `commitModel` /
|
|
36
|
+
* `compactModel`) and the free-tier lock follows the mode's rules. Unset =
|
|
37
|
+
* the legacy single `chatModel` ("Default"). Driven live by the mode
|
|
38
|
+
* dropdown at the top of the picker; the `/model --plan` etc. flags merely
|
|
39
|
+
* preselect it.
|
|
40
|
+
*/
|
|
41
|
+
mode?: ModelMode;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Expandable tool-call-style card displaying a commit with its files.
|
|
45
|
+
* @param props - Component props (see {@link MessageItemProps}).
|
|
46
|
+
* @returns The rendered commit card element.
|
|
47
|
+
*/
|
|
48
|
+
export declare function CommitCardItem({ card, onRevert, }: {
|
|
49
|
+
card: CommitCard;
|
|
50
|
+
onRevert?: (hash: string) => Promise<string | undefined>;
|
|
51
|
+
}): JSX.Element;
|
|
52
|
+
/** Props for the memoized per-message timeline row (see {@link MessageItem}). */
|
|
53
|
+
export interface MessageItemProps {
|
|
54
|
+
msg: ChatMessage;
|
|
55
|
+
editingQueuedId: string | null;
|
|
56
|
+
editingQueuedText: string;
|
|
57
|
+
setEditingQueuedId: React.Dispatch<React.SetStateAction<string | null>>;
|
|
58
|
+
setEditingQueuedText: React.Dispatch<React.SetStateAction<string>>;
|
|
59
|
+
editQueuedMessage: (id: string, content: string) => void;
|
|
60
|
+
deleteQueuedMessage: (id: string) => void;
|
|
61
|
+
sendMessage: (msg: string) => void;
|
|
62
|
+
handleAskUserResponse: (response: string) => void;
|
|
63
|
+
isLoading: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Transient background-phase label (e.g. "Type-checking the API") shown in the
|
|
66
|
+
* streaming spinner in place of the generic rotating messages; null when idle.
|
|
67
|
+
*/
|
|
68
|
+
streamingStatus: string | null;
|
|
69
|
+
/** Navigates the preview to a route path when a `[label](/route)` link in a message is clicked. */
|
|
70
|
+
onNavigatePreview?: (path: string) => void;
|
|
71
|
+
undoneTcIds: Set<string>;
|
|
72
|
+
handleUndoToggle: (tcId: string, undone: boolean) => void;
|
|
73
|
+
onFileOpen?: (path: string) => void;
|
|
74
|
+
onFileDoubleClick?: (path: string) => void;
|
|
75
|
+
onFileDiff?: (path: string, diff?: {
|
|
76
|
+
original: string;
|
|
77
|
+
modified: string;
|
|
78
|
+
}) => void;
|
|
79
|
+
handleFileRevert: (path: string, content: string) => Promise<void>;
|
|
80
|
+
setInputAndCursorEnd: (val: string) => void;
|
|
81
|
+
setModelPicker: React.Dispatch<React.SetStateAction<ModelPicker | null>>;
|
|
82
|
+
/** Signed-in user's avatar shown beside their own messages (SOC1); icon fallback when absent/unsafe. */
|
|
83
|
+
userAvatar?: string | null;
|
|
84
|
+
/** When set, the user avatar becomes clickable and fires this to open the user's profile (C5). */
|
|
85
|
+
onAvatarClick?: () => void;
|
|
86
|
+
/** Discovery phase — gives consecutive question/answer cards roomier, uncollapsed spacing (B3). */
|
|
87
|
+
discovery?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Host-supplied upgrade/sign-in CTA builder — used to give the in-message
|
|
90
|
+
* resource-limit (OOM) banner its sign-in/upgrade buttons. See
|
|
91
|
+
* {@link ChatPanelProps.buildUpgradeCta}.
|
|
92
|
+
*/
|
|
93
|
+
buildUpgradeCta?: ChatPanelProps['buildUpgradeCta'];
|
|
94
|
+
}
|
|
95
|
+
/** Props for the inner chat surface (timeline + composer), remounted per conversation. */
|
|
96
|
+
export interface ChatInnerProps {
|
|
97
|
+
projectId: string;
|
|
98
|
+
endpoint: string;
|
|
99
|
+
initialMessage?: string;
|
|
100
|
+
onInitialMessageSent?: () => void;
|
|
101
|
+
isPro?: boolean;
|
|
102
|
+
/** Host-supplied upgrade/sign-in CTA builder — see {@link ChatPanelProps.buildUpgradeCta}. */
|
|
103
|
+
buildUpgradeCta?: ChatPanelProps['buildUpgradeCta'];
|
|
104
|
+
/** Host-supplied `/help` upgrade section builder — see {@link ChatPanelProps.buildHelpUpgradeSection}. */
|
|
105
|
+
buildHelpUpgradeSection?: ChatPanelProps['buildHelpUpgradeSection'];
|
|
106
|
+
activeFile?: string | null;
|
|
107
|
+
openTabs?: string[];
|
|
108
|
+
onFileOpen?: (path: string, opts?: {
|
|
109
|
+
focus?: boolean;
|
|
110
|
+
}) => void;
|
|
111
|
+
onFileDoubleClick?: (path: string) => void;
|
|
112
|
+
onFileDiff?: (path: string, diff?: {
|
|
113
|
+
original: string;
|
|
114
|
+
modified: string;
|
|
115
|
+
}) => void;
|
|
116
|
+
onFileRevert?: (path: string, content: string) => Promise<void>;
|
|
117
|
+
onFileChange?: (path: string, content: string) => void;
|
|
118
|
+
onFileDeleted?: (path: string) => void;
|
|
119
|
+
onCommit?: () => void;
|
|
120
|
+
onConversationId?: (id: string) => void;
|
|
121
|
+
/** Called when an inline activity card is clicked — should open the Activity panel filtered to this activity. */
|
|
122
|
+
onActivityClick?: (activity: Activity) => void;
|
|
123
|
+
/** Called when a user avatar in the chat timeline is clicked — see {@link ChatPanelProps.onProfileClick}. */
|
|
124
|
+
onProfileClick?: ChatPanelProps['onProfileClick'];
|
|
125
|
+
/** Called on the `ready_to_build` stream event — discovery is done; boot the sandbox. */
|
|
126
|
+
onReadyToBuild?: () => void;
|
|
127
|
+
/** True after the plan streams but while the sandbox is still booting (pre-kickoff) — drives the chat "waiting for environment" indicator. */
|
|
128
|
+
awaitingSandboxBoot?: boolean;
|
|
129
|
+
/** Called on the `client_action` stream event — the agent wants a preview reload/navigate or a file opened. */
|
|
130
|
+
onClientAction?: (action: IdeClientAction) => void;
|
|
131
|
+
/** Called on each stream done/error — host keeps the boot view up until the during-boot plan stream completes. */
|
|
132
|
+
onTurnComplete?: () => void;
|
|
133
|
+
/** Called when the chat's loading state changes — see {@link ChatPanelProps.onLoadingChange}. */
|
|
134
|
+
onLoadingChange?: (loading: boolean) => void;
|
|
135
|
+
/** Navigates the preview to a route path on a chat link click — see {@link ChatPanelProps.onNavigatePreview}. */
|
|
136
|
+
onNavigatePreview?: (path: string) => void;
|
|
137
|
+
/** Registers the broadcast-chat-event handler with the host — see {@link ChatPanelProps.onRegisterPushHandler}. */
|
|
138
|
+
onRegisterPushHandler?: ChatPanelProps['onRegisterPushHandler'];
|
|
139
|
+
/** Changing this value submits the current input draft (used by the prompt→chat morph). */
|
|
140
|
+
autoSubmitSignal?: number;
|
|
141
|
+
/** Changing this value opens the `/settings` view (used by the header gear button). */
|
|
142
|
+
openSettingsSignal?: number;
|
|
143
|
+
/** Shows a "manage your own models" row in the `/model` picker — see {@link ChatPanelProps.onManageCustomModels}. */
|
|
144
|
+
onManageCustomModels?: () => void;
|
|
145
|
+
/** Changing this value opens the `/report` bug-report modal (used by the header bug button). */
|
|
146
|
+
openReportSignal?: number;
|
|
147
|
+
/** Changing this value opens the `/share` link modal (used by the header share button). */
|
|
148
|
+
openShareSignal?: number;
|
|
149
|
+
/** Seeds the input with this text on mount (prompt→chat morph). */
|
|
150
|
+
initialInputValue?: string;
|
|
151
|
+
pendingMessage?: string;
|
|
152
|
+
pendingMessageKey?: number;
|
|
153
|
+
/** When true, the pending message is sent on the user's behalf (e.g. the post-boot build kickoff) and is NOT rendered as a user bubble — phase cards convey what's happening instead. */
|
|
154
|
+
pendingMessageSuppressUser?: boolean;
|
|
155
|
+
/** When true, the pending message was directly requested by the user (a "Fix with AI" button) — it bypasses (and clears) a prior user Stop. See {@link ChatPanelProps.pendingMessageUserInitiated}. */
|
|
156
|
+
pendingMessageUserInitiated?: boolean;
|
|
157
|
+
/** File path edited by the user in the editor — triggers auto-deletion of queued autofix messages referencing this file. */
|
|
158
|
+
userEditedFile?: string;
|
|
159
|
+
userEditedFileKey?: number;
|
|
160
|
+
gitStatusTick?: number;
|
|
161
|
+
/** True during the initial discovery phase — suppresses the onboarding/idle tip cards so no blue tip shows during discovery (mvp B1). */
|
|
162
|
+
discovery?: boolean;
|
|
163
|
+
/** Signed-in user's avatar shown beside their own messages (SOC1) — see {@link ChatPanelProps.userAvatar}. */
|
|
164
|
+
userAvatar?: string | null;
|
|
165
|
+
/** Display name of the AI coding agent — see {@link ChatPanelProps.agentName}. */
|
|
166
|
+
agentName?: string;
|
|
167
|
+
/** Display name of the host product / IDE — see {@link ChatPanelProps.productName}. */
|
|
168
|
+
productName?: string;
|
|
169
|
+
/** Host app/build version for /version — see {@link ChatPanelProps.version}. */
|
|
170
|
+
version?: string;
|
|
171
|
+
/** Command-menu "Report a problem" URL — see {@link ChatPanelProps.feedbackUrl}. */
|
|
172
|
+
feedbackUrl?: string;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* AI chat panel with conversation history dropdown and Claude Code-style tool display.
|
|
176
|
+
* @param props - Component props (see {@link MessageItemProps}).
|
|
177
|
+
* @returns The rendered chat panel element.
|
|
178
|
+
*/
|
|
179
|
+
export declare function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onProfileClick, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, feedbackUrl, className, }: ChatPanelProps): JSX.Element;
|
|
180
|
+
export declare namespace ChatPanel {
|
|
181
|
+
var displayName: string;
|
|
182
|
+
}
|
|
183
|
+
export {};
|
|
184
|
+
//# sourceMappingURL=ChatPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAY3C,OAAO,KAAK,EAAa,WAAW,EAAmB,MAAM,uBAAuB,CAAA;AAsCpF,OAAO,KAAK,EAAE,cAAc,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AA0BvD,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,gCAAgC,CAAA;AA6KnF,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAgND,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AA46BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACzD,GAAG,GAAG,CAAC,OAAO,CAoPd;AAMD,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAA;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IACvE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClF,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAA;IACxE,wGAAwG;IACxG,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,mGAAmG;IACnG,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;CACpD;AA4qBD,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8FAA8F;IAC9F,eAAe,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IACnD,0GAA0G;IAC1G,uBAAuB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAA;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC/D,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,iHAAiH;IACjH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC9C,6GAA6G;IAC7G,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IACjD,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,8IAA8I;IAC9I,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,+GAA+G;IAC/G,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAClD,kHAAkH;IAClH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,iGAAiG;IACjG,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,iHAAiH;IACjH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,mHAAmH;IACnH,qBAAqB,CAAC,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IAC/D,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qHAAqH;IACrH,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,gGAAgG;IAChG,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,yLAAyL;IACzL,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,uMAAuM;IACvM,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,4HAA4H;IAC5H,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yIAAyI;IACzI,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,8GAA8G;IAC9G,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AA42OD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,wBAA+B,EAC/B,cAAc,EAAE,wBAAwB,EACxC,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,0BAA0B,EAC5C,eAAe,EAAE,qBAAqB,EACtC,gBAAgB,EAAE,sBAAsB,EACxC,kBAAkB,EAAE,wBAAwB,EAC5C,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,SAAS,EACT,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,GACV,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CA2b9B;yBA7ee,SAAS"}
|