odysseus/static/js
Mark Cockram 0e2c08300e
feat(settings): opt-in reasoning effort for utility model calls (#6572)
* feat(settings): opt-in reasoning effort for utility model calls

Add utility_reasoning_effort (empty = provider default) and let utility
calls inherit a chat session's effort only on that session's matching
endpoint+model route. Explicit caller effort wins; otherwise the utility
setting wins over session inheritance on utility-chain routes. Resolve
the chain and setting per user and validate levels against model evidence.
No-session work uses the setting only, with no chat-effort crossover.

- src/utility_effort.py owns effort_for_call and candidate_effort_factory
- remove global effort fill from llm_call/llm_call_async; utility call
  sites pass effort explicitly, so unrelated calls on the same route do
  not pick it up
- wire auto-title, memory/persona/skill extraction, memory suggest/import/
  audit, compaction, auto-sort, and per-owner background task candidates
- wire no-session email writing-style, summary, and translation calls,
  plus skills evaluation, necessity/retrieval audits, and improvement
- deliberately exclude email replies because thinking_mode='off'
- add the optional candidate_request_factory to llm_call_async_with_fallback
- add sync llm_call reasoning_effort and include it in the cache key
- show the Utility Model effort selector only for advertised levels

Fixes #6569

* fix(utility): exclude email replies and support inherited effort in settings

Pass reasoning_effort='' to task_llm_call_async for scheduled reply drafting to honor the email reply exclusion. In AI settings, resolve the effective Default Chat endpoint and model when Utility is set to 'Same as chat' so supported reasoning effort levels can be selected.

* feat(utility): support same-as-chat effort and session model fallback in compaction

In AI settings, show 'Same as chat' as the default effort option when Utility Model is inherited, and support an explicit 'Provider default' (off) override. Pass the active session fallback in context compaction callers so compaction shares the live chat session's model and reasoning effort for maximum prompt/KV cache affinity.

* fix(settings): clarify chat effort inheritance and keep option visible

Label inherited effort as 'Same as chat (when supported)' and mention
cache affinity and latency speedups in the help text. Ensure the effort
control remains visible when the utility model is set to 'Same as chat'
even if the default chat model lacks advertised reasoning levels, and
populate candidate levels across configured endpoints so the user can
configure effort or keep provider default.

* feat(settings): per-fallback reasoning effort for utility model

Each utility fallback row gets an Effort select, shown only when the
selected model advertises reasoning levels. The choice is stored as
reasoning_effort on the utility_model_fallbacks entry and sent only to
that candidate; an empty value means provider default.

* fix(utility): transmit reasoning effort in non-streaming calls

---------

Co-authored-by: Alexandre Teixeira <111787685+alteixeira20@users.noreply.github.com>
2026-10-13 21:02:16 +01:00
..
calendar Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
color fix: theme color parsing breaks on #rgb shorthand hex (#1213) 2026-06-03 00:30:03 +09:00
compare Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
editor Merge commit 'refs/phase3/pre-ajax/publication-tip' into integration/pre-ajax-release 2026-10-05 15:59:59 +01:00
emailLibrary fix(security): address CodeQL findings in migration candidate 2026-10-05 20:48:12 +01:00
markdown Ignore non-string markdown table rows (#1648) 2026-06-03 14:17:02 +09:00
model fix: model cost/info matches first substring key (gpt-4o-mini billed as gpt-4o) (#1439) 2026-06-04 03:05:37 +01:00
research Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
settings merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
util fix: monthly schedule label shows 21th/22th/31th (ordinal suffix for days >20) (#1577) 2026-06-03 08:57:47 +09:00
a11y.js Improve accessibility across core flows (#86) 2026-06-01 22:04:00 +02:00
actionMenuOrder.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
admin.js fix(security): address CodeQL findings in migration candidate 2026-10-05 20:48:12 +01:00
appConfig.js perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
assistant.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
backgroundToolJobs.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
calendar.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
censor.js Ignore censor preference storage errors (#1652) 2026-06-03 14:16:55 +09:00
chat.js feat(notes): attach selected Notes/Todos as Agent context (#6495) 2026-10-13 18:57:19 +01:00
chatgptSubscriptionUsage.js feat(ui): refine subscription model and usage controls 2026-09-22 13:12:19 +01:00
chatModelProvenance.js refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
chatRenderer.js fix(security): isolate session cost ledger keys 2026-10-06 00:25:24 +01:00
chatStream.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
chatStreamErrors.js refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
chipScroll.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
codeRunner.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
colorPicker.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
composerArrowUpRecall.js fix(chat): stop ArrowUp from eating an unsent multi-line prompt (#5875) 2026-08-07 19:34:50 +02:00
cookbook-deps-recipes.js Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
cookbook-diagnosis.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbook-hwfit.js chore(publication): close pre-integration release blockers 2026-10-05 01:37:49 +01:00
cookbook.js chore(publication): close pre-integration release blockers 2026-10-05 01:37:49 +01:00
cookbookDownload.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookPorts.js fix(cookbook): only block model launch on real port collisions (#4760) 2026-06-24 19:44:09 +02:00
cookbookProgressSignal.js Don't falsely declare a dependency build stale (#1568) (#1768) 2026-06-03 13:23:35 +09:00
cookbookRunning.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookSchedule.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookServe.js chore(publication): close pre-integration release blockers 2026-10-05 01:37:49 +01:00
document.js fix(security): harden browser security boundaries 2026-10-05 23:48:14 +01:00
documentLibrary.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
documentOutline.js Merge commit 'refs/phase3/pre-ajax/publication-tip' into integration/pre-ajax-release 2026-10-05 15:59:59 +01:00
documentStats.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
dragSort.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
emailInbox.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
emailLibrary.js merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
emailReplyStream.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
emailShared.js Polish mobile UI and editor workflows 2026-06-27 13:05:44 +00:00
emojiPicker.js fix(modal): keep body-portaled dropdowns above their tool modal at any stack depth (#4720) (#4724) 2026-06-23 10:24:31 +02:00
emojiShortcodes.js Render emoji shortcodes as icons in chat (#345) (#629) 2026-06-05 02:28:42 +02:00
escMenuStack.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
fileHandler.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
gallery.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
galleryEditor.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
generatedImageResult.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
group.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
init.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
keyboard-shortcuts.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
langIcons.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
liveThinkingThrottle.js perf(chat): batch live thinking rendering and bound timer updates (#5931) 2026-08-10 20:11:48 +01:00
markdown.js fix(security): avoid SVG title DOM reparsing 2026-10-05 22:33:25 +01:00
memory.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
mobileBulkSelect.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
modalManager.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
modalSnap.js Merge remote-tracking branch 'origin/dev' into test-main-dev-merge-20260615 2026-06-15 21:20:15 +09:00
modelPicker.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
models.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
modelSort.js Ignore invalid model sort inputs (#1653) 2026-06-03 14:16:52 +09:00
MODULE_SUMMARY.md refactor(email): split the email library into seven modules 2026-09-30 09:26:34 +02:00
notes.js feat(notes): attach selected Notes/Todos as Agent context (#6495) 2026-10-13 18:57:19 +01:00
package.json Fix test suite: ESM module loading and stub isolation (#844) 2026-06-02 11:29:29 +09:00
panels.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
platform.js Ignore AltGr keystrokes in Ctrl+Alt keyboard shortcuts (#825) 2026-06-02 11:12:54 +09:00
presets.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
providerDeviceFlow.js feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
providers.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
rag.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
researchSynapse.js fix(ui): restore rich text controls and accessible research map 2026-09-22 23:26:43 +01:00
search-chat.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
search.js perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
searchProviderIcons.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
section-management.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
sessions.js feat(notes): attach selected Notes/Todos as Agent context (#6495) 2026-10-13 18:57:19 +01:00
settings.js feat(settings): opt-in reasoning effort for utility model calls (#6572) 2026-10-13 21:02:16 +01:00
sidebar-layout.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
signature.js Merge lab into refactor/split-style-css 2026-10-01 00:48:58 +01:00
skills.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
skillsMetrics.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
slashAutocomplete.js feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
slashCommands.js feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
spinner.js fix(ui): stop the whirlpool spinner animating when it is never attached (#5990) 2026-08-12 00:25:03 +01:00
startupShell.js perf(ui): stop session loading from blocking shell (#5927) 2026-08-10 19:37:21 +01:00
storage.js feat(a11y): add a Text size control and an OpenDyslexic font option (#4210) 2026-06-22 13:53:46 +02:00
streamingRenderer.js fix(chat): stop code-block button flicker during streaming (#3023) 2026-06-06 04:08:54 -06:00
streamingSegmenter.js fix(chat): stop code-block button flicker during streaming (#3023) 2026-06-06 04:08:54 -06:00
tasks.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
theme.js chore(publication): close pre-integration release blockers 2026-10-05 01:37:49 +01:00
tileManager.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
toolWindowZOrder.js fix(modal): keep body-portaled dropdowns above their tool modal at any stack depth (#4720) (#4724) 2026-06-23 10:24:31 +02:00
tourAutoplay.js feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
tourHintDismiss.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
tourHints.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
tts-ai.js perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
turnRendering.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
ui.js Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
ui_visibility.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
voiceRecorder.js Odysseus v1.0 2026-05-31 23:58:26 +09:00
windowDrag.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
windowResize.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
workspace.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00