From ea4db4c9f7cbc10dc701c4d5770109c08952a5b8 Mon Sep 17 00:00:00 2001 From: Ysopwnable <161784452+N0zoM1z0@users.noreply.github.com> Date: Wed, 7 Oct 2026 22:40:48 +0800 Subject: [PATCH] refactor(native): group analyst semantics workflows and contracts (#973) --- .github/workflows/ci.yml | 2 ++ docs/capability-migration.md | 21 +++++++++++++++++++ docs/testing.md | 8 +++++++ scripts/lib/catalog-core.mjs | 2 +- scripts/lib/native-value-e2e.mjs | 2 +- scripts/verify-real-ghidra-nativeaot.mjs | 4 ++-- src/application/AnalysisProvider.ts | 2 +- src/application/DirectAnalysis.ts | 2 +- src/application/EnhancedTools.ts | 8 +++---- .../EnhancedNativeInvestigation.test.ts | 14 ++++++------- .../{ => native}/NativeApiInspection.test.ts | 6 +++--- .../{ => native}/NativeApiInspection.ts | 4 ++-- .../{ => native}/NativeCallRoutes.test.ts | 10 ++++----- .../{ => native}/NativeCallRoutes.ts | 8 +++---- .../NativeDispatchMetadataInspection.ts | 12 +++++------ .../{ => native}/NativeUiActionTrace.ts | 20 +++++++++--------- .../{ => native}/NativeValueTrace.test.ts | 12 +++++------ .../{ => native}/NativeValueTrace.ts | 16 +++++++------- src/cli/utilityCommands.ts | 2 +- src/contracts/contractSnapshot.test.ts | 2 +- src/contracts/enhancedInputs.ts | 2 +- .../managed/managedWorkflowExamples.ts | 2 +- .../{ => native}/nativeToolContracts.ts | 12 +++++------ src/contracts/officialToolContracts.ts | 6 +++--- src/contracts/toolContracts.test.ts | 2 +- src/contracts/toolContracts.ts | 2 +- src/contracts/toolOutputSchemaGroups.ts | 20 +++++++++--------- src/domain/apple/interfaceBuilderGraph.ts | 2 +- src/domain/hopperValues.ts | 4 ++-- .../managed/managedNativeVerificationMatch.ts | 2 +- src/domain/{ => native}/nativeApiBoundary.ts | 0 src/domain/{ => native}/nativeDataType.ts | 0 .../{ => native}/nativeFunctionAnnotations.ts | 2 +- src/domain/{ => native}/nativeInspection.ts | 2 +- src/domain/{ => native}/nativeInstruction.ts | 0 .../nativeInvestigationGraph.test.ts | 2 +- .../{ => native}/nativeInvestigationGraph.ts | 2 +- src/domain/{ => native}/nativeLoadImage.ts | 2 +- .../nativeMetadataRecovery.test.ts | 2 +- .../{ => native}/nativeMetadataRecovery.ts | 0 .../{ => native}/nativeUiObservation.ts | 2 +- src/domain/{ => native}/nativeValueFlow.ts | 0 src/domain/{ => native}/nativeValueTrace.ts | 0 .../{ => native}/objcSwiftMetadata.test.ts | 0 src/domain/{ => native}/objcSwiftMetadata.ts | 0 src/ghidra/GhidraAnnotations.test.ts | 2 +- src/ghidra/GhidraDosComLoadImage.test.ts | 2 +- src/ghidra/GhidraFunctionValues.ts | 10 ++++----- src/ghidra/GhidraInventoryValues.ts | 2 +- src/ghidra/GhidraLoadImage.fixture.ts | 2 +- src/ghidra/GhidraLoadImageAttest.ts | 2 +- src/ghidra/GhidraLoadImageValues.test.ts | 4 ++-- src/ghidra/GhidraLoadImageValues.ts | 2 +- src/native/AppleDispatchCoverage.ts | 2 +- src/native/AppleDispatchMetadata.ts | 2 +- src/native/AppleObjcCategories.ts | 2 +- src/native/AppleObjcDispatchFacets.ts | 2 +- src/native/AppleObjcProperties.ts | 2 +- src/native/AppleObjcProtocols.ts | 2 +- src/native/AppleSwiftDispatchFacets.ts | 2 +- src/native/AppleSwiftVtables.ts | 2 +- src/native/NativeMacOSProvider.ts | 4 ++-- src/native/NativeMacOSProviderMetadata.ts | 2 +- src/native/NativeMachoInspection.ts | 2 +- src/native/NativeUiObservation.ts | 2 +- src/native/parsers/codesign.ts | 2 +- src/server/registerNativeTools.ts | 2 +- .../native/nativeSelectedArchitecture.test.ts | 2 +- .../managed/managedNativeVerification.test.ts | 2 +- 69 files changed, 158 insertions(+), 127 deletions(-) rename src/application/{ => native}/EnhancedNativeInvestigation.test.ts (97%) rename src/application/{ => native}/NativeApiInspection.test.ts (96%) rename src/application/{ => native}/NativeApiInspection.ts (96%) rename src/application/{ => native}/NativeCallRoutes.test.ts (90%) rename src/application/{ => native}/NativeCallRoutes.ts (93%) rename src/application/{ => native}/NativeDispatchMetadataInspection.ts (83%) rename src/application/{ => native}/NativeUiActionTrace.ts (95%) rename src/application/{ => native}/NativeValueTrace.test.ts (93%) rename src/application/{ => native}/NativeValueTrace.ts (96%) rename src/contracts/{ => native}/nativeToolContracts.ts (90%) rename src/domain/{ => native}/nativeApiBoundary.ts (100%) rename src/domain/{ => native}/nativeDataType.ts (100%) rename src/domain/{ => native}/nativeFunctionAnnotations.ts (96%) rename src/domain/{ => native}/nativeInspection.ts (99%) rename src/domain/{ => native}/nativeInstruction.ts (100%) rename src/domain/{ => native}/nativeInvestigationGraph.test.ts (99%) rename src/domain/{ => native}/nativeInvestigationGraph.ts (99%) rename src/domain/{ => native}/nativeLoadImage.ts (98%) rename src/domain/{ => native}/nativeMetadataRecovery.test.ts (97%) rename src/domain/{ => native}/nativeMetadataRecovery.ts (100%) rename src/domain/{ => native}/nativeUiObservation.ts (98%) rename src/domain/{ => native}/nativeValueFlow.ts (100%) rename src/domain/{ => native}/nativeValueTrace.ts (100%) rename src/domain/{ => native}/objcSwiftMetadata.test.ts (100%) rename src/domain/{ => native}/objcSwiftMetadata.ts (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1bb5bef5..740e7f2a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -312,6 +312,8 @@ jobs: run: npm run verify:apple-dispatch && npm run verify:interface-builder - name: Native plist CLI selection regressions run: npm run test:focused -- tests/boundary/cli/nativePlistCli.test.ts tests/boundary/cli/nativePlistPrototypeKeyCli.test.ts tests/boundary/cli/nativePlistSelectionFailureCli.test.ts + - name: Native Swift demangling CLI and MCP regressions + run: npm run test:focused -- tests/boundary/cli/nativeDemangleCli.test.ts tests/boundary/mcp/nativeDemangleMcp.test.ts reconstruction-readiness: name: Reconstruction readiness diff --git a/docs/capability-migration.md b/docs/capability-migration.md index 9363211f6..2ce6471a4 100644 --- a/docs/capability-migration.md +++ b/docs/capability-migration.md @@ -404,3 +404,24 @@ analysis state. MCP startup constructs its connection session through the same binary factory. Source and compiled fixtures use these entrypoints. The former application runtime path is removed, and the source guard no longer admits its outward provider/composition imports. + +## Native analyst capability ownership + +`src/domain/native/` owns portable native inspection, instruction/data types, +load-image facts, API boundaries, annotations, metadata recovery, UI observation +semantics and value/investigation graphs. `src/application/native/` owns shared +API projection, call routes, dispatch inspection and UI/value tracing. Its tests +keep the existing service lane. `src/contracts/native/` owns the named native +adapter contracts; shared official/enhanced aggregates remain at their owners. + +Producer interpretation, external commands and host UI lifecycle remain in +`src/native/`, Hopper, Ghidra and IDA. The shared function dossier still lives in +`domain/hopperValues.ts`: its historical name does not make its meaning exclusive +to Hopper. This move retains existing typed ports, exact result schemas, +observed/derived/unknown distinctions, profiles and Evidence links. + +Source and compiled verifier imports follow the new owners. Host UI and real +native-value verifier locations are retained until their own proof lanes migrate; +interactive macOS UI success and real dependency tracing require their respective +host/engine workflows. Portable source fixtures and injected call-route tests +establish their narrower boundaries, without expanding provider/platform support. diff --git a/docs/testing.md b/docs/testing.md index 0c66b6e97..5c310539f 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -95,6 +95,14 @@ in `src/artifacts/apple/`. The npm entrypoints are unchanged. Format-specific Swift/XIB/asset sources and goldens retain their locations; real Apple workflows resolve them from the verifier file URL and run in the macOS CI lane. +Portable native semantics and their tests live in `src/domain/native/`; shared +analyst workflows and service-lane tests live in `src/application/native/`. +Named native contracts live in `src/contracts/native/`. Provider protocol and +host UI tests retain their adapter/boundary lanes, and real verifier command +names remain unchanged. +The existing Apple CI job also runs the host Swift-demangling CLI/MCP regression +suites, including option-like symbols, carriage returns and multiline rejection. + MCP SDK transport tests with recording providers remain integration tests. They are useful for schema drift and failure projection but do not prove that Hopper, Ghidra or another substituted engine works. `verify:package` proves diff --git a/scripts/lib/catalog-core.mjs b/scripts/lib/catalog-core.mjs index 591b33cea..311fb5f0a 100644 --- a/scripts/lib/catalog-core.mjs +++ b/scripts/lib/catalog-core.mjs @@ -40,7 +40,7 @@ const SOURCE_PATHS = { officialContracts: "dist/contracts/officialToolContracts.js", enhancedContracts: "dist/contracts/enhancedToolContracts.js", sessionContracts: "dist/contracts/sessionToolContracts.js", - nativeContracts: "dist/contracts/nativeToolContracts.js", + nativeContracts: "dist/contracts/native/nativeToolContracts.js", artifactContracts: "dist/contracts/artifactToolContracts.js", managedContracts: "dist/contracts/managed/managedToolContracts.js", firmwareContracts: "dist/contracts/firmware/firmwareToolContracts.js", diff --git a/scripts/lib/native-value-e2e.mjs b/scripts/lib/native-value-e2e.mjs index 9617b5554..ac43cd8f9 100644 --- a/scripts/lib/native-value-e2e.mjs +++ b/scripts/lib/native-value-e2e.mjs @@ -7,7 +7,7 @@ import { StdioClientTransport } from "@modelcontextprotocol/client/stdio"; import { parseEvidence } from "../../dist/domain/evidence.js"; import { analysisProfileSchema } from "../../dist/domain/analysisProfile.js"; -import { nativeValueTraceSchema } from "../../dist/domain/nativeValueTrace.js"; +import { nativeValueTraceSchema } from "../../dist/domain/native/nativeValueTrace.js"; const defaultEntrypoint = fileURLToPath(new URL("../rea.mjs", import.meta.url)); const environment = () => ({ diff --git a/scripts/verify-real-ghidra-nativeaot.mjs b/scripts/verify-real-ghidra-nativeaot.mjs index 27592a3b0..82ea0cd1f 100644 --- a/scripts/verify-real-ghidra-nativeaot.mjs +++ b/scripts/verify-real-ghidra-nativeaot.mjs @@ -17,8 +17,8 @@ import { promisify } from "node:util"; import { Client } from "@modelcontextprotocol/client"; import { StdioClientTransport } from "@modelcontextprotocol/client/stdio"; import { parseEvidence } from "../dist/domain/evidence.js"; -import { nativeDataTypeSchema } from "../dist/domain/nativeDataType.js"; -import { nativeLoadImageSchema } from "../dist/domain/nativeLoadImage.js"; +import { nativeDataTypeSchema } from "../dist/domain/native/nativeDataType.js"; +import { nativeLoadImageSchema } from "../dist/domain/native/nativeLoadImage.js"; const mode = process.argv[2] ?? "symbols"; if ( diff --git a/src/application/AnalysisProvider.ts b/src/application/AnalysisProvider.ts index 0983a3a30..e995d0a64 100644 --- a/src/application/AnalysisProvider.ts +++ b/src/application/AnalysisProvider.ts @@ -1,7 +1,7 @@ import type { BinaryTarget } from "../domain/binaryTarget.js"; import type { OfficialToolName } from "../contracts/officialToolContracts.js"; import type { EnhancedToolName } from "../contracts/enhancedInputs.js"; -import type { NativeToolName } from "../contracts/nativeToolContracts.js"; +import type { NativeToolName } from "../contracts/native/nativeToolContracts.js"; import type { ArtifactAnalysisOperation } from "../contracts/artifactToolContracts.js"; import type { ManagedToolName } from "../contracts/managed/managedToolContracts.js"; import type { AnalysisError } from "../domain/analysisErrorBase.js"; diff --git a/src/application/DirectAnalysis.ts b/src/application/DirectAnalysis.ts index c273128f2..a6c27834b 100644 --- a/src/application/DirectAnalysis.ts +++ b/src/application/DirectAnalysis.ts @@ -8,7 +8,7 @@ import type { BinarySession } from "./binary/BinarySession.js"; import { silentLogger, type Logger } from "../logger.js"; import { createEvidence } from "../domain/evidence.js"; import type { Evidence } from "../domain/evidence.js"; -import type { NativeToolName } from "../contracts/nativeToolContracts.js"; +import type { NativeToolName } from "../contracts/native/nativeToolContracts.js"; import type { ArtifactAnalysisOperation } from "../contracts/artifactToolContracts.js"; import { isManagedToolName, diff --git a/src/application/EnhancedTools.ts b/src/application/EnhancedTools.ts index fa758d19f..2a2f701a3 100644 --- a/src/application/EnhancedTools.ts +++ b/src/application/EnhancedTools.ts @@ -27,9 +27,9 @@ import { discoverObjcClasses, discoverObjcProtocols, } from "../domain/symbolAnalysis.js"; -import { inspectNativeDispatch } from "./NativeDispatchMetadataInspection.js"; -import { traceNativeValues } from "./NativeValueTrace.js"; -import { traceNativeUiAction } from "./NativeUiActionTrace.js"; +import { inspectNativeDispatch } from "./native/NativeDispatchMetadataInspection.js"; +import { traceNativeValues } from "./native/NativeValueTrace.js"; +import { traceNativeUiAction } from "./native/NativeUiActionTrace.js"; import { jsonValueSchema, type JsonValue } from "../domain/jsonValue.js"; import { @@ -39,7 +39,7 @@ import { } from "./EnhancedToolTypes.js"; import { traceCallPath } from "./CallPathTracing.js"; import { traceLiteralFeature } from "./EnhancedLiteralTracing.js"; -import { projectNativeApiInspection } from "./NativeApiInspection.js"; +import { projectNativeApiInspection } from "./native/NativeApiInspection.js"; export type { ValidatedEnhancedCall } from "./EnhancedToolTypes.js"; /** diff --git a/src/application/EnhancedNativeInvestigation.test.ts b/src/application/native/EnhancedNativeInvestigation.test.ts similarity index 97% rename from src/application/EnhancedNativeInvestigation.test.ts rename to src/application/native/EnhancedNativeInvestigation.test.ts index 5e75de903..e8f5e7313 100644 --- a/src/application/EnhancedNativeInvestigation.test.ts +++ b/src/application/native/EnhancedNativeInvestigation.test.ts @@ -7,19 +7,19 @@ import { createAnalysisExecution, type AnalysisExecution, type AnalysisOperation, -} from "./AnalysisProvider.js"; -import type { AnalysisError } from "../domain/analysisErrorBase.js"; +} from "../AnalysisProvider.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, -} from "../domain/analysisErrorCore.js"; -import { EnhancedTools } from "./EnhancedTools.js"; +} from "../../domain/analysisErrorCore.js"; +import { EnhancedTools } from "../EnhancedTools.js"; import { nativeInvestigationGraphSchema, nativeInvestigationTraceSchema, -} from "../domain/nativeInvestigationGraph.js"; -import { err, ok } from "../domain/result.js"; -import type { Result } from "../domain/result.js"; +} from "../../domain/native/nativeInvestigationGraph.js"; +import { err, ok } from "../../domain/result.js"; +import type { Result } from "../../domain/result.js"; const target = "a".repeat(64); const provider = { id: "fixture", name: "Fixture", version: "1" }; diff --git a/src/application/NativeApiInspection.test.ts b/src/application/native/NativeApiInspection.test.ts similarity index 96% rename from src/application/NativeApiInspection.test.ts rename to src/application/native/NativeApiInspection.test.ts index 6c8e60433..db0c61a19 100644 --- a/src/application/NativeApiInspection.test.ts +++ b/src/application/native/NativeApiInspection.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from "vitest"; -import { functionDossierSchema } from "../domain/hopperValues.js"; -import { ghidraFunctionDossier } from "../domain/ghidraValues.fixture.js"; -import { nativeApiBoundarySchema } from "../domain/nativeApiBoundary.js"; +import { functionDossierSchema } from "../../domain/hopperValues.js"; +import { ghidraFunctionDossier } from "../../domain/ghidraValues.fixture.js"; +import { nativeApiBoundarySchema } from "../../domain/native/nativeApiBoundary.js"; import { projectNativeApiInspection } from "./NativeApiInspection.js"; describe("native API switch uncertainty", () => { diff --git a/src/application/NativeApiInspection.ts b/src/application/native/NativeApiInspection.ts similarity index 96% rename from src/application/NativeApiInspection.ts rename to src/application/native/NativeApiInspection.ts index e49fcb0c4..9e1aedbc3 100644 --- a/src/application/NativeApiInspection.ts +++ b/src/application/native/NativeApiInspection.ts @@ -1,9 +1,9 @@ -import type { FunctionDossier } from "../domain/hopperValues.js"; +import type { FunctionDossier } from "../../domain/hopperValues.js"; import { nativeApiInspectionResultSchema, type NativeApiBoundary, type NativeApiInspectionResult, -} from "../domain/nativeApiBoundary.js"; +} from "../../domain/native/nativeApiBoundary.js"; const unavailableBoundary = (): NativeApiBoundary => ({ available: false, diff --git a/src/application/NativeCallRoutes.test.ts b/src/application/native/NativeCallRoutes.test.ts similarity index 90% rename from src/application/NativeCallRoutes.test.ts rename to src/application/native/NativeCallRoutes.test.ts index d23921873..baac1d16a 100644 --- a/src/application/NativeCallRoutes.test.ts +++ b/src/application/native/NativeCallRoutes.test.ts @@ -1,10 +1,10 @@ import { describe, expect, it } from "vitest"; import { readNativeCallRoutes } from "./NativeCallRoutes.js"; -import { createAnalysisExecution } from "./AnalysisProvider.js"; -import { ghidraReferenceEdge } from "../domain/ghidraValues.fixture.js"; -import { jsonValueSchema } from "../domain/jsonValue.js"; -import { err, ok } from "../domain/result.js"; -import { AnalysisCancelledError } from "../domain/analysisErrorCore.js"; +import { createAnalysisExecution } from "../AnalysisProvider.js"; +import { ghidraReferenceEdge } from "../../domain/ghidraValues.fixture.js"; +import { jsonValueSchema } from "../../domain/jsonValue.js"; +import { err, ok } from "../../domain/result.js"; +import { AnalysisCancelledError } from "../../domain/analysisErrorCore.js"; const provider = { id: "fixture", name: "Fixture", version: "1" }; describe("typed native call routes", () => { diff --git a/src/application/NativeCallRoutes.ts b/src/application/native/NativeCallRoutes.ts similarity index 93% rename from src/application/NativeCallRoutes.ts rename to src/application/native/NativeCallRoutes.ts index 8ac1bcd4f..adb286195 100644 --- a/src/application/NativeCallRoutes.ts +++ b/src/application/native/NativeCallRoutes.ts @@ -1,11 +1,11 @@ import { z } from "zod"; -import type { AnalysisOperationPort } from "./AnalysisProvider.js"; +import type { AnalysisOperationPort } from "../AnalysisProvider.js"; import { parseRelatedAddresses, referenceKindSchema, -} from "../domain/hopperValues.js"; -import { err, ok } from "../domain/result.js"; -import { AnalysisOutputError } from "../domain/analysisErrorCore.js"; +} from "../../domain/hopperValues.js"; +import { err, ok } from "../../domain/result.js"; +import { AnalysisOutputError } from "../../domain/analysisErrorCore.js"; const referencesSchema = z.object({ reference_kinds_available: z.boolean().optional(), diff --git a/src/application/NativeDispatchMetadataInspection.ts b/src/application/native/NativeDispatchMetadataInspection.ts similarity index 83% rename from src/application/NativeDispatchMetadataInspection.ts rename to src/application/native/NativeDispatchMetadataInspection.ts index 8f2ea0dbd..85c1a69c3 100644 --- a/src/application/NativeDispatchMetadataInspection.ts +++ b/src/application/native/NativeDispatchMetadataInspection.ts @@ -2,12 +2,12 @@ import { z } from "zod"; import { nativeDispatchMetadataResultSchema, inspectNativeDispatchMetadata, -} from "../domain/objcSwiftMetadata.js"; -import { AnalysisOutputError } from "../domain/analysisErrorCore.js"; -import { jsonValueSchema } from "../domain/jsonValue.js"; -import { err, ok } from "../domain/result.js"; -import type { AnalysisOperationPort } from "./AnalysisProvider.js"; -import type { EnhancedResult } from "./EnhancedToolTypes.js"; +} from "../../domain/native/objcSwiftMetadata.js"; +import { AnalysisOutputError } from "../../domain/analysisErrorCore.js"; +import { jsonValueSchema } from "../../domain/jsonValue.js"; +import { err, ok } from "../../domain/result.js"; +import type { AnalysisOperationPort } from "../AnalysisProvider.js"; +import type { EnhancedResult } from "../EnhancedToolTypes.js"; /** Prefer validated binary metadata, otherwise preserve the bound provider's symbol-only coverage. */ export const inspectNativeDispatch = async ( analysis: AnalysisOperationPort, diff --git a/src/application/NativeUiActionTrace.ts b/src/application/native/NativeUiActionTrace.ts similarity index 95% rename from src/application/NativeUiActionTrace.ts rename to src/application/native/NativeUiActionTrace.ts index 25e9b9dc3..125a11567 100644 --- a/src/application/NativeUiActionTrace.ts +++ b/src/application/native/NativeUiActionTrace.ts @@ -1,22 +1,22 @@ import { z } from "zod"; -import type { AnalysisOperationPort } from "./AnalysisProvider.js"; -import type { EnhancedResult } from "./EnhancedToolTypes.js"; -import type { enhancedInputSchemas } from "../contracts/enhancedInputs.js"; -import { interfaceBuilderAnalysisSchema } from "../domain/apple/interfaceBuilderGraph.js"; +import type { AnalysisOperationPort } from "../AnalysisProvider.js"; +import type { EnhancedResult } from "../EnhancedToolTypes.js"; +import type { enhancedInputSchemas } from "../../contracts/enhancedInputs.js"; +import { interfaceBuilderAnalysisSchema } from "../../domain/apple/interfaceBuilderGraph.js"; import { nativeInvestigationGraphSchema, nativeInvestigationTraceSchema, traceNativeInvestigationGraph, joinInterfaceBuilderDispatch, -} from "../domain/nativeInvestigationGraph.js"; -import { nativeDispatchMetadataResultSchema } from "../domain/objcSwiftMetadata.js"; +} from "../../domain/native/nativeInvestigationGraph.js"; +import { nativeDispatchMetadataResultSchema } from "../../domain/native/objcSwiftMetadata.js"; import { inspectNativeDispatch } from "./NativeDispatchMetadataInspection.js"; -import { jsonValueSchema } from "../domain/jsonValue.js"; +import { jsonValueSchema } from "../../domain/jsonValue.js"; import { readNativeCallRoutes } from "./NativeCallRoutes.js"; -import { err, ok } from "../domain/result.js"; -import { AnalysisOutputError } from "../domain/analysisErrorCore.js"; -import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; +import { err, ok } from "../../domain/result.js"; +import { AnalysisOutputError } from "../../domain/analysisErrorCore.js"; +import { projectAnalysisError } from "../../domain/analysisErrorProjection.js"; type Input = z.output; /** Build a UI-to-code trace from the active app and selected native provider. */ diff --git a/src/application/NativeValueTrace.test.ts b/src/application/native/NativeValueTrace.test.ts similarity index 93% rename from src/application/NativeValueTrace.test.ts rename to src/application/native/NativeValueTrace.test.ts index 2d4d0e08a..7f9be52d9 100644 --- a/src/application/NativeValueTrace.test.ts +++ b/src/application/native/NativeValueTrace.test.ts @@ -3,12 +3,12 @@ import { traceNativeValues } from "./NativeValueTrace.js"; import { createAnalysisExecution, type AnalysisOperationPort, -} from "./AnalysisProvider.js"; -import { ghidraFunctionDossier } from "../domain/ghidraValues.fixture.js"; -import { functionDossierSchema } from "../domain/hopperValues.js"; -import { jsonValueSchema } from "../domain/jsonValue.js"; -import { AnalysisCancelledError } from "../domain/analysisErrorCore.js"; -import { ok, err } from "../domain/result.js"; +} from "../AnalysisProvider.js"; +import { ghidraFunctionDossier } from "../../domain/ghidraValues.fixture.js"; +import { functionDossierSchema } from "../../domain/hopperValues.js"; +import { jsonValueSchema } from "../../domain/jsonValue.js"; +import { AnalysisCancelledError } from "../../domain/analysisErrorCore.js"; +import { ok, err } from "../../domain/result.js"; const subject = { path: "/fixture", diff --git a/src/application/NativeValueTrace.ts b/src/application/native/NativeValueTrace.ts similarity index 96% rename from src/application/NativeValueTrace.ts rename to src/application/native/NativeValueTrace.ts index 9da1db7ce..b14925570 100644 --- a/src/application/NativeValueTrace.ts +++ b/src/application/native/NativeValueTrace.ts @@ -1,17 +1,17 @@ -import { functionDossierSchema } from "../domain/hopperValues.js"; -import { nativeCallTargetsSchema } from "../domain/nativeInstruction.js"; +import { functionDossierSchema } from "../../domain/hopperValues.js"; +import { nativeCallTargetsSchema } from "../../domain/native/nativeInstruction.js"; import { nativeValueTraceInputSchema, nativeValueTraceSchema, -} from "../domain/nativeValueTrace.js"; -import { createEvidence } from "../domain/evidence.js"; +} from "../../domain/native/nativeValueTrace.js"; +import { createEvidence } from "../../domain/evidence.js"; import { AnalysisCancelledError, AnalysisOutputError, -} from "../domain/analysisErrorCore.js"; -import { err, ok } from "../domain/result.js"; -import type { AnalysisOperationPort } from "./AnalysisProvider.js"; -import type { EnhancedResult } from "./EnhancedToolTypes.js"; +} from "../../domain/analysisErrorCore.js"; +import { err, ok } from "../../domain/result.js"; +import type { AnalysisOperationPort } from "../AnalysisProvider.js"; +import type { EnhancedResult } from "../EnhancedToolTypes.js"; /** Compose bounded high-p-code def-use graphs across exactly referenced call destinations. */ export const traceNativeValues = async ( diff --git a/src/cli/utilityCommands.ts b/src/cli/utilityCommands.ts index 6b03ed6a3..79a8a7433 100644 --- a/src/cli/utilityCommands.ts +++ b/src/cli/utilityCommands.ts @@ -13,7 +13,7 @@ import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; import { PRODUCT_IDENTITY } from "../identity.js"; import { logCliCommand } from "../cliLogging.js"; import { CLI_COMMANDS } from "../cliCommandNames.js"; -import { swiftSymbolsSchema } from "../contracts/nativeToolContracts.js"; +import { swiftSymbolsSchema } from "../contracts/native/nativeToolContracts.js"; import type { Logger } from "../logger.js"; import { isReferenceSourceImportCliFailure } from "./referenceSourceImportStatus.js"; import type { CliInstance } from "./types.js"; diff --git a/src/contracts/contractSnapshot.test.ts b/src/contracts/contractSnapshot.test.ts index 44e56a4da..1de10c515 100644 --- a/src/contracts/contractSnapshot.test.ts +++ b/src/contracts/contractSnapshot.test.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { ENHANCED_TOOL_CONTRACTS } from "./enhancedToolContracts.js"; import { OFFICIAL_TOOL_CONTRACTS } from "./officialToolContracts.js"; import { SESSION_TOOL_CONTRACTS } from "./sessionToolContracts.js"; -import { NATIVE_TOOL_CONTRACTS } from "./nativeToolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "./native/nativeToolContracts.js"; import { ARTIFACT_TOOL_CONTRACTS } from "./artifactToolContracts.js"; import { FIRMWARE_TOOL_CONTRACTS } from "./firmware/firmwareToolContracts.js"; import { ANDROID_TOOL_CONTRACTS } from "./android/androidToolContracts.js"; diff --git a/src/contracts/enhancedInputs.ts b/src/contracts/enhancedInputs.ts index 10b400f8c..1cc8cf601 100644 --- a/src/contracts/enhancedInputs.ts +++ b/src/contracts/enhancedInputs.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { nativeValueTraceInputSchema } from "../domain/nativeValueTrace.js"; +import { nativeValueTraceInputSchema } from "../domain/native/nativeValueTrace.js"; const traceLiteralInputSchema = z.strictObject({ query: z.string().min(1), case_sensitive: z.boolean().default(false), diff --git a/src/contracts/managed/managedWorkflowExamples.ts b/src/contracts/managed/managedWorkflowExamples.ts index 6340b2c2c..e975c5d20 100644 --- a/src/contracts/managed/managedWorkflowExamples.ts +++ b/src/contracts/managed/managedWorkflowExamples.ts @@ -3,7 +3,7 @@ import type { ManagedMemberInspection, ManagedNativeBoundaryInspection, } from "../../domain/managed/managedArtifact.js"; -import type { InspectMacho } from "../../domain/nativeInspection.js"; +import type { InspectMacho } from "../../domain/native/nativeInspection.js"; const MANAGED_STATIC_EXAMPLE_PROVIDER = { id: "rea-dotnet-static", diff --git a/src/contracts/nativeToolContracts.ts b/src/contracts/native/nativeToolContracts.ts similarity index 90% rename from src/contracts/nativeToolContracts.ts rename to src/contracts/native/nativeToolContracts.ts index 9a5a0f245..1e3785d4c 100644 --- a/src/contracts/nativeToolContracts.ts +++ b/src/contracts/native/nativeToolContracts.ts @@ -2,13 +2,13 @@ import { z } from "zod"; import { nativeUiObservationInputSchema, nativeUiScenarioInputSchema, -} from "../domain/nativeUiObservation.js"; +} from "../../domain/native/nativeUiObservation.js"; -import type { ToolContract } from "./toolContracts.js"; -import { nativeOutputSchemas } from "./toolOutputSchemas.js"; -import { jsonValueSchema } from "../domain/jsonValue.js"; -import { toolContractMetadata } from "./toolEffects.js"; -import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js"; +import type { ToolContract } from "../toolContracts.js"; +import { nativeOutputSchemas } from "../toolOutputSchemas.js"; +import { jsonValueSchema } from "../../domain/jsonValue.js"; +import { toolContractMetadata } from "../toolEffects.js"; +import { requireOutputSchema } from "../toolOutputSchemaPrimitives.js"; const examples: Readonly>>> = { inspect_macho: {}, diff --git a/src/contracts/officialToolContracts.ts b/src/contracts/officialToolContracts.ts index d23e5e191..45efe5072 100644 --- a/src/contracts/officialToolContracts.ts +++ b/src/contracts/officialToolContracts.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { nativeFunctionAnnotationsInputSchema } from "../domain/nativeFunctionAnnotations.js"; +import { nativeFunctionAnnotationsInputSchema } from "../domain/native/nativeFunctionAnnotations.js"; import { officialOutputSchemas, @@ -14,8 +14,8 @@ import { } from "./toolContractHelpers.js"; import type { ToolContract } from "./toolContractTypes.js"; import { toolContractMetadata } from "./toolEffects.js"; -import { nativeDataTypeInputSchema } from "../domain/nativeDataType.js"; -import { nativeInstructionInputSchema } from "../domain/nativeInstruction.js"; +import { nativeDataTypeInputSchema } from "../domain/native/nativeDataType.js"; +import { nativeInstructionInputSchema } from "../domain/native/nativeInstruction.js"; import { functionInstructionInputSchema } from "./functionInstructionContract.js"; import { HOPPER_MEMORY_TOOL_DEFINITIONS } from "./hopperMemoryContracts.js"; import { analysisSearchInput } from "./analysisSearchContract.js"; diff --git a/src/contracts/toolContracts.test.ts b/src/contracts/toolContracts.test.ts index 657e6d084..6fec3a226 100644 --- a/src/contracts/toolContracts.test.ts +++ b/src/contracts/toolContracts.test.ts @@ -9,7 +9,7 @@ import { MANAGED_TOOL_CONTRACTS } from "./managed/managedToolContracts.js"; import { FIRMWARE_TOOL_CONTRACTS } from "./firmware/firmwareToolContracts.js"; import { ANDROID_TOOL_CONTRACTS } from "./android/androidToolContracts.js"; import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "./managed/managedWorkflowToolContracts.js"; -import { NATIVE_TOOL_CONTRACTS } from "./nativeToolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "./native/nativeToolContracts.js"; import { BROWSER_PROVIDER_TOOL_CONTRACTS } from "./browserProviderToolContracts.js"; import { ELECTRON_TOOL_CONTRACTS } from "./javascript/electronToolContracts.js"; import { JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS } from "./javascript/javascriptRuntimeObservationToolContracts.js"; diff --git a/src/contracts/toolContracts.ts b/src/contracts/toolContracts.ts index 5ab3ffec1..dd3896c43 100644 --- a/src/contracts/toolContracts.ts +++ b/src/contracts/toolContracts.ts @@ -1,4 +1,4 @@ -import { NATIVE_TOOL_CONTRACTS } from "./nativeToolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "./native/nativeToolContracts.js"; import { ARTIFACT_TOOL_CONTRACTS } from "./artifactToolContracts.js"; import { MANAGED_TOOL_CONTRACTS } from "./managed/managedToolContracts.js"; import { FIRMWARE_TOOL_CONTRACTS } from "./firmware/firmwareToolContracts.js"; diff --git a/src/contracts/toolOutputSchemaGroups.ts b/src/contracts/toolOutputSchemaGroups.ts index eb0fb000e..d939ff237 100644 --- a/src/contracts/toolOutputSchemaGroups.ts +++ b/src/contracts/toolOutputSchemaGroups.ts @@ -1,13 +1,13 @@ import { z } from "zod"; -import { nativeFunctionAnnotationsSchema } from "../domain/nativeFunctionAnnotations.js"; -import { nativeLoadImageSchema } from "../domain/nativeLoadImage.js"; -import { nativeUiResultSchema } from "../domain/nativeUiObservation.js"; -import { nativeValueTraceSchema } from "../domain/nativeValueTrace.js"; -import { nativeDataTypeSchema } from "../domain/nativeDataType.js"; +import { nativeFunctionAnnotationsSchema } from "../domain/native/nativeFunctionAnnotations.js"; +import { nativeLoadImageSchema } from "../domain/native/nativeLoadImage.js"; +import { nativeUiResultSchema } from "../domain/native/nativeUiObservation.js"; +import { nativeValueTraceSchema } from "../domain/native/nativeValueTrace.js"; +import { nativeDataTypeSchema } from "../domain/native/nativeDataType.js"; import { nativeInstructionSchema, nativeCallTargetsSchema, -} from "../domain/nativeInstruction.js"; +} from "../domain/native/nativeInstruction.js"; import { jsonValueSchema } from "../domain/jsonValue.js"; import { residualUnknownSchema } from "../domain/residualUnknown.js"; import { evidenceBundleSchema } from "../domain/evidenceBundle.js"; @@ -20,14 +20,14 @@ import { functionInstructionWindowSchema, referenceKindSchema, } from "../domain/hopperValues.js"; -import { nativeApiInspectionResultSchema } from "../domain/nativeApiBoundary.js"; +import { nativeApiInspectionResultSchema } from "../domain/native/nativeApiBoundary.js"; import { demangleSwiftSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, listArchitecturesSchema, -} from "../domain/nativeInspection.js"; +} from "../domain/native/nativeInspection.js"; import { artifactExtractionResultSchema } from "../domain/artifactGraph.js"; import { artifactInspectionResultSchema } from "../domain/artifactInspection.js"; import { interfaceBuilderAnalysisSchema } from "../domain/apple/interfaceBuilderGraph.js"; @@ -50,8 +50,8 @@ import { callPathResultSchema } from "../domain/callPath.js"; import { staticRuntimeCorrelationResultSchema } from "../domain/staticRuntimeCorrelation.js"; import { reconstructionVerificationResultSchema } from "../domain/reconstructionVerification.js"; import { analysisErrorProjectionSchema } from "./errorSchemas.js"; -import { nativeDispatchMetadataResultSchema } from "../domain/objcSwiftMetadata.js"; -import { nativeInvestigationTraceSchema } from "../domain/nativeInvestigationGraph.js"; +import { nativeDispatchMetadataResultSchema } from "../domain/native/objcSwiftMetadata.js"; +import { nativeInvestigationTraceSchema } from "../domain/native/nativeInvestigationGraph.js"; import { addressList, addressedValue, diff --git a/src/domain/apple/interfaceBuilderGraph.ts b/src/domain/apple/interfaceBuilderGraph.ts index 22d8a544b..fbab95170 100644 --- a/src/domain/apple/interfaceBuilderGraph.ts +++ b/src/domain/apple/interfaceBuilderGraph.ts @@ -10,7 +10,7 @@ import { nativeInvestigationGraphSchema, nativeInvestigationNodeSchema, nativeInvestigationTraceLimitsSchema, -} from "../nativeInvestigationGraph.js"; +} from "../native/nativeInvestigationGraph.js"; export { parseInterfaceBuilderRecords } from "./interfaceBuilderKeyedArchive.js"; diff --git a/src/domain/hopperValues.ts b/src/domain/hopperValues.ts index 8161a796f..2add2a1d1 100644 --- a/src/domain/hopperValues.ts +++ b/src/domain/hopperValues.ts @@ -3,8 +3,8 @@ import { z } from "zod"; import type { JsonValue } from "./jsonValue.js"; import { err, ok, type Result } from "./result.js"; -import { nativeApiBoundarySchema } from "./nativeApiBoundary.js"; -import { nativeValueFlowSchema } from "./nativeValueFlow.js"; +import { nativeApiBoundarySchema } from "./native/nativeApiBoundary.js"; +import { nativeValueFlowSchema } from "./native/nativeValueFlow.js"; import { AnalysisOutputError } from "./analysisErrorCore.js"; import { HopperProtocolError } from "./hopperErrors.js"; diff --git a/src/domain/managed/managedNativeVerificationMatch.ts b/src/domain/managed/managedNativeVerificationMatch.ts index 20c2dd14b..d18f95118 100644 --- a/src/domain/managed/managedNativeVerificationMatch.ts +++ b/src/domain/managed/managedNativeVerificationMatch.ts @@ -5,7 +5,7 @@ import canonicalize from "canonicalize"; import { parseEvidence } from "../evidence.js"; import { functionDossierSchema } from "../hopperValues.js"; -import { inspectMachoSchema } from "../nativeInspection.js"; +import { inspectMachoSchema } from "../native/nativeInspection.js"; import type { ManagedNativeBoundaryInspection } from "./managedArtifact.js"; import type { JsonValue } from "../jsonValue.js"; import { diff --git a/src/domain/nativeApiBoundary.ts b/src/domain/native/nativeApiBoundary.ts similarity index 100% rename from src/domain/nativeApiBoundary.ts rename to src/domain/native/nativeApiBoundary.ts diff --git a/src/domain/nativeDataType.ts b/src/domain/native/nativeDataType.ts similarity index 100% rename from src/domain/nativeDataType.ts rename to src/domain/native/nativeDataType.ts diff --git a/src/domain/nativeFunctionAnnotations.ts b/src/domain/native/nativeFunctionAnnotations.ts similarity index 96% rename from src/domain/nativeFunctionAnnotations.ts rename to src/domain/native/nativeFunctionAnnotations.ts index e0ec49eaf..046200e92 100644 --- a/src/domain/nativeFunctionAnnotations.ts +++ b/src/domain/native/nativeFunctionAnnotations.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { functionDossierSchema } from "./hopperValues.js"; +import { functionDossierSchema } from "../hopperValues.js"; /** One explicit function's analyst-authored metadata changes. */ export const nativeFunctionAnnotationsInputSchema = z diff --git a/src/domain/nativeInspection.ts b/src/domain/native/nativeInspection.ts similarity index 99% rename from src/domain/nativeInspection.ts rename to src/domain/native/nativeInspection.ts index 30796ad4c..072e8d272 100644 --- a/src/domain/nativeInspection.ts +++ b/src/domain/native/nativeInspection.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { jsonValueSchema } from "./jsonValue.js"; +import { jsonValueSchema } from "../jsonValue.js"; const hexAddress = z.string().regex(/^0x[a-fA-F0-9]+$/u); const coverage = (item: Schema) => diff --git a/src/domain/nativeInstruction.ts b/src/domain/native/nativeInstruction.ts similarity index 100% rename from src/domain/nativeInstruction.ts rename to src/domain/native/nativeInstruction.ts diff --git a/src/domain/nativeInvestigationGraph.test.ts b/src/domain/native/nativeInvestigationGraph.test.ts similarity index 99% rename from src/domain/nativeInvestigationGraph.test.ts rename to src/domain/native/nativeInvestigationGraph.test.ts index 160d29660..015458319 100644 --- a/src/domain/nativeInvestigationGraph.test.ts +++ b/src/domain/native/nativeInvestigationGraph.test.ts @@ -8,7 +8,7 @@ import { import { buildInterfaceBuilderAnalysis, interfaceBuilderLimitsSchema, -} from "./apple/interfaceBuilderGraph.js"; +} from "../apple/interfaceBuilderGraph.js"; const evidence = [ { diff --git a/src/domain/nativeInvestigationGraph.ts b/src/domain/native/nativeInvestigationGraph.ts similarity index 99% rename from src/domain/nativeInvestigationGraph.ts rename to src/domain/native/nativeInvestigationGraph.ts index e9c317e37..cc5073d79 100644 --- a/src/domain/nativeInvestigationGraph.ts +++ b/src/domain/native/nativeInvestigationGraph.ts @@ -5,7 +5,7 @@ import { nativeMetadataLocationSchema, type ObjcSwiftMetadata, } from "./objcSwiftMetadata.js"; -import { jsonValueSchema } from "./jsonValue.js"; +import { jsonValueSchema } from "../jsonValue.js"; /** Entity kinds shared by decoded Interface Builder archives and native code. */ export const nativeInvestigationNodeKindSchema = z.enum([ diff --git a/src/domain/nativeLoadImage.ts b/src/domain/native/nativeLoadImage.ts similarity index 98% rename from src/domain/nativeLoadImage.ts rename to src/domain/native/nativeLoadImage.ts index 64f0043da..568a0de25 100644 --- a/src/domain/nativeLoadImage.ts +++ b/src/domain/native/nativeLoadImage.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import { nativeMetadataRecoverySummarySchema } from "./nativeMetadataRecovery.js"; -import { jsonValueSchema } from "./jsonValue.js"; +import { jsonValueSchema } from "../jsonValue.js"; const integer = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); const digest = z.string().regex(/^[a-f0-9]{64}$/u); diff --git a/src/domain/nativeMetadataRecovery.test.ts b/src/domain/native/nativeMetadataRecovery.test.ts similarity index 97% rename from src/domain/nativeMetadataRecovery.test.ts rename to src/domain/native/nativeMetadataRecovery.test.ts index edcf38549..0f1d486fc 100644 --- a/src/domain/nativeMetadataRecovery.test.ts +++ b/src/domain/native/nativeMetadataRecovery.test.ts @@ -3,7 +3,7 @@ import { nativeMetadataRecoverySchema, nativeMetadataRecoverySummarySchema, } from "./nativeMetadataRecovery.js"; -import { jsonValueSchema } from "./jsonValue.js"; +import { jsonValueSchema } from "../jsonValue.js"; const metadata = { format: "dotnet-nativeaot", diff --git a/src/domain/nativeMetadataRecovery.ts b/src/domain/native/nativeMetadataRecovery.ts similarity index 100% rename from src/domain/nativeMetadataRecovery.ts rename to src/domain/native/nativeMetadataRecovery.ts diff --git a/src/domain/nativeUiObservation.ts b/src/domain/native/nativeUiObservation.ts similarity index 98% rename from src/domain/nativeUiObservation.ts rename to src/domain/native/nativeUiObservation.ts index 4e324c85f..9c56488f4 100644 --- a/src/domain/nativeUiObservation.ts +++ b/src/domain/native/nativeUiObservation.ts @@ -2,7 +2,7 @@ import { createHash } from "node:crypto"; import { z } from "zod"; -import { decodeCanonicalBase64 } from "./webScreenshot.js"; +import { decodeCanonicalBase64 } from "../webScreenshot.js"; const scope = { pid: z.number().int().positive(), diff --git a/src/domain/nativeValueFlow.ts b/src/domain/native/nativeValueFlow.ts similarity index 100% rename from src/domain/nativeValueFlow.ts rename to src/domain/native/nativeValueFlow.ts diff --git a/src/domain/nativeValueTrace.ts b/src/domain/native/nativeValueTrace.ts similarity index 100% rename from src/domain/nativeValueTrace.ts rename to src/domain/native/nativeValueTrace.ts diff --git a/src/domain/objcSwiftMetadata.test.ts b/src/domain/native/objcSwiftMetadata.test.ts similarity index 100% rename from src/domain/objcSwiftMetadata.test.ts rename to src/domain/native/objcSwiftMetadata.test.ts diff --git a/src/domain/objcSwiftMetadata.ts b/src/domain/native/objcSwiftMetadata.ts similarity index 100% rename from src/domain/objcSwiftMetadata.ts rename to src/domain/native/objcSwiftMetadata.ts diff --git a/src/ghidra/GhidraAnnotations.test.ts b/src/ghidra/GhidraAnnotations.test.ts index 4107d746a..ee7745f8b 100644 --- a/src/ghidra/GhidraAnnotations.test.ts +++ b/src/ghidra/GhidraAnnotations.test.ts @@ -1,6 +1,6 @@ import { functionDossierSchema } from "../domain/hopperValues.js"; import { describe, expect, it } from "vitest"; -import { nativeFunctionAnnotationsInputSchema } from "../domain/nativeFunctionAnnotations.js"; +import { nativeFunctionAnnotationsInputSchema } from "../domain/native/nativeFunctionAnnotations.js"; import { ghidraFunctionDossier } from "../domain/ghidraValues.fixture.js"; import { parseGhidraFunctionInput, diff --git a/src/ghidra/GhidraDosComLoadImage.test.ts b/src/ghidra/GhidraDosComLoadImage.test.ts index 88d763f0e..504572933 100644 --- a/src/ghidra/GhidraDosComLoadImage.test.ts +++ b/src/ghidra/GhidraDosComLoadImage.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; import { attestGhidraDosComLoadImage } from "./GhidraLoadImageValues.js"; import { fixtureDosComLoadImage } from "./GhidraLoadImage.fixture.js"; -import type { NativeLoadImageObservation } from "../domain/nativeLoadImage.js"; +import type { NativeLoadImageObservation } from "../domain/native/nativeLoadImage.js"; const mutations: ReadonlyArray< readonly [string, (o: NativeLoadImageObservation) => void] diff --git a/src/ghidra/GhidraFunctionValues.ts b/src/ghidra/GhidraFunctionValues.ts index 1429dadd6..cfd1aaf69 100644 --- a/src/ghidra/GhidraFunctionValues.ts +++ b/src/ghidra/GhidraFunctionValues.ts @@ -2,12 +2,12 @@ import { z } from "zod"; import { nativeFunctionAnnotationsInputSchema, nativeFunctionAnnotationsSchema, -} from "../domain/nativeFunctionAnnotations.js"; -import { nativeDataTypeSchema } from "../domain/nativeDataType.js"; +} from "../domain/native/nativeFunctionAnnotations.js"; +import { nativeDataTypeSchema } from "../domain/native/nativeDataType.js"; import { nativeInstructionSchema, nativeCallTargetsSchema, -} from "../domain/nativeInstruction.js"; +} from "../domain/native/nativeInstruction.js"; import { AnalysisInputError, @@ -24,8 +24,8 @@ import { jsonValueSchema, type JsonValue, } from "../domain/jsonValue.js"; -import { nativeApiBoundarySchema } from "../domain/nativeApiBoundary.js"; -import { nativeValueFlowSchema } from "../domain/nativeValueFlow.js"; +import { nativeApiBoundarySchema } from "../domain/native/nativeApiBoundary.js"; +import { nativeValueFlowSchema } from "../domain/native/nativeValueFlow.js"; import { err, ok, type Result } from "../domain/result.js"; import { ghidraIdentifierSchema, diff --git a/src/ghidra/GhidraInventoryValues.ts b/src/ghidra/GhidraInventoryValues.ts index 5d56c698c..9f08c5fb3 100644 --- a/src/ghidra/GhidraInventoryValues.ts +++ b/src/ghidra/GhidraInventoryValues.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { nativeLoadImageObservationSchema } from "../domain/nativeLoadImage.js"; +import { nativeLoadImageObservationSchema } from "../domain/native/nativeLoadImage.js"; import { AnalysisInputError, diff --git a/src/ghidra/GhidraLoadImage.fixture.ts b/src/ghidra/GhidraLoadImage.fixture.ts index d47fbd1b1..31e55b0a9 100644 --- a/src/ghidra/GhidraLoadImage.fixture.ts +++ b/src/ghidra/GhidraLoadImage.fixture.ts @@ -1,6 +1,6 @@ import { createHash } from "node:crypto"; import { dosMz } from "../domain/binaryTarget.fixture.js"; -import type { NativeLoadImageObservation } from "../domain/nativeLoadImage.js"; +import type { NativeLoadImageObservation } from "../domain/native/nativeLoadImage.js"; const hash = (bytes: Buffer): string => createHash("sha256").update(bytes).digest("hex"); diff --git a/src/ghidra/GhidraLoadImageAttest.ts b/src/ghidra/GhidraLoadImageAttest.ts index e8319dce2..3a8048b6f 100644 --- a/src/ghidra/GhidraLoadImageAttest.ts +++ b/src/ghidra/GhidraLoadImageAttest.ts @@ -5,7 +5,7 @@ import { jsonValueSchema, type JsonValue } from "../domain/jsonValue.js"; import { nativeLoadImageObservationSchema, nativeLoadImageSchema, -} from "../domain/nativeLoadImage.js"; +} from "../domain/native/nativeLoadImage.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; import { err, ok, type Result } from "../domain/result.js"; import { diff --git a/src/ghidra/GhidraLoadImageValues.test.ts b/src/ghidra/GhidraLoadImageValues.test.ts index d212be3cd..8fe25a9d7 100644 --- a/src/ghidra/GhidraLoadImageValues.test.ts +++ b/src/ghidra/GhidraLoadImageValues.test.ts @@ -2,8 +2,8 @@ import { describe, expect, it } from "vitest"; import { createHash } from "node:crypto"; import { attestGhidraDosLoadImage } from "./GhidraLoadImageValues.js"; import { fixtureDosLoadImage } from "./GhidraLoadImage.fixture.js"; -import { nativeLoadImageObservationSchema } from "../domain/nativeLoadImage.js"; -import type { NativeLoadImageObservation } from "../domain/nativeLoadImage.js"; +import { nativeLoadImageObservationSchema } from "../domain/native/nativeLoadImage.js"; +import type { NativeLoadImageObservation } from "../domain/native/nativeLoadImage.js"; const damage: ReadonlyArray< readonly [string, (observation: NativeLoadImageObservation) => void] diff --git a/src/ghidra/GhidraLoadImageValues.ts b/src/ghidra/GhidraLoadImageValues.ts index 0310a8fb4..b8aec0a3d 100644 --- a/src/ghidra/GhidraLoadImageValues.ts +++ b/src/ghidra/GhidraLoadImageValues.ts @@ -4,7 +4,7 @@ import { type NativeLoadImage, type NativeLoadImageCheck, type NativeLoadImageObservation, -} from "../domain/nativeLoadImage.js"; +} from "../domain/native/nativeLoadImage.js"; import { parseDosMzHeader, type DosMzHeader } from "../domain/dosMz.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { validateDosComLength } from "../domain/dosCom.js"; diff --git a/src/native/AppleDispatchCoverage.ts b/src/native/AppleDispatchCoverage.ts index e0165bc88..6114a8e87 100644 --- a/src/native/AppleDispatchCoverage.ts +++ b/src/native/AppleDispatchCoverage.ts @@ -1,4 +1,4 @@ -import type { ObjcSwiftMetadata } from "../domain/objcSwiftMetadata.js"; +import type { ObjcSwiftMetadata } from "../domain/native/objcSwiftMetadata.js"; import type { PointerFixups } from "./AppleMachoFixups.js"; const describeFixups = (fixups: PointerFixups): string => { diff --git a/src/native/AppleDispatchMetadata.ts b/src/native/AppleDispatchMetadata.ts index 5b10b34c2..94daaf9f8 100644 --- a/src/native/AppleDispatchMetadata.ts +++ b/src/native/AppleDispatchMetadata.ts @@ -5,7 +5,7 @@ import { objcSwiftMetadataSchema, nativeDispatchMetadataResultSchema, type ObjcSwiftMetadata, -} from "../domain/objcSwiftMetadata.js"; +} from "../domain/native/objcSwiftMetadata.js"; import type { BinaryTarget } from "../domain/binaryTarget.js"; import { AnalysisCancelledError } from "../domain/analysisErrorCore.js"; import { EvidenceIntegrityError } from "../domain/evidenceErrors.js"; diff --git a/src/native/AppleObjcCategories.ts b/src/native/AppleObjcCategories.ts index 31fb3881f..10d5a13df 100644 --- a/src/native/AppleObjcCategories.ts +++ b/src/native/AppleObjcCategories.ts @@ -1,4 +1,4 @@ -import type { ObjcSwiftMetadata } from "../domain/objcSwiftMetadata.js"; +import type { ObjcSwiftMetadata } from "../domain/native/objcSwiftMetadata.js"; import type { Section } from "./AppleMachoSelection.js"; import type { ObjcDispatchReaders } from "./AppleObjcDispatchFacets.js"; import { readObjcPropertiesOf } from "./AppleObjcProperties.js"; diff --git a/src/native/AppleObjcDispatchFacets.ts b/src/native/AppleObjcDispatchFacets.ts index b030a8586..e3485e9c1 100644 --- a/src/native/AppleObjcDispatchFacets.ts +++ b/src/native/AppleObjcDispatchFacets.ts @@ -1,4 +1,4 @@ -import type { ObjcSwiftMetadata } from "../domain/objcSwiftMetadata.js"; +import type { ObjcSwiftMetadata } from "../domain/native/objcSwiftMetadata.js"; import type { Segment, Section } from "./AppleMachoSelection.js"; import { boundClassName, decodeObjcCategories } from "./AppleObjcCategories.js"; import { readObjcPropertiesOf } from "./AppleObjcProperties.js"; diff --git a/src/native/AppleObjcProperties.ts b/src/native/AppleObjcProperties.ts index 34fa8d3d4..4aac58a18 100644 --- a/src/native/AppleObjcProperties.ts +++ b/src/native/AppleObjcProperties.ts @@ -1,6 +1,6 @@ import type { z } from "zod"; -import type { objcPropertySchema } from "../domain/objcSwiftMetadata.js"; +import type { objcPropertySchema } from "../domain/native/objcSwiftMetadata.js"; type ObjcProperty = z.infer; diff --git a/src/native/AppleObjcProtocols.ts b/src/native/AppleObjcProtocols.ts index f085310ff..20066ca5c 100644 --- a/src/native/AppleObjcProtocols.ts +++ b/src/native/AppleObjcProtocols.ts @@ -1,4 +1,4 @@ -import type { ObjcSwiftMetadata } from "../domain/objcSwiftMetadata.js"; +import type { ObjcSwiftMetadata } from "../domain/native/objcSwiftMetadata.js"; import type { SwiftMetadataReaders } from "./AppleSwiftVtables.js"; /** Read protocol lists and absolute protocol method declarations with cycle-safe identities. */ diff --git a/src/native/AppleSwiftDispatchFacets.ts b/src/native/AppleSwiftDispatchFacets.ts index 95f8c81fa..ac6507d1d 100644 --- a/src/native/AppleSwiftDispatchFacets.ts +++ b/src/native/AppleSwiftDispatchFacets.ts @@ -1,4 +1,4 @@ -import type { ObjcSwiftMetadata } from "../domain/objcSwiftMetadata.js"; +import type { ObjcSwiftMetadata } from "../domain/native/objcSwiftMetadata.js"; import type { Segment, Section } from "./AppleMachoSelection.js"; /** Resolved file-backed metadata location from the Mach-O layout. */ diff --git a/src/native/AppleSwiftVtables.ts b/src/native/AppleSwiftVtables.ts index fc2e6012f..1cb843238 100644 --- a/src/native/AppleSwiftVtables.ts +++ b/src/native/AppleSwiftVtables.ts @@ -2,7 +2,7 @@ import type { ObjcSwiftMetadata, NativeMetadataEvidence, NativeMetadataLocation, -} from "../domain/objcSwiftMetadata.js"; +} from "../domain/native/objcSwiftMetadata.js"; /** Byte readers shared with the validated Mach-O metadata boundary. */ export interface SwiftMetadataReaders { diff --git a/src/native/NativeMacOSProvider.ts b/src/native/NativeMacOSProvider.ts index dd7c54802..45b5f272b 100644 --- a/src/native/NativeMacOSProvider.ts +++ b/src/native/NativeMacOSProvider.ts @@ -21,7 +21,7 @@ import { import { NATIVE_TOOL_CONTRACTS, type NativeToolName, -} from "../contracts/nativeToolContracts.js"; +} from "../contracts/native/nativeToolContracts.js"; import type { BinaryTarget } from "../domain/binaryTarget.js"; import type { EvidenceLocation } from "../domain/evidence.js"; import { @@ -44,7 +44,7 @@ import { inspectSignatureSchema, listArchitecturesSchema, type NativeCommandInvocation, -} from "../domain/nativeInspection.js"; +} from "../domain/native/nativeInspection.js"; import { err, ok, type Result } from "../domain/result.js"; import { NativeCommandFailure, diff --git a/src/native/NativeMacOSProviderMetadata.ts b/src/native/NativeMacOSProviderMetadata.ts index 837dbcf64..d5fc5ef13 100644 --- a/src/native/NativeMacOSProviderMetadata.ts +++ b/src/native/NativeMacOSProviderMetadata.ts @@ -2,7 +2,7 @@ import type { CapabilityDescriptor, ProviderIdentity, } from "../application/AnalysisProvider.js"; -import { NATIVE_TOOL_CONTRACTS } from "../contracts/nativeToolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "../contracts/native/nativeToolContracts.js"; /** Public identity committed by macOS-native inspection observations. */ export const NATIVE_MACOS_PROVIDER_IDENTITY: ProviderIdentity = Object.freeze({ diff --git a/src/native/NativeMachoInspection.ts b/src/native/NativeMachoInspection.ts index 933d934a1..eb1c6c8de 100644 --- a/src/native/NativeMachoInspection.ts +++ b/src/native/NativeMachoInspection.ts @@ -4,7 +4,7 @@ import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { inspectMachoSchema, type NativeCommandInvocation, -} from "../domain/nativeInspection.js"; +} from "../domain/native/nativeInspection.js"; import { jsonValueSchema, type JsonValue } from "../domain/jsonValue.js"; import { err, ok, type Result } from "../domain/result.js"; import type { NativeCommandCapture } from "./CommandRunner.js"; diff --git a/src/native/NativeUiObservation.ts b/src/native/NativeUiObservation.ts index 86eac590d..a3273543a 100644 --- a/src/native/NativeUiObservation.ts +++ b/src/native/NativeUiObservation.ts @@ -6,7 +6,7 @@ import { nativeUiScenarioInputSchema, nativeUiSnapshotSchema, nativeUiResultSchema, -} from "../domain/nativeUiObservation.js"; +} from "../domain/native/nativeUiObservation.js"; import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, diff --git a/src/native/parsers/codesign.ts b/src/native/parsers/codesign.ts index 1fc31860e..3a39a389e 100644 --- a/src/native/parsers/codesign.ts +++ b/src/native/parsers/codesign.ts @@ -1,7 +1,7 @@ import { inspectSignatureSchema, type InspectSignature, -} from "../../domain/nativeInspection.js"; +} from "../../domain/native/nativeInspection.js"; /** * Parse bounded `codesign -d --verbose=4` diagnostics, which Apple emits on diff --git a/src/server/registerNativeTools.ts b/src/server/registerNativeTools.ts index 187bd5afd..49180d5e4 100644 --- a/src/server/registerNativeTools.ts +++ b/src/server/registerNativeTools.ts @@ -2,7 +2,7 @@ import type { EvidenceWriter } from "../application/investigation/InvestigationR import type { McpServer } from "@modelcontextprotocol/server"; import type { AnalysisOperationPort } from "../application/AnalysisProvider.js"; -import { NATIVE_TOOL_CONTRACTS } from "../contracts/nativeToolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "../contracts/native/nativeToolContracts.js"; import type { BinaryTarget } from "../domain/binaryTarget.js"; import type { Logger } from "../logger.js"; import { registerEvidenceTools } from "./registerEvidenceTools.js"; diff --git a/tests/boundary/providers/native/nativeSelectedArchitecture.test.ts b/tests/boundary/providers/native/nativeSelectedArchitecture.test.ts index 5e2816454..7d35ca01c 100644 --- a/tests/boundary/providers/native/nativeSelectedArchitecture.test.ts +++ b/tests/boundary/providers/native/nativeSelectedArchitecture.test.ts @@ -1,5 +1,5 @@ import { expect, it } from "vitest"; -import { inspectMachoSchema } from "../../../../src/domain/nativeInspection.js"; +import { inspectMachoSchema } from "../../../../src/domain/native/nativeInspection.js"; import { err } from "../../../../src/domain/result.js"; import { NativeCommandFailure } from "../../../../src/native/CommandRunner.js"; import { NativeMacOSProvider } from "../../../../src/native/NativeMacOSProvider.js"; diff --git a/tests/conformance/providers/managed/managedNativeVerification.test.ts b/tests/conformance/providers/managed/managedNativeVerification.test.ts index 0e04138c7..67b547c5e 100644 --- a/tests/conformance/providers/managed/managedNativeVerification.test.ts +++ b/tests/conformance/providers/managed/managedNativeVerification.test.ts @@ -9,7 +9,7 @@ import { verifyManagedNativeBoundaries, } from "../../../../src/domain/managed/managedNativeVerification.js"; import { managedNativeBoundaryInspectionSchema } from "../../../../src/domain/managed/managedArtifact.js"; -import { inspectMachoSchema } from "../../../../src/domain/nativeInspection.js"; +import { inspectMachoSchema } from "../../../../src/domain/native/nativeInspection.js"; const exampleInput = () => managedNativeVerificationInputSchema.parse(