koala73/worldmonitor · error · Error

A framework named ' ' already exists. Rename the existing…

Error message

A framework named '${fw.name}' already exists. Rename the existing one first.

What it means

Client-side uniqueness check in saveImportedFramework: an imported framework with the same name already exists in the library. Names must be unique among imported frameworks so selection and updates are unambiguous.

Solutions

  1. Rename or delete the existing framework with that name first
  2. Edit the existing framework instead of importing a duplicate
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/services/analysis-framework-store.ts:126 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of koala73/worldmonitor@eeab0a219f (2026-08-21). Data as JSON: /api/errors/0ef5ea479bb1a5ff. Report an issue: GitHub.

Appendix: source

Thrown at src/services/analysis-framework-store.ts:126

const _activeCache = new Map<AnalysisPanelId, AnalysisFramework | null>();

export function loadFrameworkLibrary(): AnalysisFramework[] {
  const imported = loadFromStorage<AnalysisFramework[]>(LIBRARY_KEY, []);
  return [...BUILT_IN_FRAMEWORKS, ...imported];
}

export function saveImportedFramework(fw: Omit<AnalysisFramework, 'isBuiltIn' | 'createdAt'>): void {
  const imported = loadFromStorage<AnalysisFramework[]>(LIBRARY_KEY, []);
  if (imported.length >= MAX_IMPORTED) {
    throw new Error(`Library is full (max ${MAX_IMPORTED} imported frameworks).`);
  }
  if (fw.systemPromptAppend.length > MAX_INSTRUCTIONS_LEN) {
    throw new Error(`Instructions exceed the ${MAX_INSTRUCTIONS_LEN}-character limit (${fw.systemPromptAppend.length} chars). Trim and retry.`);
  }
  const existing = loadFrameworkLibrary();
  if (existing.some(f => f.name === fw.name)) {
    throw new Error(`A framework named '${fw.name}' already exists. Rename the existing one first.`);
  }
  const newFw: AnalysisFramework = { ...fw, isBuiltIn: false, createdAt: Date.now() };
  saveToStorage(LIBRARY_KEY, [...imported, newFw]);
  _activeCache.clear();
}

export function deleteImportedFramework(id: string): void {
  if (BUILT_IN_FRAMEWORKS.some(f => f.id === id)) return;
  const imported = loadFromStorage<AnalysisFramework[]>(LIBRARY_KEY, []);
  saveToStorage(LIBRARY_KEY, imported.filter(f => f.id !== id));
  _activeCache.clear();
}

export function renameImportedFramework(id: string, name: string): void {
  if (BUILT_IN_FRAMEWORKS.some(f => f.id === id)) return;
  const imported = loadFromStorage<AnalysisFramework[]>(LIBRARY_KEY, []);
  saveToStorage(LIBRARY_KEY, imported.map(f => f.id === id ? { ...f, name } : f));
  _activeCache.clear();

View on GitHub (pinned to eeab0a219f)