import { FormEventHandler, useState } from 'react' import { Editor, useValue } from 'tldraw' import { AtIcon } from '../../shared/icons/AtIcon' import { BrainIcon } from '../../shared/icons/BrainIcon' import { ChevronDownIcon } from '../../shared/icons/ChevronDownIcon' import { AGENT_MODEL_DEFINITIONS, AgentModelName } from '../../shared/models' import { useAgent } from '../agent/TldrawAgentAppProvider' import { ContextItemTag } from './ContextItemTag' import { SelectionTag } from './SelectionTag' export function ChatInput({ handleSubmit, inputRef, }: { handleSubmit: FormEventHandler inputRef: React.RefObject }) { const agent = useAgent() const { editor } = agent const [inputValue, setInputValue] = useState('') const isGenerating = useValue('isGenerating', () => agent.requests.isGenerating(), [agent]) const isContextToolActive = useValue( 'isContextToolActive', () => { const tool = editor.getCurrentTool() return tool.id === 'target-shape' || tool.id === 'target-area' }, [editor] ) const selectedShapes = useValue('selectedShapes', () => editor.getSelectedShapes(), [editor]) const contextItems = useValue('contextItems', () => agent.context.getItems(), [agent]) const modelName = useValue('modelName', () => agent.modelName.getModelName(), [agent]) return (
{ e.preventDefault() setInputValue('') handleSubmit(e) }} >
Add Context
{selectedShapes.length > 0 && editor.selectNone()} />} {contextItems.map((item, i) => ( agent.context.remove(item)} key={'context-item-' + i} item={item} /> ))}