Files
NetMesh/components/ai/toolArtifacts/toolArtifactResultPayload.test.ts

66 lines
1.6 KiB
TypeScript
Raw Normal View History

import test from 'node:test';
import assert from 'node:assert/strict';
import { parseResultPayload } from './toolArtifactResultPayload.ts';
test('parseResultPayload unwraps MCP text content arrays', () => {
assert.deepEqual(parseResultPayload(JSON.stringify([
{
type: 'text',
text: JSON.stringify({ ok: true, value: 42 }),
},
])), {
ok: true,
value: 42,
});
});
test('parseResultPayload unwraps MCP content objects', () => {
assert.deepEqual(parseResultPayload({
content: [
{
type: 'text',
text: JSON.stringify({ ok: true, label: 'prod' }),
},
],
}), {
ok: true,
label: 'prod',
});
});
test('parseResultPayload unwraps Copilot content string objects', () => {
assert.deepEqual(parseResultPayload({
content: JSON.stringify({ ok: true, notes: [{ id: 'note-1' }] }),
detailedContent: JSON.stringify({ ok: true, notes: [{ id: 'note-1' }] }),
contents: [
{
type: 'text',
text: JSON.stringify({ ok: true, notes: [{ id: 'note-1' }] }),
},
],
}), {
ok: true,
notes: [{ id: 'note-1' }],
});
});
test('parseResultPayload unwraps Copilot contents arrays', () => {
assert.deepEqual(parseResultPayload({
contents: [
{
type: 'text',
text: JSON.stringify({ ok: true, hosts: [{ id: 'host-1' }] }),
},
],
}), {
ok: true,
hosts: [{ id: 'host-1' }],
});
});
test('parseResultPayload preserves plain result objects', () => {
const payload = { ok: true, name: 'plain' };
assert.equal(parseResultPayload(payload), payload);
});