master made `allowParallelInProgress` a required field on dsh-tool-todo, so every composition must choose it. The base patch was updated with the field, but the Web surface takes `tool-todo` from the mounted preset instead, and that row carried no config — so the `standard` preset failed to mount and every session on the Web surface died at setup. Also make the preset tree's write test reach the override. Tearing the agent down stops in the loader's own "tree is being disposed" case before any write; a live row reconfiguring itself is the trigger that actually gets there.
preset/ — per-session agent composition
English | 中文
An agent preset is a directory holding one agent.cordis.yml. Mounting it under an agent's scope context gives that session its own tools and prompt sections while every other live session keeps its own, so one process can run several differently composed agents at once.
| Package | Role | ctx key |
|---|---|---|
agent-presets/ |
Preset vocabulary, filesystem discovery over trusted and user-authored roots, and the guarded per-agent mount | ctx.agentPresets |
persona/ |
The agent persona as a composable row, so a preset can change identity and not only tools | — |
The composition split this group assumes: registries and cross-session facilities are process singletons and stay in the host composition, while a preset carries what one agent contributes to them. A preset that names a row publishing a process-global service is rejected at mount rather than allowed to collide with the next session.
Design: the per-session agent-preset note.