Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import type { AgentMessageRowVM } from "../contracts/agentMessageRowVM";
|
|
import { resolveAgentTranscriptEditRetryRowId } from "./useAgentTranscriptEditRetryProjection";
|
|
|
|
describe("resolveAgentTranscriptEditRetryRowId", () => {
|
|
it("selects only the exact eligible user turn with a lossless text block", () => {
|
|
const older = userRow("row-old", "turn-old", "old");
|
|
const latest = userRow("row-latest", "turn-latest", "latest");
|
|
expect(
|
|
resolveAgentTranscriptEditRetryRowId([older, latest], "turn-latest")
|
|
).toBe("row-latest");
|
|
expect(
|
|
resolveAgentTranscriptEditRetryRowId(
|
|
[older, { ...latest, rawFirstTextBlock: null }],
|
|
"turn-latest"
|
|
)
|
|
).toBeNull();
|
|
expect(
|
|
resolveAgentTranscriptEditRetryRowId([older, latest], "turn-missing")
|
|
).toBeNull();
|
|
});
|
|
});
|
|
|
|
function userRow(
|
|
id: string,
|
|
turnId: string,
|
|
rawFirstTextBlock: string
|
|
): AgentMessageRowVM {
|
|
return {
|
|
kind: "message",
|
|
id,
|
|
turnId,
|
|
speaker: "user",
|
|
rawFirstTextBlock,
|
|
messages: [],
|
|
thinking: [],
|
|
occurredAtUnixMs: 1
|
|
};
|
|
}
|