@deepseek-ai/dsh-client-web 0.1.1-rc.2 → 0.1.2-alpha.2
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/README.i18n.yaml +2 -2
- package/README.md +105 -5
- package/README.zh.md +107 -7
- package/lib/base.css +12 -0
- package/lib/index.js +6 -3
- package/lib/types/boot.d.ts +1 -1
- package/lib/types/platform.d.ts +2 -2
- package/package.json +10 -10
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/client/web/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: c505698413b29aebe5c91d05311305c36bd7949a
|
|
6
|
+
README.zh.md: 176679338c0e824afe917b834293ceea0fb392a3
|
package/README.md
CHANGED
|
@@ -1,18 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Web boot kernel for the web GUI: two-stage boot of the client plugin tree, the framework-free boot page, and the shared module table, for users and maintainers composing or debugging the browser application."
|
|
3
|
+
kind: "package-library"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-client-web
|
|
2
7
|
|
|
3
8
|
English | [中文](README.zh.md)
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
`dsh-client-web` boots the web GUI: it loads the client module system from the Host-provided boot graph, then activates every client plugin before the application mounts, so the full UI appears only when every plugin is up. A framework-free boot page reports per-entry status, so a failing bundle or plugin stays visible instead of a blank screen. It also defines the shared module table (`PLATFORM_MODULES`) that every dynamic bundle resolves its externals against. The model never sees this package.
|
|
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
|
+
- [Model Experience](#model-experience)
|
|
20
|
+
- [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
|
|
21
|
+
- [Dev Note](#dev-note)
|
|
22
|
+
|
|
23
|
+
-----
|
|
24
|
+
|
|
25
|
+
<a id="use-this-package"></a>
|
|
26
|
+
## Use this package
|
|
27
|
+
|
|
28
|
+
Use it when you assemble the browser application: `apps/web`'s Vite entry runs `new AppWebEntry(container).run()` against the mount point, and the boot page carries the user through activation. Ordinary browser callers pass no options. A pre-injected page transport is the default ahead of the `seams` override: when `globalThis.__DSH_TRANSPORT__` carries `loadBundle`, the module stage adopts it as the bundle transport and skips the immediate-tier HTTP prefetch, while explicit `seams` still win (for example jsdom tests, where external `<script>` execution cannot reach the page context).
|
|
29
|
+
|
|
30
|
+
The shell base styles apply automatic CJK/Latin spacing to ordinary content in supporting browsers. Semantic code and terminal, diff, read, and search output containers retain literal source spacing and column alignment; browsers without `text-autospace` support ignore both declarations.
|
|
31
|
+
|
|
32
|
+
### What boot looks like
|
|
33
|
+
|
|
34
|
+
Boot runs in two stages: the module stage adopts the parser-loaded bootstrap batch, builds the module system from the Host-provided boot graph, and prefetches the `immediately` tier through the shared application-batch URL, which executes once. The plugin stage then activates every graph entry and waits for all of them before handing the marked boot DOM to the UI renderer, which hydrates it and switches to the complete UI.
|
|
35
|
+
|
|
36
|
+
### The boot page
|
|
37
|
+
|
|
38
|
+
The boot page uses plain DOM and local CSS, so bundle and plugin-activation failures remain visible: it shows one spinner node whose CSS arc grows as entries activate, and reports per-entry status. The spinner and its animation phase persist until the full UI replaces the boot page. A plugin that fails import or activation is reported by name with the reason (missing service, import error, or state) instead of a blank page.
|
|
39
|
+
|
|
40
|
+
### The shared module table
|
|
41
|
+
|
|
42
|
+
`PLATFORM_MODULES` (in `src/platform.ts`) names the shell-seeded shared modules — React, Cordis, and static UI libraries — and together with `PRELOADED_CLIENT_EXTERNALS` (the parser-preloaded runtime row) defines the implicit external baseline every dynamic bundle resolves against. `dsh.client.external` adds only exact non-baseline requests; see [shared modules and the module graph](../AGENTS.md#shared-modules-and-the-module-graph).
|
|
43
|
+
|
|
44
|
+
### Configuration
|
|
45
|
+
|
|
46
|
+
The package accepts no plugin config of its own; the generated [configuration catalog](../../../docs/config-catalog.md) lists every plugin config in the repo for comparison.
|
|
47
|
+
|
|
48
|
+
-----
|
|
49
|
+
|
|
50
|
+
<a id="understand-the-implementation"></a>
|
|
51
|
+
## Understand the implementation
|
|
52
|
+
|
|
53
|
+
<details>
|
|
54
|
+
<summary>Implementation internals — click to expand</summary>
|
|
6
55
|
|
|
7
|
-
|
|
56
|
+
This section explains how the boot kernel is built; observable behavior is covered in [Use this package](#use-this-package).
|
|
8
57
|
|
|
9
|
-
|
|
58
|
+
### Design concept
|
|
10
59
|
|
|
11
|
-
The
|
|
60
|
+
The kernel owns exactly three things: the module system, the Cordis Loader, and the boot page. The Host owns the graph, batch preload, and loader facade, so `AppWebEntry` never knows the bootstrap package id or parses the wire format. The dynamic UI renderer receives the mount point only after every client entry activates.
|
|
12
61
|
|
|
62
|
+
### Two-stage boot
|
|
63
|
+
|
|
64
|
+
`run()` calls the Host-installed `window.__ModuleLoader__.create({ boot, staticModules, ...seams })`; the facade returns the constructed module system and parsed manifest after adopting the parser-loaded bootstrap batch. The module stage prefetches the `immediately` tier through the one shared application-batch URL. The plugin stage mounts the Loader, assigns `loader.internal = modules`, creates every graph entry uniformly, awaits quiescence, then audits activation: any entry that failed import, stayed pending on a missing service, or landed in another non-active state throws one aggregated error naming every failing entry.
|
|
65
|
+
|
|
66
|
+
### Boot page mechanics
|
|
67
|
+
|
|
68
|
+
The boot page is plain DOM with local CSS whose fallback fonts and colors match the theme tokens that arrive during loading. `internal/status` events drive one spinner node and per-entry labels; hydration preserves the node and animation phase through the application commit, and `fail()` renders the thrown reason. React mounting, slot rendering, and assembly live in `ui-renderer`; `ui-layout` owns the assembled browser-title projection.
|
|
69
|
+
|
|
70
|
+
### Source map
|
|
71
|
+
|
|
72
|
+
| File | Role |
|
|
73
|
+
|---|---|
|
|
74
|
+
| [`src/index.ts`](src/index.ts) | Library entry: `AppWebEntry`, `getStaticModules`, platform tables |
|
|
75
|
+
| [`src/boot.ts`](src/boot.ts) | `AppWebEntry`: two-stage boot, activation audit, renderer handoff |
|
|
76
|
+
| [`src/boot-page.ts`](src/boot-page.ts) | Framework-free boot page: spinner, per-entry status, failure rendering |
|
|
77
|
+
| [`src/platform.ts`](src/platform.ts) | `PLATFORM_MODULES` / `PRELOADED_CLIENT_EXTERNALS`: the implicit external baseline |
|
|
78
|
+
| [`src/seed.ts`](src/seed.ts) | Static module table handed to the loader at boot |
|
|
79
|
+
|
|
80
|
+
</details>
|
|
81
|
+
|
|
82
|
+
-----
|
|
83
|
+
|
|
84
|
+
<a id="further-exploration"></a>
|
|
85
|
+
## Further Exploration
|
|
86
|
+
|
|
87
|
+
Read these when the boot contract is not enough: the module system it boots, the renderer that mounts the app, and the client authoring rules behind the baseline.
|
|
88
|
+
|
|
89
|
+
- [Client module system](../modules/README.md) — the lazy module table and boot graph this kernel consumes.
|
|
90
|
+
- [UI renderer](../ui-renderer/README.md) — receives the mount point and binds slot data to React.
|
|
91
|
+
- [Client modules subsystem](../../../docs/subsystems/client-modules.md) — the web plugin table, boot graph wire, and bundle route.
|
|
92
|
+
- [Client authoring rules](../AGENTS.md#shared-modules-and-the-module-graph) — the shared-module baseline and `dsh.client.external` semantics.
|
|
93
|
+
- [Client group map](../README.md) — the browser half this package belongs to.
|
|
94
|
+
|
|
95
|
+
-----
|
|
96
|
+
|
|
97
|
+
<a id="model-experience"></a>
|
|
13
98
|
## Model Experience
|
|
14
99
|
|
|
15
|
-
None, as the
|
|
100
|
+
None, as the boot kernel is a browser-side UI plugin layer that registers nothing model-facing.
|
|
16
101
|
|
|
17
102
|
#### KV Cache effect
|
|
18
103
|
|
|
@@ -20,4 +105,19 @@ None; this package neither assembles nor sends a provider request.
|
|
|
20
105
|
|
|
21
106
|
## Known Limitations and Deferred Work
|
|
22
107
|
|
|
108
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
These limits define what the boot kernel does not support. They are current package constraints, not a task backlog.
|
|
112
|
+
|
|
23
113
|
- **The application waits for the full roster** — one failed entry keeps the framework-free boot page visible with a per-entry report; partial UI availability is not supported.
|
|
114
|
+
|
|
115
|
+
<a id="dev-note"></a>
|
|
116
|
+
### Dev Note
|
|
117
|
+
|
|
118
|
+
<details>
|
|
119
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
120
|
+
|
|
121
|
+
None.
|
|
122
|
+
|
|
123
|
+
</details>
|
package/README.zh.md
CHANGED
|
@@ -1,23 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "面向用户与维护者的 web GUI 启动内核说明:客户端插件树的两阶段启动、无框架启动页与共享模块表,用于组合或排查浏览器应用。"
|
|
3
|
+
kind: "package-library"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-client-web
|
|
2
7
|
|
|
3
8
|
[English](README.md) | 中文
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
`dsh-client-web` 启动 web GUI:它先从 Host 提供的启动图加载客户端模块系统,再在应用挂载前激活每一个客户端插件,因此只有当所有插件都就绪时完整 UI 才会出现。无框架启动页会逐 entry 报告状态,因此失败的 bundle 或插件保持可见,而不是白屏。它还定义共享模块表(`PLATFORM_MODULES`),每个动态 bundle 都依据它解析 external。模型永远看不到本包。
|
|
13
|
+
|
|
14
|
+
## 目录
|
|
15
|
+
|
|
16
|
+
- [使用本包](#use-this-package)
|
|
17
|
+
- [理解实现](#understand-the-implementation)
|
|
18
|
+
- [进一步探索](#further-exploration)
|
|
19
|
+
- [模型体验](#model-experience)
|
|
20
|
+
- [已知限制与延期工作](#known-limitations-and-deferred-work)
|
|
21
|
+
- [开发备注](#dev-note)
|
|
22
|
+
|
|
23
|
+
-----
|
|
24
|
+
|
|
25
|
+
<a id="use-this-package"></a>
|
|
26
|
+
## 使用本包
|
|
27
|
+
|
|
28
|
+
组装浏览器应用时使用它:`apps/web` 的 Vite 入口对挂载点运行 `new AppWebEntry(container).run()`,启动页承载用户度过激活过程。普通浏览器调用方不传任何选项。预注入的页面传输是 `seams` 覆盖之前的默认:当 `globalThis.__DSH_TRANSPORT__` 携带 `loadBundle` 时,模块阶段将其采纳为 bundle 传输并跳过 `immediately` 层级的 HTTP 预取,而显式 `seams` 仍然优先(例如外部 `<script>` 执行无法到达页面上下文的 jsdom 测试)。
|
|
29
|
+
|
|
30
|
+
外壳基础样式会在支持的浏览器中为普通内容自动添加中西文间距。语义化代码以及终端、diff、读取和搜索输出容器会保留源码中的原始间距和列对齐;不支持 `text-autospace` 的浏览器会忽略这两项声明。
|
|
31
|
+
|
|
32
|
+
### 启动过程是怎样的
|
|
33
|
+
|
|
34
|
+
启动分两个阶段:模块阶段接纳 parser 已加载的 bootstrap 批次,从 Host 提供的启动图构建模块系统,并通过只执行一次的共享 application 批次 URL 预取 `immediately` 层级。插件阶段随后激活每个图 entry 并等待全部就绪,之后才把带标记的启动 DOM 交给 UI 渲染器,由它 hydrate 并切换到完整 UI。
|
|
35
|
+
|
|
36
|
+
### 启动页
|
|
37
|
+
|
|
38
|
+
启动页只使用原生 DOM 与本地 CSS,因此 bundle 与插件激活失败保持可见:它显示一个 spinner 节点,其 CSS 圆弧随 entry 激活而增长,并逐 entry 报告状态。spinner 及其动画相位会一直保留,直到完整 UI 替换启动页。导入或激活失败的插件会按名称报告并给出原因(缺失服务、导入错误或状态),而不是白屏。
|
|
39
|
+
|
|
40
|
+
### 共享模块表
|
|
41
|
+
|
|
42
|
+
`PLATFORM_MODULES`(位于 `src/platform.ts`)列出外壳播种的共享模块——React、Cordis 与静态 UI 库——并与 `PRELOADED_CLIENT_EXTERNALS`(parser 预载的 runtime 行)一起定义每个动态 bundle 解析所依据的隐式 external 基座。`dsh.client.external` 只添加基座之外的精确请求;参见[共享模块与模块图](../AGENTS.md#shared-modules-and-the-module-graph)。
|
|
43
|
+
|
|
44
|
+
### 配置
|
|
45
|
+
|
|
46
|
+
本包自身不接受任何插件配置;生成的[配置目录](../../../docs/config-catalog.zh.md)列出仓库中每个插件配置以供对照。
|
|
47
|
+
|
|
48
|
+
-----
|
|
49
|
+
|
|
50
|
+
<a id="understand-the-implementation"></a>
|
|
51
|
+
## 理解实现
|
|
52
|
+
|
|
53
|
+
<details>
|
|
54
|
+
<summary>实现细节——点击展开</summary>
|
|
6
55
|
|
|
7
|
-
|
|
56
|
+
本节解释启动内核的构建方式;可观察行为已在[使用本包](#use-this-package)中说明。
|
|
8
57
|
|
|
9
|
-
|
|
58
|
+
### 设计理念
|
|
10
59
|
|
|
11
|
-
|
|
60
|
+
内核恰好拥有三样东西:模块系统、Cordis Loader 与启动页。Graph、批次 preload 与 loader facade 归 Host 所有,因此 `AppWebEntry` 永不感知 bootstrap package id,也不解析协议格式。动态 UI 渲染器只在每个客户端 entry 激活后收到挂载点。
|
|
12
61
|
|
|
62
|
+
### 两阶段启动
|
|
63
|
+
|
|
64
|
+
`run()` 调用 Host 安装的 `window.__ModuleLoader__.create({ boot, staticModules, ...seams })`;facade 接纳 parser 已加载的 bootstrap 批次后返回构造好的模块系统与已解析 manifest。模块阶段通过一个共享的 application 批次 URL 预取 `immediately` 层级。插件阶段挂载 Loader、把 `loader.internal` 赋为 `modules`、统一创建全部图 entry、等待完全停稳,然后审计激活:任何导入失败、因缺失服务而 pending,或落入其他非 active 状态的 entry,都会抛出一个聚合错误,点名每个失败 entry。
|
|
65
|
+
|
|
66
|
+
### 启动页机制
|
|
67
|
+
|
|
68
|
+
启动页是原生 DOM 加本地 CSS,其回退字体与颜色匹配加载期间到达的主题 token。`internal/status` 事件驱动一个 spinner 节点与逐 entry 标签;hydrate 会保留该节点与动画相位直到应用提交,`fail()` 渲染抛出的原因。React 挂载、slot 渲染与应用组装位于 `ui-renderer`;`ui-layout` 拥有组装后的浏览器标题投影。
|
|
69
|
+
|
|
70
|
+
### 源码地图
|
|
71
|
+
|
|
72
|
+
| 文件 | 职责 |
|
|
73
|
+
|---|---|
|
|
74
|
+
| [`src/index.ts`](src/index.ts) | 库入口:`AppWebEntry`、`getStaticModules`、平台表 |
|
|
75
|
+
| [`src/boot.ts`](src/boot.ts) | `AppWebEntry`:两阶段启动、激活审计、渲染器交接 |
|
|
76
|
+
| [`src/boot-page.ts`](src/boot-page.ts) | 无框架启动页:spinner、逐 entry 状态、失败渲染 |
|
|
77
|
+
| [`src/platform.ts`](src/platform.ts) | `PLATFORM_MODULES` / `PRELOADED_CLIENT_EXTERNALS`:隐式 external 基座 |
|
|
78
|
+
| [`src/seed.ts`](src/seed.ts) | 启动时交给 loader 的静态模块表 |
|
|
79
|
+
|
|
80
|
+
</details>
|
|
81
|
+
|
|
82
|
+
-----
|
|
83
|
+
|
|
84
|
+
<a id="further-exploration"></a>
|
|
85
|
+
## 进一步探索
|
|
86
|
+
|
|
87
|
+
当启动约定不够用时阅读以下页面:它所启动的模块系统、挂载应用的渲染器,以及基座背后的客户端编写规则。
|
|
88
|
+
|
|
89
|
+
- [客户端模块系统](../modules/README.zh.md)——本内核消费的惰性模块表与启动图。
|
|
90
|
+
- [UI 渲染器](../ui-renderer/README.zh.md)——接收挂载点并把 slot 数据绑定到 React。
|
|
91
|
+
- [客户端模块子系统](../../../docs/subsystems/client-modules.zh.md)——web 插件表、启动图协议与 bundle 路由。
|
|
92
|
+
- [客户端编写规则](../AGENTS.md#shared-modules-and-the-module-graph)——共享模块基座与 `dsh.client.external` 语义。
|
|
93
|
+
- [客户端组地图](../README.zh.md)——本包所属的浏览器半侧。
|
|
94
|
+
|
|
95
|
+
-----
|
|
96
|
+
|
|
97
|
+
<a id="model-experience"></a>
|
|
13
98
|
## 模型体验
|
|
14
99
|
|
|
15
|
-
|
|
100
|
+
无。启动内核属于浏览器侧 UI 插件层,不注册任何面向模型的内容。
|
|
16
101
|
|
|
17
102
|
#### KV Cache 影响
|
|
18
103
|
|
|
19
104
|
无;该包既不组装也不发送提供方请求。
|
|
20
105
|
|
|
21
|
-
##
|
|
106
|
+
## 已知限制与延期工作
|
|
107
|
+
|
|
108
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
这些限制说明启动内核不支持什么。它们是当前包约束,不是任务积压。
|
|
112
|
+
|
|
113
|
+
- **应用会等待完整名册**——只要一个 entry 失败,无框架启动页就会保留并逐项报告;不支持部分 UI 可用。
|
|
114
|
+
|
|
115
|
+
<a id="dev-note"></a>
|
|
116
|
+
### 开发备注
|
|
117
|
+
|
|
118
|
+
<details>
|
|
119
|
+
<summary>维护者的工作上下文——点击展开</summary>
|
|
120
|
+
|
|
121
|
+
无。
|
|
22
122
|
|
|
23
|
-
|
|
123
|
+
</details>
|
package/lib/base.css
CHANGED
|
@@ -28,6 +28,18 @@ body {
|
|
|
28
28
|
-moz-osx-font-smoothing: grayscale;
|
|
29
29
|
color: var(--dsw-alias-label-primary, #0f1115);
|
|
30
30
|
background: var(--dsw-alias-bg-base, #fff);
|
|
31
|
+
/* Supporting browsers insert CJK/Latin spacing in inherited prose. */
|
|
32
|
+
text-autospace: normal;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
code,
|
|
36
|
+
pre,
|
|
37
|
+
[data-diff],
|
|
38
|
+
[data-read],
|
|
39
|
+
[data-search],
|
|
40
|
+
[data-terminal] {
|
|
41
|
+
/* Literal payloads retain source spacing and column alignment. */
|
|
42
|
+
text-autospace: no-autospace;
|
|
31
43
|
}
|
|
32
44
|
|
|
33
45
|
/* Form controls don't inherit the body font (UA sheets pin their families —
|
package/lib/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import * as React from "react";
|
|
|
6
6
|
import * as ReactJsxRuntime from "react/jsx-runtime";
|
|
7
7
|
import * as ReactDom from "react-dom";
|
|
8
8
|
import * as ReactDomClient from "react-dom/client";
|
|
9
|
+
import * as ClientStore from "@deepseek-ai/dsh-client-store";
|
|
9
10
|
import * as UiSlots from "@deepseek-ai/dsh-client-ui-slots";
|
|
10
11
|
import * as UiPrimitives from "@deepseek-ai/dsh-client-ui-primitives";
|
|
11
12
|
import "./base.css";
|
|
@@ -116,6 +117,7 @@ function getStaticModules() {
|
|
|
116
117
|
"react-dom": ReactDom,
|
|
117
118
|
"react-dom/client": ReactDomClient,
|
|
118
119
|
"@deepseek-ai/cordis": Cordis,
|
|
120
|
+
"@deepseek-ai/dsh-client-store": ClientStore,
|
|
119
121
|
"@deepseek-ai/dsh-client-ui-slots": UiSlots,
|
|
120
122
|
"@deepseek-ai/dsh-client-ui-primitives": UiPrimitives
|
|
121
123
|
};
|
|
@@ -178,6 +180,7 @@ var AppWebEntry = class {
|
|
|
178
180
|
*/
|
|
179
181
|
async run() {
|
|
180
182
|
try {
|
|
183
|
+
await globalThis.__DSH_BOOT_READY__?.promise;
|
|
181
184
|
const win = globalThis;
|
|
182
185
|
const moduleLoader = win.__ModuleLoader__;
|
|
183
186
|
if (moduleLoader === void 0) throw new Error("web boot: window.__ModuleLoader__ bootstrap facade is missing");
|
|
@@ -212,9 +215,8 @@ var AppWebEntry = class {
|
|
|
212
215
|
scope.effect(() => scope.uiRenderer.mount(this.container), "web boot: application mount");
|
|
213
216
|
});
|
|
214
217
|
}
|
|
215
|
-
/** Prefetch stage-one bundles
|
|
218
|
+
/** Prefetch stage-one bundles and their dynamic requests before concurrent plugin imports. */
|
|
216
219
|
async prefetchImmediateTier() {
|
|
217
|
-
if (globalThis.__DSH_TRANSPORT__?.loadBundle !== void 0) return;
|
|
218
220
|
await Promise.all(this.manifest.plugins.filter((row) => row.immediately).map((row) => this.modules.prefetch(row.id).catch((_prefetchError) => {})));
|
|
219
221
|
}
|
|
220
222
|
/** Mount the Loader, create all graph entries, await quiescence, and audit activation. */
|
|
@@ -271,11 +273,12 @@ const PLATFORM_MODULES = [
|
|
|
271
273
|
"react-dom",
|
|
272
274
|
"react-dom/client",
|
|
273
275
|
"@deepseek-ai/cordis",
|
|
276
|
+
"@deepseek-ai/dsh-client-store",
|
|
274
277
|
"@deepseek-ai/dsh-client-ui-slots",
|
|
275
278
|
"@deepseek-ai/dsh-client-ui-primitives"
|
|
276
279
|
];
|
|
277
280
|
/** Client-bundle specifiers whose factories the parser preloads before the shell starts. */
|
|
278
|
-
const PRELOADED_CLIENT_EXTERNALS = [
|
|
281
|
+
const PRELOADED_CLIENT_EXTERNALS = [];
|
|
279
282
|
//#endregion
|
|
280
283
|
export { AppWebEntry, PLATFORM_MODULES, PRELOADED_CLIENT_EXTERNALS, getStaticModules };
|
|
281
284
|
|
package/lib/types/boot.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare class AppWebEntry {
|
|
|
26
26
|
dispose(): Promise<void>;
|
|
27
27
|
/** Mount through a dependency fiber so replacing uiRenderer remounts the application. */
|
|
28
28
|
private mountApp;
|
|
29
|
-
/** Prefetch stage-one bundles
|
|
29
|
+
/** Prefetch stage-one bundles and their dynamic requests before concurrent plugin imports. */
|
|
30
30
|
private prefetchImmediateTier;
|
|
31
31
|
/** Mount the Loader, create all graph entries, await quiescence, and audit activation. */
|
|
32
32
|
private runPluginBoot;
|
package/lib/types/platform.d.ts
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @module @deepseek-ai/dsh-client-web/src/platform
|
|
5
5
|
*/
|
|
6
6
|
/** The module specifiers the shell shares into the frozen module table. */
|
|
7
|
-
export declare const PLATFORM_MODULES: readonly ["react", "react/jsx-runtime", "react-dom", "react-dom/client", "@deepseek-ai/cordis", "@deepseek-ai/dsh-client-ui-slots", "@deepseek-ai/dsh-client-ui-primitives"];
|
|
7
|
+
export declare const PLATFORM_MODULES: readonly ["react", "react/jsx-runtime", "react-dom", "react-dom/client", "@deepseek-ai/cordis", "@deepseek-ai/dsh-client-store", "@deepseek-ai/dsh-client-ui-slots", "@deepseek-ai/dsh-client-ui-primitives"];
|
|
8
8
|
/** Client-bundle specifiers whose factories the parser preloads before the shell starts. */
|
|
9
|
-
export declare const PRELOADED_CLIENT_EXTERNALS: readonly [
|
|
9
|
+
export declare const PRELOADED_CLIENT_EXTERNALS: readonly [];
|
|
10
10
|
/** One platform module specifier (a seed-table key). */
|
|
11
11
|
export type PlatformModule = (typeof PLATFORM_MODULES)[number];
|
|
12
12
|
//# sourceMappingURL=platform.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-web",
|
|
3
3
|
"description": "Web boot kernel: static module table, Cordis loader, framework-free boot page, and UI-renderer handoff",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2-alpha.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -32,17 +32,17 @@
|
|
|
32
32
|
"react": "^18.2.0",
|
|
33
33
|
"react-dom": "^18.2.0",
|
|
34
34
|
"typescript": "^6.0.3",
|
|
35
|
-
"@deepseek-ai/
|
|
36
|
-
"@deepseek-ai/dsh-client-
|
|
37
|
-
"@deepseek-ai/
|
|
38
|
-
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.
|
|
39
|
-
"@deepseek-ai/dsh-
|
|
40
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.
|
|
41
|
-
"@deepseek-ai/
|
|
35
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.3",
|
|
36
|
+
"@deepseek-ai/dsh-client-modules": "^0.1.2-alpha.2",
|
|
37
|
+
"@deepseek-ai/dsh-client-store": "^0.1.2-alpha.2",
|
|
38
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.2",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-alpha.2",
|
|
40
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.2",
|
|
41
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-alpha.2",
|
|
42
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
42
43
|
},
|
|
43
44
|
"peerDependencies": {
|
|
44
|
-
"@deepseek-ai/
|
|
45
|
-
"@deepseek-ai/cordis": "^4.0.1"
|
|
45
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
46
46
|
},
|
|
47
47
|
"files": [
|
|
48
48
|
"lib/index.js",
|