Files
OpenOPC/opc/plugins/office_ui/frontend_src/chat/checkpointUtils.test.ts
T
2026-07-01 17:56:31 +08:00

192 lines
6.1 KiB
TypeScript

import assert from 'node:assert/strict'
import type { ChatMessage } from '../types/chat'
import {
analyzeCheckpointMessages,
checkpointReplyMetadataForComposer,
isCheckpointCardMetadata,
isCheckpointType,
toCheckpointReplyMetadata,
} from './checkpointUtils'
const checkpoint: ChatMessage = {
id: 'msg-checkpoint',
channelId: 'session:task-1',
sender: 'assistant',
senderName: 'OPC',
content: 'Please review the delivery.',
timestamp: 1,
mentions: [],
metadata: {
checkpoint_type: 'company_delivery_feedback',
checkpoint_id: 'cp-delivery',
work_item_projection_title: 'CEO Delivery',
feedback_scope: 'final',
},
}
assert.equal(isCheckpointType('company_delivery_feedback'), true)
assert.equal(isCheckpointType('company_staffing_selection'), true)
assert.equal(isCheckpointCardMetadata(checkpoint.metadata), true)
assert.deepEqual(toCheckpointReplyMetadata(checkpoint.metadata), {
response_to_checkpoint_id: 'cp-delivery',
response_to_checkpoint_type: 'company_delivery_feedback',
response_to_escalation_id: undefined,
})
const pending = analyzeCheckpointMessages([checkpoint])
assert.deepEqual([...pending.pendingMessageIds], ['msg-checkpoint'])
assert.deepEqual(pending.latestPendingReplyMetadata, {
response_to_checkpoint_id: 'cp-delivery',
response_to_checkpoint_type: 'company_delivery_feedback',
response_to_escalation_id: undefined,
})
assert.equal(checkpointReplyMetadataForComposer(pending.latestPendingReplyMetadata), undefined)
const legacySelfEvolutionResult: ChatMessage = {
...checkpoint,
id: 'msg-self-evolution-result',
content: 'Self-evolution finished without writing updates because the agents did not return valid evolution patches.',
metadata: {
checkpoint_type: 'company_delivery_feedback',
checkpoint_id: 'cp-delivery',
kind: 'company_self_evolution_result',
self_evolution_completed: true,
},
}
assert.equal(isCheckpointCardMetadata(legacySelfEvolutionResult.metadata), false)
const ignoredSelfEvolutionResult = analyzeCheckpointMessages([legacySelfEvolutionResult])
assert.deepEqual([...ignoredSelfEvolutionResult.pendingMessageIds], [])
assert.deepEqual([...ignoredSelfEvolutionResult.respondedMessageIds], [])
assert.equal(checkpointReplyMetadataForComposer({
response_to_checkpoint_id: 'esc-approval',
response_to_checkpoint_type: 'human_escalation',
response_to_escalation_id: 'esc-approval',
}), undefined)
assert.deepEqual(checkpointReplyMetadataForComposer({
response_to_checkpoint_id: 'cp-staffing',
response_to_checkpoint_type: 'company_staffing_selection',
}), {
response_to_checkpoint_id: 'cp-staffing',
response_to_checkpoint_type: 'company_staffing_selection',
})
const duplicatePending = analyzeCheckpointMessages([
checkpoint,
{
...checkpoint,
id: 'msg-checkpoint-duplicate',
channelId: 'session:task-2',
timestamp: 2,
},
])
assert.deepEqual([...duplicatePending.pendingMessageIds], ['msg-checkpoint'])
assert.deepEqual([...duplicatePending.respondedMessageIds], [])
assert.deepEqual([...duplicatePending.duplicateMessageIds], ['msg-checkpoint-duplicate'])
const duplicateResponded = analyzeCheckpointMessages([
{
...checkpoint,
metadata: {
...checkpoint.metadata,
checkpoint_status: 'responded',
},
},
{
...checkpoint,
id: 'msg-checkpoint-duplicate',
channelId: 'session:task-2',
timestamp: 2,
metadata: {
...checkpoint.metadata,
checkpoint_status: 'responded',
},
},
])
assert.deepEqual([...duplicateResponded.respondedMessageIds], ['msg-checkpoint'])
assert.deepEqual([...duplicateResponded.duplicateMessageIds], ['msg-checkpoint-duplicate'])
const replyBeforeEngineResolution = analyzeCheckpointMessages([
checkpoint,
{
id: 'msg-user',
channelId: 'session:task-1',
sender: 'user',
senderName: 'You',
content: 'Please make one more change.',
timestamp: 2,
mentions: [],
metadata: {
response_to_checkpoint_id: 'cp-delivery',
response_to_checkpoint_type: 'company_delivery_feedback',
},
},
])
assert.deepEqual([...replyBeforeEngineResolution.respondedMessageIds], ['msg-checkpoint'])
assert.deepEqual([...replyBeforeEngineResolution.pendingMessageIds], [])
assert.equal(replyBeforeEngineResolution.latestPendingReplyMetadata, undefined)
const responded = analyzeCheckpointMessages([
{
...checkpoint,
metadata: {
...checkpoint.metadata,
checkpoint_status: 'responded',
checkpoint_response_message_id: 'msg-user',
},
},
])
assert.deepEqual([...responded.respondedMessageIds], ['msg-checkpoint'])
const expiredApproval: ChatMessage = {
id: 'msg-expired-approval',
channelId: 'session:task-1',
sender: 'assistant',
senderName: 'OPC',
content: 'Approve external_agent?',
timestamp: 3,
mentions: [],
metadata: {
checkpoint_type: 'human_escalation',
checkpoint_id: 'esc-expired',
escalation_id: 'esc-expired',
escalation_type: 'decision_needed',
prompt: 'Approve external_agent?',
options: [{ id: 'approve_once', label: 'Approve once' }],
checkpoint_status: 'timeout',
},
}
const staleApproval: ChatMessage = {
...expiredApproval,
id: 'msg-stale-approval',
metadata: {
...expiredApproval.metadata,
checkpoint_id: 'esc-stale',
escalation_id: 'esc-stale',
checkpoint_status: 'stale',
},
}
const supersededRecruitment: ChatMessage = {
...checkpoint,
id: 'msg-superseded-recruitment',
metadata: {
...checkpoint.metadata,
checkpoint_type: 'company_recruitment_confirmation',
checkpoint_id: 'cp-recruit-old',
checkpoint_status: 'superseded',
},
}
const ignoredDelivery: ChatMessage = {
...checkpoint,
id: 'msg-ignored-delivery',
metadata: {
...checkpoint.metadata,
checkpoint_status: 'ignored',
},
}
const terminal = analyzeCheckpointMessages([expiredApproval, staleApproval, supersededRecruitment, ignoredDelivery])
assert.deepEqual([...terminal.pendingMessageIds], [])
assert.deepEqual([...terminal.respondedMessageIds], ['msg-expired-approval', 'msg-stale-approval', 'msg-superseded-recruitment', 'msg-ignored-delivery'])
console.log('checkpointUtils.test.ts: OK (checkpoint pending/reply/terminal status handling)')