u
This commit is contained in:
@@ -37,12 +37,17 @@ import LightModeRoundedIcon from '@mui/icons-material/LightModeRounded';
|
||||
import CycloneRoundedIcon from '@mui/icons-material/CycloneRounded';
|
||||
|
||||
import { setting as settingApi } from '../../api';
|
||||
import chatAutomat, { selectPendingAskUser } from '../../automats/chatAutomat';
|
||||
import chatAutomat, {
|
||||
selectPendingAskUser,
|
||||
selectPendingDraftRead,
|
||||
} from '../../automats/chatAutomat';
|
||||
import { getActiveDraftContent } from '../../automats/draftSync';
|
||||
import userSettingsAutomat from '../../automats/userSettingsAutomat';
|
||||
import vfsAutomat from '../../automats/vfsAutomat';
|
||||
import { VfsEditorPanel, VfsFileIcon } from '../vfs';
|
||||
import ChatFlowList from './ChatFlowList';
|
||||
import AskUserPrompt from './AskUserPrompt';
|
||||
import DraftRequestPrompt from './DraftRequestPrompt';
|
||||
import { ACCEPT_STRING, readFileAttachment } from './chatAttachments';
|
||||
import { ChatStagedAttachmentsTray } from './ChatAttachmentItems';
|
||||
import {
|
||||
@@ -836,6 +841,33 @@ export default class ChatDrawer extends PureComponent {
|
||||
};
|
||||
|
||||
getPendingAskUser = () => selectPendingAskUser(this.state);
|
||||
getPendingDraftRead = () => selectPendingDraftRead(this.state);
|
||||
|
||||
handleProvideDraft = async ({ toolCallId, draftKey, empty = false }) => {
|
||||
try {
|
||||
let content;
|
||||
if (empty) {
|
||||
content = { error: 'Draft not open or empty' };
|
||||
} else {
|
||||
const manifest = getActiveDraftContent(draftKey);
|
||||
content = {
|
||||
manifest: manifest || {
|
||||
kind: draftKey,
|
||||
mode: 'create',
|
||||
lines: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
await chatAutomat.actions.sendToolResponse({
|
||||
tool_call_id: toolCallId,
|
||||
name: 'read_file',
|
||||
content,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('[ChatDrawer] Failed to provide draft response:', err);
|
||||
}
|
||||
};
|
||||
|
||||
renderHeader() {
|
||||
const {
|
||||
@@ -1332,6 +1364,7 @@ export default class ChatDrawer extends PureComponent {
|
||||
}
|
||||
|
||||
const pendingAsk = this.getPendingAskUser();
|
||||
const pendingDraftRead = this.getPendingDraftRead();
|
||||
|
||||
return (
|
||||
<Box sx={{ flexGrow: 1, display: 'flex', flexDirection: 'column', minHeight: 0, overflow: 'hidden' }}>
|
||||
@@ -1366,6 +1399,14 @@ export default class ChatDrawer extends PureComponent {
|
||||
disabled={this.state.isSending}
|
||||
/>
|
||||
)}
|
||||
|
||||
{pendingDraftRead && (
|
||||
<DraftRequestPrompt
|
||||
draftData={pendingDraftRead}
|
||||
onProvideDraft={this.handleProvideDraft}
|
||||
disabled={this.state.isSending}
|
||||
/>
|
||||
)}
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
@@ -1388,9 +1429,13 @@ export default class ChatDrawer extends PureComponent {
|
||||
} = this.state;
|
||||
|
||||
const pendingAsk = this.getPendingAskUser();
|
||||
const pendingDraftRead = this.getPendingDraftRead();
|
||||
const isBusy = conversationState === 'busy';
|
||||
const isWorking = isBusy || isSending;
|
||||
const canChat = (Boolean(selectedConversationId) || draftConversation) && !pendingAsk;
|
||||
const canChat =
|
||||
(Boolean(selectedConversationId) || draftConversation) &&
|
||||
!pendingAsk &&
|
||||
!pendingDraftRead;
|
||||
const canSend =
|
||||
!isWorking &&
|
||||
canChat &&
|
||||
@@ -1762,9 +1807,11 @@ export default class ChatDrawer extends PureComponent {
|
||||
placeholder={
|
||||
pendingAsk
|
||||
? 'Bitte Frage oben beantworten…'
|
||||
: stagedAttachments.length > 0
|
||||
? 'Nachricht hinzufügen oder direkt absenden…'
|
||||
: undefined
|
||||
: pendingDraftRead
|
||||
? 'Bitte Entwurfsanfrage oben beantworten…'
|
||||
: stagedAttachments.length > 0
|
||||
? 'Nachricht hinzufügen oder direkt absenden…'
|
||||
: undefined
|
||||
}
|
||||
sx={{
|
||||
px: 0.5,
|
||||
|
||||
Reference in New Issue
Block a user