{"record":{"id":"b606bb93d06087c0","repo":"paperclipai/paperclip","slug":"additional-source-localpath-is-not-an-absolute-pat","errorCode":null,"errorMessage":"additional source localPath is not an absolute path: ${localPath}","messagePattern":"additional source localPath is not an absolute path: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/sandbox-managed-runtime.ts","lineNumber":1258,"sourceCode":"      ...(input.preserveAbsentOnRestore ?? []),\n    ]);\n\n    // Stage one source directory into an isolated remote subdirectory through the\n    // unified `syncIn` seam. Both the workspace/asset tar path and the additional\n    // (referenced) project path use it: build one `SandboxSyncOperation` from the\n    // caller's `files` mappings (a host tarball as a single `file` mapping, or a\n    // whole `directory` mapping), carry any extract/wipe/merge steps as ordered\n    // `postUploadCommands`, confine the operation's source and target to their\n    // own roots (fail-closed), and delegate to `syncIn` (native transfer, or the\n    // base64-tar fallback). `finish` emits the terminal progress line.\n    const stageConfinedSyncIn = async (params: {\n      files: SandboxSyncFileMapping[];\n      postUploadCommands?: SandboxPostUploadCommand[];\n      sourceRoots: string[];\n      targetRoots: string[];\n      progressLabel: string;\n      statusPhase: RuntimeStatusPhase;\n      progressBytes: number;\n    }): Promise<void> => {\n      const operations: SandboxSyncOperation[] = [{\n        operationId: nextSyncOperationId(),\n        files: params.files,\n        ...(params.postUploadCommands\n          ? { postUploadCommands: withRunTimeout(params.postUploadCommands) }\n          : {}),\n      }];\n      assertSyncOperationsConfined(operations, {\n        sourceRoots: params.sourceRoots,\n        targetRoots: params.targetRoots,\n      });\n      const upload = makeTransferProgress(\n        input.onProgress,\n        \"Syncing\",\n        \"to\",\n        params.progressLabel,\n        { sink: input.onRuntimeProgress, phase: params.statusPhase },","sourceCodeStart":1240,"sourceCodeEnd":1276,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/packages/adapter-utils/src/sandbox-managed-runtime.ts#L1240-L1276","documentation":"Sandbox managed runtime validation: an additional source's localPath must be an absolute path, and the supplied value is relative.","triggerScenarios":"Thrown at packages/adapter-utils/src/sandbox-managed-runtime.ts:1031 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use an absolute path for the additional source localPath."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-08-21T17:58:32.592Z","contentChangedAt":"2026-08-21T17:58:32.592Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}