fix(artifacts): guide retries for symlinked files (#8725)

* fix(go): suggest resolved path for rejected symlinks

* test(go): cover unresolved symlink recovery paths

* fix(go): omit schema recovery for resolved symlinks

* fix(artifacts): share resolved-path recovery across inspectors

* fix(sqlite): retain resolved database path through snapshot reads

* fix(captures): retain symlink retry guidance

* fix(artifacts): preserve retry hints through redaction and selected reads

---------

Co-authored-by: dhruvac29 <dhruvac29@users.noreply.github.com>
This commit is contained in:
Dhruvilkumar Ashokbhai Chodvadiyaanddhruvac29 authored and GitHub committed 2026-11-04 19:58:06 +08:00
1 parent bd7002b441
commit 85be0f70a6
36 files changed
+525 -116

No files matched your search

+6 -3
View File
@@ -11,6 +11,7 @@ import {
} from "../artifacts/readStableArtifact.js";
import { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js";
import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
import { stableArtifactInputRecovery } from "../artifacts/StableArtifactFailure.js";
import {
artifactFilePrimaryFacts,
type ArtifactFilePrimaryFacts,
@@ -145,9 +146,11 @@ const failureForPrimary = (
},
);
if (cause.reason === "path")
return new AnalysisInputError(OPERATION, { cause }, [
{ path: [field], reason: "invalid_format", message: cause.message },
]);
return new AnalysisInputError(
OPERATION,
{ cause, ...stableArtifactInputRecovery(cause) },
[{ path: [field], reason: "invalid_format", message: cause.message }],
);
}
if (cause instanceof Error && "code" in cause) {
if (cause.code === "EACCES" || cause.code === "EPERM")