{"record":{"id":"b234e25064e0233f","repo":"vxcontrol/pentagi","slug":"failed-to-get-memorist-handler-w","errorCode":null,"errorMessage":"failed to get memorist handler: %w","messagePattern":"failed to get memorist handler: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/pkg/providers/assistant.go","lineNumber":183,"sourceCode":"\t\treturn fmt.Errorf(\"failed to get ask advice handler: %w\", err)\n\t}\n\n\tcoder, err := ap.fp.GetCoderHandler(ctx, nil, nil)\n\tif err != nil {\n\t\tlogger.WithError(err).Error(\"failed to get coder handler\")\n\t\treturn fmt.Errorf(\"failed to get coder handler: %w\", err)\n\t}\n\n\tinstaller, err := ap.fp.GetInstallerHandler(ctx, nil, nil)\n\tif err != nil {\n\t\tlogger.WithError(err).Error(\"failed to get installer handler\")\n\t\treturn fmt.Errorf(\"failed to get installer handler: %w\", err)\n\t}\n\n\tmemorist, err := ap.fp.GetMemoristHandler(ctx, nil, nil)\n\tif err != nil {\n\t\tlogger.WithError(err).Error(\"failed to get memorist handler\")\n\t\treturn fmt.Errorf(\"failed to get memorist handler: %w\", err)\n\t}\n\n\tpentester, err := ap.fp.GetPentesterHandler(ctx, nil, nil)\n\tif err != nil {\n\t\tlogger.WithError(err).Error(\"failed to get pentester handler\")\n\t\treturn fmt.Errorf(\"failed to get pentester handler: %w\", err)\n\t}\n\n\tsearcher, err := ap.fp.GetSubtaskSearcherHandler(ctx, nil, nil)\n\tif err != nil {\n\t\tlogger.WithError(err).Error(\"failed to get searcher handler\")\n\t\treturn fmt.Errorf(\"failed to get searcher handler: %w\", err)\n\t}\n\n\tctx, observation := obs.Observer.NewObservation(ctx)\n\texecutorAgent := observation.Agent(\n\t\tlangfuse.WithAgentName(fmt.Sprintf(\"assistant %d for flow %d: %s\", ap.id, ap.fp.ID(), ap.fp.Title())),\n\t\tlangfuse.WithAgentInput(chain),","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/vxcontrol/pentagi/blob/ea665308baaff015b226f308438a68d929d0f29b/backend/pkg/providers/assistant.go#L165-L201","documentation":"Wraps a failure from fp.GetMemoristHandler during assistant worker setup (backend/pkg/providers/assistant.go). The memorist (memory/summarization) agent's LLM handler could not be constructed, typically due to an unavailable or misconfigured LLM provider. The assistant worker cannot start without it.","triggerScenarios":"Memorist handler factory fails: pgvector extension missing, embeddings table/schema absent (migrations not run), embedder not configured, or DB connection error.","commonSituations":"Postgres without the pgvector extension installed; fresh DB where migrations didn't run; no embedding provider key configured so the embedder is nil; DB outage.","solutions":["Ensure the pgvector extension is installed and migrations ran (`CREATE EXTENSION vector`; check backend startup logs).","Configure a valid embedding provider key (EMBEDDING_* env or settings UI).","Verify Postgres connectivity and the wrapped DB error in logs.","Re-run `docker compose` with the official image that bundles pgvector."],"exampleFix":"// before\nmemorist, err := ap.fp.GetMemoristHandler(ctx, nil, nil)\nif err != nil {\n    return fmt.Errorf(\"failed to get memorist handler: %w\", err)\n}\n// after\nmemorist, err := ap.fp.GetMemoristHandler(ctx, &taskID, &subtaskID)\nif err != nil {\n    logger.WithError(err).Error(\"memorist init failed — check pgvector & embedding config\")\n    return fmt.Errorf(\"failed to get memorist handler: %w\", err)\n}","handlingStrategy":"validation","validationCode":"var ext string\nif err := db.QueryRow(`SELECT extname FROM pg_extension WHERE extname='vector'`).Scan(&ext); err != nil {\n    return errors.New(\"pgvector extension not installed — memorist handler cannot start\")\n}","typeGuard":null,"tryCatchPattern":"memorist, err := ap.fp.GetMemoristHandler(ctx, nil, nil)\nif err != nil {\n    if isMissingExtension(err) { return fmt.Errorf(\"install pgvector: %w\", err) }\n    return fmt.Errorf(\"failed to get memorist handler: %w\", err)\n}","preventionTips":["Use the provided Postgres image with pgvector","Run `CREATE EXTENSION IF NOT EXISTS vector;` in init scripts","Configure a valid embedding provider before starting flows","Verify migrations created embeddings tables"],"tags":["pgvector","embeddings","handler-init"],"backgroundTag":"tool-handler-init-failed","analyzedSha":"ea665308baaff015b226f308438a68d929d0f29b","analyzedAt":"2026-09-01T14:16:31.421Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}