Documentation
¶
Overview ¶
SPDX-License-Identifier: MIT Purpose: chat input widget — textarea with attachment support and slash commands. Used by the TUI 2.0 chat mode (Phase 5 of st-3t5v).
SPDX-License-Identifier: MIT Purpose: async LLM runner for the TUI chat view. Translates the `chat.SubmitMsg` payload (system + last 5 history turns + current prompt) into an `llm.ChatRequest` and returns the assistant text. Provider is resolved via `llm.ProviderFromConfig("nim", ...)`, which reads `SIN_NIM_API_KEY` from the environment.
Index ¶
- func SendChatResponse(text string, err error) tea.Cmd
- type ChatResponseMsg
- type Input
- func (i *Input) Attach(path string) error
- func (i *Input) AttachBytes(data []byte, name string) error
- func (i *Input) Attachments() []*attachments.Attachment
- func (i *Input) Blur()
- func (i *Input) Clear()
- func (i *Input) Focus() tea.Cmd
- func (i *Input) HandlePasteBytes(data []byte)
- func (i *Input) HandleSlashCommand(line string) (handled bool, err error)
- func (i *Input) Init() tea.Cmd
- func (i *Input) RawValue() string
- func (i *Input) RenderStatus() string
- func (i *Input) SetSize(w, h int)
- func (i *Input) Update(msg tea.Msg) (tea.Cmd, *SubmitMsg)
- func (i *Input) Value() string
- func (i *Input) View() string
- type Runner
- type SubmitMsg
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SendChatResponse ¶
SendChatResponse is a tea.Cmd that produces a ChatResponseMsg. Useful for callers that drive the chat synchronously (e.g. tests). The chat input normally spawns a goroutine and uses *tea.Program.Send to push ChatResponseMsg into the event loop directly.
Types ¶
type ChatResponseMsg ¶
ChatResponseMsg is fired by the background goroutine when the LLM returns. The TUI Update handler appends it to ChatHistory.
type Input ¶
type Input struct {
// contains filtered or unexported fields
}
func NewInput ¶
func NewInput(store *attachments.Store) *Input
func (*Input) Attachments ¶
func (i *Input) Attachments() []*attachments.Attachment
func (*Input) HandlePasteBytes ¶
HandlePasteBytes is a public entry-point for paste events that carry raw bytes (e.g. an image dragged into the terminal, or a future Bubbletea v2 tea.PasteMsg adapter). The Bubbletea v1 KeyMsg.Paste path runs the payload through utf8.DecodeRune which corrupts non-UTF-8 image data, so programmatic callers (tests, future drag-and-drop handlers) should use this method to preserve byte fidelity.
func (*Input) HandleSlashCommand ¶
func (*Input) RenderStatus ¶
type Runner ¶
Runner wraps an LLM client + model + system prompt. One Runner per TUI session; the chat view holds a singleton and reuses it across submits.
func NewRunner ¶
NewRunner builds a Runner from the current environment. Returns an error if no API key is configured (env SIN_NIM_API_KEY).
func NewRunnerWithClient ¶
NewRunnerWithClient builds a Runner from a pre-configured client. Used by tests and by callers that want to override the base URL.
type SubmitMsg ¶
type SubmitMsg struct {
Text string
Attachments []*attachments.Attachment
}