* sessions: fix maximized side pane toggle
Make the Agents workbench own side-pane visibility transitions and expose completed before/after state to layout controllers. This ensures a maximized side pane closes fully while preserving editor/detail restoration and per-session state.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: address side pane review feedback
Keep side-pane state editor/aux-only, correct lifecycle documentation, and leave transient auxiliary-bar cleanup to layout-specific strategies.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: support file completions across workspace roots
Enumerate the minimal set of workspace roots, attribute files to their most specific logical root, and preserve fair deterministic completion ordering across chat surfaces. Handle partial root failures, bounded ripgrep concurrency, and worktree rebasing for nested secondary roots.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: clarify working directory containment helper
Rename the helper to describe its deepest-containing-directory semantics and document the behavior at its shared definition.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: harden multi-root file completions
Preserve host ordering through Monaco filtering, disambiguate duplicate filenames, recover nested roots after truncated enumeration, and start cache expiry only after successful completion. Clarify the completion-root model with focused documentation and regression coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: improve file completion labels
Qualify duplicate filenames with concise logical-root and relative-path labels while keeping unique filenames basename-only.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Hide the 'New Automation' button when there are no automations
* Fix caps
* Fix context key setting for btn
* Always show custom view header divider
Previously the bottom border on the custom view header band was transparent
by default and only became visible when the user scrolled down (via the
.scrolled class toggled in customViewNode.ts). This meant the divider
between the header and content was invisible at the top scroll position.
Change the border color to always be visible so the header is consistently
separated from the content regardless of scroll position.
* Move automation dialog CSS to dedicated file and fix button padding
The automation dialog CSS was still living in aiCustomizationManagement.css
after the automations list widget was removed in #328654. Move it to a
dedicated automationDialog.css file next to the dialog service and add the
import there.
Also fix padding issues where Create/Cancel buttons and the close button
were too close to the dialog border (padding: 0 was inherited from the
base dialog override):
- dialog-toolbar-row (close button): 4px/6px → 8px/10px from top/right
- dialog-buttons-row: add 8px top, 10px side, 10px bottom padding
* Fix pointer cursor on automation dialog form labels
Schedule, Time, Day of week, and Prompt labels were rendered as <label>
elements without 'for' attributes. Chromium applies cursor: pointer to
<label> elements regardless of author CSS, making them look like links.
Change them to <span> elements since they are purely visual section
headers with no programmatic association to their controls.
* Fix extra spacing around automation dialog prompt input
chat.css sets padding: 4px 0 on .interactive-input-part, designed for
the full chat panel. In the compact dialog this adds visible dead space
above the rounded input container (below the Prompt label) and below
the secondary toolbar. Zero out both ends.
Also reduce the 6px bottom padding inside .chat-input-container (between
the picker chips and the container border) to 2px.
* Truncate long automation card titles with ellipsis
word-break: break-word on the card name container caused the Disabled
badge to word-wrap when titles were long. Replace with ellipsis
truncation on the title text so the badge always stays on one line.
* Use editorWidget.border token for automation card outlines
widget.border is transparent in many themes, making cards invisible.
Switch to editorWidget.border which has concrete defaults across light
and dark themes, and add a contrastBorder override for HC themes.
* Fix ellipsis truncation on automation card titles and add context key test
The title span needs flex: 1 1 0; min-width: 0 to actually shrink as a
flex item — without it the min-width: auto default prevents ellipsis from
engaging on long unbroken strings.
Also add test coverage for the AutomationsHasItemsContext global context
key fix: verifies the key transitions false → true → false as the
automations observable changes through empty/non-empty/empty states.
Export AutomationsCustomViewContribution to enable direct instantiation
in the test.
* Always show header divider for automations view
Stamp data-view-id on the custom view node element so individual views
can override the scroll-driven divider behavior via CSS. Use this to
always show the header bottom border in the automations view, while
keeping the scroll-driven behavior intact for any other custom views.
* Require confirmation for sed in-place auto-approval
Add a shared semantic sed analyzer and apply it before Agent Host terminal
allow rules so in-place and runtime-resolved option forms cannot auto-approve.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
* Share sed in-place destination analysis
Use one GNU/BSD-aware analyzer in workbench and Agent Host, applying
existing destination policies to static writes and failing closed otherwise.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
* Handle sed executable casing and invalid options
Normalize sed executable matching for PowerShell and avoid treating option
characters after an invalid short option as in-place flags.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
* Fix sed analyzer CI validation
Use explicit analyzer callbacks for TypeScript and quote native Windows paths
in Bash session-policy tests so shell decoding preserves the absolute path.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
* Scope sed in-place auto-approval fix
Move the existing workbench sed parser to terminal common and reuse its
in-place detection as a non-overridable Agent Host confirmation gate.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
* Group shared sed parser under terminal auto-approval
Place the shared parser and its tests under terminal/common/autoApprove to
make the feature-specific ownership explicit without changing behavior.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bda42f98-e73f-417f-b7e6-03cff9e2f604
Record provenance even when the workspace currently contains one folder, instead of inferring multi-root identity from folder count.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: separate agent and execution mode telemetry
Keep chat.modeChange scoped to user picker and custom-agent selections, including the Agents Window, and report interactive, plan, and autopilot transitions through agentHost.executionModeChanged.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: scope mode picker telemetry to active chat
Resolve the previous mode and request count from the picker surface's scoped session and active chat so multi-session and peer-chat selections are attributed correctly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: show token stats for completed responses
Aggregate Copilot SDK token usage per model for each turn and expose it on the completed-response disclosure hover.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: move token stats hover to the response footer stat
Surface the per-model token breakdown on the footer's model and credits stat instead of the collapsed steps disclosure, and fold its counts into the footer's accessible name.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: clarify completed response token aggregation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: restore unrelated files to main
The merge resolution stripped a trailing newline from two files unrelated to this change; restore them so the PR stays scoped to the token-stats feature.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: update chat service snapshots for token totals
Adding modelTotals to the serialized response changed the snapshotted shape; regenerate the affected baselines.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* use localized model name instead of raw id
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: justschen <justchen@microsoft.com>
Co-authored-by: Justin Chen <54879025+justschen@users.noreply.github.com>
* Fix default model
* Address PR feedback on default thinking effort
- Trim resolveDefaultReasoningEffort JSDoc to the stable contract
- Filter reasoning efforts to launcher-supported levels inside the schema
helper so unsupported levels are never advertised or chosen as default
- Guarantee a default in the Copilot CLI extension producer via
pickDefaultReasoningEffort
- Keep the model picker configuration button actionable instead of hiding it
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 88afcac4-196d-4577-b429-b2c5b802bf57
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 88afcac4-196d-4577-b429-b2c5b802bf57
Keep the SDK at the first version that supports thinking levels and avoid the unapproved install script introduced by newer releases.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Allow model metadata to declare the provider's default reasoning effort so VS Code does not replace Gemini's implicit high default with the generic fallback.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Auto-reload Integrated Browser when previewed local file changes
Adds a BrowserEditorContribution that watches the currently-displayed
file:// URL via a correlated file watcher and reloads the browser on
change, so editing a local file opened with "Open in Integrated
Browser" refreshes the preview without a manual reload. Gated by the
new workbench.browser.autoReloadOnFileChange setting (on by default).
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Kyle Cutler <67761731+kycutler@users.noreply.github.com>
* Add ask questions telemetry for agent host
Track live ask-user input requests through completion and emit the existing telemetry event with Agent Host session identifiers.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Classify Claude elicitation requests in mapper
Keep elicitation purpose ownership with the mapper so every generated request is classified consistently.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Clear ask questions telemetry on truncation
Drop pending chat input telemetry when truncation removes the active turn, allowing reused request IDs to correlate with the new turn.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix Agent Host edit harness attribution
Resolve AHP chat channel URIs to their owning session when deriving edit telemetry harnesses while preserving per-chat resource and conversation identity.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Clarify Agent Host conversation ID coverage
Use explicit expected IDs so the harness attribution test documents the existing chat-channel conversation semantics without masking the shared encoded parent ID.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix Claude peer chat edit attribution
Route Claude file edit tracking through the effective chat storage URI so peer chat edits remain independently recorded and flushed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Dialogs: Preserve arrow keys in editable controls
Prevent dialog focus navigation from consuming horizontal arrow keys in embedded text inputs. Fixes#328732.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9f5a1f06-c4b5-43f2-bff2-9d3a41f3d611
* Cover contenteditable in dialog arrow-key guard
Addresses PR review: include isContentEditable so the guard also protects contenteditable surfaces rendered via renderBody, and extend the test.1