File size: 1,052 Bytes
f56a29b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | /**
* Mode MCP - Controls the current workflow mode during PBL generation.
*
* Migrated from PBL-Nano. Simplified: no list_tools(), pure method calls.
*/
import type { PBLMode, PBLToolResult } from '../types';
export class ModeMCP {
private currentMode: PBLMode;
private availableModes: PBLMode[];
constructor(availableModes: PBLMode[], defaultMode: PBLMode) {
this.availableModes = availableModes;
this.currentMode = defaultMode;
}
setMode(mode: PBLMode): PBLToolResult {
if (!this.availableModes.includes(mode)) {
return {
success: false,
error: `Mode "${mode}" not available. Available: ${this.availableModes.join(', ')}`,
};
}
if (mode === this.currentMode) {
return { success: false, error: `Already in "${mode}" mode.` };
}
this.currentMode = mode;
return { success: true, message: `Switched to "${mode}" mode.` };
}
getCurrentMode(): PBLMode {
return this.currentMode;
}
getAvailableModes(): PBLMode[] {
return [...this.availableModes];
}
}
|