Merge branch 'main' into add-git-co-author

This commit is contained in:
tanzhenxin
2025-12-16 14:43:27 +08:00
129 changed files with 4822 additions and 4125 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@qwen-code/qwen-code-core",
"version": "0.5.0",
"version": "0.5.1",
"description": "Qwen Code Core",
"repository": {
"type": "git",

View File

@@ -318,6 +318,7 @@ export interface ConfigParameters {
generationConfig?: Partial<ContentGeneratorConfig>;
cliVersion?: string;
loadMemoryFromIncludeDirectories?: boolean;
chatRecording?: boolean;
// Web search providers
webSearch?: {
provider: Array<{
@@ -457,6 +458,7 @@ export class Config {
| undefined;
private readonly cliVersion?: string;
private readonly experimentalZedIntegration: boolean = false;
private readonly chatRecordingEnabled: boolean;
private readonly loadMemoryFromIncludeDirectories: boolean = false;
private readonly webSearch?: {
provider: Array<{
@@ -572,6 +574,8 @@ export class Config {
._generationConfig as ContentGeneratorConfig;
this.cliVersion = params.cliVersion;
this.chatRecordingEnabled = params.chatRecording ?? true;
this.loadMemoryFromIncludeDirectories =
params.loadMemoryFromIncludeDirectories ?? false;
this.chatCompression = params.chatCompression;
@@ -618,7 +622,9 @@ export class Config {
setGlobalDispatcher(new ProxyAgent(this.getProxy() as string));
}
this.geminiClient = new GeminiClient(this);
this.chatRecordingService = new ChatRecordingService(this);
this.chatRecordingService = this.chatRecordingEnabled
? new ChatRecordingService(this)
: undefined;
}
/**
@@ -738,7 +744,9 @@ export class Config {
startNewSession(sessionId?: string): string {
this.sessionId = sessionId ?? randomUUID();
this.sessionData = undefined;
this.chatRecordingService = new ChatRecordingService(this);
this.chatRecordingService = this.chatRecordingEnabled
? new ChatRecordingService(this)
: undefined;
if (this.initialized) {
logStartSession(this, new StartSessionEvent(this));
}
@@ -1267,7 +1275,10 @@ export class Config {
/**
* Returns the chat recording service.
*/
getChatRecordingService(): ChatRecordingService {
getChatRecordingService(): ChatRecordingService | undefined {
if (!this.chatRecordingEnabled) {
return undefined;
}
if (!this.chatRecordingService) {
this.chatRecordingService = new ChatRecordingService(this);
}

View File

@@ -338,10 +338,7 @@ describe('OpenAIContentConverter', () => {
});
it('should handle tools without functionDeclarations', async () => {
const emptyTools: Tool[] = [
{} as Tool,
{ functionDeclarations: [] },
];
const emptyTools: Tool[] = [{} as Tool, { functionDeclarations: [] }];
const result = await converter.convertGeminiToolsToOpenAI(emptyTools);
@@ -489,7 +486,10 @@ describe('OpenAIContentConverter', () => {
const result = converter.convertGeminiToolParametersToOpenAI(params);
const properties = result?.['properties'] as Record<string, unknown>;
const nested = properties?.['nested'] as Record<string, unknown>;
const nestedProperties = nested?.['properties'] as Record<string, unknown>;
const nestedProperties = nested?.['properties'] as Record<
string,
unknown
>;
expect(nestedProperties?.['deep']).toEqual({
type: 'integer',

View File

@@ -69,6 +69,8 @@ async function createMockConfig(
targetDir: '.',
debugMode: false,
cwd: process.cwd(),
// Avoid writing any chat recording records from tests (e.g. via tool-call telemetry).
chatRecording: false,
};
const config = new Config(configParams);
await config.initialize();