{"record":{"id":"dfe9d981e2cb1da0","repo":"linshenkx/prompt-optimizer","slug":"iteration-requirement-must-not-be-empty","errorCode":null,"errorMessage":"Iteration requirement must not be empty.","messagePattern":"Iteration requirement must not be empty\\.","errorType":"validation","errorClass":"EvaluationValidationError","httpStatus":null,"severity":"error","filePath":"packages/core/src/services/evaluation/service.ts","lineNumber":544,"sourceCode":"            throw new EvaluationValidationError(\n              'Image compare evaluation requires every compared snapshot to include output image evidence.'\n            );\n          }\n        }\n        break;\n\n      case 'prompt-only':\n        if (!request.target?.workspacePrompt?.trim()) {\n          throw new EvaluationValidationError('Workspace prompt must not be empty.');\n        }\n        break;\n\n      case 'prompt-iterate':\n        if (!request.target?.workspacePrompt?.trim()) {\n          throw new EvaluationValidationError('Workspace prompt must not be empty.');\n        }\n        if (!request.iterateRequirement?.trim()) {\n          throw new EvaluationValidationError('Iteration requirement must not be empty.');\n        }\n        break;\n\n      default:\n        throw new EvaluationValidationError(`Unknown evaluation type: ${(request as any).type}`);\n    }\n  }\n\n  /**\n   * 验证评估模型\n   */\n  private async validateModel(modelKey: string): Promise<TextModelConfig> {\n    const model = await this.modelManager.getModel(modelKey);\n    if (!model) {\n      throw new EvaluationModelError(modelKey);\n    }\n    return model;\n  }","sourceCodeStart":526,"sourceCodeEnd":562,"githubUrl":"https://github.com/linshenkx/prompt-optimizer/blob/3e677b1d9f7e0493c142c175560531e7ae786dce/packages/core/src/services/evaluation/service.ts#L526-L562","documentation":"Thrown for type:'prompt-iterate' when request.iterateRequirement is missing or whitespace-only. The iteration requirement tells the LLM how to improve the prompt; without it there is nothing to iterate toward. Raised as an EvaluationValidationError in validateRequest.","triggerScenarios":"evaluate({type:'prompt-iterate', ...}) with iterateRequirement omitted, empty, or only whitespace.","commonSituations":"User clicks 'iterate' without describing what to change; requirement field not wired into the request payload; requirement cleared by a form reset but submit still fired.","solutions":["Collect and pass a non-empty iterateRequirement describing the desired change","Disable the iterate action until a requirement is entered","Default the requirement to a generic instruction if your product intends one (e.g. 'improve clarity')"],"exampleFix":"// before\nawait svc.evaluate({ type: 'prompt-iterate', target, iterateRequirement: '' });\n\n// after\nawait svc.evaluate({ type: 'prompt-iterate', target, iterateRequirement: 'Make it more concise.' });","handlingStrategy":"validation","validationCode":"if (!req.iterateRequirement?.trim()) throw new Error('Describe what to change before iterating');\nawait svc.evaluate(req);","typeGuard":"const hasRequirement = (r: PromptIterateRequest) => Boolean(r.iterateRequirement?.trim());","tryCatchPattern":null,"preventionTips":["Require the requirement input in the form","Offer sensible default requirements"],"tags":["evaluation","validation","iterate","prompt"],"backgroundTag":"required-field-empty","analyzedSha":"3e677b1d9f7e0493c142c175560531e7ae786dce","analyzedAt":"2026-08-27T21:29:16.709Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}