{"record":{"id":"98cdc0295b6c9414","repo":"ruvnet/ruflo","slug":"openai-provider-requires-apikey","errorCode":null,"errorMessage":"OpenAI provider requires apiKey","messagePattern":"OpenAI provider requires apiKey","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/embeddings/src/embedding-service.ts","lineNumber":1020,"sourceCode":"\n  // Specific provider with optional fallback\n  const createPrimary = (): IEmbeddingService => {\n    switch (provider) {\n      case 'agentic-flow':\n        return new AgenticFlowEmbeddingService({\n          provider: 'agentic-flow',\n          modelId: rest.modelId ?? 'all-MiniLM-L6-v2',\n          dimensions: rest.dimensions ?? 384,\n          cacheSize: rest.cacheSize,\n        });\n      case 'transformers':\n        return new TransformersEmbeddingService({\n          provider: 'transformers',\n          model: rest.model ?? 'Xenova/all-MiniLM-L6-v2',\n          cacheSize: rest.cacheSize,\n        });\n      case 'openai':\n        if (!rest.apiKey) throw new Error('OpenAI provider requires apiKey');\n        return new OpenAIEmbeddingService({\n          provider: 'openai',\n          apiKey: rest.apiKey,\n          dimensions: rest.dimensions,\n          cacheSize: rest.cacheSize,\n        });\n      case 'rvf':\n        return new RvfEmbeddingService({\n          provider: 'rvf',\n          dimensions: rest.dimensions ?? 384,\n          cacheSize: rest.cacheSize,\n        });\n      case 'mock':\n        return new MockEmbeddingService({\n          dimensions: rest.dimensions ?? 384,\n          cacheSize: rest.cacheSize,\n        });\n      default:","sourceCodeStart":1002,"sourceCodeEnd":1038,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/embeddings/src/embedding-service.ts#L1002-L1038","documentation":"The async factory was building an OpenAI embedding service but rest.apiKey was empty/undefined, and the OpenAI API cannot be called without credentials. Fails fast at construction time instead of on the first embed call.","triggerScenarios":"Thrown at v3/@claude-flow/embeddings/src/embedding-service.ts:1020 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass apiKey in the OpenAI provider config, sourced from your secret manager (e.g. devkey), not hardcoded.","Choose a provider that does not need a key ('agentic-flow' or 'transformers') if no OpenAI key is available."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}