import { describe, expect, it } from "@effect/vitest"; import type { EnvironmentId, OrchestrationV2ThreadShell, Project, ThreadId,} from "@t3tools/contracts";import { ProviderInstanceId, RuntimeRequestId } from "@t3tools/contracts";import * as DateTime from "effect/DateTime"; import { projectThreadAwarenessV2 } from "./agentAwareness.ts"; const NOW = "2026-05-22T12:00:00.000Z"; const project = { title: "t3code",} satisfies Pick<Project, "title">; describe("projectThreadAwarenessV2", () => { const updatedAt = DateTime.makeUnsafe(NOW); const v2Thread = ( overrides: Partial< Pick<OrchestrationV2ThreadShell, "activityRunStatus" | "status" | "pendingRuntimeRequest"> > = {}, ) => ({ id: "thread-2" as ThreadId, title: "Integrate orchestration", modelSelection: { instanceId: ProviderInstanceId.make("codex"), model: "gpt-5.4" }, status: "running" as const, pendingRuntimeRequest: null, updatedAt, ...overrides, }); it("projects V2 run state", () => { expect( projectThreadAwarenessV2({ environmentId: "env-1" as EnvironmentId, project, thread: v2Thread(), }), ).toMatchObject({ phase: "running", headline: "Agent is working" }); }); it("keeps an older activity run visible over a newer cancelled run", () => { expect( projectThreadAwarenessV2({ environmentId: "env-1" as EnvironmentId, project, thread: v2Thread({ status: "cancelled", activityRunStatus: "running" }), }), ).toMatchObject({ phase: "running", headline: "Agent is working" }); }); it("prioritizes V2 user-input requests", () => { expect( projectThreadAwarenessV2({ environmentId: "env-1" as EnvironmentId, project, thread: v2Thread({ pendingRuntimeRequest: { id: RuntimeRequestId.make("request-1"), kind: "user_input", createdAt: updatedAt, }, }), }), ).toMatchObject({ phase: "waiting_for_input", headline: "Waiting for input" }); }); it("does not present authentication refreshes as user approvals", () => { expect( projectThreadAwarenessV2({ environmentId: "env-1" as EnvironmentId, project, thread: v2Thread({ pendingRuntimeRequest: { id: RuntimeRequestId.make("request-auth-refresh"), kind: "auth_refresh", createdAt: updatedAt, }, }), }), ).toMatchObject({ phase: "running", headline: "Agent is working" }); });});
import { describe, expect, it } from "@effect/vitest";
import type {
EnvironmentId,
OrchestrationV2ThreadShell,
Project,
ThreadId,
} from "@t3tools/contracts";
import { ProviderInstanceId, RuntimeRequestId } from "@t3tools/contracts";
import * as DateTime from "effect/DateTime";
import { projectThreadAwarenessV2 } from "./agentAwareness.ts";
const NOW = "2026-05-22T12:00:00.000Z";
const project = {
title: "t3code",
} satisfies Pick<Project, "title">;
describe("projectThreadAwarenessV2", () => {
const updatedAt = DateTime.makeUnsafe(NOW);
const v2Thread = (
overrides: Partial<
Pick<OrchestrationV2ThreadShell, "activityRunStatus" | "status" | "pendingRuntimeRequest">
> = {},
) => ({
id: "thread-2" as ThreadId,
title: "Integrate orchestration",
modelSelection: { instanceId: ProviderInstanceId.make("codex"), model: "gpt-5.4" },
status: "running" as const,
pendingRuntimeRequest: null,
updatedAt,
...overrides,
});
it("projects V2 run state", () => {
expect(
projectThreadAwarenessV2({
environmentId: "env-1" as EnvironmentId,
project,
thread: v2Thread(),
}),
).toMatchObject({ phase: "running", headline: "Agent is working" });
});
it("keeps an older activity run visible over a newer cancelled run", () => {
expect(
projectThreadAwarenessV2({
environmentId: "env-1" as EnvironmentId,
project,
thread: v2Thread({ status: "cancelled", activityRunStatus: "running" }),
}),
).toMatchObject({ phase: "running", headline: "Agent is working" });
});
it("prioritizes V2 user-input requests", () => {
expect(
projectThreadAwarenessV2({
environmentId: "env-1" as EnvironmentId,
project,
thread: v2Thread({
pendingRuntimeRequest: {
id: RuntimeRequestId.make("request-1"),
kind: "user_input",
createdAt: updatedAt,
},
}),
}),
).toMatchObject({ phase: "waiting_for_input", headline: "Waiting for input" });
});
it("does not present authentication refreshes as user approvals", () => {
expect(
projectThreadAwarenessV2({
environmentId: "env-1" as EnvironmentId,
project,
thread: v2Thread({
pendingRuntimeRequest: {
id: RuntimeRequestId.make("request-auth-refresh"),
kind: "auth_refresh",
createdAt: updatedAt,
},
}),
}),
).toMatchObject({ phase: "running", headline: "Agent is working" });
});
});