mirror of
https://github.com/morluto/rea.git
synced 2026-11-09 16:26:36 +00:00
* docs: organize canonical documentation layout (URGENTE) Group all existing authored guides by domain and ownership, expose complete navigation, and preserve their public routes. Update physical path consumers and release configuration while retaining historical records. Document domain-based specs and ADR slugs without global numbering. Co-Authored-By: Codex <noreply@openai.com> * fix(docs): honor home layout in all-page route verification * style: format reviewed source changes * fix(docs): preserve routes and navigation cache inputs * fix: repair the static-check failures on the default branch (#2895) * fix: repair the static-check failures on the default branch The default branch fails its own required `Static checks` job three ways, so every pull request reports that job as failed regardless of its own change. - `npm run format:check` reports `src/domain/functionComparison.test.ts` and `src/ida/IdaOperationRunner.ts`. - `npm run lint` reports a duplicate `import { join } from "node:path"` in `tests/boundary/mcp/ghidraInventoryMcp.test.ts` (lines 4 and 17). - `npm run typecheck` reports `format: "devin"` missing from the client format union in `src/application/SupportedClients.ts`, and an unchecked index in `tests/boundary/cli/clientProfileLifecycle.test.ts`, whose pair array is inferred as `string[][]`. Apply the pinned formatter, drop the duplicate import, list the `"devin"` format that its own definition already uses, and mark the pair array `as const`. Validation: `npm run check:fast` and `npm run format:check` pass. * fix(setup): keep Devin on the JSON configuration dialect --------- Co-authored-by: 吴佳浩 <wujiahao@supremind.com> Co-authored-by: morluto <76467478+morluto@users.noreply.github.com> * fix(docs): update links after guide relocation * docs: correct verified documentation route counts * fix(docs): update browser capture guide link after move (#2820) Refresh gettext protected-link comments alongside the authored href. Co-authored-by: Codex <noreply@openai.com> * fix(docs): include http3 lab in stable routes * fix(docs): preserve historical release evidence and links * fix(ghidra): restore Windows verifier identity import * docs(wakaru): preserve pinned upstream policy link * docs(index): retain recently added guide links * docs(mcp): preserve parent retention clarification * fix(cli): preserve standalone import guidance * fix(test): preserve translated guide link drift coverage --------- Co-authored-by: Matheus Breguêz <matbrgz@gmail.com> Co-authored-by: Codex <noreply@openai.com> Co-authored-by: morluto <17176810+morluto@users.noreply.github.com> Co-authored-by: 吴佳浩Alben <35291372+XiaoBinGan@users.noreply.github.com> Co-authored-by: 吴佳浩 <wujiahao@supremind.com>
101 lines
5.2 KiB
Markdown
101 lines
5.2 KiB
Markdown
# Captured website module relationships
|
|
|
|
`trace_web_module_imports` / `rea trace-web-module-imports` traces one script's
|
|
outgoing native ES imports and re-exports from an
|
|
[exported capture](website-script-export.md). It verifies the selected source's
|
|
SHA-256 and byte count, preserves browser URL identities, and returns every
|
|
matching capture candidate inline. It does not refetch website assets.
|
|
|
|
## Select the source and context
|
|
|
|
Provide a caller-supplied Chromium executable supporting `import.meta.resolve`.
|
|
REA does not install or upgrade a browser. Real verification covers Linux x64;
|
|
other hosts have not received this feature's real workflow verification.
|
|
|
|
```bash
|
|
REA_BROWSER_EXECUTABLE=/absolute/path/to/chrome \
|
|
rea trace-web-module-imports /analysis/export/manifest.json 0 \
|
|
--importer-url 'https://example.test/app/main.js?build=2#entry' \
|
|
--import-map-path /analysis/import-map.json \
|
|
--import-map-base-url https://example.test/maps/ \
|
|
--json
|
|
```
|
|
|
|
The MCP input expresses the same choices:
|
|
|
|
```json
|
|
{
|
|
"manifest_path": "/analysis/export/manifest.json",
|
|
"script_index": 0,
|
|
"importer_url": "https://example.test/app/main.js?build=2#entry",
|
|
"import_map": {
|
|
"path": "/analysis/import-map.json",
|
|
"base_url": "https://example.test/maps/"
|
|
}
|
|
}
|
|
```
|
|
|
|
`script_index` is zero-based in `manifest.scripts`. If `importer_url` is omitted,
|
|
the trace selects the reported source URL. An inline script's document base
|
|
cannot be established from that URL alone; choose the context explicitly when
|
|
known. `import_map` is optional and reads local JSON only. Its exact bytes and
|
|
base URL are retained; selecting it does not prove the map was installed in the
|
|
captured page. HTTP(S) importer contexts without URL userinfo are supported initially.
|
|
An unusable reported URL leaves the importer context unavailable; supply
|
|
`importer_url` explicitly when its value is known. An explicitly supplied malformed
|
|
URL is reported against that input field. URLs using unsupported schemes remain
|
|
capability limitations.
|
|
|
|
## Interpret the evidence
|
|
|
|
- Static imports, re-exports and literal dynamic imports receive the native
|
|
engine's resolved URL or exact rejection message. Empty strings are retained.
|
|
- Computed dynamic imports retain their expression and source positions with
|
|
`computed-specifier` unknown resolution. Erased type-only imports/exports and
|
|
inferred bundler IDs are excluded from native import claims.
|
|
- Locations use UTF-16 offsets and columns, with one-based lines. Parse recovery
|
|
diagnostics and unparseable input are explicit.
|
|
- Query variants and fragments remain distinct. An exact reported URL is an
|
|
`exact-reported-url` candidate. A response URL stripped of its fragment is a
|
|
weaker `response-url-without-fragment` content candidate. Multiple captured
|
|
versions are all returned; the trace selects none as canonical.
|
|
- Candidate metadata remains reported capture evidence; only the selected
|
|
source's bytes are reverified. Missing/lazy targets can resolve successfully
|
|
with no captured candidate. Every relationship reports execution as unknown.
|
|
- Source-map declarations remain declarations; this operation does not read or
|
|
invent map bytes, original-source mappings, worker ownership or UI causality.
|
|
|
|
The selected source is loaded from `files/` under the manifest's current
|
|
directory. Relocation retains the manifest's originally reported paths and the
|
|
actual current source path separately. Unsafe paths, symlink source directories,
|
|
nonregular files, wrong digests/sizes and malformed UTF-8 fail explicitly.
|
|
Malformed source bytes or unsafe source paths declared by the manifest are
|
|
artifact failures. Malformed caller-selected manifest or import-map files identify
|
|
the supplied input field.
|
|
|
|
## Engine and lifecycle
|
|
|
|
An owned temporary browser context runs REA's trusted resolver stub. The selected
|
|
application is parsed as data and is never executed by this trace. Page requests
|
|
are fulfilled with REA's synthetic document/stub or blocked; no website asset is
|
|
downloaded. This does not establish an OS sandbox or browser-wide network
|
|
containment. The engine version and native report are retained in Evidence.
|
|
|
|
Sources without literal imports do not acquire a browser. The manifest, source
|
|
and import map have 32 MiB, 16 MiB and 4 MiB input limits. Native resolution has
|
|
one 20-second deadline; cleanup may extend that deadline. One renderer is
|
|
requested, and there is no aggregate host memory-limit claim. Cancellation
|
|
closes only the owned browser; cleanup failure cannot return a successful trace.
|
|
Chromium keeps its sandbox, except under Termux on Android, which always
|
|
launches it without one. On hosts that cannot provide one, such as root in a
|
|
container, `REA_BROWSER_NO_SANDBOX=true` launches it without the sandbox; the
|
|
variable does not enable an REA security boundary.
|
|
|
|
See [testing](../../development/testing.md) for the native loading oracle and CLI/MCP real lane.
|
|
|
|
The selected local source filename supplies the parser grammar. JavaScript files
|
|
retain native dynamic imports even in relational expressions; TypeScript files
|
|
use the shared TypeScript grammar and omit erased import-type expressions from
|
|
runtime module tracing. Historical-source import retains those type dependencies
|
|
separately. Parser observations and native URL resolution do not prove execution.
|