mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 08:57:40 +00:00
117 lines
3.3 KiB
TypeScript
117 lines
3.3 KiB
TypeScript
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");
|
|
});
|
|
});
|