project-nomad/admin/inertia/components/chat
chriscrosstalk d50cfa192a
feat(AI): per-model thinking toggle with global default (off) (#1079)
* feat(AI): per-model thinking toggle with global default (off)

Stop forcing thinking on for every capable model. Adds a global default
(ai.autoThinking, ships OFF) and a per-model override in the chat window,
shown only for thinking-capable models and remembered client-side.

The /v1 (OpenAI-compat) endpoint ignores `think`; reasoning_effort is the
real lever. The controller resolves per-request preference -> global default
-> OFF (gated on capability), and the service maps that to reasoning_effort
('none' to suppress on a capable model, 'medium' for gpt-oss, unset to let a
capable model default thinking on). A new thinkingCapable flag keeps
non-Ollama backends from ever receiving reasoning_effort.

installed-models is enriched with a `thinking` flag (checkModelHasThinking,
now memoized) so the picker knows which models get the toggle.

Stacks on #1078 (reasoning-field read + client-disconnect abort).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat(AI): thinking toggle as NOMAD Switch + info tooltip

Address review feedback on the per-model thinking control:
- Use the shared Switch component (matches AI Assistant settings) instead
  of a raw checkbox.
- Label "Thinking:" with a colon to match the adjacent "Model:" label.
- Add an InfoTooltip explaining what thinking does and where the default
  lives. Extend InfoTooltip with optional `position` ('top'|'bottom') and
  `align` ('center'|'right') so it opens downward and expands leftward from
  the right-edge header slot instead of being clipped/crushed against the
  viewport edge. Defaults preserve existing (benchmark page) behavior.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 16:33:09 -07:00
..
ChatAssistantAvatar.tsx feat: [wip] native AI chat interface 2026-01-31 20:39:49 -08:00
ChatButton.tsx fix(UI): switch to tabler icons only for consistency 2026-01-31 20:39:49 -08:00
ChatInterface.tsx fix(chat): make conversation layout responsive (#1090) 2026-07-20 15:46:57 -07:00
ChatMessageBubble.tsx feat(UI): add Night Ops dark mode with theme toggle 2026-03-20 11:46:10 -07:00
ChatModal.tsx feat(UI): add Night Ops dark mode with theme toggle 2026-03-20 11:46:10 -07:00
ChatSidebar.tsx fix(chat): make conversation layout responsive (#1090) 2026-07-20 15:46:57 -07:00
CollectionCombobox.tsx feat(rag): add subject/collection organization to knowledge base (#1063) 2026-07-20 15:09:11 -07:00
CollectionsManager.tsx feat(rag): add subject/collection organization to knowledge base (#1063) 2026-07-20 15:09:11 -07:00
KbPolicyPromptBanner.tsx fix(KB): silent maybe-later error + redundant prompt-state refetches (PR #899 review) 2026-05-20 10:16:00 -07:00
KnowledgeBaseModal.tsx feat(rag): add subject/collection organization to knowledge base (#1063) 2026-07-20 15:09:11 -07:00
index.tsx feat(AI): per-model thinking toggle with global default (off) (#1079) 2026-07-20 16:33:09 -07:00