mirror of
https://github.com/enricoros/big-AGI.git
synced 2026-05-10 21:50:14 -07:00
No mdashes in comments
This commit is contained in:
@@ -20,12 +20,12 @@ Reference files (for context only, do not modify):
|
||||
**Discovering feature docs:** The release notes and models overview markdown
|
||||
contain inline links to feature-specific pages (thinking modes, effort,
|
||||
context windows, what's-new pages, etc.). When a new capability is
|
||||
referenced, follow those links — append `.md` to get markdown. Examples of
|
||||
referenced, follow those links - append `.md` to get markdown. Examples of
|
||||
pages you might discover this way:
|
||||
- `about-claude/models/whats-new-claude-*` — per-generation changes
|
||||
- `build-with-claude/extended-thinking` — thinking budget configuration
|
||||
- `build-with-claude/effort` — effort parameter levels
|
||||
- `build-with-claude/adaptive-thinking` — adaptive thinking mode
|
||||
- `about-claude/models/whats-new-claude-*` - per-generation changes
|
||||
- `build-with-claude/extended-thinking` - thinking budget configuration
|
||||
- `build-with-claude/effort` - effort parameter levels
|
||||
- `build-with-claude/adaptive-thinking` - adaptive thinking mode
|
||||
|
||||
**Fallback web pages** (crawl if `.md` paths break or structure changes):
|
||||
- https://platform.claude.com/docs/en/about-claude/models/overview
|
||||
|
||||
@@ -77,7 +77,7 @@ function _displayKey(key: string): string {
|
||||
|
||||
/**
|
||||
* Build a set of fingerprints from currently registered shortcuts for active detection.
|
||||
* Fingerprint: `key_lowercase:ctrl:shift` — matches the global handler resolution.
|
||||
* Fingerprint: `key_lowercase:ctrl:shift` - matches the global handler resolution.
|
||||
*/
|
||||
function _buildActiveFingerprints(): Set<string> {
|
||||
const allShortcuts = useGlobalShortcutsStore.getState().getAllShortcuts();
|
||||
|
||||
@@ -147,8 +147,8 @@ function AutoDownloadToggle(props: { delay?: number }) {
|
||||
* Portable attachment sources component.
|
||||
*
|
||||
* Three modes:
|
||||
* - **menu-compact**: Mobile-style — icon trigger, simple MenuItems (no descriptions/animations)
|
||||
* - **menu-rich**: Desktop-style — labeled button trigger, rich items with descriptions and animations
|
||||
* - **menu-compact**: Mobile-style - icon trigger, simple MenuItems (no descriptions/animations)
|
||||
* - **menu-rich**: Desktop-style - labeled button trigger, rich items with descriptions and animations
|
||||
* - **inline-buttons**: Individual source buttons rendered inline (no dropdown)
|
||||
*/
|
||||
export const AttachmentSourcesMemo = React.memo(AttachmentSources);
|
||||
@@ -174,7 +174,7 @@ function AttachmentSources(props: {
|
||||
onOpenWebInput: () => void,
|
||||
}) {
|
||||
|
||||
// state (screen capture — used in menu modes where the component handles the capture)
|
||||
// state (screen capture - used in menu modes where the component handles the capture)
|
||||
const [capturingScreen, setCapturingScreen] = React.useState(false);
|
||||
const [screenCaptureError, setScreenCaptureError] = React.useState<string | null>(null);
|
||||
|
||||
@@ -201,7 +201,7 @@ function AttachmentSources(props: {
|
||||
}, [onAttachScreenCapture]);
|
||||
|
||||
|
||||
// inline-buttons mode — individual buttons rendered flat (no dropdown)
|
||||
// inline-buttons mode - individual buttons rendered flat (no dropdown)
|
||||
if (props.mode === 'inline-buttons')
|
||||
return <>
|
||||
|
||||
@@ -234,7 +234,7 @@ function AttachmentSources(props: {
|
||||
</>;
|
||||
|
||||
|
||||
// menu-compact mode (mobile) — simple icon trigger with flat menu items
|
||||
// menu-compact mode (mobile) - simple icon trigger with flat menu items
|
||||
if (props.mode === 'menu-compact' || props.mode === 'menu-message') {
|
||||
const isMessage = props.mode === 'menu-message';
|
||||
return <>
|
||||
@@ -321,7 +321,7 @@ function AttachmentSources(props: {
|
||||
}
|
||||
|
||||
|
||||
// menu-rich mode (desktop) — labeled button trigger with animated, descriptive menu items
|
||||
// menu-rich mode (desktop) - labeled button trigger with animated, descriptive menu items
|
||||
return (
|
||||
<Dropdown>
|
||||
<MenuButton
|
||||
|
||||
@@ -29,7 +29,7 @@ function notifyOnlyImages(item: any) {
|
||||
export type AttachmentStoreCloudInput = Omit<Extract<AttachmentDraftSource, { media: 'cloud' }>, 'media' | 'origin'>;
|
||||
|
||||
|
||||
/** Inferred return type — used by composable source handler hooks. */
|
||||
/** Inferred return type - used by composable source handler hooks. */
|
||||
export type AttachmentDraftsApi = ReturnType<typeof useAttachmentDrafts>;
|
||||
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ const _style = {
|
||||
/**
|
||||
* Compact numeric input field with label and optional description.
|
||||
* Supports undefined (unset/default) state with a toggle button:
|
||||
* - undefined: input disabled, X button pressed (soft) — input shows empty
|
||||
* - number: input active, X button flat (plain) — pressing X clears to undefined
|
||||
* - undefined: input disabled, X button pressed (soft) - input shows empty
|
||||
* - number: input active, X button flat (plain) - pressing X clears to undefined
|
||||
*/
|
||||
export function FormNumberInput(props: {
|
||||
title: string,
|
||||
|
||||
@@ -24,17 +24,17 @@ const buttonSx: SxProps = {
|
||||
export function ChromelessFloatingButtons() {
|
||||
return <>
|
||||
|
||||
{/* Left — where the drawer toggle usually is */}
|
||||
{/* Left - where the drawer toggle usually is */}
|
||||
<IconButton aria-label='Open Drawer' variant='soft' onClick={optimaOpenDrawer} style={{ left: '0.5rem' }} sx={buttonSx}>
|
||||
<MenuIcon />
|
||||
</IconButton>
|
||||
|
||||
{/* Center — exit chromeless (styled like the scroll-to-bottom button) */}
|
||||
{/* Center - exit chromeless (styled like the scroll-to-bottom button) */}
|
||||
<IconButton aria-label='Exit Chrome-less' variant='soft' onClick={optimaExitChromeless} sx={buttonSx} style={{ left: '50%', transform: 'translateX(-50%)' }}>
|
||||
<FullscreenExitIcon />
|
||||
</IconButton>
|
||||
|
||||
{/* Right — where the panel toggle usually is */}
|
||||
{/* Right - where the panel toggle usually is */}
|
||||
<IconButton aria-label='Open Menu' variant='soft' onClick={optimaOpenPanel} style={{ right: '0.5rem' }} sx={buttonSx}>
|
||||
<LayoutSidebarRight />
|
||||
</IconButton>
|
||||
|
||||
@@ -47,7 +47,7 @@ export const useLogicSherpaStore = create<SherpaStore>()(
|
||||
),
|
||||
);
|
||||
|
||||
// increment the usage count (client-only — localStorage is unavailable during SSR)
|
||||
// increment the usage count (client-only - localStorage is unavailable during SSR)
|
||||
if (isBrowser)
|
||||
useLogicSherpaStore.setState((state) => ({ usageCount: (state.usageCount || 0) + 1 }));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import { DModelParameterSpecAny } from '~/common/stores/llms/llms.parameters';
|
||||
const SKIP_FM_ID_CONTAINS = ['rerank'];
|
||||
const SKIP_IP_ID_STARTSWITH = ['stability.'];
|
||||
|
||||
// Known Mantle-only models (no matching foundation model) — override heuristics with accurate metadata
|
||||
// Known Mantle-only models (no matching foundation model) - override heuristics with accurate metadata
|
||||
const KNOWN_MANTLE_ONLY: Record<string, { label: string; ctx: number; out: number; vision?: true; reasoning?: true }> = {
|
||||
'deepseek.v3.1': { label: 'DeepSeek V3.1', ctx: 131072, out: 16384 },
|
||||
'moonshotai.kimi-k2-thinking': { label: 'Kimi K2 Thinking', ctx: 131072, out: 16384 },
|
||||
|
||||
@@ -163,13 +163,13 @@ const IF_25 = [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_OAI_Jso
|
||||
const IF_30 = [...IF_25]; // Note: Gemini 3 Developer Guide recommends temperature=1.0, which is now set as the default via initialTemperature
|
||||
|
||||
// Gemini Thinking Control (as of 2026-02-19):
|
||||
// - Gemini 3 models use `thinkingLevel` (llmVndGemEffort) — NOT thinkingBudget.
|
||||
// - Gemini 3 models use `thinkingLevel` (llmVndGemEffort) - NOT thinkingBudget.
|
||||
// Supported levels: 3.1 Pro=['low','medium','high'], 3 Pro=['low','high'], Flash=['minimal','low','medium','high']. Default is 'high' (dynamic).
|
||||
// Pro does not support disabling thinking. Flash's 'minimal' does not guarantee thinking is off.
|
||||
// - Gemini 2.5 models use `thinkingBudget` (llmVndGeminiThinkingBudget) — NOT thinkingLevel.
|
||||
// - Gemini 2.5 models use `thinkingBudget` (llmVndGeminiThinkingBudget) - NOT thinkingLevel.
|
||||
// Budget=0 disables thinking (Flash/Flash-Lite only; Pro cannot disable). Undefined = auto.
|
||||
// Note: the parameter sweep shows thinkingBudget accepted on Gemini 3, but the official docs
|
||||
// prescribe thinkingLevel for Gemini 3. We follow the docs — do NOT add thinkingBudget to Gemini 3 models.
|
||||
// prescribe thinkingLevel for Gemini 3. We follow the docs - do NOT add thinkingBudget to Gemini 3 models.
|
||||
// NOTE: LLM_IF_Outputs_Image is auto-implied by llmsAutoImplyInterfaces() from image parameterSpecs (llmVndGeminiAspectRatio, llmVndGeminiImageSize)
|
||||
|
||||
|
||||
|
||||
@@ -187,9 +187,9 @@ export function openRouterModelToModelDescription(wireModel: object): ModelDescr
|
||||
if (DEV_DEBUG_OPENROUTER_MODELS && !antLookup && ['anthropic/claude-3.5-sonnet'].every(silence => !model.id.startsWith(silence)))
|
||||
console.log('[DEV] openRouterModelToModelDescription: unknown Anthropic model:', model.id);
|
||||
|
||||
// 0-day: non-indexed models only — indexed ones use native definitions via llmOrtAntLookup.
|
||||
// 0-day: non-indexed models only - indexed ones use native definitions via llmOrtAntLookup.
|
||||
// OR sweep shows effort on all Anthropic models because OR translates reasoning_effort internally;
|
||||
// the native API only supports effort on select models — trust the manual definitions for those.
|
||||
// the native API only supports effort on select models - trust the manual definitions for those.
|
||||
if (interfaces.includes(LLM_IF_OAI_Reasoning) && !parameterSpecs.some(p => p.paramId === 'llmVndAntThinkingBudget')) {
|
||||
DEV_DEBUG_OPENROUTER_MODELS && console.log(`[DEV] openRouterModelToModelDescription: unexpected ${antLookup ? 'KNOWN' : 'unknown'} Anthropic reasoning model:`, model.id);
|
||||
parameterSpecs.push({ paramId: 'llmVndAntThinkingBudget' }); // configurable thinking budget
|
||||
@@ -205,7 +205,7 @@ export function openRouterModelToModelDescription(wireModel: object): ModelDescr
|
||||
if (DEV_DEBUG_OPENROUTER_MODELS && !gemLookup && ['google/gemma-', 'google/gemini-2.5-pro-preview-05-06'].every(silence => !model.id.startsWith(silence)))
|
||||
console.log('[DEV] openRouterModelToModelDescription: unknown Gemini model:', model.id);
|
||||
|
||||
// 0-day: non-indexed models only — indexed ones use native definitions via llmOrtGemLookup.
|
||||
// 0-day: non-indexed models only - indexed ones use native definitions via llmOrtGemLookup.
|
||||
// OR sweep shows effort on all Gemini models because OR translates reasoning_effort internally;
|
||||
// the native API uses thinkingLevel (discrete) or thinkingBudget (integer) depending on generation.
|
||||
if (interfaces.includes(LLM_IF_OAI_Reasoning) && !parameterSpecs.some(p => p.paramId === 'llmVndGeminiThinkingBudget' || p.paramId === 'llmVndGemEffort')) {
|
||||
@@ -232,7 +232,7 @@ export function openRouterModelToModelDescription(wireModel: object): ModelDescr
|
||||
if (DEV_DEBUG_OPENROUTER_MODELS && !oaiLookup && ['openai/gpt-oss', 'openai/gpt-3.5'].every(silence => !model.id.startsWith(silence)))
|
||||
console.log('[DEV] openRouterModelToModelDescription: unknown OpenAI model:', model.id);
|
||||
|
||||
// 0-day: non-indexed models only — indexed ones use native definitions via llmOrtOaiLookup.
|
||||
// 0-day: non-indexed models only - indexed ones use native definitions via llmOrtOaiLookup.
|
||||
// OR sweep may show broader effort ranges than the native API supports (OR adds levels internally).
|
||||
if (interfaces.includes(LLM_IF_OAI_Reasoning) && !parameterSpecs.some(p => p.paramId === 'llmVndOaiEffort')) {
|
||||
// console.log('[DEV] openRouterModelToModelDescription: unexpected OpenAI reasoning model:', model.id);
|
||||
|
||||
Reference in New Issue
Block a user