deepseek-harness/apps/web
Yichen Jiang 89ae94d89f fix(web): stop leaking ask_user_question into every preset
`ui-question`'s node half called `ctx.tools.register` on the host context.
`ScopedLayers.merge()` combines the global layer with the agent's exact-scope
layer, and an unscoped registration lands in the global one — so the tool
reached every agent no matter which preset composed it. `core-web`, sold as a
two-tool benchmark surface, really presented three.

Rendering a question is a host UI capability; having the tool is an agent
capability, and only a preset decides that. The node half is now empty and the
`tool-ask-user` row moved into the preset that wants it. The TUI keeps its own
row, having no presets.

The composition tests now assert the global tool layer is EMPTY, which is the
invariant that would have caught this: any tool outside a preset reaches every
agent. The browser lane's composition, seeded-history, and hermetic-skill
assertions address their registries through a composed agent for the same
reason — those services are per session now, and the host cannot resolve an
`isolate` realm by name.
2026-08-07 02:57:30 +08:00
..
public feat(web): add favicon and update IconActions behavior 2026-07-30 19:59:16 +08:00
src Merge remote-tracking branch 'origin/master' into codex/trim-redundant-comments 2026-07-25 13:06:40 +08:00
stress-tests test(web): add opt-in reasoning chunk stress lane 2026-08-04 14:37:31 +08:00
tests fix(web): stop leaking ask_user_question into every preset 2026-08-07 02:57:30 +08:00
index.html feat(web): add favicon and update IconActions behavior 2026-07-30 19:59:16 +08:00
package.json feat(web): move the agent plane behind per-session presets 2026-08-07 00:35:30 +08:00
tsconfig.json fix(web): link inline-code URLs 2026-08-06 11:41:46 +08:00
vite.config.ts build(web): react-free vendor list for the incremental markdown pipeline, npmPackageOf scoped guard, chunk audit script 2026-08-06 16:38:25 +08:00