Portal/rsconcept/frontend/src/features/ai/components/prompt-input/completion.tsx

25 lines
756 B
TypeScript
Raw Normal View History

2025-07-22 20:38:08 +03:00
import { type CompletionContext } from '@codemirror/autocomplete';
import { describePromptVariable } from '../../labels';
import { type PromptVariableType } from '../../models/prompting';
export function variableCompletions(variables: string[]) {
return (context: CompletionContext) => {
let word = context.matchBefore(/\{\{[a-zA-Z.-]*/);
if (!word && context.explicit) {
word = { from: context.pos, to: context.pos, text: '' };
}
if (!word || (word.from == word.to && !context.explicit)) {
return null;
}
return {
from: word.from,
to: word.to,
options: variables.map(name => ({
label: `{{${name}}}`,
info: describePromptVariable(name as PromptVariableType)
}))
};
};
}