{"record":{"id":"a6e1c6210df66640","repo":"linshenkx/prompt-optimizer","slug":"model-is-not-enabled","errorCode":null,"errorMessage":"Model is not enabled","messagePattern":"Model is not enabled","errorType":"validation","errorClass":"RequestConfigError","httpStatus":null,"severity":"error","filePath":"packages/core/src/services/image-understanding/service.ts","lineNumber":59,"sourceCode":"    if (!request || typeof request !== 'object') {\n      throw new RequestConfigError('Image understanding request cannot be empty')\n    }\n\n    const modelConfig = request.modelConfig\n    if (!modelConfig) {\n      throw new RequestConfigError('Model config cannot be empty')\n    }\n\n    if (!modelConfig.providerMeta?.id) {\n      throw new RequestConfigError('Model provider metadata cannot be empty')\n    }\n\n    if (!modelConfig.modelMeta?.id) {\n      throw new RequestConfigError('Model metadata cannot be empty')\n    }\n\n    if (!modelConfig.enabled) {\n      throw new RequestConfigError('Model is not enabled')\n    }\n  }\n\n  private async prepareRuntimeRequest(\n    request: ImageUnderstandingExecutionRequest\n  ): Promise<ImageUnderstandingExecutionRequest> {\n    const images = await normalizeImageInputsForLlm(request.images, this.imageInputOptions)\n    return {\n      ...request,\n      images: images ?? request.images,\n    }\n  }\n}\n\nexport function createImageUnderstandingService(\n  options: CreateImageUnderstandingServiceOptions = {}\n): IImageUnderstandingService {\n  return new ImageUnderstandingService(options)","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/linshenkx/prompt-optimizer/blob/3e677b1d9f7e0493c142c175560531e7ae786dce/packages/core/src/services/image-understanding/service.ts#L41-L77","documentation":"Thrown by validateRequest when modelConfig.enabled is falsy. The service only executes enabled models; a disabled config (user toggled it off, or imported with enabled:false) is rejected before any network call.","triggerScenarios":"Calling understand/understandStream with a config whose enabled flag is false or undefined; using a model the user disabled in settings; freshly imported configs defaulting to disabled.","commonSituations":"UI toggle state out of sync with the code path that picks the model; importing configs where enabled was not carried over; new configs created without setting enabled: true.","solutions":["Enable the model via the model manager / settings UI before calling understand().","When creating configs programmatically, set enabled: true explicitly.","Filter candidate models to enabled ones before building the request."],"exampleFix":"// before\nmodelConfig = { providerMeta: { id: 'x' }, modelMeta: { id: 'y' }, enabled: false }\nawait service.understand({ modelConfig, ... })\n\n// after\nawait modelManager.setEnabled('x', 'y', true)\nawait service.understand({ modelConfig: await modelManager.getEnabledModel('x','y'), ... })","handlingStrategy":"validation","validationCode":"const cfg = request.modelConfig\nif (!cfg.enabled) {\n  cfg.enabled = true // or pick another enabled model\n}","typeGuard":"const isEnabledModel = (c: any): boolean => Boolean(c?.enabled) && Boolean(c?.modelMeta?.id) && Boolean(c?.providerMeta?.id)","tryCatchPattern":null,"preventionTips":["Filter model candidates by enabled before building requests","Sync UI toggle state with the config actually used"],"tags":["validation","model-config","feature-flag"],"backgroundTag":"model-disabled","analyzedSha":"3e677b1d9f7e0493c142c175560531e7ae786dce","analyzedAt":"2026-08-27T21:29:16.709Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}