mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 19:18:59 +01:00
Add ChatAgentResult2#metadata (#204851)
* Support serializable metadata on 'result' object from chat agent * Fix 'errorDetails' on the VM * Fix acceptAction, get rid of generic parameter on ChatAgent * Use result metadata for followups * Use serialized result for history * Don't share metadata between agents * Add a test for result metadata * Fix build
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
import * as assert from 'assert';
|
||||
import 'mocha';
|
||||
import { CancellationToken, chat, ChatAgentRequest, ChatVariableLevel, Disposable, interactive, InteractiveSession, ProviderResult } from 'vscode';
|
||||
import { CancellationToken, chat, ChatAgentRequest, ChatAgentResult2, ChatVariableLevel, Disposable, interactive, InteractiveSession, ProviderResult } from 'vscode';
|
||||
import { assertNoRpc, closeAllEditors, DeferredPromise, disposeAll } from '../utils';
|
||||
|
||||
suite('chat', () => {
|
||||
@@ -67,4 +67,37 @@ suite('chat', () => {
|
||||
assert.strictEqual(request.prompt, 'hi [#myVar](values:myVar)');
|
||||
assert.strictEqual(request.variables['myVar'][0].value, 'myValue');
|
||||
});
|
||||
|
||||
test('result metadata is returned to the followup provider', async () => {
|
||||
disposables.push(interactive.registerInteractiveSessionProvider('provider', {
|
||||
prepareSession: (_token: CancellationToken): ProviderResult<InteractiveSession> => {
|
||||
return {
|
||||
requester: { name: 'test' },
|
||||
responder: { name: 'test' },
|
||||
};
|
||||
},
|
||||
}));
|
||||
|
||||
const deferred = new DeferredPromise<ChatAgentResult2>();
|
||||
const agent = chat.createChatAgent('agent', (_request, _context, _progress, _token) => {
|
||||
return { metadata: { key: 'value' } };
|
||||
});
|
||||
agent.isDefault = true;
|
||||
agent.subCommandProvider = {
|
||||
provideSubCommands: (_token) => {
|
||||
return [{ name: 'hello', description: 'Hello' }];
|
||||
}
|
||||
};
|
||||
agent.followupProvider = {
|
||||
provideFollowups(result, _token) {
|
||||
deferred.complete(result);
|
||||
return [];
|
||||
},
|
||||
};
|
||||
disposables.push(agent);
|
||||
|
||||
interactive.sendInteractiveRequestToProvider('provider', { message: '@agent /hello friend' });
|
||||
const result = await deferred.p;
|
||||
assert.deepStrictEqual(result.metadata, { key: 'value' });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user