{"record":{"id":"cc3276075ef85f43","repo":"paperclipai/paperclip","slug":"unsupported-export-format-value","errorCode":null,"errorMessage":"Unsupported export format: ${value}","messagePattern":"Unsupported export format: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"cli/src/commands/client/feedback.ts","lineNumber":237,"sourceCode":"export function buildFeedbackTraceQuery(opts: FeedbackTraceQueryOptions, includePayload = true): string {\n  const params = new URLSearchParams();\n  if (opts.targetType) params.set(\"targetType\", opts.targetType);\n  if (opts.vote) params.set(\"vote\", opts.vote);\n  if (opts.status) params.set(\"status\", opts.status);\n  if (opts.projectId) params.set(\"projectId\", opts.projectId);\n  if (opts.issueId) params.set(\"issueId\", opts.issueId);\n  if (opts.from) params.set(\"from\", opts.from);\n  if (opts.to) params.set(\"to\", opts.to);\n  if (opts.sharedOnly) params.set(\"sharedOnly\", \"true\");\n  if (includePayload) params.set(\"includePayload\", \"true\");\n  const query = params.toString();\n  return query ? `?${query}` : \"\";\n}\n\nexport function normalizeFeedbackTraceExportFormat(value: string | undefined): \"json\" | \"ndjson\" {\n  if (!value || value === \"ndjson\") return \"ndjson\";\n  if (value === \"json\") return \"json\";\n  throw new Error(`Unsupported export format: ${value}`);\n}\n\nexport function serializeFeedbackTraces(traces: FeedbackTrace[], format: string | undefined): string {\n  if (normalizeFeedbackTraceExportFormat(format) === \"json\") {\n    return JSON.stringify(traces, null, 2);\n  }\n  return traces.map((trace) => JSON.stringify(trace)).join(\"\\n\");\n}\n\nexport async function fetchCompanyFeedbackTraces(\n  ctx: ResolvedClientContext,\n  companyId: string,\n  opts: FeedbackFilterOptions,\n): Promise<FeedbackTrace[]> {\n  return (\n    (await ctx.api.get<FeedbackTrace[]>(\n      `${apiPath`/api/companies/${companyId}/feedback-traces`}${buildFeedbackTraceQuery(opts, true)}`,\n    )) ?? []","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/paperclipai/paperclip/blob/67001ec6eb96ae601aa27bc91d9b2415d665334a/cli/src/commands/client/feedback.ts#L219-L255","documentation":"normalizeFeedbackTraceExportFormat only accepts \"json\" or \"ndjson\" (default). Any other value is rejected before serialization.","triggerScenarios":"Passing --format csv|yaml|xml to a feedback-trace export command.","commonSituations":"Expecting a spreadsheet-friendly format; copying flags from another tool; typo.","solutions":["Use --format json for a pretty-printed JSON array.","Use --format ndjson (or omit) for newline-delimited JSON, one trace per line."],"exampleFix":"// before\npaperclipai feedback trace export --format csv\n// after\npaperclipai feedback trace export --format ndjson","handlingStrategy":"validation","validationCode":"const FORMATS = new Set(['json', 'ndjson']);\nfunction normalizeFormat(value?: string) {\n  if (!value || value === 'ndjson') return 'ndjson';\n  if (value === 'json') return 'json';\n  throw new Error(`Unsupported export format: ${value}`);\n}","typeGuard":"const isExportFormat = (v: string): v is 'json' | 'ndjson' => v === 'json' || v === 'ndjson';","tryCatchPattern":null,"preventionTips":["Restrict --format to choices in the CLI parser.","Default to ndjson so callers rarely need to set it."],"tags":["cli","feedback","export","input-validation"],"backgroundTag":null,"analyzedSha":"67001ec6eb96ae601aa27bc91d9b2415d665334a","analyzedAt":"2026-08-12T12:05:45.408Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}