Commit Graph

2148 Commits

Author SHA1 Message Date
Sandeep Somavarapu 767e9e56b4 sessions: hide session picker groups when no duplicate session names (#322307)
* sessions: hide session picker groups when no duplicate session names

Section headers in the session type picker exist to disambiguate session
types that share a label across providers (e.g. two providers both
offering "Claude"). When every type's label is unique there is nothing
to disambiguate, so render a flat list without group headers even when
multiple providers contribute.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: rename Copilot CLI session type label to "Copilot"

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: update Agents Window smoke test for renamed Copilot label

The Copilot CLI session type label was renamed to "Copilot" (shared
CopilotCLISessionType used by the Copilot Chat provider), so the picker
no longer exposes a "Copilot CLI" entry. Select "Copilot" instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-22 00:23:00 +02:00
Alexandru Dima f7bc66f118 smoke: fix flaky Chat Sessions copilot-chat activation race (#322187)
The Chat Sessions smoke test runs right after the Chat Disabled suite,
which disables AI features. When the suite re-enables them, there is a
brief window where copilot-chat is still disabled and its commands are
not yet registered. The smoke helper invoked
'github.copilot.debug.extensionState' to force-activate copilot-chat,
but that executeCommand rejected with 'command not found' during this
window, aborting the handler before it could open the chat editor and
causing a 60s timeout on '.editor-instance .interactive-session'.

Wait for the diagnostic command to be registered (via the existing
waitForCommand helper) before invoking it, so the handler no longer
races copilot-chat enablement/activation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 23:14:01 +02:00
Alexandru Dima 16c0598ca1 smoke: fix flaky Agents Window Copilot CLI session activation (#322170)
The "Agents Window > Test Copilot CLI session" smoke test flakily timed
out at `activateSessionByLabel`, which located the just-completed session
row by its title and expected it to equal the mocked reply
`MOCKED_COPILOT_RESPONSE`. That title is set asynchronously by a utility
model after the first turn and races the untitled->committed session
swap, so it is non-deterministically either the user's prompt (the
synchronous fallback) or the generated reply. The test passed on macOS
(title-gen landed) and failed on Linux (it didn't) in the same run.

Decouple row identification from response verification:
`activateSessionByLabel` now accepts one or several row substrings and
matches a row containing ANY of them, while a separate `responseLabel`
is verified against the active session's response bubble. The smoke test
passes both the first prompt and the reply, so activation is
deterministic regardless of when title generation completes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 01:15:46 +02:00
Giuseppe Cianci 469ad3d433 sessions: match new agent-host session by type, not just novelty
The local agent host runs a single sessions provider whose session cache
holds every agent-host session type (codex, claude, copilot). When a new
session is sent, the provider identifies the freshly-committed backend
session in `_waitForNewSession` purely by novelty — the first cached
session whose raw id was not present before the send. The session's
type/scheme was never checked.

That is wrong when a session of a *different* type appears in the cache
during the send. A slow Codex session (which cold-starts a native
app-server before its first /responses turn) sent while a Claude session
from an earlier run is present would latch onto the Claude session and
return it as the Codex commit. `sendRequest` then reports an
"active session replaced: codex -> claude", the workbench swaps the
active slot to the wrong session, removes the Codex one, and the Codex
reply renders nowhere. A claude harness that is suppressed in the current
window (preferAgentHost=false) additionally throws "Agent host targets
must have an item provider" when activated. This is exactly why the
Codex smoke test timed out on the Windows CI runner (where the cold-start
race is widest), failing build 449022.

Filter `_waitForNewSession` by the `chatResource` scheme so a send only
ever commits a session of its own type, in both the immediate cache scan
and the onDidChangeSessions wait. Re-enable the Codex smoke test that was
disabled in #321983 to keep the build green.

Verified: a new unit test reproduces the cross-type latch (fails before,
passes after); live launch with stale claude sessions present shows the
Codex session stays active with no wrong swap; and the (re-enabled) Codex
smoke test passes locally end-to-end.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 11:20:58 +02:00
Alexandru Dima f37a46fa1b Skip the second reply for the Copilot CLI smoke test also in the Agents Window and skip the Codex smoke test too (#321983)
* Skip the second reply for the Copilot CLI smoke test also in the Agents Window

* Skip also the Codex smoke test
2026-06-18 19:31:51 +00:00
Alexandru Dima 18ab318cd2 Skip the second reply for the Copilot CLI smoke test (#321968) 2026-06-18 17:31:19 +00:00
Alex Ross d00a7238ac Try to fix another Copilot CLI bug (#321935) 2026-06-18 16:51:01 +02:00
Alex Ross 193b1196d8 Add a second turn to the chat smoke tests (#319942)
* Reduce duplicate code

* Add a second turn to the chat smoke tests

* Fix tests

* "fix" sandbox test

* Make things work

* Get tests passing

* CCR feedback

* Simplify diff

* Undo chatView.ts changes

* Missing Claude warm up
2026-06-18 12:22:13 +02:00
Dmitriy Vasyura 13a3f8011b Remove dismissing of the trust dialog since workspace is now untrusted by default (#321854) 2026-06-17 18:19:30 -07:00
Giuseppe Cianci 71969046d4 Merge pull request #321796 from microsoft/agents/codex-harness-improvement-plan
Codex agent-host harness: feature parity + smoke coverage
2026-06-17 23:19:16 +02:00
Henning Dieterichs e3bdd732ea uses markdown link 2026-06-17 19:10:01 +02:00
Henning Dieterichs 7533927257 improved cssOrderScan 2026-06-17 19:10:01 +02:00
Giuseppe Cianci 8637799a55 Merge remote-tracking branch 'origin/main' into agents/codex-harness-improvement-plan
# Conflicts:
#	src/vs/platform/agentHost/node/codex/codexAgent.ts
2026-06-17 19:00:37 +02:00
Giuseppe Cianci 8e32735940 Codex smoke: route shared CAPI client at the mock so the turn actually runs
The Codex smoke test previously could only skip: when the Codex session
type WAS available, the agent host's shared CopilotApiService discovered
CAPI endpoints by calling a hardcoded `api.github.com/copilot_internal/user`,
which 401s with the fake smoke token (the other harnesses avoid this —
Copilot CLI uses the @github/copilot SDK pointed at COPILOT_API_URL, and
the renderer-side Claude test uses the extension token manager). So no
agent-host model path had ever been mocked.

- copilotApiService.ts: honor a test-only `VSCODE_AGENT_HOST_CAPI_URL_OVERRIDE`
  env. When set, skip the api.github.com discovery and route every CAPI
  request (models/responses/messages) at the override. Never set in
  production, so per-token discovery is unchanged.
- agentsWindow.test.ts (setupAgentHostSuite): set that override to the mock
  server URL, so the codex harness's model list + /responses traffic reach
  the mock.
- agentsWindow.ts (isSessionTypeAvailable): the picker dropdown is a one-shot
  snapshot, so a provider that registers a few seconds after load (codex
  spawns a native app-server first) was missed when the dropdown opened too
  early. Re-open the dropdown on each poll and use a generous timeout so the
  gate reliably runs when codex is present and only skips when it is absent.

Verified locally end-to-end: with codex available the test selects Codex,
the real app-server drives a turn through the proxy to the mock /responses
endpoint (codex's native payload), and MOCKED_CODEX_RESPONSE renders. With
codex unavailable it skips. 71 codex + 83 copilotApiService unit tests pass.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-17 18:44:24 +02:00
dependabot[bot] 619a24ac0b Bump form-data from 3.0.4 to 3.0.5 in /test/smoke (#321700)
Bumps [form-data](https://github.com/form-data/form-data) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v3.0.4...v3.0.5)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 3.0.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
2026-06-17 16:37:37 +00:00
Giuseppe Cianci e6967d8b45 Codex: add Agents-Window smoke test (real app-server, mock LLM)
Adds an end-to-end smoke test for the codex harness that uses the REAL
codex app-server and fakes only the LLM. It reuses the existing
Agents-Window smoke harness, which already drives:

  real Agents-Window UI -> agent host -> real spawned `codex` binary ->
  real CodexProxyService -> mock LLM server

The mock LLM server (scripts/chat-simulation/common/mock-llm-server.ts)
already speaks codex's OpenAI `/responses` API and ships a
`gpt-5.3-codex` `/responses` chat-default model, so no LLM-side changes
are needed.

- test/smoke/.../agentsWindow.test.ts: new `Agents Window (Codex)` suite
  via the existing setupAgentHostSuite helper with
  `chat.agentHost.codexAgent.enabled` (codex is off by default). The test
  selects the `Codex` session type, submits a scenario prompt, and
  asserts the mocked reply plus a `chat/turnStarted` frame in the AHP
  transcript (proving the codex harness, not a renderer fallback, served
  it). Adds a warmUpCodexModel helper mirroring warmUpClaudeModel.
- test/automation/src/agentsWindow.ts: new isSessionTypeAvailable(label)
  used to skip gracefully when codex isn't registered.

Codex only registers when its SDK is resolvable (product.agentSdks.codex
in packaged builds, or VSCODE_AGENT_HOST_CODEX_SDK_ROOT in dev); when
absent the test skips rather than fails.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-17 18:14:08 +02:00
dependabot[bot] 321cfba1d3 Bump form-data from 4.0.4 to 4.0.6 in /test/mcp (#321699)
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.4 to 4.0.6.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.4...v4.0.6)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-17 09:02:47 -07:00
Christof Marti 0dde08b004 Fix Linux sandboxing (#317981) 2026-06-17 15:20:56 +02:00
dependabot[bot] d6e32e2dd5 Bump js-yaml from 4.1.1 to 4.2.0 in /test/sanity (#321695)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.2.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/commits)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-17 01:07:01 +00:00
Sandeep Somavarapu d67d6aadf2 sessions: show provider names as section headers in session type picker (#321597)
* sessions: show provider names as section headers in session type picker

The session type picker (harness picker) showed provider names like
"Copilot Chat" and "Local Agent Host" as inline descriptors to the right
of the first row in each group, which read like a label on that row and
made it look like there were duplicate/broken entries.

Render the provider name as a proper section header above each group,
with a divider between sections, when more than one provider contributes
session types. Session types are grouped by their provider's display
label (preserving first-seen order) so each header is shown once even
when providers are interleaved or share a label. The same grouping is
applied to the mobile bottom-sheet variant.

Also rename the local provider label from "Local Chat" to "Copilot Chat".

Fixes #321535

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: give session type picker a minimum width

Set a minimum width on the session type picker dropdown so it does not
collapse to a narrow popup when labels are short.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: set session type picker minimum width to 200

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: fix AgentHost smoke test selection and picker a11y for section headers

The session type picker now renders provider names as non-clickable
header rows. The smoke automation's selectSessionType matched the
provider label ("Local Agent Host") on an action row's inline group
title and clicked it; with headers that text is on a header row, so the
click did nothing and AgentHost sessions never started (CI timeouts).

- Update selectSessionType to select the first actionable row beneath a
  matching section header, while still matching session type labels
  directly on action rows.
- Include the provider label in the action item ARIA label when section
  headers are shown, so same-named types (e.g. "Claude") are
  disambiguated for screen readers since header rows are skipped by list
  navigation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-16 08:35:46 -07:00
Henning Dieterichs cf0e90192a Adds hashes & base64 encoded images 2026-06-16 10:50:08 +02:00
Henning Dieterichs 1edc47c502 Implements css order scanning for component fixtures 2026-06-15 23:05:31 +02:00
Sandeep Somavarapu b756565b44 agentHost: adopt multi-chat sessions protocol (default-chat compat layer) (#320931)
* chore: sync agent-host-protocol to b55919a (multi-chat)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* refactor: route turn access via defaultChat helpers

Adopt the multi-chat Agent Host Protocol: turns, active turn, steering,
queued messages and input requests moved off the session and onto a
per-chat channel. A single default-chat compatibility layer recombines
the session with its default chat so existing consumers keep working:

- Server (AgentHostStateManager) routes chat actions to the default chat
  and exposes a merged ISessionWithDefaultChat view.
- Client (AgentHostSessionHandler) subscribes to both the session and its
  default chat channel and merges them for reads.
- Widen action dispatch/emit signatures to SessionAction | ChatAction and
  migrate turn/tool-call/input wire strings from session/* to chat/*.
- Update tests and mock connection to serve ChatState for default-chat
  subscriptions and route chat actions accordingly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: adapt post-merge tests to multi-chat Chat* action names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: repair chat retrieval and config regressions from multi-chat adoption

The multi-chat AHP adoption introduced two classes of regressions:

1. Chat retrieval/echo routing: chat actions now emit on the derived
   default-chat channel, but several consumers were still keyed on the
   session URI. Await both the session and default-chat subscriptions
   before reading history, restore the chat channel on subscribe, forward
   ChatActions, and normalize chat<->session URIs in dispatch/side-effects.

2. Session config loss: getSessionState() now returns a merged composite
   copy (mergeSessionWithDefaultChat), and _ensureDefaultChat replaced the
   live map entry with a clone. Callers mutating the returned object
   (state.config = ...) stranded the mutation on a throwaway. Fix:
   _ensureDefaultChat mutates in place to preserve createSession/
   restoreSession return identity, and a new setSessionConfig() mutates the
   live map object for the async restore path.

Tests migrated to setSessionConfig() where they previously seeded config by
mutating getSessionState() returns; duplicate-restore and client-echo tests
updated to reflect the two-channel (session + default-chat) model.

All agentHost node suites (409) and the browser contribution suite (148)
pass; typecheck and valid-layers-check are clean.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: sync agent-host-protocol to d7f592e (chat interactivity)

Regenerates the vendored protocol/ from agent-host-protocol @ d7f592e,
which adds the optional `interactivity?: "full" | "read-only" | "hidden"`
metadata to `ChatState`/`ChatSummary` and the `ChatInteractivity` type.

Mechanical sync only (scripts/sync-agent-host-protocol.ts); no hand edits.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* refactor: preserve chat interactivity across summary/state helpers

Carries the new optional `interactivity` field through the VS Code glue
converters so it round-trips between `ChatState` and `ChatSummary`
(`createChatState`, `chatSummaryFromState`) and re-exports the
`ChatInteractivity` type alongside the other chat types.

Absence still defaults to "full", so single-default-chat sessions are
unchanged; this just stops the field being dropped during denormalization.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agentHost: sync protocol to 83fae5a (ChatInteractivity const enum)

Re-sync the vendored agent-host-protocol from a685a3e to 83fae5a, which
refactors ChatInteractivity from a string-union type to a const enum.
Pure type-level change with identical runtime string values; glue code
only passes interactivity through, so no source changes required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* address PR review feedback on multi-chat adoption

- sync protocol to b88a4a3: Snapshot.state union now includes ChatState,
  dropping the IStateSnapshot widening shim (con1)
- handler: resolve the default chat URI from the live session state's
  defaultChat field instead of assuming a URI structure, with the
  deterministic fallback clearly marked as temporary migration (con2, con3)
- protocolServerHandler: reject createChat for non-default chats with a
  ProtocolError instead of silently succeeding (ccr2)
- agentSubscription: make getPendingActions type-honest by widening the
  pending-action type to SessionAction | ChatAction and renaming the
  channel field, removing the unsafe cast (ccr3)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix turn telemetry test stranded config mutation

getSessionState returns a detached composite (session merged with its
default chat), so mutating its config stranded the change. Use the
stateManager.setSessionConfig API to write the authoritative session
state instead, matching what agentService does in production.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: route protocol integration tests through default chat channel

The multi-chat protocol adoption moved conversation contents (turns,
activeTurn, queued/steering messages, input requests) onto the session's
default chat channel, and renamed turn/tool-call/responsePart actions from
`session/*` to `chat/*`. The Protocol WebSocket integration tests still
subscribed only to the session channel and dispatched/awaited the old
`session/*` action types, causing notification timeouts and reads of
undefined turn arrays.

- Add `fetchSessionWithChat` helper that subscribes to both the session and
  its default chat channel and returns the merged ISessionWithDefaultChat view
- Update turnExecution, sessionFeatures, sessionLifecycle, multiClient to read
  turn/conversation state via the merged helper
- Rename stale `session/*` conversation actions to `chat/*` in clientTools,
  toolApproval, turnExecution, and realSdkTestHelpers
- Subscribe secondary multi-client clients to the default chat channel
- Fix copilotRealSdk usage assertion to read turns from the default chat

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: assert chat/turnStarted in AgentHost smoke test

The multi-chat protocol adoption dispatches turns as `chat/turnStarted`
on the session's default chat channel instead of `session/turnStarted`.
Update the Agents Window smoke test to look for the new action type in
the AHP JSONL transcript.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agentHost: re-pin protocol to b3319ca (multi-chat merged to main)

The multi-chat sessions change landed on agent-host-protocol main as
b3319ca ("feat: multi-chat sessions (#213)"). The vendored copy was
previously synced from the PR branch (b88a4a3); the generated types are
byte-identical, so this only advances the .ahp-version pin to the merged
commit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-15 15:38:54 +00:00
Alexandru Dima bf2334eeee ci: add Node.js diagnostic reports for test crash investigation (#321216)
* ci: add Node.js diagnostic reports for test crash investigation

Enable Node.js diagnostic reporting for the node.js unit test runner
so that native crashes (like the zlib crash in build 447204) produce
actionable diagnostic reports instead of a silent exit code 1.

Changes:
- Configure process.report in test/unit/node/index.js to write JSON
  diagnostic reports to .build/crashes on fatal errors and uncaught
  exceptions
- Add unhandledRejection handler (was missing, unlike Electron tests)
- Set NODE_OPTIONS in CI pipeline steps (win32, linux, darwin) with
  --report-on-fatalerror and --report-uncaught-exception flags
- Reports are picked up by the existing crash-dump artifact collection

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: remove process.exit(1) from exception handlers

The uncaughtException handler intentionally does NOT exit — it logs
the error and lets Mocha continue running. The test suite has a
dedicated 'Errors' suite that asserts on collected unexpected errors
at the end. Calling process.exit(1) kills the test runner on the
first uncaught exception, failing all Electron tests on all platforms.

Keep the writeReport() calls for diagnostic purposes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: remove writeReport() from exception handlers

The manual writeReport() calls fire on benign unhandled rejections
(e.g. Canceled errors during test teardown in UserDataSyncService)
and block the event loop writing JSON reports to disk, causing
subsequent faked-timer tests to exceed their 2000ms timeout.

Report generation is already handled by process.report config and
NODE_OPTIONS flags (--report-on-fatalerror, --report-uncaught-exception)
which only fire on actual fatal errors, not on every caught rejection.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-13 10:42:31 +02:00
Alexandru Dima 53ff304e90 Fix Agents Window smoke test: use runCommand instead of keybinding (#321225)
The NewChatInSessionsWindowAction keybinding (Ctrl+L) is gated on
the chat editor silently does nothing. This caused the 'Test Claude
session' and 'Test Local session' smoke tests to time out waiting for the
new-session view.

- Add `f1: true` to NewChatInSessionsWindowAction so it appears in the
  command palette (only registered in the Agents Window context)
- Change `startNewSession()` in the automation helper to use
  `quickaccess.runCommand()` instead of `dispatchKeybinding('ctrl+l')`,
  bypassing the focus gate entirely

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-12 22:14:56 +00:00
Alex Ross 0b18363732 Fix more flake (#321123) 2026-06-12 14:02:34 +02:00
Christof Marti e0ffd25ef1 Reenable tests (#321102) 2026-06-12 12:10:38 +02:00
Alex Ross 446cd9331f Try to fix flake by retrying command palette (#321105) 2026-06-12 11:50:46 +02:00
Megan Rogge d1e225f89d Integrate Copilot Voice conversation engine (#320785) 2026-06-12 03:41:29 +00:00
Raymond Zhao 42b70f5d09 chore: run npm audit fix (#321005) 2026-06-11 19:38:19 +00:00
Christof Marti 6195d33f63 SDK sandbox and tests 2026-06-11 16:39:30 +02:00
Alexandru Dima 290187f8cd Try to make the Chat Sessions smoke tests more reliable by closing the chat editors at the end (#320950) 2026-06-11 13:53:53 +00:00
Lee Murray 644acb0d33 Refactor chat action icons for consistency (#320752)
* refactor: update chat action icons from arrowUp to newLine for consistency

* update chat send icon from arrowUp to newLine in chat input and widget fixtures

* update chat send button icon from arrowUp to newLine

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
2026-06-10 09:25:42 -07:00
dependabot[bot] 055061c84e Bump shell-quote from 1.7.3 to 1.8.4 in /test/automation (#320621)
Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.7.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.7.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 17:09:48 +00:00
Alex Ross 7c1dd895f5 Convert mock-llm-server.js to ts (#320567)
* Convert mock-llm-server.js to ts

* Ad eslint rule for no new js files

* Message
2026-06-09 15:08:47 +02:00
Christof Marti 14689dbbda Improve smoke test reliability in CI (#317981) 2026-06-09 08:34:41 +00:00
Alex Ross 5d49491aca Lots of logging for chat smoke tests and enable in PR builds (#320108)
* Lots of logging for chat smoke tests

* PR test workflows: build extensions/copilot before smoke tests

* PR test workflows: drop duplicate copilot compile from linux/win32 (was already built before integration tests)

* smoke tests: remove musl Claude binary on Linux glibc runner

The musl variant is probed first by @anthropic-ai/claude-agent-sdk and
fails to exec on glibc (ENOENT from missing ELF interpreter), which
caused the Test Claude session tests to time out.
2026-06-08 10:11:27 -07:00
Christof Marti f2f6a4ac0f Add note (#317981) 2026-06-08 16:07:05 +02:00
Christof Marti 7d08c0750c Add local agent host test (#317981) 2026-06-08 16:07:05 +02:00
Alex Ross 2253208baf Try to fix Chat smoke test flake (#320380)
* Try to fix Chat smoke test flake
2026-06-08 13:56:49 +02:00
Alexandru Dima 8b6971b56e Revert "smoke: wait for copilot-chat extension before writing its settings" (#320366)
Revert "smoke: wait for copilot-chat extension before writing its settings (#…"

This reverts commit ff95d7c323.
2026-06-08 08:58:29 +00:00
dileepyavan 77dfb21e21 Skip failing chat smoke tests (#320344) 2026-06-08 11:24:40 +05:00
Alexandru Dima ff95d7c323 smoke: wait for copilot-chat extension before writing its settings (#320255)
The Chat Sessions smoke tests wrote copilot-chat config keys before the
extension was installed in the ext host, triggering a 'not a registered
configuration' error dialog that blocked the UI and timed out the tests.

Add a waitForExtension helper that polls vscode.extensions.getExtension
and activates the extension, then call it before any config writes in
both openCopilotCliChat and openClaudeChat commands.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-07 20:50:07 +02:00
Alexandru Dima 816978a643 Increase timeouts for the smoke tests (#320130)
* fix: add overrideAuthType=token to CLI smoke tests and re-enable them

The Copilot CLI smoke tests were failing because overrideAuthType was
not set, causing the CLI SDK to use HMAC auth (the default) against the
mock LLM server. The mock server cannot validate HMAC signatures, so
/models calls returned 401, model fetching failed, and prompt rendering
threw "Unexpected generated prompt structure".

Add the missing ['github.copilot.advanced.debug.overrideAuthType', '"token"']
setting to both chatSessions.test.ts and copilotCli.test.ts (matching
what agentsWindow.test.ts already does), and remove the it.skip that
was added as a temporary workaround.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Increase timeouts (reason for failure on Linux)

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-05 09:22:49 -07:00
Alexandru Dima e3c5afbc4a fix: add overrideAuthType=token to CLI smoke tests and re-enable them (#320109)
The Copilot CLI smoke tests were failing because overrideAuthType was
not set, causing the CLI SDK to use HMAC auth (the default) against the
mock LLM server. The mock server cannot validate HMAC signatures, so
/models calls returned 401, model fetching failed, and prompt rendering
threw "Unexpected generated prompt structure".

Add the missing ['github.copilot.advanced.debug.overrideAuthType', '"token"']
setting to both chatSessions.test.ts and copilotCli.test.ts (matching
what agentsWindow.test.ts already does), and remove the it.skip that
was added as a temporary workaround.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-05 17:51:36 +02:00
Alexandru Dima 0035c783ec Skip for now CLI smoke tests (#320097)
* Skip for now CLI smoke tests

* skip the correct one

* fix typo
2026-06-05 15:12:36 +02:00
Alexandru Dima ff61118bc0 fix: support token auth for CLI SDK mock server to enable auto-model in smoke tests (#320072)
* fix: support token auth for CLI SDK mock server to enable auto-model in smoke tests

- Add `advanced.debug.overrideAuthType` setting to control HMAC vs token
  auth when overrideProxyUrl is set (default: HMAC for dev, token for tests)
- Update mock server model definitions to match real CAPI response shape
  (family, vendor, version, supported_endpoints, billing, etc.)
- Add `selected_model` to mock `/models/session` response (required by SDK
  auto-mode resolution)
- Add Responses API SSE handler for gpt-5.3-codex which uses `/responses`
  instead of `/chat/completions`
- DRY up mock model definitions with shared `ALL_MODELS` array

* fix: add inspectConfig to test mock for copilotCliAuth and skip the other CLI smoke tests for now

* Don't run in PRs for now
2026-06-05 13:52:11 +02:00
Christof Marti 837d9b877e Add Copilot CLI sandbox test (#317981) 2026-06-04 15:12:55 -07:00
dileepyavan 16390e9faa test: disable terminal tool accessibility smoke test (#319807) 2026-06-04 06:56:22 +10:00
Alex Ross 616eab07e3 Add "hello" tests to VS Code smoke tests (#319719)
* Add "hello" tests to VS Code smoke tests

* Address CCR feedback
2026-06-03 15:29:51 +02:00