feat(plugin-inventory): carry every agent preset's composition and group the settings plugin list by scope

The settings plugin list projected ctx.loader.entries() alone, hiding the
plugins sessions actually run and rendering the web overlay's deliberate
disabled tombstones (tool-bash, tool-fs, ...) as two dozen plainly disabled
rows while the same modules ran in every standard-preset session.

- dsh-agent-presets: compositionInventory() answers flattened rows per
  preset — newest live standing generation when mounted, composition file
  otherwise with !!js disabled gates evaluated against the Loader context;
  reading never mounts (regression-tested), refusal stays 'conditional',
  raced files report broken with the reason.
- dsh-host-plugin-inventory: list() gains an optional agentPresets block,
  resolving the roster as an optional peer and mapping fiber states to the
  public phase vocabulary.
- ui-settings-plugin-inventory: preset group first behind a display-only
  switcher opening on the default preset; global group collapsed with
  failures floated; host-disabled modules enabled by >=1 preset fold into a
  session-plugins drawer naming providers; search spans scopes and points
  at matches in unselected presets.
- ui-agent-preset: the General-settings default-preset row is deleted — the
  roster section's make-default and the new-session chip keep the field —
  and the settings store slims to the display roster the header label reads.

Docs, catalogs, module graph, settings-chrome goldens, and the bilingual
Agent Note ride along.
This commit is contained in:
Yichen Jiang
2026-08-29 17:13:45 +08:00
parent cd5ef81481
commit e5f36cc70f
52 changed files with 1769 additions and 824 deletions
+1
View File
@@ -656,6 +656,7 @@ export const TYPE_LINK_EXEMPTIONS: Readonly<Record<string, string>> = {
AgentPreset: 'discovered preset record is owned by packages/preset/agent-presets/README.md',
AgentPresetRoster: 'path-free preset roster is owned by packages/preset/agent-presets/README.md',
AgentPresetDocument: 'preset composition view is owned by packages/preset/agent-presets/README.md',
AgentPresetComposition: 'flattened composition rows are owned by packages/preset/agent-presets/README.md',
PresetMetadata: 'preset display text is owned by packages/preset/agent-presets/README.md',
BashEnvContributor: 'service-local extension type is owned by packages/shell/tool-bash/src/index.ts',
BashEnvVariableInfo: 'service-local metadata type is owned by packages/shell/tool-bash/src/index.ts',