Yichen Jiang
d247c50c6f
fix(web): return every service a host row injects, and run the browser lane
...
The browser e2e lane had been failing wholesale since this stack moved the
agent plane into presets, and nothing caught it: 34 of 48 files. Two of the
causes are product defects, not test breakage.
`bashEnv` goes back to the host plane. `apps/cli/src/web.ts` injects it to
publish `DSH_WEB_URL`/`DSH_WEB_MODE`, so the earlier note that "nothing outside
the agent plane injects bashEnv" was simply wrong — behind a preset's `shell`
realm those variables reached no shell at all, and a `dsh web` agent could not
find the address of its own interface. This is the same criterion that returned
`subagents`: a host row that injects a service resolves before any session
exists and has no agent to key by, so the service is host-plane. `tool-bash`
consumes the host registry from inside the preset, which works because an
agent context chains to the host; only the reverse is invisible.
`tool-subagent-report` goes back with it. It is not a tool this agent calls: it
registers a continuable SETUP on the host `subagents` singleton, and that list
is not scope-aware. One copy per mounted preset meant every child was handed
`report` once per live session, so the second registration threw and a cold
subagent resume failed with `subagent-not-resumable` — a diagnostic three
layers removed from the cause.
The lane's own composition facts follow. Skill roots resolve inside a preset
now, a subtree include patches cannot reach, so the scaffold pins the roots'
documented environment fallback for its whole lifetime rather than for the boot
— presets mount per session. Without it the developer's real `~/.dsh/skills`
enters replay requests and goldens while CI sees none. The `apps/cli`
composition test pins `storage-json` for the same reason: unpinned it wrote,
and then read back, the developer's own `~/.dsh/storages/`.
Three tests now address through an agent what they used to read off the root
context, because that is where the thing lives: the tool catalog, the skill
registry, and the token meter. The seeded-history projection baseline asserts
the opposite of what it did — a detached session yields a preset-plane
projection only from a durable checkpoint written while it was live, and this
seed was written straight to persistence and never ran.
Goldens re-recorded for the hero's preset chip and the settings nav entry.
2026-08-07 00:42:25 +08:00
..
2026-08-05 13:09:53 +08:00
2026-08-03 16:04:26 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 00:00:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 11:04:03 +08:00
2026-07-23 19:33:30 +08:00
2026-07-23 19:48:00 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 18:42:13 +08:00
2026-07-26 22:45:33 +08:00
2026-08-04 18:42:13 +08:00
2026-08-06 04:11:57 +08:00
2026-08-06 04:11:57 +08:00
2026-08-06 04:11:57 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 23:06:00 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-30 13:49:57 +08:00
2026-08-05 13:09:53 +08:00
2026-08-05 13:09:53 +08:00
2026-08-03 16:04:26 +08:00
2026-08-05 13:09:53 +08:00
2026-08-06 04:11:58 +08:00
2026-08-06 04:11:58 +08:00
2026-08-06 04:11:58 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 23:43:10 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-02 12:51:09 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 22:16:40 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 23:06:00 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 04:14:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-08-03 16:04:26 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 23:43:10 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 00:00:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 02:33:29 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 12:43:59 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 02:33:29 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-23 19:33:30 +08:00
2026-08-04 17:36:14 +08:00
2026-08-02 20:09:05 +08:00
2026-08-02 20:09:05 +08:00
2026-08-02 20:09:05 +08:00
2026-08-05 10:57:53 +08:00
2026-07-26 02:33:29 +08:00
2026-08-05 10:57:53 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-05 13:09:53 +08:00
2026-07-30 18:27:36 +08:00
2026-08-05 13:09:53 +08:00
2026-08-03 12:25:33 +08:00
2026-08-03 10:56:09 +08:00
2026-08-03 10:56:09 +08:00
2026-08-04 20:54:42 +08:00
2026-07-24 01:40:25 +08:00
2026-08-04 20:54:42 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 18:42:13 +08:00
2026-07-26 13:13:53 +08:00
2026-08-04 18:42:13 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 01:40:25 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-04 17:36:14 +08:00
2026-07-23 03:15:15 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 16:07:35 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-03 22:04:53 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 10:40:31 +08:00
2026-08-06 10:40:31 +08:00
2026-08-06 10:40:31 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 21:20:06 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 15:49:09 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-25 16:43:07 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 21:02:28 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 14:36:31 +08:00
2026-08-04 14:36:31 +08:00
2026-08-04 14:36:31 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 13:42:02 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 21:50:11 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 21:02:28 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 16:49:55 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 03:20:20 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 12:09:48 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 03:54:33 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 02:33:14 -07:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 04:14:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 12:17:45 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 11:04:03 +08:00
2026-07-29 23:45:42 +08:00
2026-07-29 23:45:42 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 03:52:41 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 20:54:42 +08:00
2026-07-28 17:02:39 +08:00
2026-08-04 20:54:42 +08:00
2026-08-03 13:45:30 +08:00
2026-08-03 13:45:30 +08:00
2026-08-03 13:45:30 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 10:11:38 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 01:14:25 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 13:49:35 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 14:09:04 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-29 13:15:24 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 17:22:15 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 01:30:29 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 13:49:57 +08:00
2026-07-30 13:49:57 +08:00
2026-07-30 13:49:57 +08:00
2026-07-30 21:49:58 +08:00
2026-07-30 21:49:58 +08:00
2026-07-30 21:49:58 +08:00
2026-07-31 17:39:51 +08:00
2026-07-31 17:39:51 +08:00
2026-07-31 17:39:51 +08:00
2026-07-30 18:07:35 +08:00
2026-07-30 18:07:35 +08:00
2026-07-30 18:07:35 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 19:24:21 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 01:30:29 +08:00
2026-08-04 17:36:14 +08:00
2026-08-03 20:36:26 +08:00
2026-08-03 20:36:26 +08:00
2026-08-03 20:36:26 +08:00
2026-08-02 01:25:02 +08:00
2026-08-02 01:25:02 +08:00
2026-08-02 01:25:02 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 11:00:07 +08:00
2026-08-04 17:36:14 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-05 15:34:51 +08:00
2026-08-05 15:34:51 +08:00
2026-08-05 15:34:51 +08:00
2026-08-05 20:26:46 +08:00
2026-08-05 20:26:46 +08:00
2026-08-05 20:26:46 +08:00
2026-07-31 22:52:18 +08:00
2026-07-31 22:52:18 +08:00
2026-07-31 22:52:18 +08:00
2026-08-02 01:11:08 +08:00
2026-08-02 01:11:08 +08:00
2026-08-02 01:11:08 +08:00
2026-08-07 00:42:25 +08:00
2026-08-07 00:41:50 +08:00
2026-08-07 00:41:50 +08:00
2026-08-05 18:54:47 +08:00
2026-08-05 18:54:47 +08:00
2026-08-05 18:54:47 +08:00
2026-08-06 15:18:17 +08:00
2026-08-06 15:18:17 +08:00
2026-08-06 15:18:17 +08:00
2026-08-05 20:55:39 +08:00
2026-08-05 20:55:39 +08:00
2026-08-05 20:55:39 +08:00
2026-08-04 16:42:50 +08:00
2026-08-04 16:42:50 +08:00
2026-08-04 16:42:50 +08:00
2026-08-06 10:40:32 +08:00
2026-08-06 10:40:32 +08:00
2026-08-06 10:40:32 +08:00
2026-08-06 17:28:30 +08:00
2026-08-06 17:28:30 +08:00
2026-08-06 17:28:30 +08:00
2026-08-06 10:19:51 +08:00
2026-08-06 10:19:51 +08:00
2026-08-06 10:19:51 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 14:58:33 +08:00
2026-08-06 14:58:33 +08:00
2026-08-06 14:58:33 +08:00
2026-08-06 16:38:25 +08:00
2026-08-06 16:38:25 +08:00
2026-08-06 16:38:25 +08:00