|
|
@@ -1,5 +1,5 @@
|
|
|
---
|
|
|
-description: "Shared TypeScript declarations for package.json.dsh metadata, usable by boot, client, build, and external packages."
|
|
|
+description: "Shared TypeScript declarations for package identity, runtime requirements, and DSH plugin metadata."
|
|
|
kind: "package-library"
|
|
|
---
|
|
|
|
|
|
@@ -9,7 +9,7 @@ English | [中文](README.zh.md)
|
|
|
|
|
|
## Summary
|
|
|
|
|
|
-Use `DshManifest` to type a package's Harness metadata, or a member type such as `DshClientManifest` for one declaration. Boot, client, build, and external packages import the same types; each reader owns JSON validation and default resolution.
|
|
|
+Use `DshPackageManifest` for package metadata, `DshManifest` for the public fields under `dsh`, and member types such as `DshClientManifest` for one domain. Each reader owns JSON parsing, validation, and default resolution.
|
|
|
|
|
|
## Table of Contents
|
|
|
|
|
|
@@ -28,29 +28,33 @@ Use `DshManifest` to type a package's Harness metadata, or a member type such as
|
|
|
Import from the package root. Use a development dependency when only checking your own source; use a production dependency if your published declarations reference these types.
|
|
|
|
|
|
```ts
|
|
|
-import type { DshClientManifest, DshManifest } from '@deepseek-ai/dsh-package-manifest'
|
|
|
+import type { DshClientManifest, DshPackageManifest } from '@deepseek-ai/dsh-package-manifest'
|
|
|
|
|
|
const client: DshClientManifest = { platform: 'web' }
|
|
|
-const dsh: DshManifest = {
|
|
|
- manifestVersion: 1,
|
|
|
- categories: ['skills', 'tools'],
|
|
|
- engines: { dsh: '0.1.5-alpha.1' },
|
|
|
- bundle: { patch: './cordis.patch.yml' },
|
|
|
- client,
|
|
|
+const manifest: DshPackageManifest = {
|
|
|
+ name: 'example-dsh-plugin',
|
|
|
+ version: '1.0.0',
|
|
|
+ engines: { node: '>=24', dsh: '0.1.5-alpha.1' },
|
|
|
+ dsh: {
|
|
|
+ manifestVersion: 1,
|
|
|
+ categories: ['skills', 'tools'],
|
|
|
+ bundle: { patch: './cordis.patch.yml' },
|
|
|
+ client,
|
|
|
+ },
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-`DshManifest` describes `package.json.dsh`; npm fields such as `name`, `version`, and `engines.node` stay at the package root. TypeScript checks this object and erases `import type` during compilation; JSON files cannot import types, and this example does not write a `package.json`.
|
|
|
+`DshPackageManifest` describes the package.json fields used by DSH, with required `name` and `version`; it is not an exhaustive npm schema. Local profile readers use `Partial<DshPackageManifest>` because profiles need no published version. `DshManifest` describes only public author fields under `dsh`. TypeScript checks the example and erases `import type`; these interfaces do not parse JSON or write a file.
|
|
|
|
|
|
-All three author metadata fields are optional. Omitting them leaves the format version, tags, or compatible host versions undeclared; readers do not infer defaults.
|
|
|
+The following metadata fields are optional. Omitting them leaves the format version, tags, or compatible host versions undeclared; readers do not infer defaults.
|
|
|
|
|
|
| Field | Meaning |
|
|
|
|---|---|
|
|
|
-| `manifestVersion` | Manifest format identifier; the declared format is `1`, independent of the npm package version and Session format version. |
|
|
|
-| `categories` | Free-form discovery tags such as `skills` and `tools`, with no fixed taxonomy or effect on plugin loading. |
|
|
|
-| `engines.dsh` | Author-declared compatible DSH versions as a SemVer range. An exact prerelease version is valid; the `dsh` member is required when `engines` is present. |
|
|
|
+| `dsh.manifestVersion` | Manifest format identifier; the declared format is `1`, independent of the npm package version and Session format version. |
|
|
|
+| `dsh.categories` | Free-form discovery tags such as `skills` and `tools`, with no fixed taxonomy or effect on plugin loading. |
|
|
|
+| `engines.dsh` | Author-declared compatible DSH versions as a SemVer range, including exact prerelease versions. This field sits beside `engines.node` and `engines.npm`; an engines object may omit `dsh`. |
|
|
|
|
|
|
-Composition and build declarations are defined in [`src/types.ts`](src/types.ts). `moduleFallback` is launcher-generated metadata and is not an author configuration entry.
|
|
|
+Public composition declarations are defined in [`src/types.ts`](src/types.ts). Internal `configTrees`, `sessionFormatMigration`, and generated `moduleFallback` metadata remain owned by their image-packer, catalog, and launcher readers; the public types do not expose them.
|
|
|
|
|
|
-----
|
|
|
|
|
|
@@ -70,7 +74,7 @@ The package root only re-exports declarations from [`src/types.ts`](src/types.ts
|
|
|
## Further Exploration
|
|
|
|
|
|
- [Profile launcher](../../boot/app-boot/README.md#profiles) — manifest loading and composition.
|
|
|
-- [Declaration ownership](../../../.agents/notes/implemented/architecture/2026-09-05-package-manifest-types.md) — scope and dependency rationale.
|
|
|
+- [Public package metadata](../../../.agents/notes/implemented/architecture/2026-09-10-public-package-manifest.md) — field placement and reader ownership.
|
|
|
|
|
|
<a id="model-experience"></a>
|
|
|
## Model Experience
|
|
|
@@ -85,8 +89,8 @@ Type declarations add no model input, so provider cache reuse is unaffected.
|
|
|
|
|
|
<a id="known-limitations-and-deferred-work"></a>
|
|
|
|
|
|
-- **Static typing only.** These declarations do not validate JSON, check file existence, or supply defaults. `configTrees` serves the experimental image packer, and `sessionFormatMigration` is discovered only for workspace migration packages; declaring them does not register external plugin behavior.
|
|
|
-- **Compatibility is declarative.** Current installers and loaders do not enforce `manifestVersion` or `engines.dsh`; declaring a range does not reject incompatible hosts or validate SemVer syntax.
|
|
|
+- **Static typing only.** Consumers read and validate the JSON fields they use, then adapt the shared declarations to their runtime data. The package supplies no parser, getter helpers, file checks, or defaults.
|
|
|
+- **Compatibility is declarative.** Current installers and loaders do not enforce `dsh.manifestVersion` or `engines.dsh`; declaring a range does not reject incompatible hosts or validate SemVer syntax.
|
|
|
|
|
|
<a id="dev-note"></a>
|
|
|
### Dev Note
|