Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
fda58b5
Support Copilot CLI MCP configuration discovery
vritant24 Sep 1, 2026
49d4912
Honor COPILOT_HOME in MCP discovery
vritant24 Sep 1, 2026
e565cb9
Rename Copilot MCP source kind
vritant24 Sep 1, 2026
3bd9f9a
Merge branch 'main' into agents/support-changes-investigation-a5ebe3e0
vritant24 Sep 2, 2026
cfc47b1
Fix MCP detail source for discovered servers
vritant24 Sep 2, 2026
845b798
Remove CopilotHome source kind and related references from MCP server…
vritant24 Sep 2, 2026
529cf74
Merge branch 'main' into agents/support-changes-investigation-a5ebe3e0
aeschli Sep 2, 2026
1b7f001
Agents - move more actions to the right menu (#333962)
lszomoru Sep 2, 2026
c3a0ee2
Refactor .monaco-icon-label styles to remove unnecessary gap and padd…
benibenj Sep 2, 2026
359cba2
Add ready message when creating from PR (#333968)
alexr00 Sep 2, 2026
9dfde22
Implement file icons in component fixtures (#333969)
benibenj Sep 2, 2026
b948a39
Component fixtures: support selectable file icon themes (#333985)
benibenj Sep 2, 2026
42b84d2
Merge pull request #333936 from microsoft/fix/mcp-detail-native-source
vritant24 Sep 2, 2026
3a01d74
automations: fix: apply Assisted permissions for Autopilot (#333949)
chrmarti Sep 2, 2026
4fe1813
sessions: refine title-bar layout and actions (#334000)
sandy081 Sep 2, 2026
6995ab7
Merge branch 'main' into agents/support-changes-investigation-a5ebe3e0
vritant24 Sep 2, 2026
967c9f0
Fix session-row hover actions and layout in narrow panes (#333980)
sandy081 Sep 2, 2026
23d0582
agentHost: restrict Codex Copilot models to OpenAI (#333987)
Giuspepe Sep 2, 2026
79f132e
agentHost: preserve search icon while streaming (#333925)
roblourens Sep 2, 2026
cc9dea5
agentHost: tolerate unavailable catalogs in direct session tools (#33…
Giuspepe Sep 2, 2026
a9638dc
Merge pull request #333891 from microsoft/agents/support-changes-inve…
vritant24 Sep 2, 2026
ea742eb
agentHost: hide routine Codex approval review notices (#333956)
Giuspepe Sep 2, 2026
6d4875a
Agents - enable text ellipsis for the changeset picker (#334013)
lszomoru Sep 2, 2026
1ab6826
chore(ci): check build subfolders (#333870)
rzhao271 Sep 2, 2026
03978cd
Show session progress for active chats (#333999)
sandy081 Sep 2, 2026
f6f7c31
chore(ci): remove squash requirement (#333892)
rzhao271 Sep 2, 2026
ba368bc
agentHost: add draft PR Agent Merge operation (#333964)
benibenj Sep 2, 2026
3f9532f
chat: Improve customization migration flow (#333889)
houghj16 Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/skills/component-fixtures/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,26 @@ Key points:
- Always register created widgets with `disposableStore.add(...)` to prevent leaks
- Pass `colorTheme: theme` to `createEditorServices` so theme colors render correctly

### File icon themes

Fixtures use Seti file icons by default. Select another built-in theme, or disable file icons, on the individual fixture:

```typescript
defineComponentFixture({ fileIconTheme: 'vs-minimal', render: renderMyComponent });
defineComponentFixture({ fileIconTheme: 'none', render: renderMyComponent });
```

When the rendered component reads `IThemeService`, pass the selected theme from `ComponentFixtureContext` to `createEditorServices`:

```typescript
function renderMyComponent({ disposableStore, theme, fileIconTheme }: ComponentFixtureContext): void {
const instantiationService = createEditorServices(disposableStore, {
colorTheme: theme,
fileIconTheme,
});
}
```

## Utilities from fixtureUtils.ts

| Export | Purpose |
Expand Down
56 changes: 35 additions & 21 deletions build/agent-sdk/agents/claude/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 39 additions & 3 deletions build/azure-pipelines/dependencies-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@ jobs:
variables:
VSCODE_ARCH: x64
steps:
- task: NodeTool@0
- script: |
echo "##vso[task.setvariable variable=NODE_VERSION]$(cat .nvmrc)"
displayName: Read Node version from .nvmrc

- task: UseNode@1
inputs:
versionSource: fromFile
versionFilePath: .nvmrc
version: $(NODE_VERSION)

- task: AzureKeyVault@2
displayName: "Azure Key Vault: Get GitHub token"
Expand Down Expand Up @@ -84,6 +87,30 @@ jobs:
- script: |
set -e

# Check if any build subfolders with package-lock.json were modified
git fetch origin main
CHANGED_FILES=$(git diff --name-only origin/main...HEAD)
MODIFIED_BUILD_FOLDERS=""

# Check if build/package-lock.json itself was modified
if echo "$CHANGED_FILES" | grep -q "^build/package-lock\.json$"; then
MODIFIED_BUILD_FOLDERS="build"
echo "build/package-lock.json was modified"
fi

# Find all modified package-lock.json files under build subfolders and extract their directories
for file in $CHANGED_FILES; do
if [[ $file =~ ^(build/.+)/package-lock\.json$ ]]; then
dir="${BASH_REMATCH[1]}"
if [[ ! " $MODIFIED_BUILD_FOLDERS " =~ " $dir " ]]; then
MODIFIED_BUILD_FOLDERS="$MODIFIED_BUILD_FOLDERS $dir"
echo "$dir was modified"
fi
fi
done

echo "##vso[task.setvariable variable=MODIFIED_BUILD_FOLDERS]$MODIFIED_BUILD_FOLDERS"

for attempt in {1..120}; do
if [ $attempt -gt 1 ]; then
echo "Attempt $attempt: Waiting for 10 minutes before retrying..."
Expand All @@ -92,6 +119,15 @@ jobs:

echo "Attempt $attempt: Running npm ci"
if npm i --ignore-scripts; then
# Rebuild each modified build subfolder separately
for folder in $MODIFIED_BUILD_FOLDERS; do
echo "Rebuilding modified $folder..."
if ! (cd "$folder" && npm i --ignore-scripts); then
echo "npm i failed for $folder on attempt $attempt"
continue 2
fi
done

if node build/npm/postinstall.ts; then
echo "npm i succeeded on attempt $attempt"
exit 0
Expand Down
88 changes: 47 additions & 41 deletions build/azure-pipelines/product-build-ado-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -260,57 +260,63 @@ extends:
- script: |
set -euo pipefail

if [ "$(Build.Reason)" = "PullRequest" ]; then
# Azure normally checks out a synthetic merge commit for PR validation. Its first
# parent is the target and its second parent is the PR head. Fall back to finding
# the merge base when the provider checks out the PR head directly.
parent_count=$(git rev-list --parents -n 1 HEAD | awk '{ print NF - 1 }')
if [ "$parent_count" = "2" ]; then
base_sha=$(git rev-parse HEAD^1)
head_sha=$(git rev-parse HEAD^2)
else
target_branch="$(System.PullRequest.TargetBranch)"
target_branch="${target_branch#refs/heads/}"
git fetch origin "$target_branch:refs/remotes/origin/$target_branch"
head_sha=$(git rev-parse HEAD)
base_sha=$(git merge-base "origin/$target_branch" "$head_sha")
fi
# Only validate trailers for PR builds
if [ "$(Build.Reason)" != "PullRequest" ]; then
echo "Skipping trailer check for non-PR builds"
exit 0
fi

# Azure normally checks out a synthetic merge commit for PR validation. Its first
# parent is the target and its second parent is the PR head. Fall back to finding
# the merge base when the provider checks out the PR head directly.
parent_count=$(git rev-list --parents -n 1 HEAD | awk '{ print NF - 1 }')
if [ "$parent_count" = "2" ]; then
base_sha=$(git rev-parse HEAD^1)
head_sha=$(git rev-parse HEAD^2)
else
# Manual builds validate the selected branch's latest commit.
target_branch="$(System.PullRequest.TargetBranch)"
target_branch="${target_branch#refs/heads/}"
git fetch origin "$target_branch:refs/remotes/origin/$target_branch"
head_sha=$(git rev-parse HEAD)
base_sha=$(git rev-parse HEAD^1)
base_sha=$(git merge-base "origin/$target_branch" "$head_sha")
fi

# MSRC pull requests must be squashed to one commit before validation succeeds.
commit_count=$(git rev-list --count "$base_sha..$head_sha")
if [ "$commit_count" != "1" ]; then
echo "##vso[task.logissue type=error]This PR has $commit_count commits. release/msrc/* PRs must contain exactly one commit. Please squash your commits."
exit 1
fi
echo "PR has a single commit."
# Check each commit in the PR for the Msrc-Case-Id trailer
commits=$(git rev-list "$base_sha..$head_sha")
commits_with_trailer=0
total_commits=0

# Extract every Msrc-Case-Id trailer value from the PR head commit.
mapfile -t trailer_values < <(
git log -1 --pretty='format:%(trailers:key=Msrc-Case-Id,valueonly=true)' "$head_sha" |
sed '/^[[:space:]]*$/d'
)
for commit in $commits; do
total_commits=$((total_commits + 1))

if [ "${#trailer_values[@]}" = "0" ]; then
echo "##vso[task.logissue type=error]Commit $head_sha is missing the required 'Msrc-Case-Id' trailer."
printf "Add a trailer to the commit message, for example:\n\n Msrc-Case-Id: 12345\n\nIf there is no associated case ID, use N/A:\n\n Msrc-Case-Id: N/A\n\n"
exit 1
fi
# Extract Msrc-Case-Id trailer values from this commit
mapfile -t trailer_values < <(
git log -1 --pretty='format:%(trailers:key=Msrc-Case-Id,valueonly=true)' "$commit" |
sed '/^[[:space:]]*$/d'
)

if [ "${#trailer_values[@]}" -gt 0 ]; then
commits_with_trailer=$((commits_with_trailer + 1))

# Every supplied case ID must be numeric or explicitly marked not applicable.
for value in "${trailer_values[@]}"; do
if [[ ! "$value" =~ ^[0-9]+$ && "$value" != "N/A" ]]; then
echo "##vso[task.logissue type=error]Commit $head_sha has an invalid 'Msrc-Case-Id' trailer value. Expected a number or N/A."
printf "Use a numeric case id or N/A, for example:\n\n Msrc-Case-Id: 12345\n\n"
exit 1
# Validate all trailer values are numeric or N/A
for value in "${trailer_values[@]}"; do
if [[ ! "$value" =~ ^[0-9]+$ && "$value" != "N/A" ]]; then
echo "##vso[task.logissue type=error]Commit $commit has an invalid 'Msrc-Case-Id' trailer value. Expected a number or N/A."
printf "Use a numeric case id or N/A, for example:\n\n Msrc-Case-Id: 12345\n\n"
exit 1
fi
done

echo "Commit $commit has the following 'Msrc-Case-Id' trailers: ${trailer_values[*]}"
fi
done

echo "Commit $head_sha has the required 'Msrc-Case-Id' trailer."
# At least one commit must have the Msrc-Case-Id trailer
if [ "$commits_with_trailer" -lt 1 ]; then
echo "##vso[task.logissue type=error]Expected at least one commit with 'Msrc-Case-Id' trailer, but found $commits_with_trailer out of $total_commits commits with a trailer."
printf "Add a trailer to at least one commit message, for example:\n\n Msrc-Case-Id: 12345\n\nIf there is no associated case ID, use N/A:\n\n Msrc-Case-Id: N/A\n\n"
exit 1
fi
displayName: Verify Commit and Trailer

- stage: Quality
Expand Down
44 changes: 13 additions & 31 deletions build/npm/gyp/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading