From 4a5f98b3a444adc452f3976e585e0a9cc1c3cde9 Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 10:42:28 +0000 Subject: [PATCH] test(server): reproduce missing v2 agent plan windows Preserve the host-versus-agent usage mismatch from #7116. The new assertion intentionally fails until the session descriptor gap is fixed; the reported packaged desktop path still needs verification. --- .../agent/providers/opencode/v2/agent.test.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/packages/server/src/server/agent/providers/opencode/v2/agent.test.ts b/packages/server/src/server/agent/providers/opencode/v2/agent.test.ts index 564e1f46c5..d11ec5b989 100644 --- a/packages/server/src/server/agent/providers/opencode/v2/agent.test.ts +++ b/packages/server/src/server/agent/providers/opencode/v2/agent.test.ts @@ -6,6 +6,47 @@ import type { AgentStreamEvent } from "../../../agent-sdk-types.js"; import { OpenCodeV2AgentClient } from "./agent.js"; import { V2Harness } from "../test-utils/v2-harness.js"; import type { V2Api } from "./api.js"; +import { UsageSourceRegistry } from "../../../../plugins/usage-sources/index.js"; + +test("#7116: v2 agent usage includes the plan windows available on the host", async () => { + const harness = new V2Harness(); + const client = new OpenCodeV2AgentClient({ + logger: createTestLogger(), + runtime: harness.runtime, + }); + const session = await client.createSession({ + provider: "opencode", + cwd: "/tmp/project", + model: "openai/test-model", + }); + const registry = new UsageSourceRegistry(Date.now, 300_000, undefined, { + hasAgent: (id) => id === session.id, + usageSession: (id) => (id === session.id ? (session.usageSession?.() ?? null) : null), + }); + const report = { + status: "available", + windows: [{ id: "weekly", label: "Weekly", usedPct: 31 }], + }; + registry.register({ + id: "test-plan", + label: "Test plan", + discover: async (scope) => + scope.kind === "global" || + (scope.provider === "opencode" && scope.model === "openai/test-model") + ? [{ key: "account", input: {} }] + : [], + fetch: async () => report, + }); + try { + const host = await registry.listReports(); + expect(host.map((entry) => entry.report)).toEqual([report]); + const agent = await registry.listReports({ agentId: session.id }); + expect(agent.map((entry) => entry.report)).toEqual([report]); + } finally { + await session.close(); + await client.shutdown(); + } +}); function terminalEvents(events: AgentStreamEvent[]) { return events.filter(