@deepseek-ai/dsh-official-bundles 0.0.0-stage → 0.2.2-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DeepSeek
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,46 @@
1
+ # Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
2
+ # section, a hash of its English and Chinese blocks outside code blocks and generated regions.
3
+ # After editing either side, bring the other along and re-record with:
4
+ # pnpm run verify-translation-pairing --write packages/util/official-bundles/README.md
5
+ /:
6
+ en: 6ef5705aaf6fee34
7
+ zh: e587b9572fc644bf
8
+ /deepseek-ai-dsh-official-bundles:
9
+ en: 9095133679593012
10
+ zh: ac6b05dc3eff68b6
11
+ /deepseek-ai-dsh-official-bundles/summary:
12
+ en: fa3e54ab1672f7ea
13
+ zh: 6ab2abb75f1365b4
14
+ /deepseek-ai-dsh-official-bundles/table-of-contents:
15
+ en: 80b31a934611cb4a
16
+ zh: 05f3f7f9cb2fd881
17
+ /deepseek-ai-dsh-official-bundles/use-this-package:
18
+ en: 1cb89d16a6de115c
19
+ zh: 75925ae7a16278ad
20
+ /deepseek-ai-dsh-official-bundles/use-this-package/profile-templates:
21
+ en: 60ef21314c76c3ec
22
+ zh: f769091957235e12
23
+ /deepseek-ai-dsh-official-bundles/use-this-package/optional-and-retired-bundles:
24
+ en: 8d94e2b44efb9c1d
25
+ zh: c049a19e471d188b
26
+ /deepseek-ai-dsh-official-bundles/use-this-package/plugin-manager-lists:
27
+ en: 27c22abdfff69a41
28
+ zh: e60d828cdb75c263
29
+ /deepseek-ai-dsh-official-bundles/use-this-package/on-demand-bundles:
30
+ en: ba4f412474854ba1
31
+ zh: 17dae8155c013367
32
+ /deepseek-ai-dsh-official-bundles/understand-the-implementation:
33
+ en: 3fb2b58db529d8be
34
+ zh: 46064459a23d458d
35
+ /deepseek-ai-dsh-official-bundles/understand-the-implementation/source-map:
36
+ en: bbd3b4f82e6349d9
37
+ zh: f1e056d14620519d
38
+ /deepseek-ai-dsh-official-bundles/further-exploration:
39
+ en: 16a331e64c81b2a5
40
+ zh: abfe9b1a1294b6b3
41
+ /deepseek-ai-dsh-official-bundles/known-limitations-and-deferred-work:
42
+ en: 6631976cc7404166
43
+ zh: edb2094b17bc4009
44
+ /deepseek-ai-dsh-official-bundles/known-limitations-and-deferred-work/dev-note:
45
+ en: e67f633dc6fe7773
46
+ zh: 3bb0c20c93f16f98
package/README.md CHANGED
@@ -1,3 +1,92 @@
1
- # Temporary Holding Version
1
+ ---
2
+ description: "Installation-owned lists of official dsh bundles (shipped profile templates, the default list, and the optional, on-demand, and retired bundles) and the plugin manager's protected and presented packages."
3
+ kind: "package-library"
4
+ ---
2
5
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
6
+ # @deepseek-ai/dsh-official-bundles
7
+
8
+ English | [中文](README.zh.md)
9
+
10
+ ## Summary
11
+
12
+ `@deepseek-ai/dsh-official-bundles` holds the bundle package names the dsh installation decides on: which bundles each shipped profile starts with, which bundles it ships switched off, which official bundles install on request, which bundles earlier releases shipped and profiles drop, and which packages the plugin manager protects, hides, orders, or marks experimental. [`dsh-app-boot`](../../boot/app-boot/README.md) applies these lists when it loads a profile; the plugin manager, the CLI, Desktop, the image packer, and repository checks read them directly. The package holds data only, so changing a list leaves app-boot and the plugin manager untouched. Use it as a direct library dependency, not through `cordis.yml`.
13
+
14
+ ## Table of Contents
15
+
16
+ - [Use this package](#use-this-package)
17
+ - [Understand the implementation](#understand-the-implementation)
18
+ - [Further Exploration](#further-exploration)
19
+ - [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
20
+ - [Dev Note](#dev-note)
21
+
22
+ -----
23
+
24
+ <a id="use-this-package"></a>
25
+ ## Use this package
26
+
27
+ Edit this package when the installation's bundle selection or the plugin manager's protected or presented packages change; read it wherever code must agree with the launcher about that selection.
28
+
29
+ ### Profile templates
30
+
31
+ `PROFILE_TEMPLATES` maps each shipped profile name (`web`, `headless`, `acp`, `sdk`, `sdk-minimal`) to its ordered bundle layer list. App-boot initializes a missing shipped profile from its template, and `dsh --profile <name> --from-default-profile <template>` copies one into a custom profile. `DEFAULT_PROFILE_BUNDLES` is the list `dsh plugin` uses for a profile name with no template. `INSTALLATION_OWNED_PROFILE_TUPLES` names bundle lists that an earlier release wrote into a shipped profile; app-boot replaces an exact match with the current template.
32
+
33
+ ### Optional and retired bundles
34
+
35
+ `OPTIONAL_BUNDLES` names the bundles the installation ships for a person to switch on. Each must be a runtime dependency of the `dsh` app that declares `dsh.bundle.patch`, an icon, and `./locale/*.json` display metadata, and no template may select it; [`verify-default-product-isolation`](../../../scripts/verify-default-product-isolation.ts) checks these rules. The [plugin manager](../../boot/plugin-manager/README.md#use-this-package) reports these bundles as `optional`. `RETIRED_BUNDLES` names bundles the installation no longer carries; app-boot removes them from a profile's bundle list when it loads the profile.
36
+
37
+ <a id="plugin-manager-lists"></a>
38
+ ### Plugin manager lists
39
+
40
+ `PROTECTED_PLUGINS` names the plugin packages the [plugin manager](../../boot/plugin-manager/README.md) keeps read-only because management needs them; a bundle that contains one is a management bundle. Removing a name drops only this `management-required` refusal; the manager's own entry, installation-carried bundles, and unaddressable rows stay protected by their own rules. The [Web plugin page](../../client/ui-plugin-manager/README.md) hides the `HIDDEN_BUNDLES`, ranks the `EXTENSION_BUNDLES` first in their order, keeps the `MORE_BUNDLES` off its main list until the profile enables them, and marks the `EXPERIMENTAL_BUNDLES` with the Experimental badge.
41
+
42
+ ### On-demand bundles
43
+
44
+ `ON_DEMAND_BUNDLES` names the public Official packages installed only on request. `OFFICIAL_ON_DEMAND_CATALOG` embeds their package-owned localized metadata, icons, and optional `dsh.bundle.platforms` declarations for offline discovery and Host platform checks before installation; `pnpm gen-official-bundle-catalog` explicitly updates generated content, and `verify-official-bundle-catalog` checks resource completeness and freshness; builds consume the committed catalog without importing provider code. The catalog contains no install target: the plugin manager derives it from the running version and installation and uses the ordinary bundle installer. The [product-use check](../../../scripts/verify-product-use.ts) composes shipped and on-demand selections against Web without executing providers. The catalog also preserves `listedByDefault` so a default-hidden bundle stays hidden until explicitly installed or enabled.
45
+
46
+ -----
47
+
48
+ <a id="understand-the-implementation"></a>
49
+ ## Understand the implementation
50
+
51
+ <details>
52
+ <summary>Implementation internals — click to expand</summary>
53
+
54
+ Repository checks read the lists in `src/bundles.ts` as TypeScript literals without executing them, so each list stays a static array or object literal of package names. `INLINE_SAFE` in [`tsdown.client.ts`](../../client/tsdown.client.ts) lets Client bundles inline this whole package, so every export stays data with no runtime identity to share. `ui-plugin-manager` imports the Web lists from the package root, and tree-shaking keeps the profile templates and the generated catalog out of its bundle while no Client code imports them.
55
+
56
+ ### Source map
57
+
58
+ | File | Role |
59
+ |---|---|
60
+ | [`src/bundles.ts`](src/bundles.ts) | Profile templates and the default, installation-owned, retired, optional, and on-demand bundle lists |
61
+ | [`src/plugin-manager.ts`](src/plugin-manager.ts) | Protected plugin packages and the Web plugin page's hidden, ordered, and experimental bundle lists |
62
+ | [`src/catalog.generated.ts`](src/catalog.generated.ts) | Generated offline metadata for the on-demand bundles |
63
+ | [`src/index.ts`](src/index.ts) | Public exports and the catalog entry type |
64
+
65
+ </details>
66
+
67
+ -----
68
+
69
+ <a id="further-exploration"></a>
70
+ ## Further Exploration
71
+
72
+ - [dsh-app-boot](../../boot/app-boot/README.md) — profile loading that applies the templates and retired list.
73
+ - [Shipped optional bundles](../../../.agents/notes/implemented/process/2026-09-15-shipped-optional-bundles.md) — why the installation owns the optional list.
74
+ - [Official on-demand bundles](../../../.agents/notes/implemented/architecture/2026-10-05-official-on-demand-bundles.md) — the offline catalog decision.
75
+
76
+ -----
77
+
78
+ ## Known Limitations and Deferred Work
79
+
80
+ <a id="known-limitations-and-deferred-work"></a>
81
+
82
+ - **Lists are compiled into the installation** — changing a list requires a new dsh release; a profile cannot extend the optional or on-demand lists.
83
+
84
+ <a id="dev-note"></a>
85
+ ### Dev Note
86
+
87
+ <details>
88
+ <summary>Working context for maintainers — click to expand</summary>
89
+
90
+ None.
91
+
92
+ </details>
package/README.zh.md ADDED
@@ -0,0 +1,92 @@
1
+ ---
2
+ description: "由安装方持有的官方 dsh 组合包列表(随附 profile 模板、默认列表,以及可选、按需和已退役的组合包),以及插件管理器保护和展示的包。"
3
+ kind: "package-library"
4
+ ---
5
+
6
+ # @deepseek-ai/dsh-official-bundles
7
+
8
+ [English](README.md) | 中文
9
+
10
+ ## 概述
11
+
12
+ `@deepseek-ai/dsh-official-bundles` 保存由 dsh 安装决定的组合包名称:每个随附 profile 以哪些组合包启动、随附但默认关闭哪些组合包、哪些官方组合包按请求安装,哪些组合包曾由早期版本随附、现在要从 profile 中移除,以及插件管理器保护、隐藏、排序或标记为实验性的包。[`dsh-app-boot`](../../boot/app-boot/README.zh.md) 在加载 profile 时应用这些列表;插件管理器、CLI、Desktop、镜像打包器和仓库检查直接读取它们。本包只含数据,因此修改列表不会改动 app-boot 和插件管理器。请把它作为直接的库依赖使用,而不是通过 `cordis.yml` 使用。
13
+
14
+ ## 目录
15
+
16
+ - [使用本包](#use-this-package)
17
+ - [理解实现](#understand-the-implementation)
18
+ - [进一步探索](#further-exploration)
19
+ - [已知限制与延期工作](#known-limitations-and-deferred-work)
20
+ - [开发备注](#dev-note)
21
+
22
+ -----
23
+
24
+ <a id="use-this-package"></a>
25
+ ## 使用本包
26
+
27
+ 安装的组合包选择或插件管理器保护、展示的包发生变化时编辑本包;凡是代码必须与启动器就该选择保持一致的地方,都读取本包。
28
+
29
+ ### Profile 模板
30
+
31
+ `PROFILE_TEMPLATES` 把每个随附 profile 名称(`web`、`headless`、`acp`、`sdk`、`sdk-minimal`)映射到其有序的组合包层列表。App-boot 用模板初始化缺失的随附 profile,`dsh --profile <name> --from-default-profile <template>` 把某个模板复制为自定义 profile。`DEFAULT_PROFILE_BUNDLES` 是 `dsh plugin` 对没有模板的 profile 名称使用的列表。`INSTALLATION_OWNED_PROFILE_TUPLES` 列出早期版本写入随附 profile 的组合包列表;app-boot 把与之完全一致的列表替换为当前模板。
32
+
33
+ ### 可选与已退役组合包
34
+
35
+ `OPTIONAL_BUNDLES` 列出安装随附、供用户开启的组合包。每一项都必须是 `dsh` 应用的运行时依赖,并声明 `dsh.bundle.patch`、图标和 `./locale/*.json` 显示元信息,且不能被任何模板选中;[`verify-default-product-isolation`](../../../scripts/verify-default-product-isolation.ts) 检查这些规则。[插件管理器](../../boot/plugin-manager/README.zh.md#use-this-package)把这些组合包报告为 `optional`。`RETIRED_BUNDLES` 列出安装不再携带的组合包;app-boot 在加载 profile 时将它们从该 profile 的组合包列表中移除。
36
+
37
+ <a id="plugin-manager-lists"></a>
38
+ ### 插件管理器列表
39
+
40
+ `PROTECTED_PLUGINS` 列出[插件管理器](../../boot/plugin-manager/README.zh.md)因管理功能依赖而保持只读的插件包;包含其中任一插件的组合包是管理组合包。移除其中一项只解除这一条 `management-required` 拒绝;管理器自身的入口、随安装提供的组合包和不可寻址的行仍由各自的规则保护。[Web 插件页](../../client/ui-plugin-manager/README.zh.md)隐藏 `HIDDEN_BUNDLES`,把 `EXTENSION_BUNDLES` 按顺序排在最前,在 profile 启用 `MORE_BUNDLES` 之前不把它们放上主列表,并为 `EXPERIMENTAL_BUNDLES` 显示实验性标记。
41
+
42
+ ### 按需组合包
43
+
44
+ `ON_DEMAND_BUNDLES` 列出只在请求时安装的官方公开包。`OFFICIAL_ON_DEMAND_CATALOG` 内嵌这些包自己持有的本地化元信息、图标和可选的 `dsh.bundle.platforms` 声明,用于离线发现与安装前的 Host 平台检查;`pnpm gen-official-bundle-catalog` 显式更新生成内容,`verify-official-bundle-catalog` 检查资源完整性与时效;构建使用已提交的目录,不导入提供方代码。目录不包含安装目标:插件管理器根据运行中的版本和安装推导目标,并使用普通的组合包安装器。[产品使用检查](../../../scripts/verify-product-use.ts)针对 Web 组合随附选择和按需选择,不执行提供方。 目录也保留 `listedByDefault`,使默认隐藏的组合包在用户显式安装或启用前保持隐藏。
45
+
46
+ -----
47
+
48
+ <a id="understand-the-implementation"></a>
49
+ ## 理解实现
50
+
51
+ <details>
52
+ <summary>实现细节——点击展开</summary>
53
+
54
+ 仓库检查把 `src/bundles.ts` 中的列表当作 TypeScript 字面量读取而不执行,因此每个列表都保持为由包名组成的静态数组或对象字面量。[`tsdown.client.ts`](../../client/tsdown.client.ts) 中的 `INLINE_SAFE` 允许 Client bundle 内联整个包,因此每个导出都保持为没有需要共享的运行时身份的数据。`ui-plugin-manager` 从包入口导入 Web 列表;只要没有 Client 代码导入 profile 模板和生成的目录,tree-shaking 就会让它们不进入该 bundle。
55
+
56
+ ### 源码地图
57
+
58
+ | 文件 | 职责 |
59
+ |---|---|
60
+ | [`src/bundles.ts`](src/bundles.ts) | Profile 模板,以及默认、安装持有、已退役、可选和按需组合包列表 |
61
+ | [`src/plugin-manager.ts`](src/plugin-manager.ts) | 受保护的插件包,以及 Web 插件页的隐藏、排序和实验性组合包列表 |
62
+ | [`src/catalog.generated.ts`](src/catalog.generated.ts) | 按需组合包的生成离线元信息 |
63
+ | [`src/index.ts`](src/index.ts) | 公开导出与目录条目类型 |
64
+
65
+ </details>
66
+
67
+ -----
68
+
69
+ <a id="further-exploration"></a>
70
+ ## 进一步探索
71
+
72
+ - [dsh-app-boot](../../boot/app-boot/README.zh.md)——应用模板和退役列表的 profile 加载。
73
+ - [随附可选组合包](../../../.agents/notes/implemented/process/2026-09-15-shipped-optional-bundles.zh.md)——为什么由安装持有可选列表。
74
+ - [Official 按需组合包](../../../.agents/notes/implemented/architecture/2026-10-05-official-on-demand-bundles.zh.md)——离线目录的决策。
75
+
76
+ -----
77
+
78
+ ## 已知限制与延期工作
79
+
80
+ <a id="known-limitations-and-deferred-work"></a>
81
+
82
+ - **列表编译进安装**——修改列表需要发布新的 dsh 版本;profile 无法扩展可选或按需列表。
83
+
84
+ <a id="dev-note"></a>
85
+ ### 开发备注
86
+
87
+ <details>
88
+ <summary>维护者的工作上下文——点击展开</summary>
89
+
90
+ 无。
91
+
92
+ </details>
package/lib/index.js ADDED
@@ -0,0 +1,228 @@
1
+ //#region lib/types/bundles.js
2
+ /** The bundle package names the dsh installation selects, offers, installs on demand, or retires. */
3
+ /** The shipped profile templates auto-initialized on first use, by name. */
4
+ const PROFILE_TEMPLATES = {
5
+ acp: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-acp-app"] },
6
+ web: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app"] },
7
+ headless: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-headless"] },
8
+ sdk: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-sdk-app"] },
9
+ "sdk-minimal": { bundles: ["@deepseek-ai/dsh-sdk-minimal"] }
10
+ };
11
+ /**
12
+ * Installation-owned bundle tuples that an earlier release wrote into a shipped profile; app-boot replaces an exact
13
+ * match with the {@link PROFILE_TEMPLATES} entry of the same name and leaves every other list untouched.
14
+ */
15
+ const INSTALLATION_OWNED_PROFILE_TUPLES = { headless: [
16
+ "@deepseek-ai/dsh-base",
17
+ "@deepseek-ai/dsh-web-app",
18
+ "@deepseek-ai/dsh-headless"
19
+ ] };
20
+ /** Bundles an earlier release shipped and the installation no longer carries; app-boot removes them from profiles. */
21
+ const RETIRED_BUNDLES = new Set(["@deepseek-ai/dsh-experimental-schedule-bundle"]);
22
+ /** The bundle list a `dsh plugin` init uses for a name with no shipped template. */
23
+ const DEFAULT_PROFILE_BUNDLES = ["@deepseek-ai/dsh-base"];
24
+ /**
25
+ * The bundles the dsh installation ships for a person to switch on: each a
26
+ * runtime dependency of the installation that declares `dsh.bundle.patch`,
27
+ * an `icon`, and `./locale/*.json` display metadata, selected by no shipped
28
+ * template, and offered switched off by the plugin manager except persistent
29
+ * terminals, which have no page switch
30
+ * ([rationale](../../../../.agents/notes/implemented/process/2026-09-15-shipped-optional-bundles.md),
31
+ * [admission](../../../../.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.md)).
32
+ */
33
+ const OPTIONAL_BUNDLES = [
34
+ "@deepseek-ai/dsh-personalized-recommendations",
35
+ "@deepseek-ai/dsh-experimental-session-search",
36
+ "@deepseek-ai/dsh-experimental-ralph-bundle",
37
+ "@deepseek-ai/dsh-experimental-terminal-bundle",
38
+ "@deepseek-ai/dsh-experimental-badge-skill-bundle",
39
+ "@deepseek-ai/dsh-experimental-session-titles-bundle",
40
+ "@deepseek-ai/dsh-experimental-agent-team-profile",
41
+ "@deepseek-ai/dsh-experimental-voice-input-bundle",
42
+ "@deepseek-ai/dsh-experimental-cot-translation-bundle",
43
+ "@deepseek-ai/dsh-experimental-auto-review",
44
+ "@deepseek-ai/dsh-experimental-inspector-profile",
45
+ "@deepseek-ai/dsh-experimental-liveshare",
46
+ "@deepseek-ai/dsh-experimental-plugin-market-bundle",
47
+ "@deepseek-ai/dsh-experimental-tool-worktree",
48
+ "@deepseek-ai/dsh-experimental-forge-bundle"
49
+ ];
50
+ /** Public DSH release members available through the ordinary on-demand bundle installer. */
51
+ const ON_DEMAND_BUNDLES = [
52
+ "@deepseek-ai/dsh-subagent-claude-code",
53
+ "@deepseek-ai/dsh-subagent-codex",
54
+ "@deepseek-ai/dsh-cua-bundle"
55
+ ];
56
+ //#endregion
57
+ //#region lib/types/plugin-manager.js
58
+ /** The package names the plugin manager protects, hides, orders, or marks experimental. */
59
+ /**
60
+ * Plugin packages the plugin manager refuses to disable or remove, because management itself needs them; a bundle that
61
+ * contains one is read-only as well. Removing a name drops only this `management-required` refusal; the manager's own
62
+ * entry, installation-carried bundles, and unaddressable rows stay protected by their own rules.
63
+ */
64
+ const PROTECTED_PLUGINS = new Set([
65
+ "@deepseek-ai/dsh-plugin-manager",
66
+ "@deepseek-ai/cordis-plugin-loader",
67
+ "@deepseek-ai/cordis-plugin-include",
68
+ "@deepseek-ai/dsh-api-gateway",
69
+ "@deepseek-ai/dsh-host-webserver",
70
+ "@deepseek-ai/dsh-client-modules",
71
+ "@deepseek-ai/dsh-client-ui-settings-plugin-inventory",
72
+ "@deepseek-ai/dsh-client-ui-plugin-manager",
73
+ "@deepseek-ai/dsh-host-plugin-inventory",
74
+ "@deepseek-ai/dsh-typert-registry",
75
+ "@deepseek-ai/dsh-api-remotes",
76
+ "@deepseek-ai/dsh-api-remote-access",
77
+ "@deepseek-ai/cordis-plugin-timer",
78
+ "@deepseek-ai/dsh-client-connection",
79
+ "@deepseek-ai/dsh-host-frontend-static",
80
+ "@deepseek-ai/dsh-tools",
81
+ "@deepseek-ai/dsh-hmr"
82
+ ]);
83
+ /**
84
+ * Built-in profile bundles, persistent terminals, and the standalone worktree tool, which have no plugin manager page.
85
+ * Their Host availability and activation stay intact.
86
+ */
87
+ const HIDDEN_BUNDLES = new Set([
88
+ "@deepseek-ai/dsh-base",
89
+ "@deepseek-ai/dsh-web-app",
90
+ "@deepseek-ai/dsh-headless",
91
+ "@deepseek-ai/dsh-sdk-app",
92
+ "@deepseek-ai/dsh-acp-app",
93
+ "@deepseek-ai/dsh-sdk-minimal",
94
+ "@deepseek-ai/dsh-experimental-terminal-bundle",
95
+ "@deepseek-ai/dsh-experimental-tool-worktree"
96
+ ]);
97
+ /**
98
+ * The optional bundles the plugin manager's main and More lists rank first, in this order. {@link MORE_BUNDLES}, not
99
+ * this list, decides whether a bundle appears on the main list.
100
+ */
101
+ const EXTENSION_BUNDLES = [
102
+ "@deepseek-ai/dsh-experimental-agent-team-profile",
103
+ "@deepseek-ai/dsh-experimental-voice-input-bundle",
104
+ "@deepseek-ai/dsh-experimental-plugin-market-bundle",
105
+ "@deepseek-ai/dsh-experimental-auto-review"
106
+ ];
107
+ /**
108
+ * The optional bundles the plugin manager's main list leaves out until the profile enables them; its More list,
109
+ * which includes every eligible bundle, ranks them last in this order.
110
+ */
111
+ const MORE_BUNDLES = [
112
+ "@deepseek-ai/dsh-personalized-recommendations",
113
+ "@deepseek-ai/dsh-experimental-inspector-profile",
114
+ "@deepseek-ai/dsh-cua-bundle",
115
+ "@deepseek-ai/dsh-experimental-cot-translation-bundle",
116
+ "@deepseek-ai/dsh-experimental-session-search",
117
+ "@deepseek-ai/dsh-experimental-session-titles-bundle",
118
+ "@deepseek-ai/dsh-experimental-badge-skill-bundle",
119
+ "@deepseek-ai/dsh-experimental-ralph-bundle",
120
+ "@deepseek-ai/dsh-subagent-codex",
121
+ "@deepseek-ai/dsh-subagent-claude-code"
122
+ ];
123
+ /** Official bundles the plugin manager marks with the Experimental badge. */
124
+ const EXPERIMENTAL_BUNDLES = new Set([
125
+ "@deepseek-ai/dsh-personalized-recommendations",
126
+ "@deepseek-ai/dsh-cua-bundle",
127
+ "@deepseek-ai/dsh-experimental-agent-team-profile",
128
+ "@deepseek-ai/dsh-experimental-voice-input-bundle",
129
+ "@deepseek-ai/dsh-experimental-auto-review",
130
+ "@deepseek-ai/dsh-experimental-inspector-profile",
131
+ "@deepseek-ai/dsh-experimental-forge-bundle",
132
+ "@deepseek-ai/dsh-experimental-tool-worktree",
133
+ "@deepseek-ai/dsh-experimental-cot-translation-bundle",
134
+ "@deepseek-ai/dsh-experimental-session-search",
135
+ "@deepseek-ai/dsh-experimental-session-titles-bundle",
136
+ "@deepseek-ai/dsh-experimental-badge-skill-bundle",
137
+ "@deepseek-ai/dsh-experimental-ralph-bundle",
138
+ "@deepseek-ai/dsh-experimental-plugin-market-bundle",
139
+ "@deepseek-ai/dsh-experimental-liveshare"
140
+ ]);
141
+ //#endregion
142
+ //#region lib/types/catalog.generated.js
143
+ /** Generated offline Official bundle metadata. Run pnpm gen-official-bundle-catalog; do not edit. */
144
+ /** Official on-demand entries, independent of installed packages and registry availability. */
145
+ const OFFICIAL_ON_DEMAND_CATALOG = [
146
+ {
147
+ packageName: "@deepseek-ai/dsh-subagent-claude-code",
148
+ meta: {
149
+ title: {
150
+ "de": "Claude Code-Subagent",
151
+ "en": "Claude Code subagent",
152
+ "es": "Subagente Claude Code",
153
+ "fr": "Sous-agent Claude Code",
154
+ "ja": "Claude Code サブエージェント",
155
+ "pt": "Claude Code subagente",
156
+ "ru": "Субагент Claude Code",
157
+ "zh": "Claude Code 子智能体"
158
+ },
159
+ description: {
160
+ "de": "Delegieren Sie eine Aufgabe an Claude Code, indem Sie dessen native Authentifizierung und Einstellungen verwenden.",
161
+ "en": "Delegate one task to Claude Code using its native authentication and settings.",
162
+ "es": "Delegue una tarea a Claude Code utilizando su autenticación y configuración nativas.",
163
+ "fr": "Déléguez une tâche à Claude Code à l’aide de son authentification et de ses paramètres natifs.",
164
+ "ja": "Claude Code のネイティブの認証と設定を使用して、単独のタスクを委派します。",
165
+ "pt": "Delegue uma tarefa a Claude Code usando sua autenticação e configurações nativas.",
166
+ "ru": "Делегируйте одну задачу Claude Code, используя его встроенную аутентификацию и настройки.",
167
+ "zh": "使用 Claude Code 原生认证和设置委派单个任务。"
168
+ },
169
+ icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSIxNC45ODkzIiB5PSIxNS4xODc3IiB3aWR0aD0iMTIuMjM2NSIgaGVpZ2h0PSIxMi4yMzY1IiByeD0iMiIgZmlsbD0idXJsKCNkc2hfcGx1Z2luX2FydF9SMGEpIiBmaWxsLW9wYWNpdHk9IjAuOCI+PC9yZWN0PjxyZWN0IHg9IjguODcxMDkiIHk9IjkuMDY5NyIgd2lkdGg9IjEyLjIzNjUiIGhlaWdodD0iMTIuMjM2NSIgcng9IjIiIGZpbGw9InVybCgjZHNoX3BsdWdpbl9hcnRfUjBiKSIgZmlsbC1vcGFjaXR5PSIwLjgiPjwvcmVjdD48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImRzaF9wbHVnaW5fYXJ0X1IwYSIgeDE9IjIxLjEwNzUiIHkxPSIxNS4xODc3IiB4Mj0iMjEuMTA3NSIgeTI9IjI3LjQyNDMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNDVFN0E0Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDU5MDlEIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImRzaF9wbHVnaW5fYXJ0X1IwYiIgeDE9IjE0Ljk4OTQiIHkxPSI5LjA2OTciIHgyPSIxNC45ODk0IiB5Mj0iMjEuMzA2MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2OUI5RkYiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMjRERTIiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4K"
170
+ }
171
+ },
172
+ {
173
+ packageName: "@deepseek-ai/dsh-subagent-codex",
174
+ meta: {
175
+ title: {
176
+ "de": "Codex-Subagent",
177
+ "en": "Codex subagent",
178
+ "es": "Subagente Codex",
179
+ "fr": "Sous-agent Codex",
180
+ "ja": "Codex サブエージェント",
181
+ "pt": "Codex subagente",
182
+ "ru": "Субагент Codex",
183
+ "zh": "Codex 子智能体"
184
+ },
185
+ description: {
186
+ "de": "Delegieren Sie eine Aufgabe an Codex, indem Sie dessen native Authentifizierung und Einstellungen verwenden.",
187
+ "en": "Delegate one task to Codex using its native authentication and settings.",
188
+ "es": "Delegue una tarea a Codex utilizando su autenticación y configuración nativas.",
189
+ "fr": "Déléguez une tâche à Codex à l’aide de son authentification et de ses paramètres natifs.",
190
+ "ja": "Codex のネイティブの認証と設定を使用して、単独のタスクを委派します。",
191
+ "pt": "Delegue uma tarefa a Codex usando sua autenticação e configurações nativas.",
192
+ "ru": "Делегируйте одну задачу Codex, используя его встроенную аутентификацию и настройки.",
193
+ "zh": "使用 Codex 原生认证和设置委派单个任务。"
194
+ },
195
+ icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB4PSIxNC45ODkzIiB5PSIxNS4xODc3IiB3aWR0aD0iMTIuMjM2NSIgaGVpZ2h0PSIxMi4yMzY1IiByeD0iMiIgZmlsbD0idXJsKCNkc2hfcGx1Z2luX2FydF9SMGEpIiBmaWxsLW9wYWNpdHk9IjAuOCI+PC9yZWN0PjxyZWN0IHg9IjguODcxMDkiIHk9IjkuMDY5NyIgd2lkdGg9IjEyLjIzNjUiIGhlaWdodD0iMTIuMjM2NSIgcng9IjIiIGZpbGw9InVybCgjZHNoX3BsdWdpbl9hcnRfUjBiKSIgZmlsbC1vcGFjaXR5PSIwLjgiPjwvcmVjdD48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImRzaF9wbHVnaW5fYXJ0X1IwYSIgeDE9IjIxLjEwNzUiIHkxPSIxNS4xODc3IiB4Mj0iMjEuMTA3NSIgeTI9IjI3LjQyNDMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNDVFN0E0Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDU5MDlEIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImRzaF9wbHVnaW5fYXJ0X1IwYiIgeDE9IjE0Ljk4OTQiIHkxPSI5LjA2OTciIHgyPSIxNC45ODk0IiB5Mj0iMjEuMzA2MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2OUI5RkYiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMjRERTIiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4K"
196
+ }
197
+ },
198
+ {
199
+ packageName: "@deepseek-ai/dsh-cua-bundle",
200
+ platforms: ["darwin"],
201
+ listedByDefault: false,
202
+ meta: {
203
+ title: {
204
+ "de": "Computernutzung",
205
+ "en": "Computer use",
206
+ "es": "Uso de la computadora",
207
+ "fr": "Utilisation de l'ordinateur",
208
+ "ja": "Computer Use",
209
+ "pt": "Uso do computador",
210
+ "ru": "Использование компьютера",
211
+ "zh": "Computer Use"
212
+ },
213
+ description: {
214
+ "de": "Unterstützt derzeit macOS; Die Windows-Unterstützung befindet sich in der Entwicklung. Lädt die Computernutzung für bestehende und neue PTC-Sitzungen. Wechseln Sie in den PTC-Modus und erteilen Sie die Berechtigungen für Barrierefreiheit und Bildschirmaufzeichnung, um ihn zu verwenden.",
215
+ "en": "Currently supports macOS; Windows support is in development. Loads computer use for existing and new PTC sessions. Switch to PTC mode and grant Accessibility and Screen Recording permissions to use it.",
216
+ "es": "Actualmente es compatible con macOS; El soporte para Windows está en desarrollo. Carga el uso de la computadora para sesiones PTC nuevas y existentes. Cambie al modo PTC y otorgue permisos de Accesibilidad y Grabación de pantalla para usarlo.",
217
+ "fr": "Prend actuellement en charge macOS\xA0; La prise en charge de Windows est en cours de développement. Charge l'utilisation de l'ordinateur pour les sessions PTC existantes et nouvelles. Passez en mode PTC et accordez les autorisations d’accessibilité et d’enregistrement d’écran pour l’utiliser.",
218
+ "ja": "現在は macOS のみ対応し、Windows 対応は開発中です。既存および新規の PTC セッションに Computer Use を読み込みます。PTC モードに切り替え、アクセシビリティと画面収録の権限を許可して使用してください。",
219
+ "pt": "Atualmente suporta macOS; O suporte Windows está em desenvolvimento. Carrega o uso do computador para sessões PTC novas e existentes. Mude para o modo PTC e conceda permissões de acessibilidade e gravação de tela para usá-lo.",
220
+ "ru": "В настоящее время поддерживается macOS; Поддержка Windows находится в разработке. Загружает использование компьютера для существующих и новых сеансов PTC. Переключитесь в режим PTC и предоставьте разрешения на доступность и запись экрана для его использования.",
221
+ "zh": "目前仅支持 macOS,Windows 支持正在开发中。为已有及新建 PTC 会话加载 Computer Use。请切换到 PTC 模式来使用,并授予辅助功能和屏幕录制权限。"
222
+ },
223
+ icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8IS0tCiAgICBDb21wdXRlciBVc2UgcGx1Z2luIGljb24uCiAgICBBZGFwdGVkIGZyb20gTHVjaWRlICJtb3VzZS1wb2ludGVyLWNsaWNrIiAoaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdXNlLXBvaW50ZXItY2xpY2spLgogICAgQ2hhbmdlczogc29saWQtZmlsbGVkIHBvaW50ZXIsIHByb2plY3QgcGFsZXR0ZSwgMzZ4MzYgY2FudmFzLgoKICAgIElTQyBMaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMjYgTHVjaWRlIEljb25zIGFuZCBDb250cmlidXRvcnMKICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWNpZGUtaWNvbnMvbHVjaWRlL2Jsb2IvbWFpbi9MSUNFTlNFCgogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCiAgICBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCiAgICBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAgICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUgogICAgQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwogICAgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCiAgICBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgogICAgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAtLT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAzNiA0LjAzNikgc2NhbGUoMS4yMjAxKSI+CiAgICA8cGF0aCBkPSJNOS4wMzcgOS42OWEuNDk4LjQ5OCAwIDAgMSAuNjUzLS42NTNsMTEgNC41YS41LjUgMCAwIDEtLjA3NC45NDlsLTQuMzQ5IDEuMDQxYTEgMSAwIDAgMC0uNzQuNzM5bC0xLjA0IDQuMzVhLjUuNSAwIDAgMS0uOTUuMDc0eiIgZmlsbD0idXJsKCNnKSIgc3Ryb2tlPSJ1cmwoI2cpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+CiAgICA8cGF0aCBkPSJNMTQgNC4xIDEyIDYiIHN0cm9rZT0iIzUxQ0ZEQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+CiAgICA8cGF0aCBkPSJtNS4xIDgtMi45LS44IiBzdHJva2U9IiM1MUNGREIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgogICAgPHBhdGggZD0ibTYgMTItMS45IDIiIHN0cm9rZT0iIzUxQ0ZEQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+CiAgICA8cGF0aCBkPSJNNy4yIDIuMiA4IDUuMSIgc3Ryb2tlPSIjNTFDRkRCIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4KICA8L2c+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImciIHgxPSI5IiB5MT0iOSIgeDI9IjIxIiB5Mj0iMjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzg2QjhGNSIgLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNTI2OUUxIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+Cjwvc3ZnPgo="
224
+ }
225
+ }
226
+ ];
227
+ //#endregion
228
+ export { DEFAULT_PROFILE_BUNDLES, EXPERIMENTAL_BUNDLES, EXTENSION_BUNDLES, HIDDEN_BUNDLES, INSTALLATION_OWNED_PROFILE_TUPLES, MORE_BUNDLES, OFFICIAL_ON_DEMAND_CATALOG, ON_DEMAND_BUNDLES, OPTIONAL_BUNDLES, PROFILE_TEMPLATES, PROTECTED_PLUGINS, RETIRED_BUNDLES };
@@ -0,0 +1,30 @@
1
+ /** The bundle package names the dsh installation selects, offers, installs on demand, or retires. */
2
+ /** Installation-owned defaults used when a shipped profile is first opened. */
3
+ export interface ProfileTemplate {
4
+ /** Ordered bundle layer list. */
5
+ bundles: readonly string[];
6
+ }
7
+ /** The shipped profile templates auto-initialized on first use, by name. */
8
+ export declare const PROFILE_TEMPLATES: Record<string, ProfileTemplate>;
9
+ /**
10
+ * Installation-owned bundle tuples that an earlier release wrote into a shipped profile; app-boot replaces an exact
11
+ * match with the {@link PROFILE_TEMPLATES} entry of the same name and leaves every other list untouched.
12
+ */
13
+ export declare const INSTALLATION_OWNED_PROFILE_TUPLES: Readonly<Record<string, readonly string[]>>;
14
+ /** Bundles an earlier release shipped and the installation no longer carries; app-boot removes them from profiles. */
15
+ export declare const RETIRED_BUNDLES: ReadonlySet<string>;
16
+ /** The bundle list a `dsh plugin` init uses for a name with no shipped template. */
17
+ export declare const DEFAULT_PROFILE_BUNDLES: readonly string[];
18
+ /**
19
+ * The bundles the dsh installation ships for a person to switch on: each a
20
+ * runtime dependency of the installation that declares `dsh.bundle.patch`,
21
+ * an `icon`, and `./locale/*.json` display metadata, selected by no shipped
22
+ * template, and offered switched off by the plugin manager except persistent
23
+ * terminals, which have no page switch
24
+ * ([rationale](../../../../.agents/notes/implemented/process/2026-09-15-shipped-optional-bundles.md),
25
+ * [admission](../../../../.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.md)).
26
+ */
27
+ export declare const OPTIONAL_BUNDLES: readonly string[];
28
+ /** Public DSH release members available through the ordinary on-demand bundle installer. */
29
+ export declare const ON_DEMAND_BUNDLES: readonly string[];
30
+ //# sourceMappingURL=bundles.d.ts.map
@@ -0,0 +1,5 @@
1
+ /** Generated offline Official bundle metadata. Run pnpm gen-official-bundle-catalog; do not edit. */
2
+ import type { OfficialBundleCatalogEntry } from './index.ts';
3
+ /** Official on-demand entries, independent of installed packages and registry availability. */
4
+ export declare const OFFICIAL_ON_DEMAND_CATALOG: readonly OfficialBundleCatalogEntry[];
5
+ //# sourceMappingURL=catalog.generated.d.ts.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Installation-owned bundle lists and the plugin manager's protected and presented packages, kept apart from the code that applies them.
3
+ * @module @deepseek-ai/dsh-official-bundles
4
+ */
5
+ import type { DshBundleManifest, PluginLocalizedMeta } from '@deepseek-ai/dsh-package-manifest';
6
+ export { DEFAULT_PROFILE_BUNDLES, INSTALLATION_OWNED_PROFILE_TUPLES, ON_DEMAND_BUNDLES, OPTIONAL_BUNDLES, PROFILE_TEMPLATES, RETIRED_BUNDLES, type ProfileTemplate, } from './bundles.ts';
7
+ export { EXPERIMENTAL_BUNDLES, EXTENSION_BUNDLES, HIDDEN_BUNDLES, MORE_BUNDLES, PROTECTED_PLUGINS } from './plugin-manager.ts';
8
+ /** Offline discovery metadata; installation state and the requested version belong to the running host. */
9
+ export interface OfficialBundleCatalogEntry {
10
+ /** Exact npm package name accepted by the existing bundle installer. */
11
+ readonly packageName: string;
12
+ /** Package-owned Host platform declaration, available before installation. */
13
+ readonly platforms?: DshBundleManifest['platforms'];
14
+ /** Package-owned discovery visibility before installation. */
15
+ readonly listedByDefault?: boolean;
16
+ /** Package-owned localized text and a self-contained icon, embedded without provider code. */
17
+ readonly meta: Required<Pick<PluginLocalizedMeta, 'title' | 'description' | 'icon'>>;
18
+ }
19
+ export { OFFICIAL_ON_DEMAND_CATALOG } from './catalog.generated.ts';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,25 @@
1
+ /** The package names the plugin manager protects, hides, orders, or marks experimental. */
2
+ /**
3
+ * Plugin packages the plugin manager refuses to disable or remove, because management itself needs them; a bundle that
4
+ * contains one is read-only as well. Removing a name drops only this `management-required` refusal; the manager's own
5
+ * entry, installation-carried bundles, and unaddressable rows stay protected by their own rules.
6
+ */
7
+ export declare const PROTECTED_PLUGINS: ReadonlySet<string>;
8
+ /**
9
+ * Built-in profile bundles, persistent terminals, and the standalone worktree tool, which have no plugin manager page.
10
+ * Their Host availability and activation stay intact.
11
+ */
12
+ export declare const HIDDEN_BUNDLES: ReadonlySet<string>;
13
+ /**
14
+ * The optional bundles the plugin manager's main and More lists rank first, in this order. {@link MORE_BUNDLES}, not
15
+ * this list, decides whether a bundle appears on the main list.
16
+ */
17
+ export declare const EXTENSION_BUNDLES: readonly string[];
18
+ /**
19
+ * The optional bundles the plugin manager's main list leaves out until the profile enables them; its More list,
20
+ * which includes every eligible bundle, ranks them last in this order.
21
+ */
22
+ export declare const MORE_BUNDLES: readonly string[];
23
+ /** Official bundles the plugin manager marks with the Experimental badge. */
24
+ export declare const EXPERIMENTAL_BUNDLES: ReadonlySet<string>;
25
+ //# sourceMappingURL=plugin-manager.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,38 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-official-bundles",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "description": "Installation-owned lists of official dsh bundles (shipped profile templates, optional, on-demand, and retired bundles) and the plugin manager's protected and presented packages",
4
+ "version": "0.2.2-alpha.3",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
11
+ "directory": "packages/util/official-bundles"
12
+ },
13
+ "type": "module",
14
+ "main": "lib/index.js",
15
+ "types": "lib/types/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./lib/types/index.d.ts",
19
+ "default": "./lib/index.js"
20
+ },
21
+ "./src/*": "./src/*",
22
+ "./package.json": "./package.json"
23
+ },
24
+ "files": [
25
+ "lib/index.js",
26
+ "lib/types/**/*.d.ts"
27
+ ],
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "@deepseek-ai/dsh-package-manifest": "0.2.2-alpha.3"
31
+ },
32
+ "peerDependencies": {
33
+ "@deepseek-ai/cordis": "~4.0.6-alpha.2"
34
+ },
35
+ "devDependencies": {
36
+ "@deepseek-ai/cordis": "~4.0.6-alpha.2"
37
+ }
6
38
  }