{"record":{"id":"a70ecd177ed17729","repo":"paperclipai/paperclip","slug":"member-not-found","errorCode":null,"errorMessage":"Member not found","messagePattern":"Member not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-host-services.ts","lineNumber":2922,"sourceCode":"          grantsByPrincipal.set(key, existing);\n        }\n        return visibleRows.map((member) => ({\n          ...member,\n          principalType: member.principalType as PrincipalType,\n          status: member.status as \"pending\" | \"active\" | \"suspended\" | \"archived\",\n          grants: (grantsByPrincipal.get(`${member.principalType}:${member.principalId}`) ?? []).map(redactGrant),\n        }));\n      },\n      async getMember(params) {\n        const companyId = ensureCompanyId(params.companyId);\n        await ensurePluginAvailableForCompany(companyId);\n        return loadPluginMember(companyId, params.memberId);\n      },\n      async updateMember(params) {\n        const companyId = ensureCompanyId(params.companyId);\n        await ensurePluginAvailableForCompany(companyId);\n        const updated = await access.updateMember(companyId, params.memberId, params.patch);\n        if (!updated) throw new Error(\"Member not found\");\n        await logPluginActivity({\n          companyId,\n          action: \"company_member.updated_by_plugin\",\n          entityType: \"company_membership\",\n          entityId: params.memberId,\n          details: {\n            patch: sanitizeRecord(params.patch as Record<string, unknown>),\n          },\n        });\n        return (await loadPluginMember(companyId, params.memberId))!;\n      },\n      async listInvites(params) {\n        const companyId = ensureCompanyId(params.companyId);\n        await ensurePluginAvailableForCompany(companyId);\n        const limit = Math.min(Math.max(Number(params.limit ?? 20), 1), 100);\n        const offset = Math.max(Number(params.offset ?? 0), 0);\n        const stateClause = inviteStateWhereClause(params.state);\n        const rows = await db","sourceCodeStart":2904,"sourceCodeEnd":2940,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/server/src/services/plugin-host-services.ts#L2904-L2940","documentation":"loadPluginMember could not find the requested company member record. Generic lookup guard: the member id does not exist or is not visible in the plugin's company scope.","triggerScenarios":"Thrown at server/src/services/plugin-host-services.ts:2913 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the member ID belongs to the company; the member may have been removed. Refresh the member list before referencing it."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7e689b3c35347b529cb9f54c9b9a8575a3dcab6","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}