UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

39 lines 5.04 kB
/** * Prescriptive Digest — Issue #492 * * Appends a small text block to every MCP tool response when elements are * active. During normal operation the LLM already has full instructions and * ignores it. After context compaction, the digest tells the LLM to call * get_active_elements to recover the lost instructions. * * ~30-50 tokens overhead when active; zero when no elements are active. */ /** * Generate a compact, prescriptive digest line from a list of active elements. * Returns an empty string when the list is empty (caller should check length first). * * @example * generatePrescriptiveDigest([ * { type: 'persona', name: 'architect' }, * { type: 'skill', name: 'reviewer' }, * ]); * // "[Active elements: persona: architect; skill: reviewer. If you lack instructions for these, call get_active_elements for each type to refresh.]" */ export function generatePrescriptiveDigest(activeElements) { if (activeElements.length === 0) { return ''; } // Group element names by type for compact output const byType = new Map(); for (const el of activeElements) { const names = byType.get(el.type) || []; names.push(el.name); byType.set(el.type, names); } const parts = Array.from(byType.entries()) .map(([type, names]) => `${type}: ${names.join(', ')}`) .join('; '); return (`[Active elements: ${parts}. ` + `If you lack instructions for these, call get_active_elements for each type to refresh.]`); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlc2NyaXB0aXZlRGlnZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9QcmVzY3JpcHRpdmVEaWdlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBT0g7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxjQUFzQztJQUMvRSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsaURBQWlEO0lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO0lBQzNDLEtBQUssTUFBTSxFQUFFLElBQUksY0FBYyxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZCxPQUFPLENBQ0wscUJBQXFCLEtBQUssSUFBSTtRQUM5Qix5RkFBeUYsQ0FDMUYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByZXNjcmlwdGl2ZSBEaWdlc3Qg4oCUIElzc3VlICM0OTJcbiAqXG4gKiBBcHBlbmRzIGEgc21hbGwgdGV4dCBibG9jayB0byBldmVyeSBNQ1AgdG9vbCByZXNwb25zZSB3aGVuIGVsZW1lbnRzIGFyZVxuICogYWN0aXZlLiBEdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiB0aGUgTExNIGFscmVhZHkgaGFzIGZ1bGwgaW5zdHJ1Y3Rpb25zIGFuZFxuICogaWdub3JlcyBpdC4gQWZ0ZXIgY29udGV4dCBjb21wYWN0aW9uLCB0aGUgZGlnZXN0IHRlbGxzIHRoZSBMTE0gdG8gY2FsbFxuICogZ2V0X2FjdGl2ZV9lbGVtZW50cyB0byByZWNvdmVyIHRoZSBsb3N0IGluc3RydWN0aW9ucy5cbiAqXG4gKiB+MzAtNTAgdG9rZW5zIG92ZXJoZWFkIHdoZW4gYWN0aXZlOyB6ZXJvIHdoZW4gbm8gZWxlbWVudHMgYXJlIGFjdGl2ZS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZUVsZW1lbnRTdW1tYXJ5IHtcbiAgdHlwZTogc3RyaW5nOyAgLy8gRWxlbWVudCB0eXBlIChlLmcuLCAncGVyc29uYScsICdza2lsbCcsICdlbnNlbWJsZScpXG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGNvbXBhY3QsIHByZXNjcmlwdGl2ZSBkaWdlc3QgbGluZSBmcm9tIGEgbGlzdCBvZiBhY3RpdmUgZWxlbWVudHMuXG4gKiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZSBsaXN0IGlzIGVtcHR5IChjYWxsZXIgc2hvdWxkIGNoZWNrIGxlbmd0aCBmaXJzdCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGdlbmVyYXRlUHJlc2NyaXB0aXZlRGlnZXN0KFtcbiAqICAgeyB0eXBlOiAncGVyc29uYScsIG5hbWU6ICdhcmNoaXRlY3QnIH0sXG4gKiAgIHsgdHlwZTogJ3NraWxsJywgbmFtZTogJ3Jldmlld2VyJyB9LFxuICogXSk7XG4gKiAvLyBcIltBY3RpdmUgZWxlbWVudHM6IHBlcnNvbmE6IGFyY2hpdGVjdDsgc2tpbGw6IHJldmlld2VyLiBJZiB5b3UgbGFjayBpbnN0cnVjdGlvbnMgZm9yIHRoZXNlLCBjYWxsIGdldF9hY3RpdmVfZWxlbWVudHMgZm9yIGVhY2ggdHlwZSB0byByZWZyZXNoLl1cIlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQcmVzY3JpcHRpdmVEaWdlc3QoYWN0aXZlRWxlbWVudHM6IEFjdGl2ZUVsZW1lbnRTdW1tYXJ5W10pOiBzdHJpbmcge1xuICBpZiAoYWN0aXZlRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gR3JvdXAgZWxlbWVudCBuYW1lcyBieSB0eXBlIGZvciBjb21wYWN0IG91dHB1dFxuICBjb25zdCBieVR5cGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XG4gIGZvciAoY29uc3QgZWwgb2YgYWN0aXZlRWxlbWVudHMpIHtcbiAgICBjb25zdCBuYW1lcyA9IGJ5VHlwZS5nZXQoZWwudHlwZSkgfHwgW107XG4gICAgbmFtZXMucHVzaChlbC5uYW1lKTtcbiAgICBieVR5cGUuc2V0KGVsLnR5cGUsIG5hbWVzKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gQXJyYXkuZnJvbShieVR5cGUuZW50cmllcygpKVxuICAgIC5tYXAoKFt0eXBlLCBuYW1lc10pID0+IGAke3R5cGV9OiAke25hbWVzLmpvaW4oJywgJyl9YClcbiAgICAuam9pbignOyAnKTtcblxuICByZXR1cm4gKFxuICAgIGBbQWN0aXZlIGVsZW1lbnRzOiAke3BhcnRzfS4gYCArXG4gICAgYElmIHlvdSBsYWNrIGluc3RydWN0aW9ucyBmb3IgdGhlc2UsIGNhbGwgZ2V0X2FjdGl2ZV9lbGVtZW50cyBmb3IgZWFjaCB0eXBlIHRvIHJlZnJlc2guXWBcbiAgKTtcbn1cbiJdfQ==