mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Closed
opened 2026-10-31 00:55:00 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#4781
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/morluto/rea/pull/1731
Author: @xeropresence
Created: 10/11/2026
Status: ✅ Merged
Merged: 10/11/2026
Merged by: @morluto
Base:
main← Head:fix/setup-bunx-registration📝 Commits (2)
6e3fb8efix(setup): register a stable launcher when run through bunx58d8969chore: merge main into bunx setup fix📊 Changes
14 files changed (+317 additions, -98 deletions)
View changed files
📝
README.md(+2 -1)📝
docs/installation.md(+13 -5)📝
src/application/ClientRegistrationIdentity.ts(+91 -28)📝
src/application/ClientRegistrationStatus.ts(+8 -4)📝
src/application/Setup.configuration.test.ts(+2 -2)📝
src/application/Setup.fixture.ts(+1 -1)📝
src/application/SetupHost.ts(+9 -5)📝
src/application/UpdateRuntime.ts(+3 -3)📝
src/cli/interactiveSetup.ts(+5 -2)📝
src/setupEnvironment.test.ts(+30 -0)📝
tests/boundary/cli/cliSetup.test.ts(+18 -4)➕
tests/boundary/cli/packageRunnerRegistration.test.ts(+70 -0)📝
tests/boundary/filesystem/clientConfigurationDialects.test.ts(+10 -0)📝
tests/boundary/filesystem/windowsNpxRegistration.test.ts(+55 -43)📄 Description
Summary
bunx rea-agents setupis Bun's version of the README quick start,npx rea-agents setup. When run that way, setup registered the bin inside Bun's temporary bunx cache. That registration stops working once the cache is cleared. Setup now detects a bunx (orbun x) launch and registers the pinnedbunx rea-agents@<version> mcplauncher, handled the same way as the existing npx launcher. Doctor, update maintenance, and uninstall treat the bunx launcher as REA-owned. Setup's printed next steps now saybunx rea-agentswhen setup was started through bunx.The fix also covers a Windows-only cause that affected npx as well. The CLI's environment snapshot upper-cases variable names on Windows, so the old lookup of
environment.npm_commandnever matched there. As a result, setup run through npx on Windows also registered the cache path, notcmd.exe /d /c npx -y rea-agents@<version> mcp.No issue is linked. The problem was found by running
bunx rea-agents@6.4.0 setupon Windows.Problem and expected behavior
Trigger (observed on Windows x64, Bun 1.4.2, published 6.4.0):
The broken invariant: a persistent registration must not depend on a package runner's temporary cache. Setup already does this for npx (
setupRegistrationCommand→npxRegistrationCommandwhennpm_command === "exec").Two causes, both confirmed by testing:
npm_command=execvariable as npx, plusnpm_config_user_agent=bun/1.4.2 npm/? node/v26.3.0 win32 x64andnpm_lifecycle_event=bunx. A probe bin run viabunx --package file:<tgz>, and a--preloadprobe run throughbunx rea-agents@6.4.0andbun x rea-agents@6.4.0, all showed these values. Before this change REA could not tell bunx apart from npx. On POSIX it would have registered annpxlauncher, which needs npm on the machine.snapshotEnvironmentupper-cases keys (NPM_COMMAND), soenvironment.npm_commandwas alwaysundefined. Setup then fell back to the directprocess.execPath+process.argv[1]registration, and under any package runnerargv[1]is in that runner's cache. The same snapshot also meantrunUpdateCommand'sdelete environment.npm_commanddid nothing on Windows.Expected: setup run through bunx/
bun xregistersbunx rea-agents@<version> mcp(cmd.exe /d /c bunx rea-agents@<version> mcpon Windows). Setup run through npx registers the npx launcher on every platform. Direct installs keep their current registration.Change and scope
ClientRegistrationIdentity.ts(application layer, which already owns the npx launcher identity):PackageRunner = "npx" | "bunx".invokingPackageRunner(environment, platform)readsnpm_commandandnpm_config_user_agent. On Windows the lookup ignores case.execwith abun/user agent →bunx;execwith anything else →npx(same as before); otherwise none.bun runreportsnpm_command=run-script(checked), so it is not detected as a runner.packageRunnerRegistrationCommand(runner, platform)buildsnpx -y <spec> mcporbunx <spec> mcp, wrapped incmd.exe /d /con Windows.npxRegistrationCommandnow calls it, so the npx launcher stays one definition.isOwnedClientRegistrationCommandalso acceptsbunx rea-agents[@<exact version>] mcp, with or without thecmd /c/cmd.exe /d /cwrapper. Other bunx shapes, other packages, and extra arguments are still not owned.withoutPackageRunnerIdentitytakes over the update subprocess's removal ofnpm_command, ignoring case on Windows.SetupHost.setupRegistrationCommand(platform, packageRunner)takes the detected runner instead of a boolean.ClientRegistrationStatusreports either runner's exact launcher asaligned.interactiveSetupprintsnpx rea-agentsorbunx rea-agents, matching the runner, in its next-step hints.docs/installation.md(start setup, Windows registrations, update/remove, MCP Registry note) and the README update section now mention bunx.Why
bunx rea-agents@<version> mcpand not Bun's absolute executable (<bun.exe> x rea-agents@<version> mcp):PATH, the version is pinned, and on Windows it goes throughcmd.exe /d /c. That keeps one ownership, alignment, and uninstall rule for both runners.cmd.exewrapper also works whenbunxis a.cmdshim (Bun installed through npm or another shim manager). A standard Bun install ships a realbunx.exe, and the smoke run below used it.process.execPathcan point to a versioned install path, such as a Homebrew Cellar directory, that disappears when Bun is upgraded. Writing it into the registration would swap one unstable path for another.--bunflag, so bunx uses the same runtime for the registered server that it used for setup.Not included:
rea updatestill updates only npm global installs, and its remediation text for other installs still mentionsnpx rea-agents@latest. Detecting a runner forrea update, the npm-onlyinstall.sh, and the MCP RegistryruntimeHint(which staysnpx) are unchanged.Contract and boundary impact
src/application/ClientRegistrationIdentity.ts, when setup builds the registration command.aligned.cmd.exe /d /cwrapper, as the npx launcher already does. POSIX clients getbunxdirectly.npm_commandremoved on Windows too, as the code already intended.docs/public/product-catalog.json), package, or installation impact: none. No generated files changed.Evidence and regression coverage
tests/boundary/cli/packageRunnerRegistration.test.ts(new): for npx and bunx environments, runs the real built CLIsetup --client omp --no-skill --yes --jsonin an isolated HOME. It checks that the written command equals the runner launcher for the host platform, thatdoctor --client omp --jsonreportsaligned, and that a repeatedsetup --dry-runplans nothing. On Windows this goes through the real CLI environment snapshot, so the upper-cased-variable bug is covered too.src/setupEnvironment.test.ts: a Windows-canonicalized snapshot (NPM_COMMAND,NPM_CONFIG_USER_AGENT) resolves to the right runner and setup registration, andwithoutPackageRunnerIdentityremoves the upper-cased key. This test fails on the base revision, where the lookup misses the upper-cased key.tests/boundary/filesystem/windowsNpxRegistration.test.ts: the Codex TOML align/idempotency/uninstall test now runs for both runners. Invalidbunxcommand shapes stay retained on uninstall. The native.cmdshim test now starts both annpx.cmdand abunx.cmdregistration as a stdio MCP server through the MCP client SDK (Windows only).tests/boundary/filesystem/clientConfigurationDialects.test.ts: bunx ownership for prior exact versions, and rejection of foreign bunx packages.tests/boundary/cli/cliSetup.test.ts: the completion hint printsbunx rea-agentsfor a bunx launch.Setup.configuration.test.tsandSetup.fixture.ts.bun x, andbun runlaunches as described in "Problem".Add the REA MCP registration for OMP; preserve unrelated configuration. Command: "cmd.exe" "/d" "/c" "bunx" "rea-agents@6.4.0" "mcp".npxrun. Node.js and npm are not installed on this machine, so the Windows npx fix is covered by the snapshot unit test, the boundary test's simulated npx environment, and thenpx.cmdshim test. bunx on macOS/Linux was not run locally. POSIX behavior is covered by CI running the same boundary test.Validation performed
All local validation ran under Bun 1.4.2 on Windows x64 without Node.js or npm installed. CI covers Node.
bun --bun run compileandbun --bun run artifacts:skills— passed.bun --bun run typecheck— passed.bun --bun run lint— exit 0. No new warnings. TheisOwnedClientRegistrationCommandcomplexity warning present on the base is gone, and the existingregistrationAlignedcomplexity warning dropped from 32 to 31.bun --bun node_modules/.bin/oxfmt --check <changed files>— all files formatted.bun --bun run test:local -- src/setupEnvironment.test.ts src/application/Setup.configuration.test.ts src/application/Update.test.ts— 45 passed.bun --bun node_modules/vitest/vitest.mjs run tests/boundary/cli/packageRunnerRegistration.test.ts tests/boundary/filesystem/windowsNpxRegistration.test.ts tests/process-global/updateMaintenance.test.ts— all passed (2 + 7 + 17), including the newnpx.cmdandbunx.cmdstdio MCP launches.bun --bun node_modules/vitest/vitest.mjs run tests/boundary/cli/cliSetup.test.ts tests/boundary/filesystem/clientConfigurationDialects.test.ts— the new and changed cases pass (three completion-hint cases; the bunx ownership assertions run before the existing POSIX-path assertion). 28 other tests in these files fail the same way on the unmodified base under Bun on Windows (POSIX path expectations and the interactive journey harness), so these failures predate this change.bun --bun node_modules/vitest/vitest.mjs run tests/boundary/filesystem/clientRegistrationStatus.test.ts tests/boundary/filesystem/setupConfig.test.ts tests/boundary/filesystem/ompClientConfiguration.test.ts tests/boundary/filesystem/hermesClientConfiguration.test.ts— 13 failures, the same 13 as on the unmodified base under Bun on Windows.bun --bun run test:local -- src/application/Setup.initialSnapshot.test.ts src/application/Setup.planning.test.ts src/application/Setup.recovery.test.ts— 2 failures inSetup.planning.test.ts, also the same on the base.bun --bun node_modules/vitest/vitest.mjs run tests/conformance/readmeConsistency.test.ts— 2 passed.bun --bun run docs:check:built(afterartifacts:product-catalog,artifacts:error-schema,artifacts:mcp-catalog,artifacts:managed-evidence) — passed. (docs:checkitself fails before running any checks becausecheck-dependency-install.mjsrequires npm'snode_modules/.package-lock.json.)C:\rea-bunx-smoke-6e3fas cwd, withHOME,USERPROFILE,APPDATA,LOCALAPPDATA, andBUN_INSTALLall pointed inside it. The patched package was packed withbun pm pack --ignore-scripts.bunx --package file:<tgz> rea setup --client omp --yes --json→status: ready.home\.omp\agent\mcp.jsoncontains{"type":"stdio","command":"cmd.exe","args":["/d","/c","bunx","rea-agents@6.4.0","mcp"]}, with no reference to the bunx temp cache.bunx --package file:<tgz> rea doctor --client omp --json→identity.registrations: [{client: "omp", command: ["cmd.exe","/d","/c","bunx","rea-agents@6.4.0","mcp"], state: "aligned"}].cmd.exe /d /c bunx rea-agents@6.4.0 mcp) and sent JSON-RPC over stdio.initializereturnedserverInfo {name: "rea", version: "6.4.0"}with protocol2025-06-18.tools/listreturned 170 tools. The registered pin resolves the published 6.4.0 from the registry, since the packed build has the same version number.bunx --package file:<tgz> rea uninstall --json→status: complete. Thereaentry was removed from the OMP config.Compatibility, safety, and release
bunx.exe) and a real MCP stdio launch. No provider is involved.bunxthroughcmd.exe /d /c, with fixed arguments and a pinned exact version, the same as the npx launcher. Ownership matching rejects shell-joined or extra-argument variants, and tests cover that. The update subprocess now drops the runner marker on Windows as well.Review checklist
type(scope): outcome.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.