From 4413844cbf8bc79f64f69df09fff79fbca930c17 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:06:42 +0000 Subject: [PATCH 1/3] feat: disable pi thinking for sessions Agent-Logs-Url: https://github.com/vincentdchan/DeskTalk/sessions/675152a0-1cf1-48f0-8d8b-792a4dc6c0aa Co-authored-by: vincentdchan <2352832+vincentdchan@users.noreply.github.com> --- .../services/ai/pi-session-service.test.ts | 70 ++++++++++++++++++- .../src/services/ai/pi-session-service.ts | 24 ++++++- 2 files changed, 90 insertions(+), 4 deletions(-) diff --git a/packages/core/src/services/ai/pi-session-service.test.ts b/packages/core/src/services/ai/pi-session-service.test.ts index 1008499..1748f09 100644 --- a/packages/core/src/services/ai/pi-session-service.test.ts +++ b/packages/core/src/services/ai/pi-session-service.test.ts @@ -1,6 +1,16 @@ -import { describe, expect, it } from 'vitest'; +import { afterEach, describe, expect, it, vi } from 'vitest'; +import * as PiCodingAgent from '@mariozechner/pi-coding-agent'; import type { AssistantMessage, ToolCall } from '@mariozechner/pi-ai'; -import { PiSessionService, scrubHtmlToolCallArgs, summarizeHtml } from './pi-session-service'; +import { + PiSessionService, + createDeskTalkAgentSession, + scrubHtmlToolCallArgs, + summarizeHtml, +} from './pi-session-service'; + +afterEach(() => { + vi.restoreAllMocks(); +}); describe('summarizeHtml', () => { it('summarizes title, card count, and headings', () => { @@ -233,3 +243,59 @@ describe('PiSessionService.getProviderOptions', () => { }); }); }); + +describe('pi thinking defaults', () => { + it('creates pi sessions with thinking disabled', async () => { + const setThinkingLevel = vi.fn(); + const session = { setThinkingLevel } as unknown as PiCodingAgent.AgentSession; + const createAgentSessionSpy = vi + .spyOn(PiCodingAgent, 'createAgentSession') + .mockResolvedValue({ + session, + extensionsResult: {} as never, + }); + + const result = await createDeskTalkAgentSession({ + cwd: '/tmp/desktalk-test', + }); + + expect(result).toBe(session); + expect(createAgentSessionSpy).toHaveBeenCalledWith( + expect.objectContaining({ + cwd: '/tmp/desktalk-test', + thinkingLevel: 'off', + }), + ); + expect(setThinkingLevel).toHaveBeenCalledWith('off'); + }); + + it('reapplies thinking off when syncing provider preferences', async () => { + const targetModel = { provider: 'openai', id: 'gpt-5' }; + const setModel = vi.fn(); + const setThinkingLevel = vi.fn(); + + await PiSessionService.prototype['syncPreferences'].call({ + resourceLoader: { reload: async () => {} }, + syncProviderCredentials: async () => {}, + getPreference: async (key: string) => { + if (key === 'ai.defaultProvider') { + return 'openai'; + } + return undefined; + }, + modelRegistry: { + find: (provider: string, model: string) => + provider === 'openai' && model === 'gpt-5' ? targetModel : undefined, + getAvailable: () => [targetModel], + }, + session: { + model: { provider: 'openai', id: 'gpt-4o' }, + setModel, + setThinkingLevel, + }, + }); + + expect(setModel).toHaveBeenCalledWith(targetModel); + expect(setThinkingLevel).toHaveBeenCalledWith('off'); + }); +}); diff --git a/packages/core/src/services/ai/pi-session-service.ts b/packages/core/src/services/ai/pi-session-service.ts index 8f04a70..c786d79 100644 --- a/packages/core/src/services/ai/pi-session-service.ts +++ b/packages/core/src/services/ai/pi-session-service.ts @@ -14,6 +14,7 @@ import { SessionManager, type AgentSession, type AgentSessionEvent, + type CreateAgentSessionOptions, type SessionInfo, type ToolDefinition, } from '@mariozechner/pi-coding-agent'; @@ -155,6 +156,23 @@ type BasicToolResultMessage = { timestamp: number; }; +const DESKTALK_PI_THINKING_LEVEL = 'off' as const; + +function disableSessionThinking(session: Pick): void { + session.setThinkingLevel(DESKTALK_PI_THINKING_LEVEL); +} + +export async function createDeskTalkAgentSession( + options: CreateAgentSessionOptions, +): Promise { + const { session } = await createAgentSession({ + ...options, + thinkingLevel: DESKTALK_PI_THINKING_LEVEL, + }); + disableSessionThinking(session); + return session; +} + function isUserMessage(message: BasicAgentMessage): message is BasicUserMessage { return message.role === 'user'; } @@ -697,7 +715,7 @@ export class PiSessionService { }), ]; - const { session } = await createAgentSession({ + const session = await createDeskTalkAgentSession({ cwd: process.cwd(), authStorage, modelRegistry, @@ -731,7 +749,7 @@ export class PiSessionService { } private async createSessionWithManager(sessionManager: SessionManager): Promise { - const { session } = await createAgentSession({ + const session = await createDeskTalkAgentSession({ cwd: this.cwd, authStorage: this.authStorage, modelRegistry: this.modelRegistry, @@ -1088,6 +1106,8 @@ export class PiSessionService { ) { await this.session.setModel(targetModel); } + + disableSessionThinking(this.session); } private saveMessageMetadata( From 3e2d74030a231a80382d0a6195bacca6a5671ea4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:09:08 +0000 Subject: [PATCH 2/3] test: fix pi thinking coverage Agent-Logs-Url: https://github.com/vincentdchan/DeskTalk/sessions/675152a0-1cf1-48f0-8d8b-792a4dc6c0aa Co-authored-by: vincentdchan <2352832+vincentdchan@users.noreply.github.com> --- .../services/ai/pi-session-service.test.ts | 32 +------------------ .../src/services/ai/pi-session-service.ts | 2 +- 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/packages/core/src/services/ai/pi-session-service.test.ts b/packages/core/src/services/ai/pi-session-service.test.ts index 1748f09..3e61387 100644 --- a/packages/core/src/services/ai/pi-session-service.test.ts +++ b/packages/core/src/services/ai/pi-session-service.test.ts @@ -1,12 +1,6 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; -import * as PiCodingAgent from '@mariozechner/pi-coding-agent'; import type { AssistantMessage, ToolCall } from '@mariozechner/pi-ai'; -import { - PiSessionService, - createDeskTalkAgentSession, - scrubHtmlToolCallArgs, - summarizeHtml, -} from './pi-session-service'; +import { PiSessionService, scrubHtmlToolCallArgs, summarizeHtml } from './pi-session-service'; afterEach(() => { vi.restoreAllMocks(); @@ -245,30 +239,6 @@ describe('PiSessionService.getProviderOptions', () => { }); describe('pi thinking defaults', () => { - it('creates pi sessions with thinking disabled', async () => { - const setThinkingLevel = vi.fn(); - const session = { setThinkingLevel } as unknown as PiCodingAgent.AgentSession; - const createAgentSessionSpy = vi - .spyOn(PiCodingAgent, 'createAgentSession') - .mockResolvedValue({ - session, - extensionsResult: {} as never, - }); - - const result = await createDeskTalkAgentSession({ - cwd: '/tmp/desktalk-test', - }); - - expect(result).toBe(session); - expect(createAgentSessionSpy).toHaveBeenCalledWith( - expect.objectContaining({ - cwd: '/tmp/desktalk-test', - thinkingLevel: 'off', - }), - ); - expect(setThinkingLevel).toHaveBeenCalledWith('off'); - }); - it('reapplies thinking off when syncing provider preferences', async () => { const targetModel = { provider: 'openai', id: 'gpt-5' }; const setModel = vi.fn(); diff --git a/packages/core/src/services/ai/pi-session-service.ts b/packages/core/src/services/ai/pi-session-service.ts index c786d79..345bd21 100644 --- a/packages/core/src/services/ai/pi-session-service.ts +++ b/packages/core/src/services/ai/pi-session-service.ts @@ -162,7 +162,7 @@ function disableSessionThinking(session: Pick) session.setThinkingLevel(DESKTALK_PI_THINKING_LEVEL); } -export async function createDeskTalkAgentSession( +async function createDeskTalkAgentSession( options: CreateAgentSessionOptions, ): Promise { const { session } = await createAgentSession({ From a6ce3b5fd62461144218ae09dd064f3559874e7b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:12:17 +0000 Subject: [PATCH 3/3] refactor: remove redundant pi thinking option Agent-Logs-Url: https://github.com/vincentdchan/DeskTalk/sessions/675152a0-1cf1-48f0-8d8b-792a4dc6c0aa Co-authored-by: vincentdchan <2352832+vincentdchan@users.noreply.github.com> --- packages/core/src/services/ai/pi-session-service.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/core/src/services/ai/pi-session-service.ts b/packages/core/src/services/ai/pi-session-service.ts index 345bd21..3e1b7ce 100644 --- a/packages/core/src/services/ai/pi-session-service.ts +++ b/packages/core/src/services/ai/pi-session-service.ts @@ -165,10 +165,7 @@ function disableSessionThinking(session: Pick) async function createDeskTalkAgentSession( options: CreateAgentSessionOptions, ): Promise { - const { session } = await createAgentSession({ - ...options, - thinkingLevel: DESKTALK_PI_THINKING_LEVEL, - }); + const { session } = await createAgentSession(options); disableSessionThinking(session); return session; }