pzchenhui/teacher-workbench--packages-client-schema-form ↗★ 3

@deepseek-ai/dsh-client-schema-form

Schema/draft model layer for settings editors: rehydrates a serialized schemastery schema, validates drafts, and edits them immutably by path 适合需要构建设置编辑界面的开发者,提供与服务端一致的模式校验,不含渲染组件。

Package
@deepseek-ai/dsh-client-schema-form
Compatibility
Unverified
Harness peer range
workspace:^
Cordis peer range
workspace:^
Version
0.1.0-rc.7
License
MIT
Last updated
Sep 10, 2026

Other repositories with this package name

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

@deepseek-ai/dsh-client-schema-form

English | 中文

Schema/draft model layer for settings editors. The wire's settings.describe carries each namespace's serialized schemastery schema (schema.toJSON() ref envelope); rehydrateSchema turns it back into a live validator with new Schema(json) — the same schema object that validates a section on the host validates drafts in the browser, so client-side validation never drifts from the Service Definition's. Editors render their own controls (the Models page hand-writes its card around the fields it probes here); this package owns no React and no rendering.

Contract

The unit of editing is a draft user section: a plain object edited immutably (setPath materializes intermediates, deletePath is the per-field reset — dropping the key falls the resolved value back to the composition base and schema defaults). A field's presence in the draft marks it overridden (hasPath) — presence semantics, not value comparison, exactly mirroring the settings seam's layering. nodeAtPath resolves the schema node addressed by a configurable-provider directory settingsPath (object properties by name, dict entries through inner), so an editor can probe which fields a provider's profile carries (and their meta.role) before deciding what to render; an unresolvable path returns undefined so the caller degrades loudly instead of rendering a wrong subtree. validateDraft(schema, draft) runs the rehydrated validator and returns its failure message, letting pages reject an invalid draft before writing.

Model Experience

None, as this package backs browser configuration editors; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known Limitations and Deferred Work

  • Rehydration executes the served envelope — rehydrateSchema reconstructs a live schemastery validator, and schemastery revives serialized callbacks through new Function, so the schema envelope is executable content rather than inert data. This is safe only for an envelope from the same trusted host that serves the page; the protocol provides no inert cross-trust representation.
  • Validation is draft-level, not per-field — validateDraft reports schemastery's first failure message, including its $.path; it does not map errors onto individual controls.
  • No generic renderer — consumers build feature-specific forms over these helpers. The Web config-plane Agent Note records that trade-off.