Repository navigation
Conversation
Size Report
Startup median (7 runs, lower is better):
|
|
Reviewed 7c10533. The refactor looks sound, but the macOS helper route has no live run, and typecheck fails against current main. Typecheck fails with TS2741 because of a real semantic conflict. This PR makes The macOS helper and native-app routes changed, but the PR's live run covers only the iOS simulator runner route. The env is now threaded into runMacOsHelper, the ghost-cursor and helper-path overrides, and the native-app backend choice. That choice now reads Not blocking, and you can take or leave these: (1) the Apple runner host slot (runner-host.ts:78) feeds about 20 runner config reads, yet every test binds it to the live env or Could the env be bound when the local Linux and Apple tool providers are built (for example I did not review every Linux, Vega and web leaf for a missed host thread, though the required parameter types turn a miss into a compile error. Some ambient Before merge, please rebase onto 11de319 and pass |
7c10533 to
17ac24f
Compare
|
All items from the 12:41Z review applied. Rebased onto Blocking
Contract (0.21.x additive)
Simplify
Tests and hygiene
Also noted
Gate: |
17ac24f to
0968cb7
Compare
|
Coverage failure on The job was not a coverage gap: the
Live macOS evidence and the item-by-item replies above are unchanged by this push (the diff only reverts MCP test-file stubs). |
|
One remaining issue at P1 — Linux host isolation: Please bind display configuration to the runtime host/provider at construction and scope the input-tool cache to that owner (or remove the cache if it is unnecessary). Reuse one display detector for input, clipboard and screenshot selection. Keep env out of individual port methods. Add an A(X11) → B(Wayland) → A test with independent explicit hosts and an opposing process env, without cache resets between calls. The gate in #3753 must not exempt these configuration reads as command execution. This corrects the coordinator's earlier ruling; the PR's macOS evidence and exact-head validation receipt remain useful. I have inspected this path read-only and have not run a Linux device session. |
|
Reviewed 0968cb7. Two Linux and Vega configuration reads still depend on process-wide stored state, so the host is not the only source of configuration yet. The CI checks are green: 17 checks, 0 failing at 0968cb7. The earlier Coverage failure (the test-file-size limit on command-tools.test.ts) is fixed by the MCP stub revert. Before merge, the Linux and Vega tool providers need to be bound to their host. The first problem is in linux-env.ts. The Linux plugin's createInteractor drops the host it receives (register-builtins.ts:35). The second problem is the same rule in the Vega tool provider. Not blocking, and you can take or leave these: the "scoped ? resolveWebProvider() : createAgentBrowserWebProvider({host})" rule appears three times (platform-web interactor.ts:20, network-web-transport.ts:14 and audio-probe-host.ts:68), so one Could the host the plugin port already delivers be enough here? If On evidence: the live macOS run was on 17ac24f, which I could not find locally, so I did not confirm that the range to 0968cb7 touches only MCP test files. The native-backend live run starts the daemon with its own process env, so it cannot tell the runtime host from the process env. The unit daemon-composition test carries that proof, and I did not re-run it. I did not run a two-runtime Linux or Vega session; both findings come from reading the code, and the memo key and singleton resolution are confirmed by grep. The macOS evidence the PR needs is in place. No conflicts are known. |
|
Coordinator note for the #3794 owner. The 16:35Z review is only partly covered by the local round I see (
When done, post one comment that maps each item to its commit. |
0968cb7 to
613e66b
Compare
|
Linux host-isolation P1 from the coordinator review fixed and pushed as What changed:
Validation: |
613e66b to
5b1d1a5
Compare
|
Round 3 — the 16:35Z review items and the four remaining items from the 17:23Z note, each mapped to its commit at head 1. Linux input-tool memo on the provider instance; reset helper dropped — 2. Vega host bound at the plugin route — 3. One web provider policy — resolver added in 4. PR body + commit titles — body rewritten at this push. Boundary reads are now exactly the two Two dead-code removals the fallow gate flagged on this round's diff: the Evidence notes: on the live-run observation — agreed, the native-backend refusal run starts the daemon from its own process env, so it cannot separate runtime host from process env there; the composed-route proof stays the
|
5b1d1a5 to
22ce597
Compare
|
Coverage failure on The Coverage gate flagged |
Summary
Every non-test configuration read on the converted routes now takes an explicit
HostEnvironmentinstead of the ambientcommandHostEnvironment():34ambient reads outside host-kit command execution became required-host parameters, per-runtime state, or construction-bound ports. The boundary reads are twowhichCmdPATH lookups — applewhichCommandand linuxwhichOnPath— which read the command-host scope (the runtime host plus the per-request env overlay) at the point of spawning a host command. They are part of the command-execution boundary that #3753's gate will allow; they are not configuration owners. Two out-of-composition fallbacks remain, each reading the command host at call time with no module-level memo, and each unreachable from a composed runtime because that runtime's interactor always enters the provider bound to its own host: the Linux display decision for standalone leaf callers, and the Vega executable lookup for the host-diagnostics route.Every platform package now derives display, tool, and home configuration from the host bound at construction of its local tool provider, and every memo lives on that owner: the Linux interactor builds
createLocalLinuxToolProvider({ host })per instance and owns its display decision and input-tool selection on that object (no module cache, no reset helper); the Vega plugin buildscreateLocalVegaCliAdapter(host)per interactor and resolves the executable from that host's PATH and HOME with an instance memo (host.env.HOME, notos.homedir()); the Apple runner reads its configuration through the per-runtime host slot entered by the daemon route.platform-webexports one policy for the provider of a web request,resolveWebProviderForHost(host)— request-scoped provider wins, else the agent-browser provider bound to the composing host — and the interactor, the network transport and the audio probe all resolve through it, so every reader of one web request agrees on one provider. The un-scoped fallback stays fail-closed (web-provider-missing).Work is split into four commits by layer: contracts + shared test-kit, Apple, Linux/Vega/web/HarmonyOS, root composition.
Part of #3747. Part of #3794 — part 2 (one entered runtime store, collapsing the per-module
runtimeStatesaggregation) is the next PR.Validation
22ce5974cd:pnpm check:affected --run --headpassed (receiptrun-i6wvDF),exactCommit=true.commandHostEnvironment()reads outside host-kit: 34 at basec966724bea→ 2 spawn-boundwhichCmdPATH lookups + 2 memo-less out-of-composition fallbacks (Linux display for standalone leaves, Vega executable for host diagnostics) at head. For composed runtimes none of these is a configuration read: display, tool and home configuration is bound at provider construction from the runtime host.DebugSymbolsOptions.cwdstays optional andAgentDeviceClientgains nohost; the CLI and MCP surfaces pass their own captured host env intoformatCliOutput.interactors.test.ts); the composed daemon route configures interactors from its host, not the process (daemon-composition.test.ts); two runner runtime states with differentAGENT_DEVICE_IOS_RUNNER_LEASE_DIReach resolve their own value and neither the process value, plus a read outside any entered runtime refusing withapple_runner_host_unbound(runner-lease-runtime-host.test.ts,runner-owner-state.test.ts); theweb-provider-missingrefusal for every un-scoped web provider operation (provider-composition-fallback.test.ts); two interactors on different hosts keep their own display decision and input-tool selection across A(X11) → B(Wayland) → A with an opposing process env and no cache resets (interactor-host-isolation.test.ts); two Vega hosts resolve the CLI executable from their own PATH and HOME, each adapter memoizes on its own instance, and neither reuses the other's answer (tool-provider-host-isolation.test.ts).CI obligations
Full CI on this head; device lanes run there. The macOS helper lane and the native-backend refusal were run live on
17ac24fb79— see the evidence comment; the Apple routes are unchanged since.Unresolved risks
None known beyond the review.