Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
3fcd3e7
agent sessions - introduce sessions control for re-use
bpasero Nov 25, 2025
504e1b8
agent sessions - first cut sessions control in chat view pane
bpasero Nov 25, 2025
4643503
release insiders with rollout of 4 hours (#279331)
joaomoreno Nov 25, 2025
8a789d0
Enables inline completion providers to set a list of models the user …
hediet Nov 25, 2025
da1aae6
agent sessions - update session control visibility based on chat widg…
bpasero Nov 25, 2025
012ad67
fix rename suggestions
benibenj Nov 25, 2025
f38467b
agent sessions - fix exception calling layout in chat widget
bpasero Nov 25, 2025
ed69a86
agent sessions - update CODENOTIFY
bpasero Nov 25, 2025
60cce46
agent sessions - update CODENOTIFY
bpasero Nov 25, 2025
4f321d9
Use toPromptFileVariableEntry to create prompt file variable (#279334)
DonJayamanne Nov 25, 2025
c954946
Ben/purring-snipe (#279303)
bpasero Nov 25, 2025
b1018f0
Merge pull request #279360 from microsoft/benibenj/immediate-dormouse
benibenj Nov 25, 2025
afe3456
Local agent sessions provider cleanup (#279359) (#279363)
bpasero Nov 25, 2025
ffc052c
Bump actions/checkout from 5 to 6 (#279152)
dependabot[bot] Nov 25, 2025
d8b476e
Change to warning
chrmarti Nov 25, 2025
44c4daf
rename edit source
benibenj Nov 25, 2025
6f466a4
Merge pull request #279369 from microsoft/benibenj/asleep-spider
benibenj Nov 25, 2025
6ea77b3
agent sessions - show a link to open all sessions (#279366)
bpasero Nov 25, 2025
65f1fcf
chat - bring "Show History" back if sessions view is disabled in chat…
bpasero Nov 25, 2025
baefac9
Change Delegate to --> Continue in (#279386)
joshspicer Nov 25, 2025
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
3 changes: 2 additions & 1 deletion .github/CODENOTIFY
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,10 @@ src/vs/workbench/contrib/authentication/** @TylerLeonhardt
src/vs/workbench/contrib/files/** @bpasero
src/vs/workbench/contrib/chat/browser/chatListRenderer.ts @roblourens
src/vs/workbench/contrib/chat/browser/chatSetup.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatStatus.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatStatus/** @bpasero
src/vs/workbench/contrib/chat/browser/chatInputPart.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatWidget.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatViewPane.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.ts @bpasero
src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css @bpasero
src/vs/workbench/contrib/chat/browser/agentSessions/** @bpasero
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
# If you do not check out your code, Copilot will do this for you.
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/monaco-editor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
persist-credentials: false

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-darwin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
VSCODE_ARCH: arm64
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-linux-cli-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
RUSTUP_TOOLCHAIN: ${{ inputs.rustup_toolchain }}
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Install Rust
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-linux-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
VSCODE_ARCH: x64
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/pr-node-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-ubuntu-22.04-x64 ]
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down Expand Up @@ -92,7 +92,7 @@ jobs:
VSCODE_ARCH: x64
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down Expand Up @@ -164,7 +164,7 @@ jobs:
VSCODE_ARCH: arm64
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down Expand Up @@ -225,7 +225,7 @@ jobs:
VSCODE_ARCH: x64
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-win32-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
VSCODE_ARCH: x64
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-ubuntu-22.04-x64 ]
steps:
- name: Checkout microsoft/vscode
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/telemetry.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: 'ubuntu-latest'

steps:
- uses: 'actions/checkout@v5'
- uses: 'actions/checkout@v6'
with:
persist-credentials: false

Expand Down
9 changes: 8 additions & 1 deletion build/azure-pipelines/common/releaseBuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,15 @@ async function main(force: boolean): Promise<void> {

console.log(`Releasing build ${commit}...`);

let rolloutDurationMs = undefined;

// If the build is insiders or exploration, start a rollout of 4 hours
if (quality === 'insiders') {
rolloutDurationMs = 4 * 60 * 60 * 1000; // 4 hours
}

const scripts = client.database('builds').container(quality).scripts;
await retry(() => scripts.storedProcedure('releaseBuild').execute('', [commit]));
await retry(() => scripts.storedProcedure('releaseBuild').execute('', [commit, rolloutDurationMs]));
}

const [, , force] = process.argv;
Expand Down
14 changes: 14 additions & 0 deletions src/vs/editor/common/languages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -762,6 +762,16 @@ export interface InlineCompletionContext {
readonly earliestShownDateTime: number;
}

export interface IInlineCompletionModelInfo {
models: IInlineCompletionModel[];
currentModelId: string;
}

export interface IInlineCompletionModel {
name: string;
id: string;
}

export class SelectedSuggestionInfo {
constructor(
public readonly range: IRange,
Expand Down Expand Up @@ -940,6 +950,10 @@ export interface InlineCompletionsProvider<T extends InlineCompletions = InlineC

debounceDelayMs?: number;

modelInfo?: IInlineCompletionModelInfo;
onDidModelInfoChange?: Event<void>;
setModelId?(modelId: string): Promise<void>;

toString?(): string;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { StandardTokenType } from '../../../../common/encodedTokenAttributes.js'
import { Command, InlineCompletionHintStyle } from '../../../../common/languages.js';
import { ITextModel } from '../../../../common/model.js';
import { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';
import { EditSources, TextModelEditSource } from '../../../../common/textModelEditSource.js';
import { prepareRename, rename } from '../../../rename/browser/rename.js';
import { renameSymbolCommandId } from '../controller/commandIds.js';
import { InlineSuggestHint, InlineSuggestionItem } from './inlineSuggestionItem.js';
Expand All @@ -33,16 +34,12 @@ export class RenameSymbolProcessor extends Disposable {
@IBulkEditService bulkEditService: IBulkEditService,
) {
super();
this._register(CommandsRegistry.registerCommand(renameSymbolCommandId, async (_: ServicesAccessor, textModel: ITextModel, position: Position, newName: string) => {
try {
const result = await rename(this._languageFeaturesService.renameProvider, textModel, position, newName);
if (result.rejectReason) {
return;
}
bulkEditService.apply(result);
} catch (error) {
// The actual rename failed we should log this.
this._register(CommandsRegistry.registerCommand(renameSymbolCommandId, async (_: ServicesAccessor, textModel: ITextModel, position: Position, newName: string, source: TextModelEditSource) => {
const result = await rename(this._languageFeaturesService.renameProvider, textModel, position, newName);
if (result.rejectReason) {
return;
}
bulkEditService.apply(result, { reason: source });
}));
}

Expand All @@ -61,20 +58,26 @@ export class RenameSymbolProcessor extends Disposable {
const { oldName, newName, position } = edits.renames;
let timedOut = false;
const loc = await raceTimeout(prepareRename(this._languageFeaturesService.renameProvider, textModel, position), 1000, () => { timedOut = true; });
const renamePossible = loc !== undefined && !loc.rejectReason;
const renamePossible = loc !== undefined && !loc.rejectReason && loc.text === oldName;

suggestItem.setRenameProcessingInfo({ createdRename: renamePossible, duration: Date.now() - start, timedOut });

if (!renamePossible) {
return suggestItem;
}

const source = EditSources.inlineCompletionAccept({
nes: suggestItem.isInlineEdit,
requestUuid: suggestItem.requestUuid,
providerId: suggestItem.source.provider.providerId,
languageId: textModel.getLanguageId(),
});
const hintRange = edits.renames.edits[0].replacements[0].range;
const label = localize('renameSymbol', "Rename '{0}' to '{1}'", oldName, newName);
const command: Command = {
id: renameSymbolCommandId,
title: label,
arguments: [textModel, position, newName],
arguments: [textModel, position, newName, source],
};
const hint = InlineSuggestHint.create({ range: hintRange, content: label, style: InlineCompletionHintStyle.Code });
return InlineSuggestionItem.create(suggestItem.withRename(command, hint), textModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,19 @@ export class GutterIndicatorMenuContent {
commandArgs: c.command.arguments
})));

const showModelEnabled = false;
const modelOptions = showModelEnabled ? this._data.modelInfo?.models.map((m: { id: string; name: string }) => option({
title: m.name,
icon: m.id === this._data.modelInfo?.currentModelId ? Codicon.check : Codicon.circle,
keybinding: constObservable(undefined),
isActive: activeElement.map(v => v === 'model_' + m.id),
onHoverChange: v => activeElement.set(v ? 'model_' + m.id : undefined, undefined),
onAction: () => {
this._close(true);
this._data.setModelId?.(m.id);
},
})) ?? [] : [];

const toggleCollapsedMode = this._inlineEditsShowCollapsed.map(showCollapsed => showCollapsed ?
option(createOptionArgs({
id: 'showExpanded',
Expand Down Expand Up @@ -137,6 +150,8 @@ export class GutterIndicatorMenuContent {
gotoAndAccept,
reject,
toggleCollapsedMode,
modelOptions.length ? separator() : undefined,
...modelOptions,
extensionCommands.length ? separator() : undefined,
snooze,
settings,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { getEditorBlendedColor, inlineEditIndicatorBackground, inlineEditIndicat
import { mapOutFalsy, rectToProps } from '../utils/utils.js';
import { GutterIndicatorMenuContent } from './gutterIndicatorMenu.js';
import { assertNever } from '../../../../../../../base/common/assert.js';
import { Command, InlineCompletionCommand } from '../../../../../../common/languages.js';
import { Command, InlineCompletionCommand, IInlineCompletionModelInfo } from '../../../../../../common/languages.js';
import { InlineSuggestionItem } from '../../../model/inlineSuggestionItem.js';
import { localize } from '../../../../../../../nls.js';
import { InlineCompletionsModel } from '../../../model/inlineCompletionsModel.js';
Expand All @@ -48,13 +48,17 @@ export class InlineSuggestionGutterMenuData {
suggestion.action,
suggestion.source.provider.displayName ?? localize('inlineSuggestion', "Inline Suggestion"),
suggestion.source.inlineSuggestions.commands ?? [],
suggestion.source.provider.modelInfo,
suggestion.source.provider.setModelId?.bind(suggestion.source.provider),
);
}

constructor(
readonly action: Command | undefined,
readonly displayName: string,
readonly extensionCommands: InlineCompletionCommand[],
readonly modelInfo: IInlineCompletionModelInfo | undefined,
readonly setModelId: ((modelId: string) => Promise<void>) | undefined,
) { }
}

Expand Down
13 changes: 13 additions & 0 deletions src/vs/monaco.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7497,6 +7497,16 @@ declare namespace monaco.languages {
readonly earliestShownDateTime: number;
}

export interface IInlineCompletionModelInfo {
models: IInlineCompletionModel[];
currentModelId: string;
}

export interface IInlineCompletionModel {
name: string;
id: string;
}

export class SelectedSuggestionInfo {
readonly range: IRange;
readonly text: string;
Expand Down Expand Up @@ -7641,6 +7651,9 @@ declare namespace monaco.languages {
excludesGroupIds?: InlineCompletionProviderGroupId[];
displayName?: string;
debounceDelayMs?: number;
modelInfo?: IInlineCompletionModelInfo;
onDidModelInfoChange?: IEvent<void>;
setModelId?(modelId: string): Promise<void>;
toString?(): string;
}

Expand Down
Loading
Loading