feat: Add context argument to completion handlers
This commit adds a `context` argument to the completion handlers in `PromptsTab`, `ResourcesTab`, `useCompletionState`, and `useConnection`. The context argument allows passing additional information to the completion engine, which can be used to improve the quality of the completions. The context is passed as a dictionary of key-value pairs. The `ResourcesTab` component was also updated to pass `templateValues` as the `context` to the completion handler. The `useConnection` hook was updated to include the context in the completion request sent to the server.
This commit is contained in:
parent
56ef795d86
commit
de474e5411
4 changed files with 16 additions and 0 deletions
|
|
@ -48,6 +48,7 @@ const PromptsTab = ({
|
|||
ref: PromptReference | ResourceReference,
|
||||
argName: string,
|
||||
value: string,
|
||||
context?: Record<string, string>,
|
||||
) => Promise<string[]>;
|
||||
completionsSupported: boolean;
|
||||
promptContent: string;
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ const ResourcesTab = ({
|
|||
ref: ResourceReference | PromptReference,
|
||||
argName: string,
|
||||
value: string,
|
||||
context?: Record<string, string>,
|
||||
) => Promise<string[]>;
|
||||
completionsSupported: boolean;
|
||||
resourceContent: string;
|
||||
|
|
@ -94,6 +95,7 @@ const ResourcesTab = ({
|
|||
},
|
||||
key,
|
||||
value,
|
||||
templateValues,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ export function useCompletionState(
|
|||
ref: ResourceReference | PromptReference,
|
||||
argName: string,
|
||||
value: string,
|
||||
context?: Record<string, string>,
|
||||
signal?: AbortSignal,
|
||||
) => Promise<string[]>,
|
||||
completionsSupported: boolean = true,
|
||||
|
|
@ -66,6 +67,7 @@ export function useCompletionState(
|
|||
ref: ResourceReference | PromptReference,
|
||||
argName: string,
|
||||
value: string,
|
||||
context?: Record<string, string>,
|
||||
) => {
|
||||
if (!completionsSupported) {
|
||||
return;
|
||||
|
|
@ -82,10 +84,13 @@ export function useCompletionState(
|
|||
}));
|
||||
|
||||
try {
|
||||
console.log(state);
|
||||
|
||||
const values = await handleCompletion(
|
||||
ref,
|
||||
argName,
|
||||
value,
|
||||
context,
|
||||
abortController.signal,
|
||||
);
|
||||
|
||||
|
|
@ -97,6 +102,7 @@ export function useCompletionState(
|
|||
}));
|
||||
}
|
||||
} catch {
|
||||
console.error("completion failed");
|
||||
if (!abortController.signal.aborted) {
|
||||
setState((prev) => ({
|
||||
...prev,
|
||||
|
|
|
|||
|
|
@ -170,6 +170,7 @@ export function useConnection({
|
|||
ref: ResourceReference | PromptReference,
|
||||
argName: string,
|
||||
value: string,
|
||||
context?: Record<string, string>,
|
||||
signal?: AbortSignal,
|
||||
): Promise<string[]> => {
|
||||
if (!mcpClient || !completionsSupported) {
|
||||
|
|
@ -187,6 +188,12 @@ export function useConnection({
|
|||
},
|
||||
};
|
||||
|
||||
if (context) {
|
||||
request["params"]["context"] = {
|
||||
arguments: context,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await makeRequest(request, CompleteResultSchema, {
|
||||
signal,
|
||||
|
|
|
|||
Loading…
Reference in a new issue