{"record":{"id":"49faf844c023b1aa","repo":"paperclipai/paperclip","slug":"plugin-telemetry-event-names-must-be-lowercase-slu","errorCode":null,"errorMessage":"Plugin telemetry event names must be lowercase slugs using letters, numbers, \"_\" or \"-\".","messagePattern":"Plugin telemetry event names must be lowercase slugs using letters, numbers, \"_\" or \"-\"\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-host-services.ts","lineNumber":1651,"sourceCode":"          pluginId,\n          companyId: params.companyId ?? null,\n          level: \"metric\",\n          message: safeName,\n          meta: sanitiseMeta({ value: params.value, tags: params.tags ?? null }),\n        });\n        if (_logBuffer.length >= LOG_BUFFER_FLUSH_SIZE) {\n          flushPluginLogBuffer().catch((err) => {\n            console.error(\"[plugin-host-services] Triggered metric flush failed:\", err);\n          });\n        }\n      },\n    },\n\n    telemetry: {\n      async track(params) {\n        const eventName = String(params.eventName ?? \"\").trim();\n        if (!TELEMETRY_EVENT_NAME_REGEX.test(eventName)) {\n          throw new Error(\n            'Plugin telemetry event names must be lowercase slugs using letters, numbers, \"_\" or \"-\".',\n          );\n        }\n        const telemetryClient = getTelemetryClient();\n        if (!telemetryClient) return;\n        telemetryClient.trackDynamic(`plugin.${pluginKey}.${eventName}`, params.dimensions);\n      },\n    },\n\n    logger: {\n      async log(params) {\n        const { level, meta } = params;\n        const safeMessage = truncStr(String(params.message ?? \"\"), MAX_LOG_MESSAGE_LENGTH);\n        const safeMeta = sanitiseMeta(meta);\n        const pluginLogger = logger.child({ service: \"plugin-worker\", pluginId });\n        const logFields = {\n          ...safeMeta,\n          pluginLogLevel: level,","sourceCodeStart":1633,"sourceCodeEnd":1669,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/server/src/services/plugin-host-services.ts#L1633-L1669","documentation":"The plugin telemetry track() call used an eventName that is not a lowercase slug of letters, numbers, underscores or hyphens. The host validates event names before emitting telemetry so only well-formed names reach the telemetry pipeline.","triggerScenarios":"Thrown at server/src/services/plugin-host-services.ts:1642 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the telemetry event to a lowercase slug containing only letters, numbers, '_' or '-' (e.g. 'task_completed' -> 'task-completed')."],"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-14T05:17:10.506Z"}