agent-ecosystem/test/main/services/team/BoardTaskTranscriptContract.test.ts

196 lines
5.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import fixture from '../../../fixtures/team/board-task-activity-message-v1.json';
import {
parseBoardTaskLinks,
parseBoardTaskToolActions,
} from '../../../../src/main/services/team/taskLogs/contract/BoardTaskTranscriptContract';
describe('BoardTaskTranscriptContract', () => {
it('salvages valid board-task links from mixed payloads', () => {
const parsed = parseBoardTaskLinks([
null,
{
schemaVersion: 1,
task: { ref: 'abcd1234', refKind: 'display', canonicalId: 'task-a' },
targetRole: 'subject',
linkKind: 'lifecycle',
actorContext: { relation: 'idle' },
},
{
schemaVersion: 1,
task: { ref: '', refKind: 'display' },
targetRole: 'subject',
linkKind: 'lifecycle',
actorContext: { relation: 'idle' },
},
]);
expect(parsed).toEqual([
{
schemaVersion: 1,
task: { ref: 'abcd1234', refKind: 'display', canonicalId: 'task-a' },
targetRole: 'subject',
linkKind: 'lifecycle',
actorContext: { relation: 'idle' },
},
]);
});
it('salvages valid task tool actions from mixed payloads', () => {
const parsed = parseBoardTaskToolActions([
{
schemaVersion: 1,
toolUseId: 'tool-1',
canonicalToolName: 'task_add_comment',
resultRefs: { commentId: 'comment-1' },
},
{
schemaVersion: 1,
canonicalToolName: 'task_add_comment',
},
]);
expect(parsed).toEqual([
{
schemaVersion: 1,
toolUseId: 'tool-1',
canonicalToolName: 'task_add_comment',
resultRefs: { commentId: 'comment-1' },
},
]);
});
it('parses the documented fixture example', () => {
expect(parseBoardTaskLinks(fixture.boardTaskLinks)).toEqual([
{
schemaVersion: 1,
toolUseId: 'tool-1',
task: {
ref: 'abcd1234',
refKind: 'display',
canonicalId: '123e4567-e89b-12d3-a456-426614174000',
},
targetRole: 'subject',
linkKind: 'lifecycle',
taskArgumentSlot: 'taskId',
actorContext: { relation: 'idle' },
},
]);
expect(parseBoardTaskToolActions(fixture.boardTaskToolActions)).toEqual([
{
schemaVersion: 1,
toolUseId: 'tool-1',
canonicalToolName: 'task_add_comment',
resultRefs: { commentId: 'comment-1' },
},
]);
});
it('preserves semantic null owner and clarification values', () => {
const parsed = parseBoardTaskToolActions([
{
schemaVersion: 1,
toolUseId: 'tool-2',
canonicalToolName: 'task_set_owner',
input: { owner: null },
},
{
schemaVersion: 1,
toolUseId: 'tool-3',
canonicalToolName: 'task_set_clarification',
input: { clarification: 'clear' },
},
]);
expect(parsed).toEqual([
{
schemaVersion: 1,
toolUseId: 'tool-2',
canonicalToolName: 'task_set_owner',
input: { owner: null },
},
{
schemaVersion: 1,
toolUseId: 'tool-3',
canonicalToolName: 'task_set_clarification',
input: { clarification: null },
},
]);
});
it('accepts legacy version fields while preferring schemaVersion going forward', () => {
const parsed = parseBoardTaskLinks([
{
version: 1,
task: { ref: 'abcd1234', refKind: 'display' },
targetRole: 'subject',
linkKind: 'execution',
actorContext: { relation: 'same_task' },
},
]);
expect(parsed).toEqual([
{
schemaVersion: 1,
task: { ref: 'abcd1234', refKind: 'display' },
targetRole: 'subject',
linkKind: 'execution',
actorContext: { relation: 'same_task' },
},
]);
});
it('sanitizes impossible actor scope details unless relation is other_active_task', () => {
const parsed = parseBoardTaskLinks([
{
schemaVersion: 1,
task: { ref: 'abcd1234', refKind: 'display' },
targetRole: 'subject',
linkKind: 'execution',
actorContext: {
relation: 'same_task',
activeTask: { ref: 'efgh5678', refKind: 'display' },
activePhase: 'work',
activeExecutionSeq: 2,
},
},
]);
expect(parsed).toEqual([
{
schemaVersion: 1,
task: { ref: 'abcd1234', refKind: 'display' },
targetRole: 'subject',
linkKind: 'execution',
actorContext: { relation: 'same_task' },
},
]);
});
it('preserves execution toolUseId while still dropping execution taskArgumentSlot', () => {
const parsed = parseBoardTaskLinks([
{
schemaVersion: 1,
toolUseId: 'tool-1',
task: { ref: 'abcd1234', refKind: 'display' },
targetRole: 'subject',
linkKind: 'execution',
taskArgumentSlot: 'taskId',
actorContext: { relation: 'same_task' },
},
]);
expect(parsed).toEqual([
{
schemaVersion: 1,
toolUseId: 'tool-1',
task: { ref: 'abcd1234', refKind: 'display' },
targetRole: 'subject',
linkKind: 'execution',
actorContext: { relation: 'same_task' },
},
]);
});
});