@deepseek-ai/dsh-client-ui-workflow-run 0.1.1-rc.2 → 0.1.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/README.i18n.yaml +2 -2
- package/README.md +79 -14
- package/README.zh.md +81 -16
- package/lib/client.js +5 -5
- package/lib/types/client/WorkflowRunPanel.d.ts +2 -2
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/workflow-definition.d.ts +2 -2
- package/package.json +22 -22
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/ui-workflow-run/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 1cf482bb8f9d0f8c41e82a639fa6cb656f5fd563
|
|
6
|
+
README.zh.md: 2b559c666b1ea00374717b9f401ea02113459ac6
|
package/README.md
CHANGED
|
@@ -1,35 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Durable workflow-run Conversation Node for the dsh web client: reconstructs top-level workflow runs as independent chat nodes with nested member disclosure."
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-client-ui-workflow-run
|
|
2
7
|
|
|
3
8
|
English | [中文](README.zh.md)
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
`dsh-client-ui-workflow-run` is the browser plugin that reconstructs durable top-level workflow runs as independent Chat nodes in the dsh web client. It consumes the four `tool-workflow/*` Session events owned by `dsh-tool-workflow`, registers one `ConversationNodeDefinition`, and renders through the keyed `conversation.chat.node` slot without changing the existing workflow tool card. The run and each phase are controlled disclosures: a mount opens running, failed, cancelled, and interrupted levels and closes fully completed levels, and users can toggle either level with the full row, Enter, or Space. A member opens a child Session only while every current fact agrees, and the node shows run, phase, member identity, and status only.
|
|
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
|
+
A top-level workflow run through `dsh-tool-workflow` appears in the conversation as its own node: expand the run to see its phases, and expand a phase to see its members. Phase groups come only from members that started, and settlement changes status without removing or reordering members.
|
|
29
|
+
|
|
30
|
+
### Navigating the node
|
|
31
|
+
|
|
32
|
+
The run uses a 32-pixel row with persistent chevrons, an inline state dot, and status text; phases use disclosure rows with title and member count in the main area and a fixed aggregate-status tail; members use a 16-pixel dot slot, a truncating name area, and a fixed status column. Opening a member's child Session requires the member to be running, the child id to be in the ordinary Session list, the row to have `origin: 'subagent'`, its `parentId` to be the current Session, and the list row to still be running — remote, addressed-only, wrong-parent, or terminal rows remain non-interactive.
|
|
33
|
+
|
|
34
|
+
### State and completion
|
|
35
|
+
|
|
36
|
+
Completion updates the visible status immediately but delays its automatic close while focus remains inside the content. A closed Turn or Step with missing terminal events presents the affected run or members as interrupted without changing the tool result.
|
|
37
|
+
|
|
38
|
+
-----
|
|
39
|
+
|
|
40
|
+
<a id="understand-the-implementation"></a>
|
|
41
|
+
## Understand the implementation
|
|
6
42
|
|
|
7
|
-
|
|
43
|
+
<details>
|
|
44
|
+
<summary>Implementation internals — click to expand</summary>
|
|
8
45
|
|
|
9
|
-
`tool-workflow/run-start` creates one Context keyed by `runId
|
|
46
|
+
The node is a deterministic replay of durable session events: `tool-workflow/run-start` creates one Context keyed by `runId`, and member starts, member endings, and the run ending update that Context in log order. A history tail containing only updates remains pending until an older page supplies the unique start, after which prepend, complete replay, and live append produce the same state.
|
|
10
47
|
|
|
11
|
-
|
|
48
|
+
### Disclosure choices
|
|
12
49
|
|
|
13
|
-
|
|
50
|
+
Ordinary running updates preserve the current choice, the first abnormal edge opens once, normal completion closes once, and a completed phase plus the outer run open again when a new running member starts under the same phase key. If an entire new clean cycle arrives in one render while the run remains active, the phase finishes folded but the outer run opens once to expose its updated summary. `WorkflowRunPanel` owns the phase choices, so closing and reopening the outer run does not reset them; a renderer remount reconstructs every initial choice from durable facts.
|
|
14
51
|
|
|
15
|
-
|
|
52
|
+
### Composition
|
|
16
53
|
|
|
17
|
-
|
|
54
|
+
The package registers its Definition, locale dictionary, and `workflow-run` renderer as Cordis effects; removing the client entry retracts all three contributions. The shipped Web bundle includes the plugin after `ui-conversation` and `ui-tool`.
|
|
18
55
|
|
|
19
|
-
|
|
56
|
+
</details>
|
|
20
57
|
|
|
21
|
-
|
|
58
|
+
-----
|
|
22
59
|
|
|
60
|
+
<a id="further-exploration"></a>
|
|
61
|
+
## Further Exploration
|
|
62
|
+
|
|
63
|
+
These pages cover the tool seam, the conversation host, and the tool presentation layer.
|
|
64
|
+
|
|
65
|
+
- [tool-workflow](../../workflow/tool-workflow/README.md) — the tool that owns the four `tool-workflow/*` Session events.
|
|
66
|
+
- [ui-conversation](../ui-conversation/README.md) — the chat surface hosting the `conversation.chat.node` slot.
|
|
67
|
+
- [ui-tool](../ui-tool/README.md) — the tool-call presentation layer this node sits beside.
|
|
68
|
+
- [Conversation subsystem](../../../docs/subsystems/conversation.md) — how a business-owned feature registers a Conversation node.
|
|
69
|
+
|
|
70
|
+
-----
|
|
71
|
+
|
|
72
|
+
<a id="model-experience"></a>
|
|
23
73
|
## Model Experience
|
|
24
74
|
|
|
25
|
-
None, as
|
|
75
|
+
None, as the package is a browser-side UI plugin layer that renders durable workflow records without changing model context.
|
|
26
76
|
|
|
27
77
|
#### KV Cache effect
|
|
28
78
|
|
|
29
|
-
None.
|
|
79
|
+
None; this package neither assembles nor sends a provider request.
|
|
30
80
|
|
|
31
81
|
## Known Limitations and Deferred Work
|
|
32
82
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
83
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
These limits define which runs produce records and what the node exposes; they are current package constraints.
|
|
87
|
+
|
|
88
|
+
- **Only top-level calls through `dsh-tool-workflow` produce these records** — nested PTC mode calls and direct `WorkflowEngine` consumers do not.
|
|
89
|
+
- **Navigation is intentionally live-only** — terminal members remain visible for review but never expose a cold-session opener from this node.
|
|
90
|
+
- **The node shows run, phase, member identity, and status only** — scripts, outputs, errors, logs, usage, static topology, and controls remain outside this surface.
|
|
91
|
+
|
|
92
|
+
<a id="dev-note"></a>
|
|
93
|
+
### Dev Note
|
|
94
|
+
|
|
95
|
+
<details>
|
|
96
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
97
|
+
|
|
98
|
+
None.
|
|
99
|
+
|
|
100
|
+
</details>
|
package/README.zh.md
CHANGED
|
@@ -1,35 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "dsh Web 客户端的持久化工作流运行 Conversation Node:把顶层工作流运行重建为带嵌套成员折叠的独立聊天节点。"
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-client-ui-workflow-run
|
|
2
7
|
|
|
3
8
|
[English](README.md) | 中文
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
`dsh-client-ui-workflow-run` 是浏览器插件,把持久化的顶层工作流运行重建为 dsh Web 客户端中的独立 Chat 节点。它消费由 `dsh-tool-workflow` 拥有的四类 `tool-workflow/*` Session 事件,注册一个 `ConversationNodeDefinition`,并通过 keyed `conversation.chat.node` slot 渲染,不改变现有工作流工具卡。运行与每个阶段都是受控 disclosure:挂载时运行中、失败、已取消与已中断层级默认展开,全部完成的层级默认折叠,用户可以点击整行或按 Enter、Space 切换任一层级。只有当所有实时事实同时成立时,成员才可打开子 Session;节点只显示运行、阶段、成员身份与状态。
|
|
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
|
+
经 `dsh-tool-workflow` 发起的顶层工作流运行会在对话中显示为独立节点:展开运行查看其阶段,展开阶段查看其成员。阶段组只来自开始过的成员;成员结算只改变状态,不删除或重排成员。
|
|
29
|
+
|
|
30
|
+
### 导航节点
|
|
31
|
+
|
|
32
|
+
运行使用 32 像素行,带常驻 chevron、行内状态点与状态文字;阶段使用 disclosure 行,在主区显示标题与成员数、在固定尾部显示聚合状态;成员使用 16 像素状态点槽、可省略名称区与固定状态列。打开成员的子 Session 需要成员仍在运行、子 id 位于普通 Session 列表、列表行为 `origin: 'subagent'`、`parentId` 等于当前 Session,且列表行仍标记运行——远程、仅地址化、父级不符或终态的行都不可交互。
|
|
33
|
+
|
|
34
|
+
### 状态与完成
|
|
35
|
+
|
|
36
|
+
完成状态会立即更新,但只要焦点仍位于展开内容内,自动折叠就会等待焦点离开。若所属 Turn 或 Step 已关闭但终点事件缺失,界面把相应运行或成员显示为已中断,而不改写工具结果。
|
|
37
|
+
|
|
38
|
+
-----
|
|
39
|
+
|
|
40
|
+
<a id="understand-the-implementation"></a>
|
|
41
|
+
## 理解实现
|
|
6
42
|
|
|
7
|
-
|
|
43
|
+
<details>
|
|
44
|
+
<summary>实现细节——点击展开</summary>
|
|
8
45
|
|
|
9
|
-
|
|
46
|
+
节点是持久化会话事件的确定性回放:`tool-workflow/run-start` 以 `runId` 创建唯一 Context,成员开始、成员结束与运行结束事件按日志顺序更新该 Context。只有 update 的历史尾页会保持 pending,直到更早页面补入唯一 start;此后 prepend、完整回放与实时 append 得到相同状态。
|
|
10
47
|
|
|
11
|
-
|
|
48
|
+
### 展开选择
|
|
12
49
|
|
|
13
|
-
|
|
50
|
+
普通运行更新保留当前选择,首次异常边沿只自动展开一次,正常完成只自动折叠一次;已完成阶段在同一 phase key 下开始新的运行成员时,该 Phase 与外层运行会再次自动展开。若一个完整的新干净周期在同一次渲染中送达且运行仍处于活动状态,Phase 保持折叠,但外层运行会自动展开一次以展示更新后的摘要。Phase 选择由 `WorkflowRunPanel` 持有,因此关闭并重新打开外层运行不会重置它们;renderer remount 会从持久事实重建每层的初始选择。
|
|
14
51
|
|
|
15
|
-
|
|
52
|
+
### 装配
|
|
16
53
|
|
|
17
|
-
|
|
54
|
+
本包把 Definition、locale 字典与 `workflow-run` renderer 都注册为 Cordis effect;移除客户端 entry 会撤销三者。shipped Web bundle 在 `ui-conversation` 与 `ui-tool` 之后装配该插件。
|
|
18
55
|
|
|
19
|
-
|
|
56
|
+
</details>
|
|
20
57
|
|
|
21
|
-
|
|
58
|
+
-----
|
|
22
59
|
|
|
60
|
+
<a id="further-exploration"></a>
|
|
61
|
+
## 进一步探索
|
|
62
|
+
|
|
63
|
+
以下页面覆盖工具 seam、对话宿主与工具展示层。
|
|
64
|
+
|
|
65
|
+
- [tool-workflow](../../workflow/tool-workflow/README.zh.md)——拥有四类 `tool-workflow/*` Session 事件的工具。
|
|
66
|
+
- [ui-conversation](../ui-conversation/README.zh.md)——承载 `conversation.chat.node` slot 的聊天界面。
|
|
67
|
+
- [ui-tool](../ui-tool/README.zh.md)——本节点相邻的工具调用展示层。
|
|
68
|
+
- [Conversation 子系统](../../../docs/subsystems/conversation.zh.md)——业务自有功能如何注册 Conversation node。
|
|
69
|
+
|
|
70
|
+
-----
|
|
71
|
+
|
|
72
|
+
<a id="model-experience"></a>
|
|
23
73
|
## 模型体验
|
|
24
74
|
|
|
25
|
-
|
|
75
|
+
无。该包是浏览器端 UI 插件层,只渲染持久化工作流记录,不改变模型上下文。
|
|
26
76
|
|
|
27
|
-
#### KV Cache
|
|
77
|
+
#### KV Cache 影响
|
|
28
78
|
|
|
29
|
-
|
|
79
|
+
无;该包既不组装也不发送提供方请求。
|
|
80
|
+
|
|
81
|
+
## 已知限制与延期工作
|
|
82
|
+
|
|
83
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
30
84
|
|
|
31
|
-
## 已知限制与暂缓事项
|
|
32
85
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
86
|
+
这些限制定义哪些运行会产生记录、节点暴露什么;它们是当前包约束。
|
|
87
|
+
|
|
88
|
+
- **只有经 `dsh-tool-workflow` 发起的顶层调用会生成这些记录**:嵌套 PTC mode 调用和直接 `WorkflowEngine` 消费方不会生成。
|
|
89
|
+
- **导航刻意只面向实时运行**:终态成员继续保留供复盘,但本节点永不为其提供冷 Session 入口。
|
|
90
|
+
- **节点只显示运行、阶段、成员身份与状态**:脚本、输出、错误、日志、用量、静态拓扑与控制操作都不属于本界面。
|
|
91
|
+
|
|
92
|
+
<a id="dev-note"></a>
|
|
93
|
+
### 开发备注
|
|
94
|
+
|
|
95
|
+
<details>
|
|
96
|
+
<summary>维护者的工作上下文——点击展开</summary>
|
|
97
|
+
|
|
98
|
+
无。
|
|
99
|
+
|
|
100
|
+
</details>
|
package/lib/client.js
CHANGED
|
@@ -7,9 +7,9 @@ window.__ModuleLoader__.load({
|
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
let react = require("react");
|
|
9
9
|
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
10
|
-
let
|
|
10
|
+
let _deepseek_ai_dsh_client_store = require("@deepseek-ai/dsh-client-store");
|
|
11
11
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-workflow-run/src/client/WorkflowRunPanel.module.css.mjs
|
|
12
|
-
const css = ".DBuyfa_root{width:100%;min-width:0}.DBuyfa_runHeader{box-sizing:border-box;background:var(--dsw-alias-bg-module-platform);border-radius:8px;align-items:center;gap:6px;width:100%;min-width:0;height:32px;padding:0 8px;display:flex}.DBuyfa_runHeader:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.DBuyfa_runLeading{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:0;display:inline-flex}.DBuyfa_runTitle{max-width:42%;color:var(--dsw-alias-label-secondary);
|
|
12
|
+
const css = ".DBuyfa_root{width:100%;min-width:0}.DBuyfa_runHeader{box-sizing:border-box;background:var(--dsw-alias-bg-module-platform);border-radius:8px;align-items:center;gap:6px;width:100%;min-width:0;height:32px;padding:0 8px;display:flex}.DBuyfa_runHeader:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.DBuyfa_runLeading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:0;display:inline-flex}.DBuyfa_runTitle{max-width:42%;color:var(--dsw-alias-label-secondary);font-size:var(--dsh-content-font-size-secondary,13px);font-weight:510;line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.DBuyfa_runSummary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px));text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.DBuyfa_statusTail{height:20px;color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;align-items:center;gap:4px;font-size:11px;font-weight:510;line-height:16px;display:inline-flex;overflow:hidden}.DBuyfa_phaseHeader{box-sizing:border-box;align-items:center;gap:6px;width:100%;min-width:0;height:32px;display:flex}.DBuyfa_phaseHeader:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px;border-radius:4px}.DBuyfa_phaseLeading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:0;display:inline-flex}.DBuyfa_phaseTitle{min-width:0;max-width:42%;color:var(--dsw-alias-label-secondary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.DBuyfa_phaseCount{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.DBuyfa_phaseStatus{width:calc(132px + var(--dsh-content-font-delta-secondary,0px) * 10);color:var(--dsw-alias-label-secondary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));text-align:right;text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.DBuyfa_separator{background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:2px;height:2px}.DBuyfa_phaseList{flex-direction:column;gap:4px;min-width:0;padding:4px 0 0 16px;display:flex}.DBuyfa_phase{min-width:0}.DBuyfa_members{flex-direction:column;gap:2px;min-width:0;padding:0 0 0 16px;display:flex}.DBuyfa_memberRow,.DBuyfa_memberButton{width:100%;min-width:0;min-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:12px;padding:0;display:flex}.DBuyfa_memberButton{cursor:pointer}.DBuyfa_memberButton .DBuyfa_memberLabel{color:var(--dsw-alias-state-business-primary);text-underline-position:from-font;text-decoration:underline}.DBuyfa_dotSlot{width:16px;height:calc(24px + var(--dsh-content-font-delta,0px));flex:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.DBuyfa_memberButton:focus-visible{outline:none}.DBuyfa_memberButton:focus-visible .DBuyfa_memberLabelWrap{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.DBuyfa_memberLabelWrap{min-width:0;height:calc(24px + var(--dsh-content-font-delta,0px));border-radius:4px;flex:1;align-items:center;padding:0 2px;display:flex;overflow:hidden}.DBuyfa_memberLabel{min-width:0;color:var(--dsw-alias-label-secondary);font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.DBuyfa_memberStatus{width:64px;color:var(--dsw-alias-label-secondary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));text-align:right;text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.DBuyfa_empty{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));padding:0}@media (width<=560px){.DBuyfa_phaseList,.DBuyfa_members{padding-left:12px}}";
|
|
13
13
|
const tagId = "@deepseek-ai/dsh-client-ui-workflow-run/WorkflowRunPanel.module.css";
|
|
14
14
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
15
15
|
const tag = document.createElement("style");
|
|
@@ -311,7 +311,7 @@ window.__ModuleLoader__.load({
|
|
|
311
311
|
}));
|
|
312
312
|
const runContentRef = (0, react.useRef)(null);
|
|
313
313
|
const phaseContentRefs = (0, react.useRef)(/* @__PURE__ */ new Map());
|
|
314
|
-
const navigable = useSessions((sessions) => navigableMembers(sessions, node.data.phases, sessionId),
|
|
314
|
+
const navigable = useSessions((sessions) => navigableMembers(sessions, node.data.phases, sessionId), _deepseek_ai_dsh_client_store.shallowEqual);
|
|
315
315
|
(0, react.useLayoutEffect)(() => {
|
|
316
316
|
setDisclosures((current) => {
|
|
317
317
|
const phases = /* @__PURE__ */ new Map();
|
|
@@ -618,14 +618,14 @@ window.__ModuleLoader__.load({
|
|
|
618
618
|
/** Browser plugin for durable workflow-run Conversation Nodes. */
|
|
619
619
|
/** Required services for Definition, keyed renderer, navigation, and copy. */
|
|
620
620
|
const inject = [
|
|
621
|
-
"
|
|
621
|
+
"uiConversation",
|
|
622
622
|
"slots",
|
|
623
623
|
"sessions",
|
|
624
624
|
"locale"
|
|
625
625
|
];
|
|
626
626
|
/** Register the workflow Definition, dictionary, and keyed Chat renderer. */
|
|
627
627
|
function apply(ctx) {
|
|
628
|
-
ctx.
|
|
628
|
+
ctx.uiConversation.events.register(workflowRunDefinition);
|
|
629
629
|
ctx.effect(() => ctx.locale.register(NS, {
|
|
630
630
|
zh,
|
|
631
631
|
en
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
-
import {
|
|
3
|
-
/** Navigation action injected from the plugin's own
|
|
2
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
3
|
+
/** Navigation action injected from the plugin's own Session Controller access. */
|
|
4
4
|
export interface WorkflowRunInjected {
|
|
5
5
|
readonly openSession: (id: SessionId) => void;
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Browser plugin for durable workflow-run Conversation Nodes. */
|
|
2
|
-
import type { ClientContext } from '@deepseek-ai/
|
|
2
|
+
import type { Context as ClientContext } from '@deepseek-ai/cordis';
|
|
3
3
|
import { type WorkflowRunKey } from './locales.ts';
|
|
4
4
|
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
5
5
|
interface LocaleNamespaceMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-
|
|
1
|
+
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-ui-conversation/client';
|
|
2
2
|
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
3
3
|
import type { ToolWorkflowAgentStartData } from '@deepseek-ai/dsh-tool-workflow/types';
|
|
4
4
|
import type { WorkflowAgentOutcome, WorkflowStopReason } from '@deepseek-ai/dsh-workflow/types';
|
|
@@ -24,7 +24,7 @@ export interface WorkflowRunChatData {
|
|
|
24
24
|
readonly status: WorkflowRunStatus;
|
|
25
25
|
readonly phases: readonly WorkflowRunPhaseData[];
|
|
26
26
|
}
|
|
27
|
-
declare module '@deepseek-ai/dsh-client-ui-
|
|
27
|
+
declare module '@deepseek-ai/dsh-client-ui-chat/client' {
|
|
28
28
|
interface ChatNodeDataMap {
|
|
29
29
|
/** Durable top-level workflow run and all members that actually started. */
|
|
30
30
|
'workflow-run': WorkflowRunChatData;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-workflow-run",
|
|
3
3
|
"description": "Durable workflow-run Conversation Node and nested member disclosure for dsh web",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2-alpha.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -32,9 +32,12 @@
|
|
|
32
32
|
"dsh": {
|
|
33
33
|
"client": {
|
|
34
34
|
"inject": [
|
|
35
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
35
36
|
"@deepseek-ai/dsh-client-locale",
|
|
36
|
-
"@deepseek-ai/dsh-client-
|
|
37
|
-
"@deepseek-ai/dsh-client-ui-conversation"
|
|
37
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
38
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-renderer",
|
|
40
|
+
"@deepseek-ai/dsh-client-ui-session"
|
|
38
41
|
],
|
|
39
42
|
"platform": "web"
|
|
40
43
|
}
|
|
@@ -47,29 +50,26 @@
|
|
|
47
50
|
],
|
|
48
51
|
"license": "MIT",
|
|
49
52
|
"peerDependencies": {
|
|
50
|
-
"@deepseek-ai/
|
|
51
|
-
"@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
|
|
52
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2",
|
|
53
|
-
"@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
|
|
54
|
-
"@deepseek-ai/dsh-session": "^0.1.1-rc.2",
|
|
55
|
-
"@deepseek-ai/dsh-tool-workflow": "^0.1.1-rc.2",
|
|
56
|
-
"@deepseek-ai/dsh-workflow": "^0.1.1-rc.2",
|
|
57
|
-
"@deepseek-ai/cordis": "^4.0.1"
|
|
53
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
58
54
|
},
|
|
59
55
|
"devDependencies": {
|
|
60
56
|
"@types/react": "~18.3.1",
|
|
61
57
|
"react": "^18.2.0",
|
|
62
|
-
"@deepseek-ai/dsh-
|
|
63
|
-
"@deepseek-ai/dsh-client-
|
|
64
|
-
"@deepseek-ai/dsh-client-
|
|
65
|
-
"@deepseek-ai/dsh-client-ui-
|
|
66
|
-
"@deepseek-ai/dsh-client-
|
|
67
|
-
"@deepseek-ai/dsh-client-
|
|
68
|
-
"@deepseek-ai/dsh-
|
|
69
|
-
"@deepseek-ai/dsh-
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-
|
|
72
|
-
"@deepseek-ai/
|
|
58
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.2-alpha.3",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-chat": "^0.1.2-alpha.3",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.3",
|
|
61
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-alpha.3",
|
|
62
|
+
"@deepseek-ai/dsh-client-store": "^0.1.2-alpha.3",
|
|
63
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.3",
|
|
64
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.3",
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.3",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-session": "^0.1.2-alpha.3",
|
|
67
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-alpha.3",
|
|
68
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.3",
|
|
69
|
+
"@deepseek-ai/dsh-tool-workflow": "^0.1.2-alpha.3",
|
|
70
|
+
"@deepseek-ai/dsh-client-test-runtime": "^0.1.2-alpha.3",
|
|
71
|
+
"@deepseek-ai/dsh-workflow": "^0.1.2-alpha.3",
|
|
72
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|
|
75
75
|
"bundle": "tsdown",
|