diff --git a/scripts/test-chat-clear-confirmation.cjs b/scripts/test-chat-clear-confirmation.cjs index 5440aa7..ea356d8 100644 --- a/scripts/test-chat-clear-confirmation.cjs +++ b/scripts/test-chat-clear-confirmation.cjs @@ -64,6 +64,23 @@ function setup(overrides = {}, browser = {}) { } } +for (const agentProvider of ['A_COPILOT', 'QWEN', 'OPENAI', 'ANTHROPIC', 'GEMINI']) { + for (const qaMode of ['ai', 'agent', 'teacher']) { + test(`attachment controls follow the provider and chat mode (${agentProvider}, ${qaMode})`, () => { + const harness = setup({ qaMode, agentProvider }) + const input = elements(harness.render(), node => node.type === QaInputBox)[0] + assert.equal(input.props.attachmentsEnabled, qaMode === 'agent' && agentProvider !== 'A_COPILOT') + assert.equal(typeof input.props.onClearConversation, 'function') + }) + } +} + +test('the workspace passes the current provider from agent status to the chat panel', () => { + const source = fs.readFileSync(require.resolve('../src/renderer/src/App.tsx'), 'utf8') + assert.match(source, /provider: agentProvider,[\s\S]*?\} = useAiAgent\(/) + assert.match(source, / { const harness = setup({ qaMode, agentMessages: [{ id: 'a', content: 'answer' }], visibleTeacherMessages: [{ id: 't', content: 'answer' }] }) diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index c995da0..7e78967 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -627,6 +627,7 @@ function LocalPcWorkspaceMockup({ const [selectedModule, setSelectedModule] = useState(null) const { enabled: agentEnabled, + provider: agentProvider, imagesEnabled: agentImagesEnabled, statusLoading: agentStatusLoading, pending: agentPending, @@ -4713,6 +4714,7 @@ function LocalPcWorkspaceMockup({ visibleTeacherMessages={visibleTeacherMessages} agentMessages={agentMessages} agentEnabled={agentEnabled} + agentProvider={agentProvider} agentImagesEnabled={Boolean(agentImagesEnabled)} agentStatusLoading={agentStatusLoading} agentPending={agentPending} diff --git a/src/renderer/src/features/workspace/WorkspaceQaPanel.tsx b/src/renderer/src/features/workspace/WorkspaceQaPanel.tsx index c7a8875..045a623 100644 --- a/src/renderer/src/features/workspace/WorkspaceQaPanel.tsx +++ b/src/renderer/src/features/workspace/WorkspaceQaPanel.tsx @@ -41,6 +41,7 @@ type WorkspaceQaPanelProps = { visibleTeacherMessages: WorkspaceQaMessage[] agentMessages: AgentConversationMessage[] agentEnabled: boolean + agentProvider?: string | null agentImagesEnabled?: boolean agentStatusLoading: boolean agentPending: boolean @@ -114,6 +115,7 @@ export default function WorkspaceQaPanel({ visibleTeacherMessages, agentMessages, agentEnabled, + agentProvider, agentImagesEnabled = false, agentStatusLoading, agentPending, @@ -327,7 +329,7 @@ export default function WorkspaceQaPanel({ disabled={inputDisabled || (teacherQaDisabled && qaMode === 'teacher')} onStop={onStop} onSubmit={onSubmit} - attachmentsEnabled={qaMode === 'agent'} + attachmentsEnabled={qaMode === 'agent' && agentProvider !== 'A_COPILOT'} imagesEnabled={qaMode === 'agent' && agentImagesEnabled} onClearConversation={requestClearConversation} clearDisabled={clearDisabled}