diff --git a/packages/core/src/agents/local-executor.test.ts b/packages/core/src/agents/local-executor.test.ts index ba2a84345a..bf3bf52d22 100644 --- a/packages/core/src/agents/local-executor.test.ts +++ b/packages/core/src/agents/local-executor.test.ts @@ -108,7 +108,7 @@ import { } from '../scheduler/types.js'; import { CompressionStatus } from '../core/turn.js'; -import { ChatCompressionService } from '../services/chatCompressionService.js'; +import { ChatCompressionService } from '../context/chatCompressionService.js'; import type { ModelConfigKey, ResolvedModelConfig, @@ -121,7 +121,7 @@ const mockSetHistory = vi.fn((newHistory: Content[]) => { mockChatHistory = newHistory; }); -vi.mock('../services/chatCompressionService.js', () => ({ +vi.mock('../context/chatCompressionService.js', () => ({ ChatCompressionService: vi.fn().mockImplementation(() => ({ compress: mockCompress, })), diff --git a/packages/core/src/agents/local-executor.ts b/packages/core/src/agents/local-executor.ts index 113ee18f91..4ad9d35934 100644 --- a/packages/core/src/agents/local-executor.ts +++ b/packages/core/src/agents/local-executor.ts @@ -30,7 +30,7 @@ import { } from '../tools/mcp-tool.js'; import { CompressionStatus } from '../core/turn.js'; import { type ToolCallRequestInfo } from '../scheduler/types.js'; -import { ChatCompressionService } from '../services/chatCompressionService.js'; +import { ChatCompressionService } from '../context/chatCompressionService.js'; import { getDirectoryContextString } from '../utils/environmentContext.js'; import { renderUserMemory } from '../prompts/snippets.js'; import { promptIdContext } from '../utils/promptIdContext.js'; diff --git a/packages/core/src/config/config.test.ts b/packages/core/src/config/config.test.ts index f6eab55d0c..9c1a4b45b3 100644 --- a/packages/core/src/config/config.test.ts +++ b/packages/core/src/config/config.test.ts @@ -221,7 +221,7 @@ vi.mock('../utils/fetch.js', () => ({ setGlobalProxy: mockSetGlobalProxy, })); -vi.mock('../services/contextManager.js', () => ({ +vi.mock('../context/contextManager.js', () => ({ ContextManager: vi.fn().mockImplementation(() => ({ refresh: vi.fn(), getGlobalMemory: vi.fn().mockReturnValue(''), @@ -237,7 +237,7 @@ import { tokenLimit } from '../core/tokenLimits.js'; import { getCodeAssistServer } from '../code_assist/codeAssist.js'; import { getExperiments } from '../code_assist/experiments/experiments.js'; import type { CodeAssistServer } from '../code_assist/server.js'; -import { ContextManager } from '../services/contextManager.js'; +import { ContextManager } from '../context/contextManager.js'; import { UserTierId } from '../code_assist/types.js'; import type { ModelConfigService, diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 0a3b5ac759..7ac6628a65 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -116,7 +116,7 @@ import { type ModelConfigServiceConfig, } from '../services/modelConfigService.js'; import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js'; -import { ContextManager } from '../services/contextManager.js'; +import { ContextManager } from '../context/contextManager.js'; import { TrackerService } from '../services/trackerService.js'; import type { GenerateContentParameters } from '@google/genai'; @@ -451,7 +451,7 @@ import { DEFAULT_TOOL_PROTECTION_THRESHOLD, DEFAULT_MIN_PRUNABLE_TOKENS_THRESHOLD, DEFAULT_PROTECT_LATEST_TURN, -} from '../services/toolOutputMaskingService.js'; +} from '../context/toolOutputMaskingService.js'; import { type ExtensionLoader, diff --git a/packages/core/src/context/__snapshots__/toolOutputMaskingService.test.ts.snap b/packages/core/src/context/__snapshots__/toolOutputMaskingService.test.ts.snap new file mode 100644 index 0000000000..9aab1d0fb2 --- /dev/null +++ b/packages/core/src/context/__snapshots__/toolOutputMaskingService.test.ts.snap @@ -0,0 +1,31 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ToolOutputMaskingService > should match the expected snapshot for a masked tool output 1`] = ` +" +Line +Line +Line +Line +Line +Line +Line +Line +Line +Line + +... [6 lines omitted] ... + +Line +Line +Line +Line +Line +Line +Line +Line +Line + + +Output too large. Full output available at: /mock/temp/tool-outputs/session-mock-session/run_shell_command_deterministic.txt +" +`; diff --git a/packages/core/src/services/agentHistoryProvider.test.ts b/packages/core/src/context/agentHistoryProvider.test.ts similarity index 99% rename from packages/core/src/services/agentHistoryProvider.test.ts rename to packages/core/src/context/agentHistoryProvider.test.ts index 59da3a722c..f614be7051 100644 --- a/packages/core/src/services/agentHistoryProvider.test.ts +++ b/packages/core/src/context/agentHistoryProvider.test.ts @@ -17,12 +17,12 @@ vi.mock('../utils/tokenCalculation.js', () => ({ import type { Content, GenerateContentResponse, Part } from '@google/genai'; import type { Config, ContextManagementConfig } from '../config/config.js'; import type { BaseLlmClient } from '../core/baseLlmClient.js'; -import type { AgentHistoryProviderConfig } from './types.js'; +import type { AgentHistoryProviderConfig } from '../services/types.js'; import { TEXT_TRUNCATION_PREFIX, TOOL_TRUNCATION_PREFIX, truncateProportionally, -} from 'src/utils/truncation.js'; +} from './truncation.js'; describe('AgentHistoryProvider', () => { let config: Config; diff --git a/packages/core/src/services/agentHistoryProvider.ts b/packages/core/src/context/agentHistoryProvider.ts similarity index 99% rename from packages/core/src/services/agentHistoryProvider.ts rename to packages/core/src/context/agentHistoryProvider.ts index 166d59360e..3c159c2f7e 100644 --- a/packages/core/src/services/agentHistoryProvider.ts +++ b/packages/core/src/context/agentHistoryProvider.ts @@ -9,7 +9,7 @@ import { getResponseText } from '../utils/partUtils.js'; import { estimateTokenCountSync } from '../utils/tokenCalculation.js'; import { LlmRole } from '../telemetry/llmRole.js'; import { debugLogger } from '../utils/debugLogger.js'; -import type { AgentHistoryProviderConfig } from './types.js'; +import type { AgentHistoryProviderConfig } from '../services/types.js'; import type { Config } from '../config/config.js'; import { MIN_TARGET_TOKENS, @@ -18,7 +18,7 @@ import { estimateCharsFromTokens, truncateProportionally, normalizeFunctionResponse, -} from '../utils/truncation.js'; +} from './truncation.js'; export class AgentHistoryProvider { // TODO(joshualitt): just pass the BaseLlmClient instead of the whole Config. diff --git a/packages/core/src/services/chatCompressionService.test.ts b/packages/core/src/context/chatCompressionService.test.ts similarity index 100% rename from packages/core/src/services/chatCompressionService.test.ts rename to packages/core/src/context/chatCompressionService.test.ts diff --git a/packages/core/src/services/chatCompressionService.ts b/packages/core/src/context/chatCompressionService.ts similarity index 100% rename from packages/core/src/services/chatCompressionService.ts rename to packages/core/src/context/chatCompressionService.ts diff --git a/packages/core/src/services/contextManager.test.ts b/packages/core/src/context/contextManager.test.ts similarity index 100% rename from packages/core/src/services/contextManager.test.ts rename to packages/core/src/context/contextManager.test.ts diff --git a/packages/core/src/services/contextManager.ts b/packages/core/src/context/contextManager.ts similarity index 100% rename from packages/core/src/services/contextManager.ts rename to packages/core/src/context/contextManager.ts diff --git a/packages/core/src/services/toolDistillationService.test.ts b/packages/core/src/context/toolDistillationService.test.ts similarity index 100% rename from packages/core/src/services/toolDistillationService.test.ts rename to packages/core/src/context/toolDistillationService.test.ts diff --git a/packages/core/src/services/toolDistillationService.ts b/packages/core/src/context/toolDistillationService.ts similarity index 99% rename from packages/core/src/services/toolDistillationService.ts rename to packages/core/src/context/toolDistillationService.ts index a47638d02b..43ea12d7f1 100644 --- a/packages/core/src/services/toolDistillationService.ts +++ b/packages/core/src/context/toolDistillationService.ts @@ -25,7 +25,7 @@ import { MIN_TARGET_TOKENS, estimateCharsFromTokens, normalizeFunctionResponse, -} from '../utils/truncation.js'; +} from './truncation.js'; // Skip structural map generation for outputs larger than this threshold (in characters) // as it consumes excessive tokens and may not be representative of the full content. diff --git a/packages/core/src/services/toolOutputMaskingService.test.ts b/packages/core/src/context/toolOutputMaskingService.test.ts similarity index 100% rename from packages/core/src/services/toolOutputMaskingService.test.ts rename to packages/core/src/context/toolOutputMaskingService.test.ts diff --git a/packages/core/src/services/toolOutputMaskingService.ts b/packages/core/src/context/toolOutputMaskingService.ts similarity index 100% rename from packages/core/src/services/toolOutputMaskingService.ts rename to packages/core/src/context/toolOutputMaskingService.ts diff --git a/packages/core/src/utils/truncation.ts b/packages/core/src/context/truncation.ts similarity index 99% rename from packages/core/src/utils/truncation.ts rename to packages/core/src/context/truncation.ts index 8736460b75..d15627e5bd 100644 --- a/packages/core/src/utils/truncation.ts +++ b/packages/core/src/context/truncation.ts @@ -9,7 +9,7 @@ import { estimateTokenCountSync, ASCII_TOKENS_PER_CHAR, NON_ASCII_TOKENS_PER_CHAR, -} from './tokenCalculation.js'; +} from '../utils/tokenCalculation.js'; export const MIN_TARGET_TOKENS = 10; export const MIN_CHARS_FOR_TRUNCATION = 100; diff --git a/packages/core/src/core/client.test.ts b/packages/core/src/core/client.test.ts index 584ae5412c..962930402a 100644 --- a/packages/core/src/core/client.test.ts +++ b/packages/core/src/core/client.test.ts @@ -39,7 +39,7 @@ import { tokenLimit } from './tokenLimits.js'; import { ideContextStore } from '../ide/ideContext.js'; import type { ModelRouterService } from '../routing/modelRouterService.js'; import { uiTelemetryService } from '../telemetry/uiTelemetry.js'; -import { ChatCompressionService } from '../services/chatCompressionService.js'; +import { ChatCompressionService } from '../context/chatCompressionService.js'; import type { ChatRecordingService } from '../services/chatRecordingService.js'; import { createAvailabilityServiceMock } from '../availability/testUtils.js'; import type { ModelAvailabilityService } from '../availability/modelAvailabilityService.js'; diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index 4863c7aa2e..b360f4ceb2 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -43,8 +43,8 @@ import type { } from '../services/chatRecordingService.js'; import type { ContentGenerator } from './contentGenerator.js'; import { LoopDetectionService } from '../services/loopDetectionService.js'; -import { ChatCompressionService } from '../services/chatCompressionService.js'; -import { AgentHistoryProvider } from '../services/agentHistoryProvider.js'; +import { ChatCompressionService } from '../context/chatCompressionService.js'; +import { AgentHistoryProvider } from '../context/agentHistoryProvider.js'; import { ideContextStore } from '../ide/ideContext.js'; import { logContentRetryFailure, @@ -65,7 +65,7 @@ import { handleFallback } from '../fallback/handler.js'; import type { RoutingContext } from '../routing/routingStrategy.js'; import { debugLogger } from '../utils/debugLogger.js'; import type { ModelConfigKey } from '../services/modelConfigService.js'; -import { ToolOutputMaskingService } from '../services/toolOutputMaskingService.js'; +import { ToolOutputMaskingService } from '../context/toolOutputMaskingService.js'; import { calculateRequestTokenCount } from '../utils/tokenCalculation.js'; import { applyModelSelection, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 4633b5f4c3..87feca53e7 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -134,7 +134,7 @@ export * from './services/fileSystemService.js'; export * from './services/sandboxedFileSystemService.js'; export * from './sandbox/windows/WindowsSandboxManager.js'; export * from './services/sessionSummaryUtils.js'; -export * from './services/contextManager.js'; +export * from './context/contextManager.js'; export * from './services/trackerService.js'; export * from './services/trackerTypes.js'; export * from './services/keychainService.js'; diff --git a/packages/core/src/scheduler/tool-executor.ts b/packages/core/src/scheduler/tool-executor.ts index 367d69bbfb..f3c4a6263b 100644 --- a/packages/core/src/scheduler/tool-executor.ts +++ b/packages/core/src/scheduler/tool-executor.ts @@ -19,7 +19,7 @@ import { import { isAbortError } from '../utils/errors.js'; import { SHELL_TOOL_NAME } from '../tools/tool-names.js'; import { DiscoveredMCPTool } from '../tools/mcp-tool.js'; -import { ToolOutputDistillationService } from '../services/toolDistillationService.js'; +import { ToolOutputDistillationService } from '../context/toolDistillationService.js'; import { executeToolWithHooks } from '../core/coreToolHookTriggers.js'; import { saveTruncatedToolOutput, diff --git a/packages/core/src/tools/jit-context.test.ts b/packages/core/src/tools/jit-context.test.ts index a0b4cc869f..113def1bfb 100644 --- a/packages/core/src/tools/jit-context.test.ts +++ b/packages/core/src/tools/jit-context.test.ts @@ -7,7 +7,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { discoverJitContext, appendJitContext } from './jit-context.js'; import type { Config } from '../config/config.js'; -import type { ContextManager } from '../services/contextManager.js'; +import type { ContextManager } from '../context/contextManager.js'; describe('jit-context', () => { describe('discoverJitContext', () => {