mirror of
https://github.com/morluto/rea
synced 2026-10-26 22:28:27 -04:00
fix(javascript): preserve analysis applicability after interruption (#4207)
Preserve applicable artifact processing phases and entered/unvisited status after interruption. Centralize JavaScript semantic applicability for full and incremental builders; retain native byte identity, actual JavaScript unknowns and structured-file provenance. Fixes #3948. Part of #4027. Validation:78 distinct focused cases across10files, full static/docs, and real Joplin timeout/default public CLI/MCP controls passed. Source pins, every attempt/outlier and compact resource/token projections are retained. No target/native provider execution or speedup claim. Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
partialApplicationCoverage,
|
||||
} from "../../domain/javascript/javascriptApplicationEvidenceSchemas.js";
|
||||
import type { JavaScriptModuleArtifactAnalysis } from "./JavaScriptArtifactAnalysisTypes.js";
|
||||
import { javascriptArtifactAnalysisScopes } from "./JavaScriptArtifactAnalysisTypes.js";
|
||||
import { jsonValueSchema } from "../../domain/jsonValue.js";
|
||||
import { freezeJsonSnapshot } from "../../domain/immutableJson.js";
|
||||
import type { JavaScriptSourceRange } from "../../domain/javascript/javascriptStaticAnalysisTypes.js";
|
||||
@@ -211,11 +212,17 @@ export const addJavaScriptArtifactFiles = (
|
||||
}),
|
||||
});
|
||||
}
|
||||
if (!file.text.included && file.text.reason === "outside-analysis-scope")
|
||||
const analysisScope = javascriptArtifactAnalysisScopes[file.kind];
|
||||
if (
|
||||
!file.text.included &&
|
||||
file.text.reason === "outside-analysis-scope" &&
|
||||
analysisScope !== null
|
||||
)
|
||||
addUnavailableStaticParseScope(context, {
|
||||
file,
|
||||
asset: target,
|
||||
operation: "select-javascript-sources",
|
||||
authority: analysisScope.authority,
|
||||
limitation:
|
||||
"Source is outside the caller-selected source_paths; it was inventoried but not analyzed.",
|
||||
});
|
||||
@@ -223,12 +230,13 @@ export const addJavaScriptArtifactFiles = (
|
||||
addUnavailableStaticParseScope(context, {
|
||||
file,
|
||||
asset: target,
|
||||
operation: "analyze-javascript-source",
|
||||
...analyzed.analysis_failure.scope,
|
||||
limitation: analyzed.analysis_failure.reason,
|
||||
failure: analyzed.analysis_failure.error,
|
||||
limits: javaScriptAnalysisCoverageLimits(
|
||||
analyzed.analysis_failure.limits,
|
||||
),
|
||||
details: { analysis_status: analyzed.analysis_failure.status },
|
||||
});
|
||||
else if (
|
||||
file.kind === "javascript" &&
|
||||
@@ -239,6 +247,7 @@ export const addJavaScriptArtifactFiles = (
|
||||
file,
|
||||
asset: target,
|
||||
operation: "parse-javascript",
|
||||
authority: javascriptArtifactAnalysisScopes.javascript.authority,
|
||||
limitation: file.text.included
|
||||
? "JavaScript syntax could not be parsed."
|
||||
: `JavaScript text was unavailable: ${file.text.reason}.`,
|
||||
@@ -248,6 +257,7 @@ export const addJavaScriptArtifactFiles = (
|
||||
file,
|
||||
asset: target,
|
||||
operation: "project-javascript-application",
|
||||
authority: javascriptArtifactAnalysisScopes.javascript.authority,
|
||||
limitation: analyzed.application_projection_failure.reason,
|
||||
failure: analyzed.application_projection_failure.error,
|
||||
limits: javaScriptAnalysisCoverageLimits(
|
||||
@@ -259,14 +269,14 @@ export const addJavaScriptArtifactFiles = (
|
||||
addUnavailableStaticParseScope(context, {
|
||||
file,
|
||||
asset: target,
|
||||
operation: "parse-package-json",
|
||||
...javascriptArtifactAnalysisScopes["package-json"],
|
||||
limitation: packageValue.limitation,
|
||||
});
|
||||
if (jsonValue !== undefined && jsonValue.status !== "included")
|
||||
addUnavailableStaticParseScope(context, {
|
||||
file,
|
||||
asset: target,
|
||||
operation: "parse-json-module",
|
||||
...javascriptArtifactAnalysisScopes.json,
|
||||
limitation: jsonValue.limitation,
|
||||
});
|
||||
const sourceMap = sourceMapsByPath.get(file.path);
|
||||
@@ -274,7 +284,7 @@ export const addJavaScriptArtifactFiles = (
|
||||
addUnavailableStaticParseScope(context, {
|
||||
file,
|
||||
asset: target,
|
||||
operation: "parse-local-source-map",
|
||||
...javascriptArtifactAnalysisScopes["source-map"],
|
||||
limitation: sourceMap.limitation,
|
||||
});
|
||||
const inlineScripts = inlineScriptsByPath.get(file.path);
|
||||
@@ -283,6 +293,7 @@ export const addJavaScriptArtifactFiles = (
|
||||
file,
|
||||
asset: target,
|
||||
operation: "parse-html-inline-scripts",
|
||||
authority: javascriptArtifactAnalysisScopes.javascript.authority,
|
||||
limitation: htmlInlineScriptLimitation(inlineScripts),
|
||||
limits:
|
||||
inlineScripts.script_count > inlineScripts.scripts.length
|
||||
|
||||
Reference in New Issue
Block a user