Add missing 'variant' property to task tool metadata in prompt-effect test, required after upstream added model variant support to the task tool's ExecuteResult type.
* fix: allow ChatGPT login over OpenAI provider config
Let users with inherited or globally configured OpenAI API keys sign in with ChatGPT for Codex without first removing their existing provider setup.
* fix: satisfy provider login ci checks
Annotate Kilo-specific shared CLI changes and apply webview formatting so the existing ChatGPT login flow passes CI.
Strengthen the Kilo queue integration test to capture each LLM
request body and assert the second request ends with the queued
user message, not a prior-turn assistant tail. Update the skipped
upstream prompt-effect active-run test comment to reference #9492
and point at the Kilo-specific authoritative coverage.
The gateway wraps @openrouter/ai-sdk-provider internally, so the same
openrouter SDK-side reasoning handling applies. Without this, users
routing through api.kilo.ai still see DeepSeek 400 'reasoning_content
must be passed back' errors.
The command writes to .opencode/opencode.jsonc and .opencode/tui.jsonc
(or ~/.config/kilo/* for --global), not kilo.json. See #9503 for the
underlying bug — when fixed, this doc must be updated in the same PR.
Per @lambertjosh's review, duplicate the delegation-override block for the
current VSCode extension and slot it between CLI and VSCode (Legacy).
The new tab mirrors his suggested text: inherits parent model from the
chat selector, override via Settings -> Providers -> Model per Mode or
by editing kilo.jsonc. Notes that the Settings UI and the JSON file
write the same `agent.<name>.model` entry so either path works.
The task tool propagates each child session's total cost into the parent's tool-wrapper assistant message. Counting both root and child sessions in `kilo stats` would double-count that contribution. Filter `getAllSessions()` to root sessions (parent_id IS NULL), matching how the TUI session list and web sidebar already treat child sessions.
finish-step and cleanup previously re-wrote the parent assistant message with a stale in-memory cost, clobbering the subagent cost written by task.ts during tool execution. Refresh from DB before each write so the propagated cost is preserved across steps. Verified live via side-by-side `kilo serve` vs dev `bun serve` with 2 parallel subagents; parent now shows own LLM + children, matching real spend.
DeepSeek thinking mode may return empty reasoning_content on assistant
messages in a tool call chain, which must be sent back in subsequent
requests. The interleaved transform's truthy check was dropping it.
Always set providerOptions.openaiCompatible[field] for assistant
messages so the AI SDK's metadata spread carries it through.
Cherry-picked from anomalyco/opencode#24146 (931e6ed).
* fix(vscode): align new session and terminal tab behavior in agent manager
New session tabs and the pending 'new session' card sometimes landed
in front of open terminals because tab-order writes were skipped when
the id was already in the base order. Rewrite the factory to pin the
id at its target rendered position (tail for append, after-anchor for
insertAfter) and extend DragOverlay to resolve terminal ids so the
drag ghost behaves the same across session, review, and terminal tabs.
* fix(vscode): strip ephemeral ids from persisted tab order
Review and terminal:* ids are session-scoped — terminal PTYs don't
survive reloads and the review tab is a per-context toggle. They
leaked into agent-manager.json via the new merge-and-append logic.
Callers now filter them before persisting; the in-memory order
keeps them for drag state.