{"record":{"id":"a263ffc6b43f6aa2","repo":"paperclipai/paperclip","slug":"no-source-configured","errorCode":null,"errorMessage":"No source configured.","messagePattern":"No source configured\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"ui/src/pages/CompanyImport.tsx","lineNumber":1070,"sourceCode":"          ? { mode: \"new_company\" as const, newCompanyName: newCompanyName || null }\n          : { mode: \"existing_company\" as const, companyId: selectedCompanyId! },\n      collisionStrategy,\n    };\n  }\n\n  // Monotonic id for preview requests. Structural configuration changes bump\n  // it, so an in-flight preview they supersede settles silently instead of\n  // publishing a result or error for a package that is no longer selected.\n  // Imports are not gated this way: they mutate the server, so their outcome\n  // is always published.\n  const previewGenerationRef = useRef(0);\n\n  // Preview mutation\n  const previewMutation = useMutation({\n    mutationFn: async (_generation: number) => {\n      const meta = buildImportMetaCommon();\n      if (sourceMode === \"local\") {\n        if (!localPackage) throw new Error(\"No source configured.\");\n        if (usesChunkedTransfer(localPackage.file)) {\n          // Too large for one request: upload (or resume) the chunked\n          // transfer, then preview against the server-side assembled spool.\n          const transferId = await uploadImportTransfer(localPackage.file);\n          return companiesApi.importTransferPreview(transferId, meta);\n        }\n        // Upload the raw compressed zip; the server unzips it into the same\n        // inline bundle the importer consumes.\n        return companiesApi.importPreviewPackage(localPackage.file, meta);\n      }\n      const source = buildGithubSource();\n      if (!source) throw new Error(\"No source configured.\");\n      return companiesApi.importPreview({ source, ...meta });\n    },\n    onSuccess: (result, generation) => {\n      if (generation !== previewGenerationRef.current) return;\n      setImportPreview(result);\n","sourceCodeStart":1052,"sourceCodeEnd":1088,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/ui/src/pages/CompanyImport.tsx#L1052-L1088","documentation":"Configuration sentinel in CompanyImport: the import/preview flow reached a point where it needs an import source (selected package file or transfer), but none is configured — the user has not chosen a package yet, so the request cannot be built.","triggerScenarios":"Thrown at ui/src/pages/CompanyImport.tsx:1070 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure an import source (file or remote) before starting the import."],"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"}