rea/src/cli
BaaRai f2150eb9a7
feat(harmony): project HarmonyOS package inventory evidence (#1447)
* feat(harmony): project HarmonyOS package inventory evidence

First HarmonyOS increment from #1431: HAP, HSP, and App Pack roots are
classified through the hardened ZIP reader and projected into an
execution-free application graph with packaging-model hints, exact
component paths and hashes, App Pack children by path, runtime-family
hints, and path-based N-API bridge hypotheses. HarmonyOS .har stays
unclassified by suffix because .har also names HTTP Archive JSON.

Adds the project_harmony_application_graph tool (CLI and MCP), synthetic
composition coverage, a pinned real-package verify lane, and docs.

* refactor(domain): share application graph projection scaffolding

The HarmonyOS projection mirrors the Android and Apple projections by
design, which pushed jscpd duplication over its 2.5 percent budget.
Extract the identical pieces (inventory input schema, projected
component schema and occurrence flattening, bridge candidate schema
factory, coverage assembly, comparator, canonical digest) into
domain/mobileApplicationGraphProjection.ts and route all three
projections plus the composition fixtures through it. Duplication drops
from 2.52 to 2.49 percent with no behavior change: projection ids,
classifications, and limitations are byte-identical.

* fix(harmony): address review, stable app-pack roots, and rotated fixture

- rebased onto main; the shared projection scaffolding now keeps main's
  nativeRuntimeConvention loop and the harmony runtime families adopt the
  same react-native/flutter/unity path conventions
- the .app App Pack suffix is now a root-input rule only (verified ZIP
  magic in classifyRootFormat and BinaryTargetResolver); nested .app ZIP
  members inside other packages keep the generic zip classification, with
  a regression test, so existing inventories do not change
- the signing limitation now states that an empty signing list does not
  mean unsigned because packaging-tool signatures live in the ZIP signing
  block, and the app-pack root rule is disclosed as suffix-based
- repinned the real-package fixture to the current VHome 2.6.14-beta asset
  after the upstream deleted v5.0.111-beta and replaced the v2.6.14-beta
  asset within hours; the pin records both observed digests

---------

Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
2026-10-11 20:09:21 +08:00
..
adbCommands.ts feat(adb): complete ADB device support for Android reverse engineering (#1552) 2026-10-10 23:01:24 +08:00
analysisSelector.ts fix(cli): accept exact native names through explicit selectors 2026-10-09 05:46:16 +08:00
analysisViewCommands.ts feat(evidence): discover retained records without full payloads (#1682) 2026-10-11 11:18:26 +08:00
androidCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
apktoolCommands.ts feat(apktool): decode Android resource tables through a caller-supplied launcher (#1556) 2026-10-10 23:04:12 +08:00
applicationCommands.ts feat(harmony): project HarmonyOS package inventory evidence (#1447) 2026-10-11 20:09:21 +08:00
artifactCommands.ts fix(ci): repair option alias, pattern portability, and Italian doc links 2026-10-10 23:34:57 +08:00
binaryDiagnosticsCommands.ts feat(artifacts): inspect PE resource identities and payload ranges (#1482) 2026-10-10 23:02:06 +08:00
browserAdvancedCommands.ts fix(cli): accept JSON files for web capture and screenshot comparisons (#1397) 2026-10-09 19:29:42 -07:00
browserCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
commandCancellation.ts feat(android): integrate static APK analysis with headless JADX (#738) 2026-10-06 12:46:48 +00:00
coreAnalysisCommands.ts fix(cli): stream JSON results at the shared command boundary 2026-10-10 06:23:26 +08:00
coreBinaryCommands.ts fix(cli): stop advertising multi-letter single-dash option aliases (#1395) 2026-10-09 19:29:20 -07:00
coreNativeCommands.ts fix(cli): preserve native option descriptions in help 2026-10-11 06:41:46 +08:00
electronCommands.ts perf(cli): defer command-specific analysis implementations 2026-10-11 17:23:41 +08:00
evmCommands.ts fix(providers): retain worker cleanup owners through shutdown 2026-10-11 00:03:21 +08:00
firmwareCommands.ts fix(providers): retain worker cleanup owners through shutdown 2026-10-11 00:03:21 +08:00
interactiveSetup.ts fix(setup): register a stable launcher when run through bunx (#1731) 2026-10-11 19:17:15 +08:00
javascriptApplicationAnalysis.ts perf(cli): defer command-specific analysis implementations 2026-10-11 17:23:41 +08:00
javascriptRecoveryCommands.ts feat(javascript): recover code-split bundles from multiple inputs (#1686) 2026-10-11 18:39:49 +08:00
jebCommands.ts feat(jeb): add JEB engine provider over its MCP interface (#1536) 2026-10-10 23:03:27 +08:00
jsonOutput.ts perf(cli): write compact JSON when output is not a terminal (#1413) 2026-10-09 20:29:48 -07:00
managedCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
managedProjectGraphCommand.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
nativeCallCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
omittableDefaults.ts fix(cli): advertise defaulted inputs as optional in --schema and help (#1175) 2026-10-09 11:11:11 +08:00
options.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
processCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
referenceSourceImportStatus.ts fix(reference)!: retain source and metadata cleanup owners 2026-10-11 06:10:10 +08:00
setupCommands.ts perf(cli): defer command-specific modules until dispatch 2026-10-11 13:20:15 +08:00
streamedJsonOutput.ts perf(mcp): keep Playwright and type-only imports off MCP startup (#1691) 2026-10-10 21:04:05 -07:00
types.ts refactor(app): split session and CLI workflows 2026-07-18 05:49:14 +00:00
utilityCommands.ts fix(cli): preserve native option descriptions in help 2026-10-11 06:41:46 +08:00
wasmCommands.ts feat(wasm): inspect local artifacts with WABT (#1533) 2026-10-11 19:49:00 +08:00
webModuleCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
webNetworkCaptureCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
webRuntimeCommands.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
webScriptCommands.ts fix(publication)!: retain cleanup owners across export workflows 2026-10-11 05:17:10 +08:00
webSourceLocationCommands.ts fix(providers): retain worker cleanup owners through shutdown 2026-10-11 00:03:21 +08:00