import { describe, expect, it } from "vitest" ;
import {
resolveAcpSessionCwd,
resolveAcpSessionIdentifierLinesFromIdentity,
resolveAcpThreadSessionDetailLines,
} from "./session-identifiers.js" ;
describe("session identifier helpers" , () => {
it("hides unresolved identifiers from thread intro details while pending" , () => {
const lines = resolveAcpThreadSessionDetailLines({
sessionKey: "agent:codex:acp:pending-1" ,
meta: {
backend: "acpx" ,
agent: "codex" ,
runtimeSessionName: "runtime-1" ,
identity: {
state: "pending" ,
source: "ensure" ,
lastUpdatedAt: Date.now(),
acpxSessionId: "acpx-123" ,
agentSessionId: "inner-123" ,
},
mode: "persistent" ,
state: "idle" ,
lastActivityAt: Date.now(),
},
});
expect(lines).toEqual([]);
});
it("adds a Codex resume hint when agent identity is resolved" , () => {
const lines = resolveAcpThreadSessionDetailLines({
sessionKey: "agent:codex:acp:resolved-1" ,
meta: {
backend: "acpx" ,
agent: "codex" ,
runtimeSessionName: "runtime-1" ,
identity: {
state: "resolved" ,
source: "status" ,
lastUpdatedAt: Date.now(),
acpxSessionId: "acpx-123" ,
agentSessionId: "inner-123" ,
},
mode: "persistent" ,
state: "idle" ,
lastActivityAt: Date.now(),
},
});
expect(lines).toContain("agent session id: inner-123" );
expect(lines).toContain("acpx session id: acpx-123" );
expect(lines).toContain(
"resume in Codex CLI: `codex resume inner-123` (continues this conversation)." ,
);
});
it("adds a Kimi resume hint when agent identity is resolved" , () => {
const lines = resolveAcpThreadSessionDetailLines({
sessionKey: "agent:kimi:acp:resolved-1" ,
meta: {
backend: "acpx" ,
agent: "kimi" ,
runtimeSessionName: "runtime-1" ,
identity: {
state: "resolved" ,
source: "status" ,
lastUpdatedAt: Date.now(),
acpxSessionId: "acpx-kimi-123" ,
agentSessionId: "kimi-inner-123" ,
},
mode: "persistent" ,
state: "idle" ,
lastActivityAt: Date.now(),
},
});
expect(lines).toContain("agent session id: kimi-inner-123" );
expect(lines).toContain("acpx session id: acpx-kimi-123" );
expect(lines).toContain(
"resume in Kimi CLI: `kimi resume kimi-inner-123` (continues this conversation)." ,
);
});
it("shows pending identity text for status rendering" , () => {
const lines = resolveAcpSessionIdentifierLinesFromIdentity({
backend: "acpx" ,
mode: "status" ,
identity: {
state: "pending" ,
source: "status" ,
lastUpdatedAt: Date.now(),
agentSessionId: "inner-123" ,
},
});
expect(lines).toEqual(["session ids: pending (available after the first reply)" ]);
});
it("prefers runtimeOptions.cwd over legacy meta.cwd" , () => {
const cwd = resolveAcpSessionCwd({
backend: "acpx" ,
agent: "codex" ,
runtimeSessionName: "runtime-1" ,
mode: "persistent" ,
runtimeOptions: {
cwd: "/repo/new" ,
},
cwd: "/repo/old" ,
state: "idle" ,
lastActivityAt: Date.now(),
});
expect(cwd).toBe("/repo/new" );
});
});
Messung V0.5 in Prozent C=99 H=92 G=95
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland