diff --git a/src/gateway/openai-http.ts b/src/gateway/openai-http.ts index 3c0ba30fdf2d..ddab0abc17b1 100644 --- a/src/gateway/openai-http.ts +++ b/src/gateway/openai-http.ts @@ -641,8 +641,6 @@ async function resolveImagesForRequest( } export const testOnlyOpenAiHttp = { - resolveImagesForRequest, - resolveOpenAiChatCompletionsLimits, resolveChatCompletionUsage, }; diff --git a/src/gateway/server-methods/usage.sessions-usage.test.ts b/src/gateway/server-methods/usage.sessions-usage.test.ts index 4fdd48c99c8a..6a3fa8b97bd8 100644 --- a/src/gateway/server-methods/usage.sessions-usage.test.ts +++ b/src/gateway/server-methods/usage.sessions-usage.test.ts @@ -188,8 +188,13 @@ function expectSuccessfulSessionsUsage( return result.sessions; } -function mockStoredSession(key: string, sessionId: string) { +function mockStoredSession( + key: string, + sessionId: string, + options: { resolution?: "valid" | "missing" } = {}, +) { const entry = { sessionId, updatedAt: 1_000 }; + const storePath = "/tmp/agents/opus/agent/openclaw-agent.sqlite"; vi.mocked(loadGatewaySessionEntryReadOnly).mockReturnValueOnce({ cfg: TEST_RUNTIME_CONFIG, canonicalKey: key, @@ -197,8 +202,11 @@ function mockStoredSession(key: string, sessionId: string) { legacyKey: undefined, store: { [key]: entry }, storeKeys: [key], - storePath: "/tmp/agents/opus/sessions/sessions.json", + storePath, }); + vi.mocked(resolveExistingUsageSessionFile).mockReturnValueOnce( + options.resolution === "missing" ? undefined : `sqlite:opus:${sessionId}:${storePath}`, + ); return entry; } @@ -852,8 +860,7 @@ describe("sessions.usage", () => { it("fails closed when a canonical stored target no longer matches", async () => { const key = "agent:opus:stale"; - mockStoredSession(key, "stale"); - vi.mocked(resolveExistingUsageSessionFile).mockReturnValueOnce(undefined); + mockStoredSession(key, "stale", { resolution: "missing" }); const respond = await runSessionsUsageTimeseries({ key }); expect(mockArg(respond, 0, 0)).toBe(false); expect(vi.mocked(loadSessionUsageTimeSeries)).not.toHaveBeenCalled(); diff --git a/src/gateway/server-methods/usage.ts b/src/gateway/server-methods/usage.ts index 3f1b841e1fcf..70b5d8a784c2 100644 --- a/src/gateway/server-methods/usage.ts +++ b/src/gateway/server-methods/usage.ts @@ -1130,18 +1130,13 @@ function mergeUsageCacheStatus( // Exposed for unit tests (kept as a single export to avoid widening the public API surface). export const testApi = { - parseDateParts, parseUtcOffsetToMinutes, - resolveDateInterpretation, parseDateToMs, parseDays, resolveDateRange, - discoverAllSessionsForUsage, loadCostUsageSummaryCached, costUsageCache, - loadSessionsUsageResultCached, sessionsUsageCache, - sessionsUsageCacheKey, }; export type { SessionUsageEntry, SessionsUsageAggregates, SessionsUsageResult }; diff --git a/src/plugin-sdk/sqlite-runtime-testing.ts b/src/plugin-sdk/sqlite-runtime-testing.ts index 56d9aecc882c..2e89904687bd 100644 --- a/src/plugin-sdk/sqlite-runtime-testing.ts +++ b/src/plugin-sdk/sqlite-runtime-testing.ts @@ -6,8 +6,6 @@ import { type TranscriptEvent, } from "../config/sessions/session-accessor.js"; -export type SqliteSessionTranscriptEventForTest = TranscriptEvent; - /** Appends a raw SQLite transcript event for first-party tests only. */ export async function appendSqliteSessionTranscriptEventForTest( params: SessionTranscriptAccessScope & { event: TranscriptEvent },