From 70b7e66fae1e682bbca9851ff82eadbded233fd3 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 10 Apr 2026 21:47:57 +0000 Subject: [PATCH] tweaks --- ...{SidecarLoader.test.ts => configLoader.test.ts} | 2 +- .../config/{SidecarLoader.ts => configLoader.ts} | 14 +++----------- packages/core/src/context/config/registry.ts | 2 +- .../context/system-tests/lifecycle.golden.test.ts | 2 +- .../{SimulationHarness.ts => simulationHarness.ts} | 0 .../core/src/context/testing/contextTestUtils.ts | 5 ++--- 6 files changed, 8 insertions(+), 17 deletions(-) rename packages/core/src/context/config/{SidecarLoader.test.ts => configLoader.test.ts} (98%) rename packages/core/src/context/config/{SidecarLoader.ts => configLoader.ts} (90%) rename packages/core/src/context/system-tests/{SimulationHarness.ts => simulationHarness.ts} (100%) diff --git a/packages/core/src/context/config/SidecarLoader.test.ts b/packages/core/src/context/config/configLoader.test.ts similarity index 98% rename from packages/core/src/context/config/SidecarLoader.test.ts rename to packages/core/src/context/config/configLoader.test.ts index e0be7b6a37..1b0262482c 100644 --- a/packages/core/src/context/config/SidecarLoader.test.ts +++ b/packages/core/src/context/config/configLoader.test.ts @@ -5,7 +5,7 @@ */ import { describe, it, expect, beforeEach } from 'vitest'; -import { SidecarLoader } from './SidecarLoader.js'; +import { SidecarLoader } from './configLoader.js'; import { defaultSidecarProfile } from './profiles.js'; import { SidecarRegistry } from './registry.js'; import { InMemoryFileSystem } from '../system/InMemoryFileSystem.js'; diff --git a/packages/core/src/context/config/SidecarLoader.ts b/packages/core/src/context/config/configLoader.ts similarity index 90% rename from packages/core/src/context/config/SidecarLoader.ts rename to packages/core/src/context/config/configLoader.ts index 6d1eb99e65..899bea7bae 100644 --- a/packages/core/src/context/config/SidecarLoader.ts +++ b/packages/core/src/context/config/configLoader.ts @@ -12,6 +12,7 @@ import { getSidecarConfigSchema } from './schema.js'; import type { SidecarRegistry } from './registry.js'; import type { IFileSystem } from '../system/IFileSystem.js'; import { NodeFileSystem } from '../system/NodeFileSystem.js'; +import { getErrorMessage } from '../../utils/errors.js'; export class SidecarLoader { /** @@ -24,18 +25,13 @@ export class SidecarLoader { fileSystem: IFileSystem = new NodeFileSystem(), ): ContextProfile { const fileContent = fileSystem.readFileSync(sidecarPath, 'utf8'); - - if (!fileContent.trim()) { - throw new Error(`Sidecar configuration file at ${sidecarPath} is empty.`); - } - let parsed: unknown; try { parsed = JSON.parse(fileContent); } catch (error) { throw new Error( `Failed to parse Sidecar configuration file at ${sidecarPath}: ${ - error instanceof Error ? error.message : String(error) + getErrorMessage(error) }`, ); } @@ -58,11 +54,7 @@ export class SidecarLoader { // That function dynamically maps the \`processorOptions\` to strict JSON schema definitions, // so we know with absolute certainty at runtime that \`parsed\` conforms to this shape. // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion - const validConfig = parsed as { - budget?: SidecarConfig['budget']; - processorOptions?: SidecarConfig['processorOptions']; - }; - + const validConfig = parsed as SidecarConfig; return { ...defaultSidecarProfile, config: { diff --git a/packages/core/src/context/config/registry.ts b/packages/core/src/context/config/registry.ts index 1f051c4f34..f1f179481e 100644 --- a/packages/core/src/context/config/registry.ts +++ b/packages/core/src/context/config/registry.ts @@ -14,7 +14,7 @@ export interface ContextProcessorDef { * (Dynamic instantiation has been replaced by static ContextProfiles) */ export class SidecarRegistry { - private processors = new Map(); + private readonly processors = new Map(); registerProcessor(def: ContextProcessorDef) { this.processors.set(def.id, def); diff --git a/packages/core/src/context/system-tests/lifecycle.golden.test.ts b/packages/core/src/context/system-tests/lifecycle.golden.test.ts index 4ff1b6e566..b884aa7b17 100644 --- a/packages/core/src/context/system-tests/lifecycle.golden.test.ts +++ b/packages/core/src/context/system-tests/lifecycle.golden.test.ts @@ -5,7 +5,7 @@ */ import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest'; -import { SimulationHarness } from './SimulationHarness.js'; +import { SimulationHarness } from './simulationHarness.js'; import { createMockLlmClient } from '../testing/contextTestUtils.js'; import type { ContextProfile } from '../config/profiles.js'; import { createToolMaskingProcessor } from '../processors/toolMaskingProcessor.js'; diff --git a/packages/core/src/context/system-tests/SimulationHarness.ts b/packages/core/src/context/system-tests/simulationHarness.ts similarity index 100% rename from packages/core/src/context/system-tests/SimulationHarness.ts rename to packages/core/src/context/system-tests/simulationHarness.ts diff --git a/packages/core/src/context/testing/contextTestUtils.ts b/packages/core/src/context/testing/contextTestUtils.ts index 23e6f65f41..979712389e 100644 --- a/packages/core/src/context/testing/contextTestUtils.ts +++ b/packages/core/src/context/testing/contextTestUtils.ts @@ -12,7 +12,7 @@ import { DeterministicIdGenerator } from '../system/DeterministicIdGenerator.js' import { randomUUID } from 'node:crypto'; import { ContextTracer } from '../tracer.js'; import { ContextEnvironmentImpl } from '../pipeline/environmentImpl.js'; -import { SidecarLoader } from '../config/SidecarLoader.js'; +import { SidecarLoader } from '../config/configLoader.js'; import { SidecarRegistry } from '../config/registry.js'; import { ContextEventBus } from '../eventBus.js'; import { PipelineOrchestrator } from '../pipeline/orchestrator.js'; @@ -24,6 +24,7 @@ import type { Content, GenerateContentResponse } from '@google/genai'; import { InboxSnapshotImpl } from '../pipeline/inbox.js'; import type { InboxMessage, ProcessArgs } from '../pipeline.js'; import type { ContextProfile } from '../config/profiles.js'; +import type { Mock } from 'vitest'; /** * Creates a valid mock GenerateContentResponse with the provided text. @@ -94,8 +95,6 @@ export function createDummyToolNode( } as unknown as ToolExecution; } -import type { Mock } from 'vitest'; - export interface MockLlmClient extends BaseLlmClient { generateContent: Mock; }