feat(FN-1044): add thinkingLevel and planning model support to task creation

- Add thinkingLevel field to createTask and updateTask in core store
- Accept thinkingLevel and planningModel fields in dashboard task routes
- Send thinkingLevel and planningModel in frontend API calls from task forms
- Add ThinkingLevel selector to ModelSelectorTab component with tests
- Wire up planning model and thinking level in QuickEntryBox, TaskForm, and NewTaskModal
- Add unit tests for store, routes, and ModelSelectorTab coverage
- Add changeset and update AGENTS.md documentation
This commit is contained in:
gsxdsm
2026-04-07 12:18:49 -07:00
parent 825ae1061b
commit 880f29115c
13 changed files with 463 additions and 12 deletions

View File

@@ -1152,17 +1152,19 @@ Per-task model overrides are stored in the task's `task.json`:
"validatorModelProvider": "openai",
"validatorModelId": "gpt-4o",
"planningModelProvider": "google",
"planningModelId": "gemini-2.5-pro"
"planningModelId": "gemini-2.5-pro",
"thinkingLevel": "high"
}
```
To clear overrides, select "Use default" for both fields and save.
To clear overrides, select "Use default" for both fields and save. To reset thinking level, select "Off (default)".
### Engine Behavior
- **Executor**: When both `modelProvider` and `modelId` are set on a task, the executor uses those instead of global settings when creating the agent session.
- **Reviewer**: When both `validatorModelProvider` and `validatorModelId` are set, the reviewer uses those instead of global settings. The validator model is passed via `ReviewOptions` to `reviewStep()`.
- **Planning**: When both `planningModelProvider` and `planningModelId` are set, the triage agent uses those instead of global settings for task specification.
- **Thinking Level**: When `thinkingLevel` is set to a value other than `"off"`, the executor uses that reasoning effort level instead of the global default. Configurable from the Model tab in the task detail modal and during task creation. Valid values: `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`.
### Limitations