gaunt-sloth-assistant
Version:
> ⚠️ **`gaunt-sloth-assistant` has been renamed to [`gaunt-sloth`](https://www.npmjs.com/package/gaunt-sloth).** > The `1.5.x` series is the final release under the old name — active development continues under > the new package. To switch: > > ```bash >
64 lines • 2.71 kB
JavaScript
import { getContentFromProvider, getRequirementsFromProvider, } from '#src/commands/commandUtils.js';
import { buildSystemMessages, readBackstory, readChatPrompt, readCodePrompt, readGuidelines, readReviewInstructions, readSystemPrompt, } from '@gaunt-sloth/core/utils/llmUtils.js';
import { readPrDiscoveryPrompt } from '#src/commands/prDiscovery.js';
export function getAskSystemPrompt(config) {
const parts = [readBackstory(config), readGuidelines(config)];
const systemPrompt = readSystemPrompt(config);
if (systemPrompt) {
parts.push(systemPrompt);
}
return parts.join('\n');
}
export function getReviewSystemPrompt(config) {
const parts = [readBackstory(config), readGuidelines(config), readReviewInstructions(config)];
const systemPrompt = readSystemPrompt(config);
if (systemPrompt) {
parts.push(systemPrompt);
}
return parts.join('\n');
}
export function getCommandSystemPrompt(command, config) {
if (command === 'ask') {
return getAskSystemPrompt(config);
}
if (command === 'review' || command === 'pr') {
return getReviewSystemPrompt(config);
}
const modePrompt = command === 'pr-discovery'
? readPrDiscoveryPrompt(config)
: command === 'chat'
? readChatPrompt(config)
: readCodePrompt(config);
return flattenSystemMessageContent(config, modePrompt);
}
function flattenSystemMessageContent(config, modePrompt) {
const [systemMessage] = buildSystemMessages(config, modePrompt);
const content = systemMessage?.content;
if (typeof content === 'string') {
return content;
}
if (Array.isArray(content)) {
return content
.map((item) => (typeof item === 'string' ? item : 'text' in item ? item.text : ''))
.join('\n');
}
return '';
}
export function getEffectiveRequirementsProvider(command, config, cliProvider) {
return (cliProvider ??
config?.commands?.[command]?.requirementsProvider ??
config?.requirementsProvider);
}
export function getEffectiveContentProvider(command, config, cliProvider) {
return (cliProvider ??
config?.commands?.[command]?.contentProvider ??
config?.contentProvider ??
(command === 'pr' ? 'github' : undefined));
}
export async function getCommandProviderInput(command, inputType, id, config, cliProvider) {
if (inputType === 'requirements') {
return getRequirementsFromProvider(getEffectiveRequirementsProvider(command, config, cliProvider), id, config);
}
return getContentFromProvider(getEffectiveContentProvider(command, config, cliProvider), id, config);
}
//# sourceMappingURL=commandIntrospection.js.map