* feat(preset): declare Agent compositions in profile YAML * fix(preset): share scope binding cleanup and refresh module graph * fix(preset): use host syntax colors in the YAML editor * fix(preset): write new profile declarations as block YAML * fix(preset): align eager activation with browser and worker surfaces * fix(ui-agent-preset): retain the existing preset card layout * fix(preset): keep rows waiting for a Host service mounted and re-audit after settlement A preset row whose Host provider was still activating at declaration time was reported as waiting for a missing service, and the registry recorded the definition as broken for the rest of the process. Split the mount audit into failed and pending rows: failures and root-realm leaks still reject the mount, while pending rows stay mounted and every read and binding re-audits them after the Host Loader tree settles. Remove the accidental self-dependency of @deepseek-ai/dsh-web-app and its lockfile self-link. Archive the copy-only preset authoring note, which the declarative-preset note fully supersedes, and update the ralph note's restore recipe to the profile-patch mechanism. * chore(lint): re-key and prune the unknown-cast baseline after the master merge * refactor(web-app): ship each Agent preset as its own bundle patch file `dsh.bundle.patch` accepts an ordered file list, so the four shipped preset declarations move out of the 1000-line web patch into `presets/<id>.patch.yml`, one insert per file, applied after the host patch. The host patch keeps the preset registry row. Gates and test scaffolds that read the web layer resolve every patch file through `bundlePatchPaths` instead of one hardcoded path. * refactor(preset): drop the save notice injected into live Agents The notice duplicated the save result the Web editor already shows, and after the producer-owned message sources it would have needed its own persisted source kind. Saving now only persists and reports the activation diagnostic; the persistence catalog is unchanged from master. * docs: regenerate the module graph after dropping the registry's llm dependency * test(ui-agent-preset): cover the guide dialog's keyboard handling on the declarative section * fix(preset): address the remaining review comments Apply the lowercase id rule only when creating a declaration, so presets declared with other ids stay editable. Export `isBuiltInPreset` from the display fold and key the client card groups on it. Remove the dead `error` and `retry` locale keys, the JSDoc orphaned by the `trust` removal, the `trust` fields in the plugin-inventory test fixtures, and the stale `dsh-agent-presets` package name in comments and READMEs. * refactor(preset): make the Web preset page view-and-select only Remove the child-plugin YAML editor, the `agent_preset` tool and the registry's read/save Remote methods. Presets are declared and changed only by bundle patches; the settings page keeps the roster, the new-task default and the mode help, and its question icon explains that and offers to start a Creator-mode task. The `editing-cordis-compositions` skill and the Creator persona describe the bundle-based path, and the authored skill-load Session and Web snapshots are refreshed for it. * docs(skill): make the composition skill self-sufficient for preset authoring State where the shipped declarations live, list every declaration field, inline a complete minimal bundle and an override example, and name the verification calls, so Creator mode no longer reads DSH package sources to infer the format. Refresh the authored skill-load Session for the new text. * test(tools): drop the removed agent_preset tool from the catalog expectation
description, kind
| description | kind |
|---|---|
| Host Remote owner for settings and credential configuration surfaces, including redacted reads, writes, credential references, and native document opening. | package-reference |
Settings Controller
English | 中文
Summary
@deepseek-ai/dsh-api-settings-controller exposes generated ctx.remote.settings and ctx.remote.credentials namespaces for browser configuration surfaces. It returns redacted settings and credential metadata, supports settings and credential writes without returning secret values, and opens provider-owned settings or Agent preset locations on the Host desktop. When a provider is absent, the namespace remains registered and returns an actionable configuration error.
Table of Contents
Use this package
Mount this package as a Loader entry in a profile that serves browser configuration. The entry registers both namespaces independently of their providers so a missing provider produces a named configuration error at invocation. Its generated descriptors enter the strict Typert registry, while the settings and credential Definitions remain plain Cordis Services with no wire obligations of their own.
describe(refs) answers one map keyed by the requested names, so a settings page describing every reference its rows carry settles those rows together. It accepts at most 64 names per call, reports an invalid name or empty write value as bad-request, and copies each answer field by field — a provider returning more than CredentialInfo declares cannot widen what crosses. Valid set(ref, value) and unset(ref) calls report a provider refusal as credential-rejected, carrying the provider's message with only the reference in its details. Secret values cross in this direction only: no method here returns one.
settings.describe() returns deployment facts and every namespace under redactSecrets: true. settings.update, settings.replace, and settings.mutate expose the settings service's three write operations and return the namespace's new redacted view; stale writes use settings-conflict and other provider refusals use settings-rejected.
settings.openSettingsDocument() prepares the provider-owned document and opens it with the native text editor; it accepts no browser-supplied filesystem target.
Configuration
| Field | Default | Meaning |
|---|
The generated configuration catalog is the exhaustive source for accepted fields and their JSDoc.
Model Experience
None, as settings and credential configuration are browser and Host state and register no prompt, tool, or session event.
KV Cache effect
No direct effect; reading or writing these configuration values does not alter model requests already in flight.
Known Limitations and Deferred Work
- The batch bound is fixed at 64 references and is not a deployment-configurable field.
Dev Note
Working context for maintainers — click to expand
None.
Runtime invariant: No companion is published. The settings and credential seams own storage and update events, while this package only projects their methods onto the wire.