mode-mcp.ts 1.0 KB

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