Files
NetMesh/infrastructure/ai/sdk/codebuddySdkContract.test.ts

44 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

import test from 'node:test';
import assert from 'node:assert/strict';
import type {
ElicitationCreateRequest,
ElicitationHandler,
Options,
SessionOptions,
} from '@tencent-ai/agent-sdk';
test('CodeBuddy SDK Options and SessionOptions support elicitation handlers', async () => {
const calls: string[] = [];
const handler: ElicitationHandler = {
async create(_request, _options) {
calls.push('create');
return { action: 'accept', content: { confirmed: true } };
},
complete() {
calls.push('complete');
},
};
const queryOptions = { elicitation: handler } satisfies Options;
const sessionOptions = { elicitation: handler } satisfies SessionOptions;
const request: ElicitationCreateRequest = {
sessionId: 'contract-session',
mode: 'form',
message: 'Confirm?',
requestedSchema: {
type: 'object',
properties: { confirmed: { type: 'boolean' } },
},
};
assert.equal(queryOptions.elicitation, handler);
assert.equal(sessionOptions.elicitation, handler);
assert.deepEqual(
await sessionOptions.elicitation.create(request, {
signal: new AbortController().signal,
}),
{ action: 'accept', content: { confirmed: true } },
);
await sessionOptions.elicitation.complete?.({ elicitationId: 'contract-elicit' });
assert.deepEqual(calls, ['create', 'complete']);
});