{"record":{"id":"74c778079db768f0","repo":"cline/cline","slug":"unknown-tool-s-invalid-join","errorCode":null,"errorMessage":"unknown tool(s): ${invalid.join(\", \")}","messagePattern":"unknown tool\\(s\\): (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"sdk/packages/core/src/cron/specs/cron-spec-parser.ts","lineNumber":129,"sourceCode":"\t\t\traw\n\t\t\t\t.map((item) => (typeof item === \"string\" ? item.trim() : \"\"))\n\t\t\t\t.filter((item) => item.length > 0),\n\t\t),\n\t];\n\tif (Array.isArray(value) && options.preserveEmptyArray) {\n\t\treturn normalized;\n\t}\n\treturn normalized.length > 0 ? normalized : undefined;\n}\n\nconst DEFAULT_TOOL_NAME_SET = new Set<string>(ALL_DEFAULT_TOOL_NAMES);\n\nfunction normalizeToolList(value: unknown): string[] | undefined {\n\tconst tools = normalizeStringList(value, { preserveEmptyArray: true });\n\tif (!tools) return undefined;\n\tconst invalid = tools.filter((tool) => !DEFAULT_TOOL_NAME_SET.has(tool));\n\tif (invalid.length > 0) {\n\t\tthrow new Error(`unknown tool(s): ${invalid.join(\", \")}`);\n\t}\n\treturn tools;\n}\n\nconst CRON_EXTENSION_KINDS = new Set<CronSpecExtensionKind>([\n\t\"rules\",\n\t\"skills\",\n\t\"plugins\",\n]);\n\nfunction normalizeExtensions(\n\tvalue: unknown,\n): CronSpecExtensionKind[] | undefined {\n\tconst extensions = normalizeStringList(value, { preserveEmptyArray: true });\n\tif (!extensions) return undefined;\n\tconst invalid = extensions.filter(\n\t\t(extension) =>\n\t\t\t!CRON_EXTENSION_KINDS.has(extension as CronSpecExtensionKind),","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/cline/cline/blob/491b30b806fdb8c93513f821f2b87d63a61542f5/sdk/packages/core/src/cron/specs/cron-spec-parser.ts#L111-L147","documentation":"Error \"unknown tool(s): ${invalid.join(\", \")}\" thrown in cline/cline.","triggerScenarios":"Thrown at sdk/packages/core/src/cron/specs/cron-spec-parser.ts:129 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"491b30b806fdb8c93513f821f2b87d63a61542f5","analyzedAt":"2026-08-25T13:45:22.367Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}