rea/tests/fixtures
BaaRai d9d2a17381
feat(setup): register DeepSeek Harness through setup, doctor and uninstall (#1929)
* feat(setup): register DeepSeek Harness through setup, doctor and uninstall

DeepSeek Harness registers MCP clients through a Cordis YAML patch
sequence in the home patch rather than a server table, so setup could
not configure it and users had to append the documented entry by hand.

Add a dsh client: the home patch $DSH_HOME/cordis.patch.yml
(~/.dsh/cordis.patch.yml when unset) is parsed as a patch list, the REA
entry owns the stable rea-mcp id, and setup appends or replaces exactly
that entry while preserving unrelated patches and comments in place.
Doctor reports the registration through the same entry, and uninstall
removes it, dropping insert operations it emptied. Skill destinations
follow ~/.agents/skills ($DSH_AGENTS_HOME/skills when configured), the
home the rest of the client machinery already uses.

Fixes #1839

* fix(setup): carry environment and identity validation into DSH registrations

Address review: the DSH entry discarded discovered provider overrides;
config.env is now emitted and retained like the other dialects. An entry
carrying the rea-mcp id under a wrong or missing package name, or
duplicated entries, reads back as absent so setup rewrites exactly one
canonical entry instead of reporting unchanged. Doctor now requires
serverName rea and stdio transport before calling a DSH registration
aligned, and the Harness skill identifier in the docs matches the
installed reverse-engineer-anything skill.

* fix(setup): apply Cordis patch order and collapse DSH registrations

Address review: a later direct { id, config } operation replaces the
row's config under the native patch DSL, so the registration view now
applies patches in order instead of only reading insert operations;
doctor reports the effective command rather than the inserted one.
Setup rewrites exactly one canonical entry: duplicate id-matching rows
collapse to the first, direct patches to the entry are dropped from the
document and from the edited YAML, and uninstall removes them with the
entry. The client-location test fixture now clears DSH_HOME and
DSH_AGENTS_HOME so a developer environment cannot point the suite at
real Harness homes.

* fix(setup): repair direct-only registrations and preserve Cordis entry state

Serialize now edits the first insertion carrying rea-mcp in place, so a
grouped entry keeps its scope, neighbors, and comments instead of moving
to a fresh root-level insertion, and later carrying insertions and direct
patches collapse away. Entry-level disabled state projects into the
registration the doctor and setup compare, so a disabled row reads as
stale and the repair re-enables it. A direct-only registration no longer
suppresses the canonical insert append, and an update retains the
registration environment. Duplicate entries collapse across operations,
not only within one.

* fix(setup): preserve Harness row state through identity and refresh repairs

A wrong-package row still reads back as a server record carrying its
environment and caller fields, projected with a package marker the
alignment path treats as stale, instead of vanishing and dropping
config.env from the repair. A direct Cordis patch without a preceding
insertion configures nothing, so a direct-only registration reads as
absent even when its config matches and the repair appends the insert.
Caller-owned config fields beyond the REA-owned keys, such as the cwd
the native verifier sets, survive a refresh instead of being silently
dropped.

* fix(setup): preserve Cordis tags and collapse aligned Harness rows

A refresh rebuilt Harness config from parsed values, so a caller !!js
expression was written back as a literal. Owned keys are now overlaid on
the winning config node and other nodes stay in place. Two already-aligned
rea-mcp insertions read as stale, so setup collapses them to one row, and
the bundled skill lists dsh with the other clients.

* fix(setup): drop the unused DSH configuration type

Knip reports DshConfigurationFormat as an unused export. The format union
does not depend on that alias.

* fix(setup): keep Harness env tags and comment-only patches

A refresh replaced the whole env map, so a caller !!js value was written
back as a literal. Environment entries now stay in place unless the value
changed. A comment-only cordis.patch.yml parses as an empty patch list and
keeps those comments when the registration is appended. Docs describe
plain rea uninstall, which scans supported clients and has no --client flag.

* fix(setup): own Harness rows by entry id and expression state

Uninstall removes a rea-mcp row even when the launcher is stale or the
patch never established a server record. A non-boolean disabled value,
including a Cordis expression, reads as stale. Expression text on a known
environment setting is not validated as a literal path, so a refresh can
keep the tag.

* fix(setup): collapse aliased Harness insertions

An anchored insert followed by an alias parses as two rea-mcp rows, but
the YAML edit kept the alias, so readback stayed duplicated and setup
restored the file. Aliases that resolve to the owned entry are now
dropped, including an alias of the entry inside one insert. Aliases of
other patches stay.

* fix(setup): resolve aliased Harness lists and config maps

An insert value that aliases another entry list still loaded a second
rea-mcp row after the operation-level alias collapse. That alias is now
dropped once the anchored list is rewritten. A config: *cfg map is
resolved and cloned before the refresh, so a caller !!js field on the
aliased map is not rewritten as a plain literal.

* fix(setup): follow Harness aliases for ids, lists, and env tags

An insert alias whose anchor is not another insert is copied so
unrelated rows stay while the owned row is rewritten. An aliased
entry id is resolved before ownership checks, and an environment alias
of an unchanged !!js scalar is left in place.

* fix(setup): keep aliased Harness env maps through uninstall

An env alias is cloned before a refresh so tagged values are not rebuilt
as literals, and expression-key scans follow aliases before path checks.
Insert aliases that carry REA are recorded before uninstall empties their
anchor, so the later alias is dropped instead of dangling.

* fix(setup): follow root Harness aliases and mark dsh as main-only

Winning-config walks resolve a root alias before patch order, so a replayed direct config's !!js env is not validated as a literal path. Root aliases that own rea-mcp are recorded before uninstall empties their anchor. An insert whose only owned member is an external alias is cloned so Cordis tags survive. Docs state dsh is not in npm 6.4.0.

* fix(setup): keep rows behind inert Harness aliases

A root alias whose anchor is not a loaded operation is copied and only the owned row is edited, so unrelated rows stay active. Entry id aliases become a scalar before their anchor patch is dropped. Root-alias ownership follows insert-list aliases, so a replay is removed instead of dangling after uninstall.

* refactor(setup): centralize Cordis source ownership

* fix(javascript): share Electron mutation proof with wrapped calls

* test(mcp): align graph and catalog checks with current contracts

* fix(setup): separate Cordis ownership from editability

* docs: clarify ownership and interpretation boundaries

* fix(setup): preserve Cordis applicability and caller metadata

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
2026-10-12 11:06:26 +08:00
..
android fix(android): preserve decoded values and duplicate class inventories 2026-10-12 06:29:13 +08:00
binaryDiagnostics fix(providers): validate ELF versions and preserve probe cancellation 2026-10-09 00:49:30 +08:00
evm feat(evm): inspect offline bytecode interfaces through EVMole (#1051) 2026-10-08 15:32:05 +08:00
firmware fix(firmware): recover after workspace removal failures (#1616) 2026-10-11 03:16:34 +08:00
golden refactor!: simplify runtime tools and remove replay engines (#572) 2026-10-05 21:15:04 +08:00
inspector refactor!: enforce canonical evidence and provider boundaries 2026-10-09 20:18:52 +08:00
interface-builder fix(artifacts): project compiled AppKit actions from the control to its target (#905) 2026-10-07 17:40:18 +08:00
javascript-recovery feat(javascript): recover code-split bundles from multiple inputs (#1686) 2026-10-11 18:39:49 +08:00
native-macos test(native): replay complete dylib-use provider output 2026-10-12 06:36:45 +08:00
nativeaot feat(ghidra): integrate optional NativeAOT metadata recovery (#748) 2026-10-07 00:57:08 +08:00
replay feat(application): add isolated JavaScript replay 2026-07-16 15:45:55 +09:00
swift fix(ghidra): classify modern Swift manglings in swift type analysis (#1208) 2026-10-09 16:10:55 +08:00
wasm fix(wasm): inspect modules whose custom section names contain NUL (#1981) 2026-10-12 08:41:55 +08:00
windows feat(ghidra): enable Windows x64 read-only analysis (#699) 2026-10-06 16:53:33 +08:00
analysisExecution.ts Add evidence-backed investigation workflows 2026-07-12 21:12:18 +00:00
analysisView.ts feat(mcp): derive an API surface view from retained web network captures (#1891) 2026-10-12 10:44:17 +08:00
applicationMcpHarness.ts feat(target): explain static WASM inspection after native rejection 2026-10-12 07:00:30 +08:00
artifactEntryOrder.ts fix(artifacts): resolve parents after archive enumeration (#578) 2026-10-05 23:06:46 +08:00
artifactEvidence.ts feat(native): add inspection primitives, dispatch traces and approved UI observation (#500) 2026-10-04 16:02:36 +08:00
artifactInventory.ts fix(artifacts)!: retain cleanup owners through client shutdown 2026-10-11 04:43:02 +08:00
binarySession.ts refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
browserScenarioCancellation.mjs perf(cli): bundle runtime entries to reduce Windows startup I/O (#1996) 2026-10-12 09:25:27 +08:00
captureGhidraLaunch.cmd feat(ghidra): launch bounded Windows headless sessions 2026-07-17 03:05:19 +09:00
captureGhidraLaunch.mjs test: eliminate fixture races and prune redundant scaffolding (#849) 2026-10-07 12:25:37 +08:00
cliJsonProcess.ts fix(cli): accept JSON files for web capture and screenshot comparisons (#1397) 2026-10-09 19:29:42 -07:00
clientEnvironment.ts feat(setup): register DeepSeek Harness through setup, doctor and uninstall (#1929) 2026-10-12 11:06:26 +08:00
contractPresentation.mjs fix(mcp): admit composed analysis through result bookkeeping 2026-10-10 00:35:17 +08:00
directAnalysisInterrupt.mjs refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
directoryReaderFifoProbe.mjs fix(artifacts): harden reader lifecycle boundaries (#951) 2026-10-07 20:00:24 +08:00
directoryReaderUnsupportedEntryProbe.mjs fix(artifacts): retain reader owners after cleanup failures 2026-10-11 05:33:05 +08:00
electronApiAliasApplication.ts fix(javascript): recover Electron API identity through aliases 2026-10-11 08:27:46 +08:00
electronBoundaryApplication.ts feat(electron): map static process and IPC boundaries 2026-07-16 07:56:13 +09:00
fakeCdpBrowser.ts fix(browser): retain effective source-map response urls 2026-10-11 15:35:43 +08:00
fakeCdpBrowserEvents.ts fix(browser): preserve uncertainty in malformed network observations 2026-10-12 05:24:24 +08:00
fakeCdpBrowserResults.ts fix(browser): validate PNG chunks and preserve unsupported encodings 2026-10-11 11:07:15 +08:00
fakeCdpBrowserTargets.ts refactor: return complete tool results inline 2026-09-29 07:08:46 +08:00
fakeCdpBrowserTypes.ts fix(browser): retain effective source-map response urls 2026-10-11 15:35:43 +08:00
fakeGhidra.mjs feat(ghidra): admit set_address_name and set_addresses_names (#1635) 2026-10-11 04:35:38 +08:00
fakeHopper.mjs fix(hopper): preserve observed process failures across requests (#1927) 2026-10-12 02:13:53 +08:00
fakeLauncher.mjs refactor: return complete tool results inline 2026-09-29 07:08:46 +08:00
fifoInput.ts fix(files): reject nonregular capture and JSON inputs 2026-10-10 01:49:54 +08:00
filesystemSnapshotFifoProbe.mjs fix(process)!: retain per-file digest open failures 2026-10-10 03:52:35 +08:00
ghidraRuntime.ts feat(ghidra): enable Windows x64 read-only analysis (#699) 2026-10-06 16:53:33 +08:00
historicalHar.ts feat(mcp): derive an API surface view from retained web network captures (#1891) 2026-10-12 10:44:17 +08:00
hopperBridgeFacadeProbe.py fix(contracts)!: require observed provider output metadata 2026-10-10 03:52:13 +08:00
hopperBridgeReconnectProbe.py fix(test): wait for Hopper reconnect listener readiness (#1885) 2026-10-12 00:02:01 +08:00
hopperCleanupTimeout.py fix(linux): improve Hopper reliability and CachyOS support (#963) 2026-10-07 23:16:48 +08:00
hopperDialogDetection.py fix(linux): improve Hopper reliability and CachyOS support (#963) 2026-10-07 23:16:48 +08:00
hopperInstructionProbe.py fix(hopper): preserve owned basic-block endpoint instructions (#1118) 2026-10-09 06:51:53 +08:00
hopperLaunchAdmission.mjs fix(hopper): preserve startup failures and recover denied launches 2026-10-11 22:35:01 +08:00
hopperStringSearchProbe.py perf(hopper): resolve string search records once per query (#1229) 2026-10-09 18:39:19 +08:00
idaCallGraph.ts fix(ida): preserve non-x86 call edges and workflow uncertainty (#1906) 2026-10-12 04:10:22 +08:00
idaMcp.ts fix(ida): preserve non-x86 call edges and workflow uncertainty (#1906) 2026-10-12 04:10:22 +08:00
interfaceBuilderEncoding.ts fix(apple): decode Interface Builder XML byte encodings (#1095) 2026-10-09 01:11:49 +08:00
interfaceBuilderMalformedUid.ts fix(apple): report missing keyed archive hierarchy references (#1104) 2026-10-09 01:31:53 +08:00
javascriptArtifactApplication.ts fix(electron): resolve package and dirname entrypoints by context 2026-07-17 21:30:24 +08:00
javascriptArtifactBom.ts fix(javascript): preserve original BOM source coordinates (#1093) 2026-10-09 00:09:55 +08:00
javascriptArtifactTypeScriptDialect.ts refactor: consolidate boundary semantics and prune redundant tests 2026-10-10 05:56:01 +08:00
javascriptPrimitiveExpansion.ts test(javascript): share primitive expansion producer fixtures 2026-10-10 02:49:46 +08:00
javascriptReturnShapes.ts fix(javascript): invalidate references stored through property targets (#1445) 2026-10-10 13:47:15 +08:00
javascriptRuntimeReconciliation.ts fix(ci): share runtime fixtures and allow modest duplication headroom 2026-10-11 06:53:20 +08:00
javascriptSemanticGraph.ts test(javascript): share semantic graph test facts 2026-10-10 04:02:41 +08:00
javascriptSourceSelection.ts feat(javascript): analyze selected application sources 2026-10-12 04:07:14 +08:00
keyedArchiveNumberMetadata.ts fix(artifacts): preserve keyed archive integer precision 2026-10-09 07:13:32 +08:00
keyedArchivePrototypeKeys.ts fix(plist): decode formatted XML dictionary keys 2026-10-12 05:57:34 +08:00
localToolsMcp.ts test: reuse validators for identical MCP schemas 2026-10-11 17:43:34 +08:00
mcpDoctorExit.mjs feat: complete REA remediation program 2026-07-22 22:09:12 +09:00
mcpDoctorHang.mjs feat: complete REA remediation program 2026-07-22 22:09:12 +09:00
mcpDoctorReply.mjs fix(mcp): validate doctor probe against its discovered output contract (#1461) 2026-10-10 14:33:57 +08:00
mcpToolCatalog.ts build: separate runtime artifacts and supervise command ownership 2026-10-09 20:11:17 +08:00
mcpToolError.ts fix(mcp): deliver typed errors without invalid structured output (#1277) 2026-10-09 13:54:32 +00:00
nativeCommands.ts fix(native): reject ambiguous otool load-command framing 2026-10-12 05:24:29 +08:00
nativeaotPe.ts feat(ghidra): inspect NativeAOT PE metadata read-only 2026-10-11 10:31:49 +08:00
optionalObservationProviders.ts refactor!: enforce canonical evidence and provider boundaries 2026-10-09 20:18:52 +08:00
processCaptureCancellation.mjs test(process): publish capture readiness atomically 2026-10-10 01:45:01 +08:00
processFidelity.mjs fix(process): preserve partial evidence and verify detached cleanup (#1011) 2026-10-08 04:46:46 +08:00
processFinalization.mjs feat(process): bound a finalization interval before forced capture timeout 2026-10-11 09:55:43 +08:00
processIdentity.mjs fix(process): honor disabled PID normalization in samples 2026-10-06 01:22:45 -07:00
processReactiveScenario.mjs test: replace implementation lock-in with behavioural assertions (#498) 2026-10-03 23:22:07 +08:00
processRunTokenParserProbe.swift fix(process): stabilize native capture and ownership prerequisites 2026-10-09 06:49:02 +08:00
processRunTokenSnapshotProbe.swift fix(process): preserve partial evidence and verify detached cleanup (#1011) 2026-10-08 04:46:46 +08:00
processSnapshotCancellation.mjs fix(process): harden filesystem snapshot identity and cancellation (#956) 2026-10-07 23:45:23 +08:00
providerProcess.mjs feat(electron): add autonomous Electron runtime analysis (#464) 2026-08-05 19:07:46 +08:00
providerProcess.ts feat(ghidra): enable Windows x64 read-only analysis (#699) 2026-10-06 16:53:33 +08:00
referenceReaderFifoProbe.mjs fix(reference)!: retain source and metadata cleanup owners 2026-10-11 06:10:10 +08:00
strippedAsarAddon.ts feat(javascript): record Electron integrity mismatches 2026-10-10 02:49:46 +08:00
temporaryDirectory.ts test: replace implementation lock-in with behavioural assertions (#498) 2026-10-03 23:22:07 +08:00
webModuleTrace.ts feat(browser): trace captured website module imports (#879) 2026-10-07 14:59:52 +08:00
webRuntime.ts test(browser): reject unmodeled CDP commands in protocol fixtures 2026-10-09 03:13:53 +08:00
webScriptCapture.ts feat(web): export captured scripts for JavaScript application analysis (#801) 2026-10-07 05:24:32 +08:00
webSourceLocation.ts feat(browser): trace captured website source-map locations (#897) 2026-10-07 16:21:18 +08:00
windows-native-inspection-failure.cc fix(windows): retain failed native inspection ownership (#1826) 2026-10-11 21:33:25 +08:00
x11ProbeHang.py feat: complete REA remediation program 2026-07-22 22:09:12 +09:00
x11ProbeOutput.py fix(process): retain provider output until streams close (#928) 2026-10-07 18:39:10 +08:00