Files
deepseek-harness/packages/settings
Yichen Jiang a5c8136cb3 feat(settings): layered descriptors and structural secret redaction
describe() now carries each namespace's detached composition base and raw
user section beside the resolved value — presence in the user layer is how
a form marks a field user-overridden — and describe({redactSecrets:true})
strips role('secret') fields from every layer while enumerating their
{path,set} slots, so a wire surface has no slot that can carry a secret.
The pure redactSecrets(schema,value) walker (object/dict/array containers,
secret-role subtree as opaque leaf, inputs never mutated) is exported for
any other wire; the README's no-redaction Known Limitation is discharged.
2026-07-29 16:50:05 +08:00
..

settings/ — user-settings capability family

English | 中文

The user-settings seam and its providers. The interface package owns the abstract Settings service — namespace registration, layered resolution, and change commits; providers implement raw-document storage and push external edits through the seam. All product packages.

Package Role ctx key
settings/ Settings seam: namespace registry, layered resolution, commit events ctx.settings
settings-local/ File-backed provider (settings.yaml/.json) with hot reload and comment-preserving write-back (registers ctx.settings)

The interface lives at settings/settings/; providers are flat siblings. A network configuration-center provider (for example a nacos-style backend) joins here and registers on ctx.settings. Composition config stays in cordis.yml: a settings namespace carries only the user-editable subset, resolved as schema defaults, then the registrant's composition base, then the user document.