@wzrhine/agent 0.0.0-stage → 0.1.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/CHANGELOG.md +23 -0
- package/LICENSE +21 -0
- package/README.md +29 -3
- package/dist/agent.css +15 -0
- package/dist/components/artifact/ArtifactCard.d.ts +56 -0
- package/dist/components/artifact/ArtifactCard.d.ts.map +1 -0
- package/dist/components/artifact/ArtifactCard.js +78 -0
- package/dist/components/artifact/ArtifactCard.js.map +1 -0
- package/dist/components/artifact/FilePreview.d.ts +117 -0
- package/dist/components/artifact/FilePreview.d.ts.map +1 -0
- package/dist/components/artifact/FilePreview.js +207 -0
- package/dist/components/artifact/FilePreview.js.map +1 -0
- package/dist/components/artifact/FilePreviewTabs.d.ts +51 -0
- package/dist/components/artifact/FilePreviewTabs.d.ts.map +1 -0
- package/dist/components/artifact/FilePreviewTabs.js +150 -0
- package/dist/components/artifact/FilePreviewTabs.js.map +1 -0
- package/dist/components/composer/AttachmentList.d.ts +33 -0
- package/dist/components/composer/AttachmentList.d.ts.map +1 -0
- package/dist/components/composer/AttachmentList.js +56 -0
- package/dist/components/composer/AttachmentList.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +113 -0
- package/dist/components/composer/Composer.d.ts.map +1 -0
- package/dist/components/composer/Composer.js +327 -0
- package/dist/components/composer/Composer.js.map +1 -0
- package/dist/components/composer/ComposerInput.d.ts +101 -0
- package/dist/components/composer/ComposerInput.d.ts.map +1 -0
- package/dist/components/composer/ComposerInput.js +301 -0
- package/dist/components/composer/ComposerInput.js.map +1 -0
- package/dist/components/composer/ComposerNotice.d.ts +38 -0
- package/dist/components/composer/ComposerNotice.d.ts.map +1 -0
- package/dist/components/composer/ComposerNotice.js +16 -0
- package/dist/components/composer/ComposerNotice.js.map +1 -0
- package/dist/components/composer/MentionMenu.d.ts +37 -0
- package/dist/components/composer/MentionMenu.d.ts.map +1 -0
- package/dist/components/composer/MentionMenu.js +55 -0
- package/dist/components/composer/MentionMenu.js.map +1 -0
- package/dist/components/composer/MenuPanel.d.ts +49 -0
- package/dist/components/composer/MenuPanel.d.ts.map +1 -0
- package/dist/components/composer/MenuPanel.js +50 -0
- package/dist/components/composer/MenuPanel.js.map +1 -0
- package/dist/components/composer/ModelPicker.d.ts +40 -0
- package/dist/components/composer/ModelPicker.d.ts.map +1 -0
- package/dist/components/composer/ModelPicker.js +115 -0
- package/dist/components/composer/ModelPicker.js.map +1 -0
- package/dist/components/composer/PermissionPicker.d.ts +31 -0
- package/dist/components/composer/PermissionPicker.d.ts.map +1 -0
- package/dist/components/composer/PermissionPicker.js +43 -0
- package/dist/components/composer/PermissionPicker.js.map +1 -0
- package/dist/components/composer/SendStopButton.d.ts +71 -0
- package/dist/components/composer/SendStopButton.d.ts.map +1 -0
- package/dist/components/composer/SendStopButton.js +87 -0
- package/dist/components/composer/SendStopButton.js.map +1 -0
- package/dist/components/composer/SlashCommandMenu.d.ts +33 -0
- package/dist/components/composer/SlashCommandMenu.d.ts.map +1 -0
- package/dist/components/composer/SlashCommandMenu.js +43 -0
- package/dist/components/composer/SlashCommandMenu.js.map +1 -0
- package/dist/components/composer/composer-text.d.ts +10 -0
- package/dist/components/composer/composer-text.d.ts.map +1 -0
- package/dist/components/composer/composer-text.js +26 -0
- package/dist/components/composer/composer-text.js.map +1 -0
- package/dist/components/composer/composer-utils.d.ts +74 -0
- package/dist/components/composer/composer-utils.d.ts.map +1 -0
- package/dist/components/composer/composer-utils.js +133 -0
- package/dist/components/composer/composer-utils.js.map +1 -0
- package/dist/components/conversation/ConversationList.d.ts +88 -0
- package/dist/components/conversation/ConversationList.d.ts.map +1 -0
- package/dist/components/conversation/ConversationList.js +81 -0
- package/dist/components/conversation/ConversationList.js.map +1 -0
- package/dist/components/conversation/ConversationRow.d.ts +66 -0
- package/dist/components/conversation/ConversationRow.d.ts.map +1 -0
- package/dist/components/conversation/ConversationRow.js +65 -0
- package/dist/components/conversation/ConversationRow.js.map +1 -0
- package/dist/components/conversation/conversation-status.d.ts +21 -0
- package/dist/components/conversation/conversation-status.d.ts.map +1 -0
- package/dist/components/conversation/conversation-status.js +33 -0
- package/dist/components/conversation/conversation-status.js.map +1 -0
- package/dist/components/intervention/ApprovalDiff.d.ts +14 -0
- package/dist/components/intervention/ApprovalDiff.d.ts.map +1 -0
- package/dist/components/intervention/ApprovalDiff.js +25 -0
- package/dist/components/intervention/ApprovalDiff.js.map +1 -0
- package/dist/components/intervention/ApprovalPanel.d.ts +57 -0
- package/dist/components/intervention/ApprovalPanel.d.ts.map +1 -0
- package/dist/components/intervention/ApprovalPanel.js +111 -0
- package/dist/components/intervention/ApprovalPanel.js.map +1 -0
- package/dist/components/intervention/ErrorRecoveryNotice.d.ts +28 -0
- package/dist/components/intervention/ErrorRecoveryNotice.d.ts.map +1 -0
- package/dist/components/intervention/ErrorRecoveryNotice.js +30 -0
- package/dist/components/intervention/ErrorRecoveryNotice.js.map +1 -0
- package/dist/components/intervention/GrantList.d.ts +49 -0
- package/dist/components/intervention/GrantList.d.ts.map +1 -0
- package/dist/components/intervention/GrantList.js +58 -0
- package/dist/components/intervention/GrantList.js.map +1 -0
- package/dist/components/intervention/InterventionDock.d.ts +24 -0
- package/dist/components/intervention/InterventionDock.d.ts.map +1 -0
- package/dist/components/intervention/InterventionDock.js +18 -0
- package/dist/components/intervention/InterventionDock.js.map +1 -0
- package/dist/components/intervention/QuestionnaireCard.d.ts +60 -0
- package/dist/components/intervention/QuestionnaireCard.d.ts.map +1 -0
- package/dist/components/intervention/QuestionnaireCard.js +322 -0
- package/dist/components/intervention/QuestionnaireCard.js.map +1 -0
- package/dist/components/intervention/action-lock.d.ts +20 -0
- package/dist/components/intervention/action-lock.d.ts.map +1 -0
- package/dist/components/intervention/action-lock.js +65 -0
- package/dist/components/intervention/action-lock.js.map +1 -0
- package/dist/components/intervention/icons.d.ts +8 -0
- package/dist/components/intervention/icons.d.ts.map +1 -0
- package/dist/components/intervention/icons.js +11 -0
- package/dist/components/intervention/icons.js.map +1 -0
- package/dist/components/intervention/questionnaire-answers.d.ts +29 -0
- package/dist/components/intervention/questionnaire-answers.d.ts.map +1 -0
- package/dist/components/intervention/questionnaire-answers.js +81 -0
- package/dist/components/intervention/questionnaire-answers.js.map +1 -0
- package/dist/components/message/AgentMessage.d.ts +98 -0
- package/dist/components/message/AgentMessage.d.ts.map +1 -0
- package/dist/components/message/AgentMessage.js +94 -0
- package/dist/components/message/AgentMessage.js.map +1 -0
- package/dist/components/message/CitationChip.d.ts +34 -0
- package/dist/components/message/CitationChip.d.ts.map +1 -0
- package/dist/components/message/CitationChip.js +30 -0
- package/dist/components/message/CitationChip.js.map +1 -0
- package/dist/components/message/CodeBlock.d.ts +45 -0
- package/dist/components/message/CodeBlock.d.ts.map +1 -0
- package/dist/components/message/CodeBlock.js +21 -0
- package/dist/components/message/CodeBlock.js.map +1 -0
- package/dist/components/message/JumpToLatest.d.ts +27 -0
- package/dist/components/message/JumpToLatest.d.ts.map +1 -0
- package/dist/components/message/JumpToLatest.js +17 -0
- package/dist/components/message/JumpToLatest.js.map +1 -0
- package/dist/components/message/Markdown.d.ts +21 -0
- package/dist/components/message/Markdown.d.ts.map +1 -0
- package/dist/components/message/Markdown.js +21 -0
- package/dist/components/message/Markdown.js.map +1 -0
- package/dist/components/message/MessageActions.d.ts +63 -0
- package/dist/components/message/MessageActions.d.ts.map +1 -0
- package/dist/components/message/MessageActions.js +83 -0
- package/dist/components/message/MessageActions.js.map +1 -0
- package/dist/components/message/MessageList.d.ts +100 -0
- package/dist/components/message/MessageList.d.ts.map +1 -0
- package/dist/components/message/MessageList.js +266 -0
- package/dist/components/message/MessageList.js.map +1 -0
- package/dist/components/message/MessagePart.d.ts +44 -0
- package/dist/components/message/MessagePart.d.ts.map +1 -0
- package/dist/components/message/MessagePart.js +146 -0
- package/dist/components/message/MessagePart.js.map +1 -0
- package/dist/components/message/RunDetails.d.ts +26 -0
- package/dist/components/message/RunDetails.d.ts.map +1 -0
- package/dist/components/message/RunDetails.js +113 -0
- package/dist/components/message/RunDetails.js.map +1 -0
- package/dist/components/message/SkillUseList.d.ts +22 -0
- package/dist/components/message/SkillUseList.d.ts.map +1 -0
- package/dist/components/message/SkillUseList.js +20 -0
- package/dist/components/message/SkillUseList.js.map +1 -0
- package/dist/components/message/ThinkingBlock.d.ts +44 -0
- package/dist/components/message/ThinkingBlock.d.ts.map +1 -0
- package/dist/components/message/ThinkingBlock.js +34 -0
- package/dist/components/message/ThinkingBlock.js.map +1 -0
- package/dist/components/message/icons.d.ts +14 -0
- package/dist/components/message/icons.d.ts.map +1 -0
- package/dist/components/message/icons.js +16 -0
- package/dist/components/message/icons.js.map +1 -0
- package/dist/components/message/plain-text.d.ts +11 -0
- package/dist/components/message/plain-text.d.ts.map +1 -0
- package/dist/components/message/plain-text.js +58 -0
- package/dist/components/message/plain-text.js.map +1 -0
- package/dist/components/message/renderers.d.ts +30 -0
- package/dist/components/message/renderers.d.ts.map +1 -0
- package/dist/components/message/renderers.js +2 -0
- package/dist/components/message/renderers.js.map +1 -0
- package/dist/components/message/use-copy.d.ts +18 -0
- package/dist/components/message/use-copy.d.ts.map +1 -0
- package/dist/components/message/use-copy.js +65 -0
- package/dist/components/message/use-copy.js.map +1 -0
- package/dist/components/process/AgentProcess.d.ts +47 -0
- package/dist/components/process/AgentProcess.d.ts.map +1 -0
- package/dist/components/process/AgentProcess.js +78 -0
- package/dist/components/process/AgentProcess.js.map +1 -0
- package/dist/components/process/RunStatus.d.ts +60 -0
- package/dist/components/process/RunStatus.d.ts.map +1 -0
- package/dist/components/process/RunStatus.js +34 -0
- package/dist/components/process/RunStatus.js.map +1 -0
- package/dist/components/shell/AgentEmptyState.d.ts +35 -0
- package/dist/components/shell/AgentEmptyState.d.ts.map +1 -0
- package/dist/components/shell/AgentEmptyState.js +20 -0
- package/dist/components/shell/AgentEmptyState.js.map +1 -0
- package/dist/components/shell/AgentHeader.d.ts +84 -0
- package/dist/components/shell/AgentHeader.d.ts.map +1 -0
- package/dist/components/shell/AgentHeader.js +38 -0
- package/dist/components/shell/AgentHeader.js.map +1 -0
- package/dist/components/shell/AgentShell.d.ts +138 -0
- package/dist/components/shell/AgentShell.d.ts.map +1 -0
- package/dist/components/shell/AgentShell.js +206 -0
- package/dist/components/shell/AgentShell.js.map +1 -0
- package/dist/components/shell/AgentSidePane.d.ts +54 -0
- package/dist/components/shell/AgentSidePane.d.ts.map +1 -0
- package/dist/components/shell/AgentSidePane.js +26 -0
- package/dist/components/shell/AgentSidePane.js.map +1 -0
- package/dist/components/shell/ResizeHandle.d.ts +50 -0
- package/dist/components/shell/ResizeHandle.d.ts.map +1 -0
- package/dist/components/shell/ResizeHandle.js +84 -0
- package/dist/components/shell/ResizeHandle.js.map +1 -0
- package/dist/components/shell/use-controllable.d.ts +9 -0
- package/dist/components/shell/use-controllable.d.ts.map +1 -0
- package/dist/components/shell/use-controllable.js +26 -0
- package/dist/components/shell/use-controllable.js.map +1 -0
- package/dist/components/tools/ChunkPager.d.ts +48 -0
- package/dist/components/tools/ChunkPager.d.ts.map +1 -0
- package/dist/components/tools/ChunkPager.js +68 -0
- package/dist/components/tools/ChunkPager.js.map +1 -0
- package/dist/components/tools/CodeModeToolTree.d.ts +64 -0
- package/dist/components/tools/CodeModeToolTree.d.ts.map +1 -0
- package/dist/components/tools/CodeModeToolTree.js +97 -0
- package/dist/components/tools/CodeModeToolTree.js.map +1 -0
- package/dist/components/tools/DiffPreview.d.ts +83 -0
- package/dist/components/tools/DiffPreview.d.ts.map +1 -0
- package/dist/components/tools/DiffPreview.js +95 -0
- package/dist/components/tools/DiffPreview.js.map +1 -0
- package/dist/components/tools/ToolActivity.d.ts +63 -0
- package/dist/components/tools/ToolActivity.d.ts.map +1 -0
- package/dist/components/tools/ToolActivity.js +45 -0
- package/dist/components/tools/ToolActivity.js.map +1 -0
- package/dist/components/tools/ToolDetails.d.ts +106 -0
- package/dist/components/tools/ToolDetails.d.ts.map +1 -0
- package/dist/components/tools/ToolDetails.js +247 -0
- package/dist/components/tools/ToolDetails.js.map +1 -0
- package/dist/components/tools/ToolHistory.d.ts +48 -0
- package/dist/components/tools/ToolHistory.d.ts.map +1 -0
- package/dist/components/tools/ToolHistory.js +37 -0
- package/dist/components/tools/ToolHistory.js.map +1 -0
- package/dist/components/tools/ToolOutput.d.ts +61 -0
- package/dist/components/tools/ToolOutput.d.ts.map +1 -0
- package/dist/components/tools/ToolOutput.js +45 -0
- package/dist/components/tools/ToolOutput.js.map +1 -0
- package/dist/components/tools/ToolRecord.d.ts +54 -0
- package/dist/components/tools/ToolRecord.d.ts.map +1 -0
- package/dist/components/tools/ToolRecord.js +78 -0
- package/dist/components/tools/ToolRecord.js.map +1 -0
- package/dist/components/tools/shared.d.ts +93 -0
- package/dist/components/tools/shared.d.ts.map +1 -0
- package/dist/components/tools/shared.js +160 -0
- package/dist/components/tools/shared.js.map +1 -0
- package/dist/components/workspace/ActivityLedger.d.ts +44 -0
- package/dist/components/workspace/ActivityLedger.d.ts.map +1 -0
- package/dist/components/workspace/ActivityLedger.js +63 -0
- package/dist/components/workspace/ActivityLedger.js.map +1 -0
- package/dist/components/workspace/CompactionNotice.d.ts +63 -0
- package/dist/components/workspace/CompactionNotice.d.ts.map +1 -0
- package/dist/components/workspace/CompactionNotice.js +36 -0
- package/dist/components/workspace/CompactionNotice.js.map +1 -0
- package/dist/components/workspace/ContextUsage.d.ts +44 -0
- package/dist/components/workspace/ContextUsage.d.ts.map +1 -0
- package/dist/components/workspace/ContextUsage.js +106 -0
- package/dist/components/workspace/ContextUsage.js.map +1 -0
- package/dist/components/workspace/PersistentTerminal.d.ts +86 -0
- package/dist/components/workspace/PersistentTerminal.d.ts.map +1 -0
- package/dist/components/workspace/PersistentTerminal.js +155 -0
- package/dist/components/workspace/PersistentTerminal.js.map +1 -0
- package/dist/components/workspace/PinnedSummary.d.ts +43 -0
- package/dist/components/workspace/PinnedSummary.d.ts.map +1 -0
- package/dist/components/workspace/PinnedSummary.js +33 -0
- package/dist/components/workspace/PinnedSummary.js.map +1 -0
- package/dist/components/workspace/RunSummary.d.ts +35 -0
- package/dist/components/workspace/RunSummary.d.ts.map +1 -0
- package/dist/components/workspace/RunSummary.js +46 -0
- package/dist/components/workspace/RunSummary.js.map +1 -0
- package/dist/components/workspace/SubAgentCard.d.ts +60 -0
- package/dist/components/workspace/SubAgentCard.d.ts.map +1 -0
- package/dist/components/workspace/SubAgentCard.js +73 -0
- package/dist/components/workspace/SubAgentCard.js.map +1 -0
- package/dist/components/workspace/TerminalRow.d.ts +51 -0
- package/dist/components/workspace/TerminalRow.d.ts.map +1 -0
- package/dist/components/workspace/TerminalRow.js +62 -0
- package/dist/components/workspace/TerminalRow.js.map +1 -0
- package/dist/components/workspace/shared.d.ts +22 -0
- package/dist/components/workspace/shared.d.ts.map +1 -0
- package/dist/components/workspace/shared.js +36 -0
- package/dist/components/workspace/shared.js.map +1 -0
- package/dist/index.d.ts +130 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/motion/agent-motion.d.ts +62 -0
- package/dist/motion/agent-motion.d.ts.map +1 -0
- package/dist/motion/agent-motion.js +61 -0
- package/dist/motion/agent-motion.js.map +1 -0
- package/dist/primitives/AgentSpark.d.ts +17 -0
- package/dist/primitives/AgentSpark.d.ts.map +1 -0
- package/dist/primitives/AgentSpark.js +11 -0
- package/dist/primitives/AgentSpark.js.map +1 -0
- package/dist/primitives/AgentStatus.d.ts +32 -0
- package/dist/primitives/AgentStatus.d.ts.map +1 -0
- package/dist/primitives/AgentStatus.js +13 -0
- package/dist/primitives/AgentStatus.js.map +1 -0
- package/dist/primitives/StatusGlyph.d.ts +10 -0
- package/dist/primitives/StatusGlyph.d.ts.map +1 -0
- package/dist/primitives/StatusGlyph.js +31 -0
- package/dist/primitives/StatusGlyph.js.map +1 -0
- package/dist/primitives/icons.d.ts +7 -0
- package/dist/primitives/icons.d.ts.map +1 -0
- package/dist/primitives/icons.js +55 -0
- package/dist/primitives/icons.js.map +1 -0
- package/dist/provider/AgentMessages.d.ts +51 -0
- package/dist/provider/AgentMessages.d.ts.map +1 -0
- package/dist/provider/AgentMessages.js +77 -0
- package/dist/provider/AgentMessages.js.map +1 -0
- package/dist/provider/messages/composer.d.ts +90 -0
- package/dist/provider/messages/composer.d.ts.map +1 -0
- package/dist/provider/messages/composer.js +155 -0
- package/dist/provider/messages/composer.js.map +1 -0
- package/dist/provider/messages/intervention.d.ts +135 -0
- package/dist/provider/messages/intervention.d.ts.map +1 -0
- package/dist/provider/messages/intervention.js +321 -0
- package/dist/provider/messages/intervention.js.map +1 -0
- package/dist/provider/messages/message.d.ts +118 -0
- package/dist/provider/messages/message.d.ts.map +1 -0
- package/dist/provider/messages/message.js +224 -0
- package/dist/provider/messages/message.js.map +1 -0
- package/dist/provider/messages/shell.d.ts +70 -0
- package/dist/provider/messages/shell.d.ts.map +1 -0
- package/dist/provider/messages/shell.js +109 -0
- package/dist/provider/messages/shell.js.map +1 -0
- package/dist/provider/messages/status.d.ts +20 -0
- package/dist/provider/messages/status.d.ts.map +1 -0
- package/dist/provider/messages/status.js +195 -0
- package/dist/provider/messages/status.js.map +1 -0
- package/dist/provider/messages/tools.d.ts +210 -0
- package/dist/provider/messages/tools.d.ts.map +1 -0
- package/dist/provider/messages/tools.js +482 -0
- package/dist/provider/messages/tools.js.map +1 -0
- package/dist/provider/messages/workspace.d.ts +176 -0
- package/dist/provider/messages/workspace.d.ts.map +1 -0
- package/dist/provider/messages/workspace.js +325 -0
- package/dist/provider/messages/workspace.js.map +1 -0
- package/dist/styles/artifact.css +564 -0
- package/dist/styles/base.css +220 -0
- package/dist/styles/composer.css +1001 -0
- package/dist/styles/conversation.css +275 -0
- package/dist/styles/intervention.css +929 -0
- package/dist/styles/message.css +917 -0
- package/dist/styles/process.css +207 -0
- package/dist/styles/shell.css +441 -0
- package/dist/styles/tools.css +929 -0
- package/dist/styles/workspace.css +1294 -0
- package/dist/utils/cx.d.ts +3 -0
- package/dist/utils/cx.d.ts.map +1 -0
- package/dist/utils/cx.js +5 -0
- package/dist/utils/cx.js.map +1 -0
- package/package.json +64 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilePreview.js","sourceRoot":"","sources":["../../../src/components/artifact/FilePreview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { FilePreviewView } from '@wzrhine/agent-core';
|
|
3
|
+
import type { WorkspaceMessagesProp } from '../workspace/shared.js';
|
|
4
|
+
export interface FilePreviewTab {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
kind?: FilePreviewView['kind'];
|
|
8
|
+
}
|
|
9
|
+
export type FilePreviewTabsProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {
|
|
10
|
+
tabs: FilePreviewTab[];
|
|
11
|
+
/** The open tab (controlled). */
|
|
12
|
+
activeId: string;
|
|
13
|
+
onActivate: (id: string) => void;
|
|
14
|
+
onCloseTab: (id: string) => void;
|
|
15
|
+
/** Closes every file; Escape inside the strip and the trailing close button call it. */
|
|
16
|
+
onCloseAll?: () => void;
|
|
17
|
+
/** Panel content of the active tab (usually a `FilePreview`). */
|
|
18
|
+
renderPanel: (id: string) => React.ReactNode;
|
|
19
|
+
/** Focus target after the last tab closes (the element that opened the preview). */
|
|
20
|
+
returnFocusRef?: React.RefObject<HTMLElement | null>;
|
|
21
|
+
messages?: WorkspaceMessagesProp;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* FilePreviewTabs: a strip of open files above one preview panel. ARIA tabs with a roving
|
|
25
|
+
* tabIndex: ←/→ move to the neighbour and activate it (wrapping), Home / End jump to the ends;
|
|
26
|
+
* Delete / Backspace close the focused tab; Escape anywhere in the strip calls `onCloseAll`.
|
|
27
|
+
* A middle click (`auxclick`, button 1) closes a tab. Each tab has its own close button named
|
|
28
|
+
* 「关闭 name」 (not inside the tab, so the tab keeps a plain name).
|
|
29
|
+
*
|
|
30
|
+
* When the active tab closes, the next neighbour (or the previous one at the end) activates and
|
|
31
|
+
* receives focus; when the last tab closes, focus moves to `returnFocusRef`. The active tab is
|
|
32
|
+
* kept in view with `scrollIntoView({ inline: 'nearest' })` (guarded for environments without
|
|
33
|
+
* it). Long names truncate visually; the full name is in `title` and in the accessible name.
|
|
34
|
+
*
|
|
35
|
+
* Motion: none (the active marker is a colour/border change).
|
|
36
|
+
*/
|
|
37
|
+
export declare const FilePreviewTabs: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
38
|
+
tabs: FilePreviewTab[];
|
|
39
|
+
/** The open tab (controlled). */
|
|
40
|
+
activeId: string;
|
|
41
|
+
onActivate: (id: string) => void;
|
|
42
|
+
onCloseTab: (id: string) => void;
|
|
43
|
+
/** Closes every file; Escape inside the strip and the trailing close button call it. */
|
|
44
|
+
onCloseAll?: () => void;
|
|
45
|
+
/** Panel content of the active tab (usually a `FilePreview`). */
|
|
46
|
+
renderPanel: (id: string) => React.ReactNode;
|
|
47
|
+
/** Focus target after the last tab closes (the element that opened the preview). */
|
|
48
|
+
returnFocusRef?: React.RefObject<HTMLElement | null>;
|
|
49
|
+
messages?: WorkspaceMessagesProp;
|
|
50
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
51
|
+
//# sourceMappingURL=FilePreviewTabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilePreviewTabs.d.ts","sourceRoot":"","sources":["../../../src/components/artifact/FilePreviewTabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1F,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,iEAAiE;IACjE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7C,oFAAoF;IACpF,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC,CAAC;AAWF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe;UArCpB,cAAc,EAAE;IACtB,iCAAiC;cACvB,MAAM;gBACJ,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;gBACpB,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;IAChC,wFAAwF;iBAC3E,MAAM,IAAI;IACvB,iEAAiE;iBACpD,CAAC,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS;IAC5C,oFAAoF;qBACnE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;eACzC,qBAAqB;wCAoNhC,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { IconButton } from '@wzrhine/react';
|
|
5
|
+
import { AgentIcon } from '../../primitives/icons.js';
|
|
6
|
+
import { cx } from '../../utils/cx.js';
|
|
7
|
+
import { useWorkspaceMessages } from '../workspace/shared.js';
|
|
8
|
+
const kindIcon = {
|
|
9
|
+
text: 'file',
|
|
10
|
+
markdown: 'file',
|
|
11
|
+
code: 'code',
|
|
12
|
+
image: 'image',
|
|
13
|
+
binary: 'database',
|
|
14
|
+
unknown: 'file',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* FilePreviewTabs: a strip of open files above one preview panel. ARIA tabs with a roving
|
|
18
|
+
* tabIndex: ←/→ move to the neighbour and activate it (wrapping), Home / End jump to the ends;
|
|
19
|
+
* Delete / Backspace close the focused tab; Escape anywhere in the strip calls `onCloseAll`.
|
|
20
|
+
* A middle click (`auxclick`, button 1) closes a tab. Each tab has its own close button named
|
|
21
|
+
* 「关闭 name」 (not inside the tab, so the tab keeps a plain name).
|
|
22
|
+
*
|
|
23
|
+
* When the active tab closes, the next neighbour (or the previous one at the end) activates and
|
|
24
|
+
* receives focus; when the last tab closes, focus moves to `returnFocusRef`. The active tab is
|
|
25
|
+
* kept in view with `scrollIntoView({ inline: 'nearest' })` (guarded for environments without
|
|
26
|
+
* it). Long names truncate visually; the full name is in `title` and in the accessible name.
|
|
27
|
+
*
|
|
28
|
+
* Motion: none (the active marker is a colour/border change).
|
|
29
|
+
*/
|
|
30
|
+
export const FilePreviewTabs = React.forwardRef(function FilePreviewTabs({ tabs, activeId, onActivate, onCloseTab, onCloseAll, renderPanel, returnFocusRef, messages: override, className, ...rest }, ref) {
|
|
31
|
+
const m = useWorkspaceMessages(override);
|
|
32
|
+
const baseId = React.useId();
|
|
33
|
+
const tabRefs = React.useRef(new Map());
|
|
34
|
+
const pendingFocus = React.useRef(null);
|
|
35
|
+
const active = tabs.find((t) => t.id === activeId) ?? tabs[0];
|
|
36
|
+
const tabId = (id) => `${baseId}-tab-${id}`;
|
|
37
|
+
const panelId = `${baseId}-panel`;
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
if (!active)
|
|
40
|
+
return;
|
|
41
|
+
const el = tabRefs.current.get(active.id);
|
|
42
|
+
if (el && typeof el.scrollIntoView === 'function')
|
|
43
|
+
el.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
44
|
+
}, [active?.id]);
|
|
45
|
+
// Hosts often unmount the strip once nothing is open: return focus from the unmount as well.
|
|
46
|
+
const returnRef = React.useRef(returnFocusRef);
|
|
47
|
+
returnRef.current = returnFocusRef;
|
|
48
|
+
React.useEffect(() => () => {
|
|
49
|
+
if (pendingFocus.current === 'return')
|
|
50
|
+
returnRef.current?.current?.focus();
|
|
51
|
+
}, []);
|
|
52
|
+
// Focus moves after the host re-renders with the new tab list.
|
|
53
|
+
React.useEffect(() => {
|
|
54
|
+
const target = pendingFocus.current;
|
|
55
|
+
if (target === null)
|
|
56
|
+
return;
|
|
57
|
+
pendingFocus.current = null;
|
|
58
|
+
if (target === 'return')
|
|
59
|
+
returnFocusRef?.current?.focus();
|
|
60
|
+
else
|
|
61
|
+
tabRefs.current.get(target)?.focus();
|
|
62
|
+
});
|
|
63
|
+
const activate = (id, focus) => {
|
|
64
|
+
if (focus)
|
|
65
|
+
pendingFocus.current = id;
|
|
66
|
+
if (id !== active?.id)
|
|
67
|
+
onActivate(id);
|
|
68
|
+
else if (focus)
|
|
69
|
+
tabRefs.current.get(id)?.focus();
|
|
70
|
+
};
|
|
71
|
+
const close = (id) => {
|
|
72
|
+
const index = tabs.findIndex((t) => t.id === id);
|
|
73
|
+
if (index < 0)
|
|
74
|
+
return;
|
|
75
|
+
const rest = tabs.filter((t) => t.id !== id);
|
|
76
|
+
if (rest.length === 0) {
|
|
77
|
+
pendingFocus.current = 'return';
|
|
78
|
+
}
|
|
79
|
+
else if (id === active?.id) {
|
|
80
|
+
const next = rest[Math.min(index, rest.length - 1)];
|
|
81
|
+
pendingFocus.current = next.id;
|
|
82
|
+
onActivate(next.id);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Closing a background tab from its close button keeps focus on the active tab.
|
|
86
|
+
pendingFocus.current = active?.id ?? null;
|
|
87
|
+
}
|
|
88
|
+
onCloseTab(id);
|
|
89
|
+
};
|
|
90
|
+
const onTabKeyDown = (event, index) => {
|
|
91
|
+
const count = tabs.length;
|
|
92
|
+
let next;
|
|
93
|
+
switch (event.key) {
|
|
94
|
+
case 'ArrowRight':
|
|
95
|
+
next = (index + 1) % count;
|
|
96
|
+
break;
|
|
97
|
+
case 'ArrowLeft':
|
|
98
|
+
next = (index - 1 + count) % count;
|
|
99
|
+
break;
|
|
100
|
+
case 'Home':
|
|
101
|
+
next = 0;
|
|
102
|
+
break;
|
|
103
|
+
case 'End':
|
|
104
|
+
next = count - 1;
|
|
105
|
+
break;
|
|
106
|
+
case 'Delete':
|
|
107
|
+
case 'Backspace':
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
close(tabs[index].id);
|
|
110
|
+
return;
|
|
111
|
+
default:
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
event.preventDefault();
|
|
115
|
+
activate(tabs[next].id, true);
|
|
116
|
+
};
|
|
117
|
+
if (tabs.length === 0)
|
|
118
|
+
return null;
|
|
119
|
+
return (_jsxs("div", { ...rest, ref: ref, className: cx('rl-agent-file-tabs', className), children: [_jsxs("div", { className: "rl-agent-file-tabs__bar", onKeyDown: (event) => {
|
|
120
|
+
if (event.key === 'Escape' && onCloseAll) {
|
|
121
|
+
event.preventDefault();
|
|
122
|
+
pendingFocus.current = 'return';
|
|
123
|
+
onCloseAll();
|
|
124
|
+
}
|
|
125
|
+
}, children: [_jsxs("div", { className: "rl-agent-file-tabs__scroller", children: [_jsx("div", { className: "rl-agent-file-tabs__strip", role: "tablist", "aria-label": m.fileTabs, "aria-orientation": "horizontal", children: tabs.map((tab, index) => {
|
|
126
|
+
const selected = tab.id === active?.id;
|
|
127
|
+
return (_jsxs("button", { ref: (el) => {
|
|
128
|
+
if (el)
|
|
129
|
+
tabRefs.current.set(tab.id, el);
|
|
130
|
+
else
|
|
131
|
+
tabRefs.current.delete(tab.id);
|
|
132
|
+
}, type: "button", role: "tab", id: tabId(tab.id), className: "rl-agent-file-tabs__tab", "data-active": selected || undefined, style: { order: index * 2 }, "aria-selected": selected, "aria-controls": selected ? panelId : undefined, tabIndex: selected ? 0 : -1, title: tab.name, onClick: () => activate(tab.id, false), onMouseDown: (event) => {
|
|
133
|
+
// Stop the browser's middle-click autoscroll so auxclick can close the tab.
|
|
134
|
+
if (event.button === 1)
|
|
135
|
+
event.preventDefault();
|
|
136
|
+
}, onAuxClick: (event) => {
|
|
137
|
+
if (event.button !== 1)
|
|
138
|
+
return;
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
close(tab.id);
|
|
141
|
+
}, onKeyDown: (event) => onTabKeyDown(event, index), children: [_jsx(AgentIcon, { name: kindIcon[tab.kind ?? 'unknown'], className: "rl-agent-file-tabs__icon" }), _jsx("span", { className: "rl-agent-file-tabs__name", children: tab.name })] }, tab.id));
|
|
142
|
+
}) }), tabs.map((tab, index) => {
|
|
143
|
+
const selected = tab.id === active?.id;
|
|
144
|
+
return (_jsx("button", { type: "button", className: "rl-agent-file-tabs__close", "data-active": selected || undefined, style: { order: index * 2 + 1 }, "aria-label": m.fileTabClose(tab.name), title: m.fileTabCloseTitle, tabIndex: selected ? 0 : -1, onClick: () => close(tab.id), children: _jsx(AgentIcon, { name: "close" }) }, tab.id));
|
|
145
|
+
})] }), onCloseAll && (_jsx(IconButton, { size: "sm", variant: "ghost", className: "rl-agent-file-tabs__close-all", icon: _jsx(AgentIcon, { name: "close" }), label: m.fileTabCloseAll, onClick: () => {
|
|
146
|
+
pendingFocus.current = 'return';
|
|
147
|
+
onCloseAll();
|
|
148
|
+
} }))] }), active && (_jsx("div", { id: panelId, role: "tabpanel", "aria-labelledby": tabId(active.id), className: "rl-agent-file-tabs__panel", tabIndex: -1, children: renderPanel(active.id) }))] }));
|
|
149
|
+
});
|
|
150
|
+
//# sourceMappingURL=FilePreviewTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilePreviewTabs.js","sourceRoot":"","sources":["../../../src/components/artifact/FilePreviewTabs.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AttachmentView, ReferenceView } from '@wzrhine/agent-core';
|
|
3
|
+
export interface AttachmentListProps {
|
|
4
|
+
attachments?: readonly AttachmentView[];
|
|
5
|
+
references?: readonly ReferenceView[];
|
|
6
|
+
/** Removes the UI reference only; deleting remote files is the adapter's decision. No callback → no button. */
|
|
7
|
+
onRemove?: (item: {
|
|
8
|
+
type: 'attachment';
|
|
9
|
+
attachment: AttachmentView;
|
|
10
|
+
} | {
|
|
11
|
+
type: 'reference';
|
|
12
|
+
reference: ReferenceView;
|
|
13
|
+
}) => void;
|
|
14
|
+
/** Retry a failed upload. No callback → no retry button. */
|
|
15
|
+
onRetry?: (attachment: AttachmentView) => void;
|
|
16
|
+
/** Blocks remove / retry (e.g. while sending). */
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
/** Custom preview for an attachment (replaces icon / thumbnail). */
|
|
19
|
+
renderPreview?: (attachment: AttachmentView) => React.ReactNode;
|
|
20
|
+
'aria-label'?: string;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Attachment and reference chips (atlas 17), `role="list"`. Every card has a fixed size, so
|
|
25
|
+
* progress and status changes never move neighbours. Names are ellipsised with the full name in
|
|
26
|
+
* `title` and in the accessible text; size uses `useAgentFormat().bytes`. Thumbnails are drawn
|
|
27
|
+
* only for `kind: 'image'` with a `data:image/`, `blob:` or same-origin URL (anything else falls
|
|
28
|
+
* back to the icon). Statuses are text + glyph: 正在上传 (Progress when the fraction is known,
|
|
29
|
+
* else Spinner), 上传失败 (+ retry), 引用已失效, 不可用.
|
|
30
|
+
* Motion: none beyond the Progress / Spinner primitives (reduced-motion aware).
|
|
31
|
+
*/
|
|
32
|
+
export declare function AttachmentList({ attachments, references, onRemove, onRetry, disabled, renderPreview, 'aria-label': ariaLabel, className, }: AttachmentListProps): React.JSX.Element | null;
|
|
33
|
+
//# sourceMappingURL=AttachmentList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttachmentList.d.ts","sourceRoot":"","sources":["../../../src/components/composer/AttachmentList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA0BzE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACtC,+GAA+G;IAC/G,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,cAAc,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,aAAa,CAAA;KAAE,KAAK,IAAI,CAAC;IAChI,4DAA4D;IAC5D,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,KAAK,CAAC,SAAS,CAAC;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAgB,EAChB,UAAe,EACf,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,aAAa,EACb,YAAY,EAAE,SAAS,EACvB,SAAS,GACV,EAAE,mBAAmB,4BA8HrB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { IconButton, Progress, Spinner } from '@wzrhine/react';
|
|
4
|
+
import { AgentIcon } from '../../primitives/icons.js';
|
|
5
|
+
import { useAgentFormat, useAgentMessages } from '../../provider/AgentMessages.js';
|
|
6
|
+
import { cx } from '../../utils/cx.js';
|
|
7
|
+
import { isSafeThumbnail } from './composer-utils.js';
|
|
8
|
+
const attachmentIcon = {
|
|
9
|
+
image: 'image',
|
|
10
|
+
file: 'file',
|
|
11
|
+
pdf: 'file',
|
|
12
|
+
text: 'file',
|
|
13
|
+
code: 'code',
|
|
14
|
+
unknown: 'file',
|
|
15
|
+
};
|
|
16
|
+
const referenceIcon = {
|
|
17
|
+
file: 'file',
|
|
18
|
+
folder: 'folder',
|
|
19
|
+
skill: 'spark',
|
|
20
|
+
command: 'slash',
|
|
21
|
+
url: 'link',
|
|
22
|
+
symbol: 'code',
|
|
23
|
+
custom: 'at',
|
|
24
|
+
};
|
|
25
|
+
function useOrigin() {
|
|
26
|
+
return typeof window === 'undefined' ? undefined : window.location.origin;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Attachment and reference chips (atlas 17), `role="list"`. Every card has a fixed size, so
|
|
30
|
+
* progress and status changes never move neighbours. Names are ellipsised with the full name in
|
|
31
|
+
* `title` and in the accessible text; size uses `useAgentFormat().bytes`. Thumbnails are drawn
|
|
32
|
+
* only for `kind: 'image'` with a `data:image/`, `blob:` or same-origin URL (anything else falls
|
|
33
|
+
* back to the icon). Statuses are text + glyph: 正在上传 (Progress when the fraction is known,
|
|
34
|
+
* else Spinner), 上传失败 (+ retry), 引用已失效, 不可用.
|
|
35
|
+
* Motion: none beyond the Progress / Spinner primitives (reduced-motion aware).
|
|
36
|
+
*/
|
|
37
|
+
export function AttachmentList({ attachments = [], references = [], onRemove, onRetry, disabled = false, renderPreview, 'aria-label': ariaLabel, className, }) {
|
|
38
|
+
const messages = useAgentMessages().composer;
|
|
39
|
+
const format = useAgentFormat();
|
|
40
|
+
const origin = useOrigin();
|
|
41
|
+
if (attachments.length === 0 && references.length === 0)
|
|
42
|
+
return null;
|
|
43
|
+
return (_jsxs("ul", { className: cx('rl-agent-attachments', className), "aria-label": ariaLabel ?? messages.attachmentsLabel, "data-slot": "attachment-list", children: [references.map((reference) => {
|
|
44
|
+
const status = reference.status ?? 'ready';
|
|
45
|
+
const statusText = status === 'stale' ? messages.stale : status === 'failed' ? messages.referenceFailed : status === 'loading' ? messages.referenceLoading : undefined;
|
|
46
|
+
const name = reference.label;
|
|
47
|
+
return (_jsxs("li", { className: "rl-agent-attachment", "data-type": "reference", "data-kind": reference.kind, "data-status": status, children: [_jsx("span", { className: "rl-agent-attachment__media", "aria-hidden": "true", children: status === 'loading' ? _jsx(Spinner, { size: "sm" }) : _jsx(AgentIcon, { name: referenceIcon[reference.kind] }) }), _jsxs("span", { className: "rl-agent-attachment__body", children: [_jsx("span", { className: "rl-agent-attachment__name", title: reference.detail ?? name, children: name }), _jsx("span", { className: "rl-agent-attachment__meta", children: statusText ? (_jsxs("span", { className: "rl-agent-attachment__status", children: [status !== 'loading' && _jsx(AgentIcon, { name: "warning" }), statusText] })) : (_jsxs(_Fragment, { children: [messages.referenceKind[reference.kind], reference.external && ` · ${messages.external}`] })) }), reference.detail && _jsx("span", { className: "rl-agent-sr", children: reference.detail }), reference.reason && _jsx("span", { className: "rl-agent-sr", children: reference.reason })] }), onRemove && (_jsx(IconButton, { size: "sm", className: "rl-agent-attachment__remove", label: messages.remove(name), icon: _jsx(AgentIcon, { name: "close" }), disabled: disabled, onClick: () => onRemove({ type: 'reference', reference }) }))] }, `r-${reference.id}`));
|
|
48
|
+
}), attachments.map((attachment) => {
|
|
49
|
+
const { status, name } = attachment;
|
|
50
|
+
const thumb = attachment.kind === 'image' && isSafeThumbnail(attachment.thumbnail, origin) ? attachment.thumbnail : undefined;
|
|
51
|
+
const meta = [messages.kind[attachment.kind], attachment.size !== undefined ? format.bytes(attachment.size) : undefined].filter(Boolean).join(' · ');
|
|
52
|
+
const known = typeof attachment.progress === 'number' && Number.isFinite(attachment.progress);
|
|
53
|
+
return (_jsxs("li", { className: "rl-agent-attachment", "data-type": "attachment", "data-kind": attachment.kind, "data-status": status, children: [_jsx("span", { className: "rl-agent-attachment__media", "data-thumb": thumb ? '' : undefined, children: renderPreview ? (renderPreview(attachment)) : thumb ? (_jsx("img", { className: "rl-agent-attachment__thumb", src: thumb, alt: attachment.alt ?? name, loading: "lazy", decoding: "async" })) : (_jsx(AgentIcon, { name: attachmentIcon[attachment.kind] })) }), _jsxs("span", { className: "rl-agent-attachment__body", children: [_jsx("span", { className: "rl-agent-attachment__name", title: name, children: name }), status === 'uploading' ? (known ? (_jsx(Progress, { className: "rl-agent-attachment__progress", size: "sm", label: messages.uploadingName(name), hideLabel: true, valueText: false, value: Math.round(Math.max(0, Math.min(1, attachment.progress)) * 100) })) : (_jsxs("span", { className: "rl-agent-attachment__meta", children: [_jsx(Spinner, { size: "sm", label: messages.uploadingName(name) }), _jsx("span", { "aria-hidden": "true", children: messages.uploading })] }))) : (_jsx("span", { className: "rl-agent-attachment__meta", children: status === 'failed' || status === 'stale' || status === 'disabled' ? (_jsxs("span", { className: "rl-agent-attachment__status", children: [_jsx(AgentIcon, { name: "warning" }), status === 'failed' ? messages.uploadFailed : status === 'stale' ? messages.stale : messages.unavailable] })) : (meta) })), attachment.reason && _jsx("span", { className: "rl-agent-sr", children: attachment.reason })] }), status === 'failed' && onRetry && (_jsx(IconButton, { size: "sm", className: "rl-agent-attachment__retry", label: messages.retryUpload(name), icon: _jsx(AgentIcon, { name: "retry" }), disabled: disabled, onClick: () => onRetry(attachment) })), onRemove && (_jsx(IconButton, { size: "sm", className: "rl-agent-attachment__remove", label: messages.remove(name), icon: _jsx(AgentIcon, { name: "close" }), disabled: disabled, onClick: () => onRemove({ type: 'attachment', attachment }) }))] }, `a-${attachment.id}`));
|
|
54
|
+
})] }));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=AttachmentList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttachmentList.js","sourceRoot":"","sources":["../../../src/components/composer/AttachmentList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ActionReceipt, ActionStatus, AttachmentView, CommandOption, ComposerToken, DraftStatus, MentionOption, ReferenceView, RunStatus, SendInput, TriggerMatch } from '@wzrhine/agent-core';
|
|
3
|
+
import type { ComposerInputHandle, ComposerTokenKind } from './ComposerInput.js';
|
|
4
|
+
export type ComposerProps = {
|
|
5
|
+
value?: string;
|
|
6
|
+
defaultValue?: string;
|
|
7
|
+
onValueChange?: (value: string) => void;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
'aria-label'?: string;
|
|
10
|
+
submitOn?: 'enter' | 'mod-enter';
|
|
11
|
+
/** Shows a character counter and blocks sending above the limit (code points of the plain text). */
|
|
12
|
+
maxLength?: number;
|
|
13
|
+
/** Show the counter without a limit. */
|
|
14
|
+
showCount?: boolean;
|
|
15
|
+
/** A token disappeared from the text (whole-token delete, cut, overwrite): unbind its reference. */
|
|
16
|
+
onTokenRemoved?: (token: ComposerToken) => void;
|
|
17
|
+
tokenKind?: (token: ComposerToken) => ComposerTokenKind;
|
|
18
|
+
/** Receives the plain text (`@name` / `/name`), the raw value with markers, references and attachments. */
|
|
19
|
+
onSubmit?: (input: SendInput) => void;
|
|
20
|
+
/** Receipt of the last send. `submitting` / `unknown` block Enter and the button (no duplicates). */
|
|
21
|
+
submitStatus?: ActionStatus | ActionReceipt;
|
|
22
|
+
runStatus?: RunStatus;
|
|
23
|
+
onStop?: () => void;
|
|
24
|
+
stopStatus?: ActionStatus | ActionReceipt;
|
|
25
|
+
/** Retry an `unknown` send / stop with its original actionId (ADR-0011 §4). */
|
|
26
|
+
onRetryAction?: (kind: 'send' | 'stop', actionId: string | undefined) => void;
|
|
27
|
+
/** Extra condition for sending (e.g. a model must be selected), with its reason. */
|
|
28
|
+
canSend?: boolean;
|
|
29
|
+
sendDisabledReason?: string;
|
|
30
|
+
draftStatus?: DraftStatus;
|
|
31
|
+
onRetryDraftSave?: () => void;
|
|
32
|
+
references?: readonly ReferenceView[];
|
|
33
|
+
attachments?: readonly AttachmentView[];
|
|
34
|
+
onRemoveReference?: (reference: ReferenceView) => void;
|
|
35
|
+
onRemoveAttachment?: (attachment: AttachmentView) => void;
|
|
36
|
+
onRetryAttachment?: (attachment: AttachmentView) => void;
|
|
37
|
+
/** Files dropped on the frame (drag-over highlight while dragging). No callback → no drop zone. */
|
|
38
|
+
onFilesDrop?: (files: File[]) => void;
|
|
39
|
+
/** Files pasted into the textarea. Text paste is untouched. */
|
|
40
|
+
onFilesPaste?: (files: File[]) => void;
|
|
41
|
+
/** Enables the `@` menu. Filtered locally unless `onMentionQuery` is given (then the host filters). */
|
|
42
|
+
mentionOptions?: readonly MentionOption[];
|
|
43
|
+
mentionLoading?: boolean;
|
|
44
|
+
mentionError?: React.ReactNode;
|
|
45
|
+
onMentionRetry?: () => void;
|
|
46
|
+
/** Query typed after `@` while the menu is open; `null` when it closes. */
|
|
47
|
+
onMentionQuery?: (query: string | null) => void;
|
|
48
|
+
/** Token text for a chosen option (default: drilled folder + label). */
|
|
49
|
+
mentionTokenName?: (option: MentionOption, query: string) => string;
|
|
50
|
+
/** A mention was inserted as a token: bind the reference. */
|
|
51
|
+
onReferenceAdd?: (option: MentionOption, tokenName: string) => void;
|
|
52
|
+
/** A folder was drilled into (the query is already rewritten to `folder/`). */
|
|
53
|
+
onMentionDrill?: (option: MentionOption) => void;
|
|
54
|
+
/** Enables the `/` menu (commands first, then skills). Filtered locally unless `onCommandQuery` is given. */
|
|
55
|
+
commandOptions?: readonly CommandOption[];
|
|
56
|
+
commandLoading?: boolean;
|
|
57
|
+
onCommandQuery?: (query: string | null) => void;
|
|
58
|
+
/**
|
|
59
|
+
* A command or skill was chosen. Return `'insert'` to replace the typed `/query` with a token;
|
|
60
|
+
* otherwise the typed query is removed and the host dispatches its own action.
|
|
61
|
+
*/
|
|
62
|
+
onCommand?: (option: CommandOption, match: TriggerMatch) => 'insert' | void;
|
|
63
|
+
/** A disabled command was chosen: nothing is dispatched; its reason shows in the feedback line. */
|
|
64
|
+
onDisabledCommand?: (option: CommandOption) => void;
|
|
65
|
+
disabled?: boolean;
|
|
66
|
+
/** Why the composer is disabled (feedback line). */
|
|
67
|
+
disabledReason?: string;
|
|
68
|
+
readOnly?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Input blocked by a pending intervention (e.g. a questionnaire): the textarea becomes read-only
|
|
71
|
+
* and `aria-disabled`, the reason replaces the placeholder and shows in the feedback line.
|
|
72
|
+
* `true` uses the default copy ("请先在上方回答问题").
|
|
73
|
+
*/
|
|
74
|
+
blocked?: boolean | string;
|
|
75
|
+
/** Approval / questionnaire cards docked above the frame (height animates via grid rows). */
|
|
76
|
+
intervention?: React.ReactNode;
|
|
77
|
+
/**
|
|
78
|
+
* Rendered instead of the input frame, menus and feedback line, e.g. a `ComposerNotice` for a
|
|
79
|
+
* sub-agent, archived or inherited thread. The `intervention` slot stays above it, so approvals
|
|
80
|
+
* and questions still dock. The draft value is kept and comes back when `replacement` is removed.
|
|
81
|
+
*/
|
|
82
|
+
replacement?: React.ReactNode;
|
|
83
|
+
/** Toolbar start (e.g. a "+" Menu: 添加图片 / 引用文件 / 使用技能). */
|
|
84
|
+
toolbarStart?: React.ReactNode;
|
|
85
|
+
/** Toolbar end before the send button (ModelPicker, PermissionPicker, context ring). */
|
|
86
|
+
toolbarEnd?: React.ReactNode;
|
|
87
|
+
/** Extra feedback content after the status text. */
|
|
88
|
+
feedback?: React.ReactNode;
|
|
89
|
+
/** Side the menus open on. */
|
|
90
|
+
menuSide?: 'top' | 'bottom';
|
|
91
|
+
className?: string;
|
|
92
|
+
id?: string;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Full agent input frame (atlas 14): intervention slot, attachment / reference row, the
|
|
96
|
+
* token-mirror textarea, `@` / `/` menus, toolbar slots, the send / stop button and a feedback line.
|
|
97
|
+
*
|
|
98
|
+
* Keyboard (textarea keeps focus throughout):
|
|
99
|
+
* - Enter sends (Shift+Enter newline; `submitOn="mod-enter"` swaps them). Never while composing
|
|
100
|
+
* (IME), never while a menu consumed the key, never while the send is `submitting` / `unknown`
|
|
101
|
+
* or a run is in progress — the send / stop button shows 停止生成 instead.
|
|
102
|
+
* - `@` / `/` open the menus (role="combobox" + aria-activedescendant on the textarea);
|
|
103
|
+
* ↑ / ↓ move (clamped), Enter / Tab choose, Tab / Enter on a folder drills, Esc closes and the
|
|
104
|
+
* same trigger + query stays closed until the query changes.
|
|
105
|
+
*
|
|
106
|
+
* States: empty, focused (frame ring via :focus-within), multiline, mentions, sending, running,
|
|
107
|
+
* failed (draft kept + retry), blocked, disabled, drag-over, replaced (`replacement` stands in for
|
|
108
|
+
* the frame, e.g. ComposerNotice; the intervention slot stays).
|
|
109
|
+
* Motion: menus fade (MotionPresence `fade`), send / stop icons cross-fade, the intervention slot
|
|
110
|
+
* expands with CSS grid rows (`--rl-motion-base`); reduced motion → instant.
|
|
111
|
+
*/
|
|
112
|
+
export declare const Composer: React.ForwardRefExoticComponent<ComposerProps & React.RefAttributes<ComposerInputHandle>>;
|
|
113
|
+
//# sourceMappingURL=Composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/components/composer/Composer.tsx"],"names":[],"mappings":"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"}
|