Files
reverse-engineering-anything/src/native/NativeCallTarget.ts
T
gensokyo-dev e18594b247 refactor(composition): unify capability bindings and cleanup ownership (#8441)
Bind typed service creation, observed availability and retryable cleanup in one composition owner. Reuse selected CLI/MCP factories and canonical contract groups without copying provider operation inventories.

Closes #8429. Refs #740.

Validated paired real application workflows, actual local Codex CLI Terra/high use, complete Evidence and Unknown checkpoint parity, compiler-backed import boundaries, SDK schemas and final real mixed routing. Automated review findings were fixed at their producing owners. Existing exact-base CodeQL alerts are documented on the PR under the owner-authorized unrelated-check exception; no global alerts or security rules were changed.

Assisted-by: Suika (gensokyo-skills:suika-scatter-gather-planning)
2026-11-01 13:30:21 +08:00

152 lines
5.0 KiB
TypeScript

import { NATIVE_MACOS_PROVIDER_IDENTITY as IDENTITY } from "./NativeMacosProviderIdentity.js";
import type { BinaryTarget } from "../domain/binaryTargetTypes.js";
import type { AnalysisError } from "../domain/analysisErrorBase.js";
import { AnalysisCancelledError } from "../domain/analysisErrorCore.js";
import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
import { ProviderAdapterError } from "../domain/providerAdapterError.js";
import { ProviderCleanupError } from "../domain/providerCleanupError.js";
import { jsonValueSchema } from "../domain/jsonValue.js";
import { err, ok, type Result } from "../domain/result.js";
import {
hashStableFile,
stableFileHashCause,
} from "../filesystem/StableFileHash.js";
import {
RegularFileOperationCancelled,
RegularFileChangedError,
} from "../filesystem/RegularFile.js";
import {
RegularFileCancelled,
RegularFileCleanupFailure,
regularFileCancellation,
} from "../filesystem/OwnedRegularFile.js";
import { AnalysisCleanupLease } from "../artifacts/AnalysisCleanupLease.js";
import {
ArtifactResourceRetryFailure,
type ArtifactResourceScope,
} from "../artifacts/ArtifactResourceScope.js";
import {
ArtifactFileCleanupFailure,
bindArtifactFileCleanup,
} from "../artifacts/ArtifactFileOperation.js";
const OPERATION = "observe_native_calls";
/** Translate this file owner's outcome without inferring cancellation from signal state. */
export const nativeCallTargetFailure = (
cause: unknown,
path: string,
): AnalysisError => {
if (
cause instanceof ArtifactResourceRetryFailure &&
cause.cleanup !== undefined
) {
const failure = new ProviderCleanupError(
IDENTITY.id,
cause.cleanup.resources,
{ reason: cause.cleanup.reason, phase: "target-digest-retry" },
{ operation: OPERATION, cause },
);
bindArtifactFileCleanup(cause, failure);
return failure;
}
if (
cause instanceof RegularFileOperationCancelled ||
cause instanceof RegularFileCancelled
)
return new AnalysisCancelledError(OPERATION, {
cause: cause.reason,
...(cause instanceof RegularFileCancelled
? {
diagnostics: {
completed_hash: jsonValueSchema.parse(cause.outcome.value),
},
}
: {}),
});
const physical = stableFileHashCause(cause);
if (physical instanceof RegularFileChangedError)
return new EvidenceIntegrityError(
"Native call observation target changed during digest verification",
{ cause: physical },
);
return new ProviderAdapterError(IDENTITY.id, OPERATION, {
cause: physical,
diagnostics: {
path,
phase: "target-digest",
reason: "Unable to verify the selected target digest",
detail: physical instanceof Error ? physical.message : String(physical),
},
});
};
/** Verify one stable regular descriptor, retaining its exact owner if close fails. */
export const verifyNativeCallTarget = async (
target: BinaryTarget,
resources: ArtifactResourceScope,
signal?: AbortSignal,
): Promise<Result<void, AnalysisError>> => {
let cleanupLease: AnalysisCleanupLease | undefined;
try {
const digest = await hashStableFile(target.path, {
...(signal === undefined ? {} : { signal }),
retainFailedClose: (owner) => {
cleanupLease = new AnalysisCleanupLease(
() => owner.close(),
[target.path],
);
resources.retain({
kind: "lease",
resource: target.path,
lease: cleanupLease,
});
},
});
return digest.sha256 === target.sha256
? ok(undefined)
: err(
new EvidenceIntegrityError(
"Native call observation target digest changed after session binding",
),
);
} catch (cause: unknown) {
if (
cause instanceof RegularFileCleanupFailure &&
cleanupLease !== undefined
) {
const cancellation = regularFileCancellation(cause);
const completed =
cause.outcome.kind === "completed"
? { completed_hash: jsonValueSchema.parse(cause.outcome.value) }
: undefined;
const primary =
cause.outcome.kind === "failed"
? nativeCallTargetFailure(cause.outcome.cause, target.path)
: cancellation === undefined
? undefined
: new AnalysisCancelledError(OPERATION, {
cause: cancellation.reason,
diagnostics: completed,
});
const framed = new ArtifactFileCleanupFailure(cause, cleanupLease);
const failure = new ProviderCleanupError(
IDENTITY.id,
[target.path],
{
phase: "target-digest-close",
reason:
cause.cleanupCause instanceof Error
? cause.cleanupCause.message
: String(cause.cleanupCause),
...completed,
},
{ operation: OPERATION, cause: framed, cleanupPrimary: primary },
);
bindArtifactFileCleanup(framed, failure);
return err(failure);
}
return err(nativeCallTargetFailure(cause, target.path));
}
};