Skip to content

Commit 2deaa9c

Browse files
committed
Merge branch 'main' into dev/mjbvz/asleep-guppy
2 parents e3cc3a1 + 6662a74 commit 2deaa9c

File tree

174 files changed

+6925
-2363
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+6925
-2363
lines changed

.esbuild.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ const sanityTestBundlePlugin: esbuild.Plugin = {
122122
};
123123

124124
const importMetaPlugin: esbuild.Plugin = {
125-
name: 'claudeCodeImportMetaPlugin',
125+
name: 'claudeAgentSdkImportMetaPlugin',
126126
setup(build) {
127-
// Handle import.meta.url in @anthropic-ai/claude-code package
128-
build.onLoad({ filter: /node_modules[\/\\]@anthropic-ai[\/\\]claude-code[\/\\].*\.mjs$/ }, async (args) => {
127+
// Handle import.meta.url in @anthropic-ai/claude-agent-sdk package
128+
build.onLoad({ filter: /node_modules[\/\\]@anthropic-ai[\/\\]claude-agent-sdk[\/\\].*\.mjs$/ }, async (args) => {
129129
const contents = await fs.promises.readFile(args.path, 'utf8');
130130
return {
131131
contents: contents.replace(

.eslintplugin/no-nls-localize.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import * as eslint from 'eslint';
7+
import { createImportRuleListener } from './utils';
8+
9+
export = new class implements eslint.Rule.RuleModule {
10+
11+
readonly meta: eslint.Rule.RuleMetaData = {
12+
messages: {
13+
noNlsLocalize: 'Do not import localize from nls. Use vscode.l10n.t or import l10n from @vscode/l10n instead.'
14+
},
15+
docs: {
16+
description: 'Disallow importing localize from nls files',
17+
},
18+
schema: []
19+
};
20+
21+
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
22+
return createImportRuleListener((node, path) => {
23+
// Match paths ending with /nls, /nls.js, /vs/nls, etc.
24+
if (path.endsWith('/nls') || path.endsWith('/nls.js') || path === 'vs/nls') {
25+
context.report({
26+
loc: node.parent!.loc,
27+
messageId: 'noNlsLocalize'
28+
});
29+
}
30+
});
31+
}
32+
};

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"search.exclude": {
5252
"src/base/util/tokenizer_*.json": true,
5353
"src/base/util/*.bpe": true,
54+
"src/extension/chatSessions/vscode-node/test/fixtures/**": true,
5455
"src/extension/prompts/node/test/fixtures/**/*": true,
5556
"src/extension/test/node/fixtures/**/*": true,
5657
"src/platform/parser/test/node/fixtures/**/*": true,

chat-lib/test/getInlineCompletions.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ class NullLogTarget implements ILogTarget {
209209
describe('getInlineCompletions', () => {
210210
it('should return completions for a document and position', async () => {
211211
const provider = createInlineCompletionsProvider({
212-
fetcher: new TestFetcher({ '/v1/engines/gpt-4o-copilot/completions': await readFile(join(__dirname, 'getInlineCompletions.reply.txt'), 'utf8') }),
212+
fetcher: new TestFetcher({ '/v1/engines/gpt-41-copilot/completions': await readFile(join(__dirname, 'getInlineCompletions.reply.txt'), 'utf8') }),
213213
authService: new TestAuthService(),
214214
telemetrySender: new TestTelemetrySender(),
215215
logTarget: new NullLogTarget(),

chat-lib/test/nesProvider.spec.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,10 @@ describe('NESProvider Facade', () => {
141141
doc.setSelection([new OffsetRange(1, 1)], undefined);
142142
const telemetrySender = new TestTelemetrySender();
143143
const logTarget = new TestLogTarget();
144-
const fetcher = new TestFetcher({ '/chat/completions': await fs.readFile(path.join(__dirname, 'nesProvider.reply.txt'), 'utf8') });
144+
const fetcher = new TestFetcher({
145+
'/models': JSON.stringify({ models: [] }),
146+
'/chat/completions': await fs.readFile(path.join(__dirname, 'nesProvider.reply.txt'), 'utf8'),
147+
});
145148
const nextEditProvider = createNESProvider({
146149
workspace,
147150
fetcher,
@@ -157,8 +160,10 @@ describe('NESProvider Facade', () => {
157160

158161
const result = await nextEditProvider.getNextEdit(doc.id.toUri(), CancellationToken.None);
159162

160-
assert.strictEqual(fetcher.requests.length, 1);
161-
assert.strictEqual(fetcher.requests[0].options.json?.model, 'xtab-test');
163+
assert.strictEqual(fetcher.requests.length, 2, `Unexpected requests: ${JSON.stringify(fetcher.requests, null, 2)}`);
164+
assert.ok(fetcher.requests[0].url.endsWith('/models'), `Unexpected URL: ${fetcher.requests[0].url}`);
165+
assert.ok(fetcher.requests[1].url.endsWith('/chat/completions'), `Unexpected URL: ${fetcher.requests[1].url}`);
166+
assert.strictEqual(fetcher.requests[1].options.json?.model, 'xtab-test');
162167

163168
assert(result.result);
164169

@@ -191,6 +196,7 @@ describe('NESProvider Facade', () => {
191196
nextEditProvider.dispose();
192197

193198
expect(logTarget.logs.length).toBeGreaterThan(0);
194-
expect(logTarget.logs.filter(l => l.level === LogLevel.Error)).toHaveLength(0);
199+
const errorLogs = logTarget.logs.filter(l => l.level === LogLevel.Error);
200+
assert.strictEqual(errorLogs.length, 0, `Unexpected error logs: ${JSON.stringify(errorLogs, null, 2)}`);
195201
});
196202
});

chat-lib/test/simpleExperimentationService.spec.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55

66
import { describe, expect, it } from 'vitest';
77
import { SimpleExperimentationService } from '../src/main';
8+
import { DefaultsOnlyConfigurationService } from '../src/_internal/platform/configuration/common/defaultsOnlyConfigurationService';
89

910
describe('SimpleExperimentationService', () => {
1011
it('should initialize with no treatment variables', async () => {
11-
const service = new SimpleExperimentationService(false);
12+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
1213
await service.hasTreatments();
1314

1415
expect(service.getTreatmentVariable('nonexistent')).toBeUndefined();
@@ -17,7 +18,7 @@ describe('SimpleExperimentationService', () => {
1718
});
1819

1920
it('should update multiple treatment variables at once', () => {
20-
const service = new SimpleExperimentationService(false);
21+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
2122
const variables: Record<string, boolean | number | string> = {
2223
'feature-a': true,
2324
'feature-b': false,
@@ -36,7 +37,7 @@ describe('SimpleExperimentationService', () => {
3637
});
3738

3839
it('should fire onDidTreatmentsChange event with all changed variables', () => {
39-
const service = new SimpleExperimentationService(false);
40+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
4041
const events: string[][] = [];
4142

4243
service.onDidTreatmentsChange((event) => {
@@ -60,7 +61,7 @@ describe('SimpleExperimentationService', () => {
6061
});
6162

6263
it('should not fire onDidTreatmentsChange event when no variables change', () => {
63-
const service = new SimpleExperimentationService(false);
64+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
6465
const events: string[][] = [];
6566

6667
// Set initial value
@@ -85,7 +86,7 @@ describe('SimpleExperimentationService', () => {
8586
});
8687

8788
it('should fire onDidTreatmentsChange event only for changed variables', () => {
88-
const service = new SimpleExperimentationService(false);
89+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
8990

9091
// Set initial values
9192
const variables1: Record<string, boolean | number | string> = {
@@ -113,7 +114,7 @@ describe('SimpleExperimentationService', () => {
113114
});
114115

115116
it('should overwrite existing treatment variables', () => {
116-
const service = new SimpleExperimentationService(false);
117+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
117118

118119
const variables1: Record<string, boolean | number | string> = {
119120
'feature-flag': true
@@ -133,7 +134,7 @@ describe('SimpleExperimentationService', () => {
133134
});
134135

135136
it('should wait for treatment variables when waitForTreatmentVariables = true', async () => {
136-
const service = new SimpleExperimentationService(true);
137+
const service = new SimpleExperimentationService(true, new DefaultsOnlyConfigurationService());
137138

138139
// hasTreatments() should not resolve until updateTreatmentVariables() is called
139140
let hasTreatmentsResolved = false;
@@ -160,7 +161,7 @@ describe('SimpleExperimentationService', () => {
160161
});
161162

162163
it('should remove treatment variable when omitted from update', () => {
163-
const service = new SimpleExperimentationService(false);
164+
const service = new SimpleExperimentationService(false, new DefaultsOnlyConfigurationService());
164165

165166
// Set initial variables
166167
const variables1: Record<string, boolean | number | string> = {

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ export default tseslint.config(
277277
string: 'Generate with Copilot'
278278
}
279279
],
280+
'local/no-nls-localize': ['error'],
280281
}
281282
},
282283
{

package-lock.json

Lines changed: 102 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)