@deepseek-ai/dsh-client-ui-goal 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 +73 -4
- package/README.zh.md +75 -6
- package/lib/client.js +5 -6
- package/lib/types/client/goal-command-input.d.ts +2 -2
- package/lib/types/client/index.d.ts +2 -2
- package/lib/types/client/slots.d.ts +13 -2
- package/package.json +23 -26
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-goal/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 05c44fee27f0500c6a5d53496fde3d447edbf424
|
|
6
|
+
README.zh.md: f280356eb37b364f49851ca24d73370eb62e6795
|
package/README.md
CHANGED
|
@@ -1,16 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Goal surface for the Web GUI: the composer-context strip that shows the current goal and edits, pauses, resumes, or clears it; for users and maintainers of the goal experience."
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-client-ui-goal
|
|
2
7
|
|
|
3
8
|
English | [中文](README.zh.md)
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
This package renders the goal surface in the Web GUI: a strip in the composer-context stack that shows the current goal of the session and offers edit, pause, resume, and clear actions. It reads the live goal from the host-computed projection and routes every mutation through the goal service, surfacing rejections inline. It also projects each durable `/goal` command run as a `Command input` bubble in the chat, so a goal command entered by the user or the model appears in the transcript. Goal creation is outside this plugin. The shipped Web presets other than `minimal` mount `/goal` in their agent scope.
|
|
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
|
+
Mount this plugin alongside `ui-conversation` and the goal domain package; the strip then appears as the second card in the composer-context stack (after Todo, before Queue) whenever the session has a goal. An active goal offers pause; a paused one offers resume; edit rewrites the objective; clear removes the goal and suppresses the strip until the projection catches up.
|
|
29
|
+
|
|
30
|
+
### The command-input bubble
|
|
31
|
+
|
|
32
|
+
Each durable `/goal` run projects as a right-aligned monospace user-style bubble labeled `Command input` (or `指令输入`), rendered before the generic command result row. It carries no timestamp, copy, or branch actions, and reloading reconstructs it from the run.
|
|
33
|
+
|
|
34
|
+
### Failures
|
|
35
|
+
|
|
36
|
+
A rejected mutation surfaces the Remote error inline on the strip; loading, absent, completed, and successfully cleared goals render nothing.
|
|
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
|
-
The
|
|
46
|
+
The strip is projection-mode: the live goal arrives through `useProjection('goal')` (seeded by the history tail page and updated by `session/projection` frames), so the plugin owns no domain store, refresh chain, or event listener. The inject face carries only the four mutation verbs through `ctx.remote.goals`; each reads the CAS ref from the session's current projected value at call time, and the RPC's compare-and-set is the staleness guard. The strip single-flights mutations synchronously because a pending render cannot fence same-frame clicks. The command-input projection is a separate Conversation Definition that builds a `command-input` Chat Node before the generic command result Node; it never creates `user/message` or a model turn.
|
|
10
47
|
|
|
48
|
+
</details>
|
|
49
|
+
|
|
50
|
+
-----
|
|
51
|
+
|
|
52
|
+
<a id="further-exploration"></a>
|
|
53
|
+
## Further Exploration
|
|
54
|
+
|
|
55
|
+
Read these pages when the goal surface is not enough. They move from the browser strip to the goal domain and the slots it fills.
|
|
56
|
+
|
|
57
|
+
- [dsh-goal](../../goal/goal/README.md) — the goal domain, projection, and `/goal` command this surface reads and mutates.
|
|
58
|
+
- [ui-conversation](../ui-conversation/README.md) — declares the `conversation.input.dock` slot and owns the composer.
|
|
59
|
+
- [Client package map](../README.md) — adjacent browser UI packages.
|
|
60
|
+
|
|
61
|
+
-----
|
|
62
|
+
|
|
63
|
+
<a id="model-experience"></a>
|
|
11
64
|
## Model Experience
|
|
12
65
|
|
|
13
|
-
Indirectly, through the `goals/edit`, `goals/pause`, `goals/resume`, and `goals/clear`
|
|
66
|
+
Indirectly, through the `goals/edit`, `goals/pause`, `goals/resume`, and `goals/clear` mutations the strip routes; the host GoalService owns the model-visible goal context message those mutations queue.
|
|
14
67
|
|
|
15
68
|
#### KV Cache effect
|
|
16
69
|
|
|
@@ -18,4 +71,20 @@ None unless the queued goal context is admitted. An admitted context extends the
|
|
|
18
71
|
|
|
19
72
|
## Known Limitations and Deferred Work
|
|
20
73
|
|
|
74
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
These limits define the current goal surface. They are current package constraints, not a goal-domain comparison or a task backlog.
|
|
78
|
+
|
|
21
79
|
- **Durable phase only** — the projection omits process-local activation, so the strip cannot distinguish an active-but-disarmed goal from an armed one; resume re-arms through the RPC side. There is no host-live activation channel.
|
|
80
|
+
- **Preset-independent host state** — switching an active session to `minimal` leaves its host-owned goal intact. `/goal` and goal tools disappear, while this strip can still edit, pause, resume, or clear the goal.
|
|
81
|
+
|
|
82
|
+
<a id="dev-note"></a>
|
|
83
|
+
### Dev Note
|
|
84
|
+
|
|
85
|
+
<details>
|
|
86
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
87
|
+
|
|
88
|
+
None.
|
|
89
|
+
|
|
90
|
+
</details>
|
package/README.zh.md
CHANGED
|
@@ -1,21 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Web GUI 的 goal 表面:显示当前目标并支持编辑、暂停、恢复或清除的 composer 上下文条带;供 goal 体验的用户与维护者阅读。"
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-client-ui-goal
|
|
2
7
|
|
|
3
8
|
[English](README.md) | 中文
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
本包在 Web GUI 中渲染 goal 表面:composer 上下文堆栈里的一条条带,显示会话的当前目标,并提供编辑、暂停、恢复与清除动作。它从宿主计算的投影读取活目标,把每次变更都经 goal 服务路由,并把拒绝内联呈现。它还把每条持久的 `/goal` 命令运行投影为聊天中的 `Command input` 气泡,让用户或模型输入的 goal 命令出现在文本记录中。goal 创建不归本插件。除 `minimal` 外,随附的 Web preset 都会在其 agent scope 中挂载 `/goal`。
|
|
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
|
+
与 `ui-conversation` 及 goal 领域包一起挂载本插件;只要会话存在目标,条带就会作为 composer 上下文堆栈的第二张卡片出现(位于 Todo 之后、Queue 之前)。active 的 goal 提供暂停动作;paused 的提供恢复;编辑重写目标文本;清除移除目标,并在投影追上之前抑制条带。
|
|
29
|
+
|
|
30
|
+
### 指令输入气泡
|
|
31
|
+
|
|
32
|
+
每条持久的 `/goal` 运行都投影为一个右对齐的等宽用户样式气泡,标签为 `Command input`(或 `指令输入`),渲染在通用命令结果行之前。它不含时间戳、复制或分支操作,重新加载时会依据运行记录重建。
|
|
33
|
+
|
|
34
|
+
### 失败
|
|
35
|
+
|
|
36
|
+
被拒绝的变更会把 Remote 错误内联呈现到条带上;加载中、无目标、已完成与成功清除的目标一律不渲染。
|
|
37
|
+
|
|
38
|
+
-----
|
|
39
|
+
|
|
40
|
+
<a id="understand-the-implementation"></a>
|
|
41
|
+
## 理解实现
|
|
6
42
|
|
|
7
|
-
|
|
43
|
+
<details>
|
|
44
|
+
<summary>实现细节——点击展开</summary>
|
|
8
45
|
|
|
9
|
-
|
|
46
|
+
条带是投影模式:活目标经 `useProjection('goal')` 到达(由历史尾页播种、`session/projection` 帧更新),因此插件不持有领域 store、不设刷新链、不挂事件监听。注入面只携带四个变更动词,经 `ctx.remote.goals` 调用;每个动词在调用时从会话当前投影值读取 CAS ref,比较并交换(RPC 的 CAS)就是陈旧性护栏。由于 React 的 pending 渲染无法拦住同一帧内的点击,条带会同步为变更建立 single-flight 防护。指令输入投影是独立的 Conversation Definition,在通用命令结果 Node 之前构建 `command-input` Chat Node;它绝不创建 `user/message` 或模型轮次。
|
|
10
47
|
|
|
48
|
+
</details>
|
|
49
|
+
|
|
50
|
+
-----
|
|
51
|
+
|
|
52
|
+
<a id="further-exploration"></a>
|
|
53
|
+
## 进一步探索
|
|
54
|
+
|
|
55
|
+
当 goal 表面不够用时阅读以下页面。它们从浏览器条带进入 goal 领域与它所填充的槽位。
|
|
56
|
+
|
|
57
|
+
- [dsh-goal](../../goal/goal/README.zh.md)——本表面读取并变更的 goal 领域、投影与 `/goal` 命令。
|
|
58
|
+
- [ui-conversation](../ui-conversation/README.zh.md)——声明 `conversation.input.dock` 槽位并拥有 composer。
|
|
59
|
+
- [客户端包映射](../README.zh.md)——相邻的浏览器 UI 包。
|
|
60
|
+
|
|
61
|
+
-----
|
|
62
|
+
|
|
63
|
+
<a id="model-experience"></a>
|
|
11
64
|
## 模型体验
|
|
12
65
|
|
|
13
|
-
|
|
66
|
+
间接影响:条带路由 `goals/edit`、`goals/pause`、`goals/resume` 与 `goals/clear` 变更;宿主 GoalService 拥有这些变更排队的模型可见 goal 上下文消息。
|
|
14
67
|
|
|
15
68
|
#### KV Cache 影响
|
|
16
69
|
|
|
17
70
|
除非已排队的 goal 上下文获准,否则没有影响。获准的上下文会像其他消息一样扩展历史尾部;准入前被丢弃的插入项不会影响缓存。
|
|
18
71
|
|
|
19
|
-
##
|
|
72
|
+
## 已知限制与延期工作
|
|
73
|
+
|
|
74
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
这些限制界定了当前 goal 表面。它们是当前包约束,不是 goal 领域对比或任务积压。
|
|
78
|
+
|
|
79
|
+
- **只反映持久阶段**——投影省略进程本地的激活状态,因此条带无法区分已激活但未武装的 goal 与已武装的 goal;恢复经 RPC 侧重新武装。不存在宿主实时激活通道。
|
|
80
|
+
- **Host 状态与 preset 无关**——把活跃会话切换到 `minimal` 后,Host 拥有的 goal 仍会保留。`/goal` 与 goal 工具会消失,但该条带仍可编辑、暂停、恢复或清除 goal。
|
|
81
|
+
|
|
82
|
+
<a id="dev-note"></a>
|
|
83
|
+
### 开发备注
|
|
84
|
+
|
|
85
|
+
<details>
|
|
86
|
+
<summary>维护者的工作上下文——点击展开</summary>
|
|
87
|
+
|
|
88
|
+
无。
|
|
20
89
|
|
|
21
|
-
|
|
90
|
+
</details>
|
package/lib/client.js
CHANGED
|
@@ -251,7 +251,7 @@ window.__ModuleLoader__.load({
|
|
|
251
251
|
}
|
|
252
252
|
//#endregion
|
|
253
253
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-goal/src/client/GoalCommandInputView.module.css.mjs
|
|
254
|
-
const css = ".oRe1gG_row{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.oRe1gG_stack{
|
|
254
|
+
const css = ".oRe1gG_row{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.oRe1gG_stack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;display:flex}.oRe1gG_bubble{overflow-wrap:anywhere;background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code);font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));white-space:pre-wrap;border-radius:22px;padding:10px 16px}";
|
|
255
255
|
const tagId = "@deepseek-ai/dsh-client-ui-goal/GoalCommandInputView.module.css";
|
|
256
256
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
257
257
|
const tag = document.createElement("style");
|
|
@@ -339,7 +339,7 @@ window.__ModuleLoader__.load({
|
|
|
339
339
|
"phase.paused": "已暂停的目标",
|
|
340
340
|
"phase.blocked": "受阻的目标",
|
|
341
341
|
"objective.aria": "目标内容",
|
|
342
|
-
"commandInput.aria": "
|
|
342
|
+
"commandInput.aria": "指令输入",
|
|
343
343
|
"action.save": "保存目标",
|
|
344
344
|
"action.cancel": "取消编辑",
|
|
345
345
|
"action.pause": "暂停目标",
|
|
@@ -372,14 +372,14 @@ window.__ModuleLoader__.load({
|
|
|
372
372
|
"remote",
|
|
373
373
|
"remote.goals",
|
|
374
374
|
"locale",
|
|
375
|
-
"
|
|
375
|
+
"uiConversation"
|
|
376
376
|
];
|
|
377
377
|
/**
|
|
378
378
|
* Client plugin body: the GoalBar dock entry with its mutation verbs.
|
|
379
379
|
* @param ctx - client root context.
|
|
380
380
|
*/
|
|
381
381
|
function apply(ctx) {
|
|
382
|
-
ctx.
|
|
382
|
+
ctx.uiConversation.events.register(goalCommandInputDefinition);
|
|
383
383
|
ctx.effect(() => ctx.locale.register(NS, {
|
|
384
384
|
zh,
|
|
385
385
|
en
|
|
@@ -403,8 +403,7 @@ window.__ModuleLoader__.load({
|
|
|
403
403
|
ok: false,
|
|
404
404
|
error: {
|
|
405
405
|
code: "no-current-goal",
|
|
406
|
-
message: "no current goal to mutate"
|
|
407
|
-
details: {}
|
|
406
|
+
message: "no current goal to mutate"
|
|
408
407
|
}
|
|
409
408
|
};
|
|
410
409
|
ctx.slots.inject("conversation.input.dock", () => ctx.slots.register({
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { SessionEvent } from '@deepseek-ai/dsh-session/types';
|
|
2
2
|
import type { CommandId } from '@deepseek-ai/dsh-commands/brand';
|
|
3
|
-
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-
|
|
3
|
+
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-ui-conversation/client';
|
|
4
4
|
/** Goal-owned human command input projected independently of model messages. */
|
|
5
5
|
export interface GoalCommandInputData {
|
|
6
6
|
readonly commandId: CommandId;
|
|
7
7
|
readonly text: string;
|
|
8
8
|
readonly time: number;
|
|
9
9
|
}
|
|
10
|
-
declare module '@deepseek-ai/dsh-client-ui-
|
|
10
|
+
declare module '@deepseek-ai/dsh-client-ui-chat/client' {
|
|
11
11
|
interface ChatNodeDataMap {
|
|
12
12
|
/** Human-entered `/goal` command input. */
|
|
13
13
|
'command-input': GoalCommandInputData;
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* refresh chain, and no event listener. The inject face carries only the
|
|
7
7
|
* four mutation verbs through the generated Goal Remote API;
|
|
8
8
|
* their CAS ref reads the session's current projected value at call time.
|
|
9
|
-
*
|
|
9
|
+
* This plugin does not create goals; deployments may expose /goal separately.
|
|
10
10
|
*/
|
|
11
|
-
import type { ClientContext } from '@deepseek-ai/
|
|
11
|
+
import type { Context as ClientContext } from '@deepseek-ai/cordis';
|
|
12
12
|
import { type GoalKey } from './locales.ts';
|
|
13
13
|
export { GoalBar, GoalDock } from './GoalBar.tsx';
|
|
14
14
|
export type { GoalActionResult, GoalBarActions } from './slots.ts';
|
|
@@ -6,13 +6,24 @@
|
|
|
6
6
|
* (the framework standard kit); inject carries only the mutation verbs
|
|
7
7
|
* (callbacks from inject, live state from useProjection).
|
|
8
8
|
*/
|
|
9
|
-
import type { RemoteResult } from '@deepseek-ai/dsh-
|
|
9
|
+
import type { RemoteResult } from '@deepseek-ai/dsh-api-remotes/client';
|
|
10
|
+
/**
|
|
11
|
+
* The one failure the strip reports without a wire call: the session projects
|
|
12
|
+
* no goal, so no CAS ref exists to address a mutation to.
|
|
13
|
+
*/
|
|
14
|
+
export interface GoalLocalFailure {
|
|
15
|
+
readonly ok: false;
|
|
16
|
+
readonly error: {
|
|
17
|
+
readonly code: 'no-current-goal';
|
|
18
|
+
readonly message: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
10
21
|
/**
|
|
11
22
|
* Settled outcome of one goal mutation, rendered inline by the strip. The
|
|
12
23
|
* strip renders the failure only — the mutated goal arrives through the
|
|
13
24
|
* projection — so the success value stays unread here.
|
|
14
25
|
*/
|
|
15
|
-
export type GoalActionResult = RemoteResult<unknown
|
|
26
|
+
export type GoalActionResult = RemoteResult<unknown> | GoalLocalFailure;
|
|
16
27
|
/** Injected business face of the GoalBar dock entry: the mutation verbs (function properties: the strip destructures them freely). */
|
|
17
28
|
export interface GoalBarActions {
|
|
18
29
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-goal",
|
|
3
3
|
"description": "Session goal surface: GoalBar docked above the composer, read from the goal session projection",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2-alpha.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -32,45 +32,42 @@
|
|
|
32
32
|
"dsh": {
|
|
33
33
|
"client": {
|
|
34
34
|
"inject": [
|
|
35
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
36
35
|
"@deepseek-ai/dsh-api-remotes",
|
|
36
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
37
37
|
"@deepseek-ai/dsh-client-locale",
|
|
38
|
-
"@deepseek-ai/dsh-client-ui-
|
|
38
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
40
|
+
"@deepseek-ai/dsh-client-ui-renderer",
|
|
41
|
+
"@deepseek-ai/dsh-client-ui-session"
|
|
39
42
|
],
|
|
40
43
|
"platform": "web"
|
|
41
44
|
}
|
|
42
45
|
},
|
|
43
46
|
"license": "MIT",
|
|
44
47
|
"peerDependencies": {
|
|
45
|
-
"@deepseek-ai/
|
|
46
|
-
"@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2",
|
|
47
|
-
"@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
|
|
48
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2",
|
|
49
|
-
"@deepseek-ai/dsh-commands": "^0.1.1-rc.2",
|
|
50
|
-
"@deepseek-ai/dsh-goal": "^0.1.1-rc.2",
|
|
51
|
-
"@deepseek-ai/cordis": "^4.0.1",
|
|
52
|
-
"@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
|
|
53
|
-
"@deepseek-ai/dsh-session": "^0.1.1-rc.2",
|
|
54
|
-
"@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2"
|
|
48
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
55
49
|
},
|
|
56
50
|
"devDependencies": {
|
|
57
51
|
"@testing-library/react": "^16.1.0",
|
|
58
52
|
"@types/react": "~18.3.1",
|
|
59
53
|
"react": "^18.2.0",
|
|
60
54
|
"react-dom": "^18.2.0",
|
|
61
|
-
"@deepseek-ai/dsh-
|
|
62
|
-
"@deepseek-ai/dsh-
|
|
63
|
-
"@deepseek-ai/dsh-client-
|
|
64
|
-
"@deepseek-ai/dsh-client-ui-
|
|
65
|
-
"@deepseek-ai/dsh-client-ui-
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
67
|
-
"@deepseek-ai/dsh-
|
|
68
|
-
"@deepseek-ai/dsh-
|
|
69
|
-
"@deepseek-ai/
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/
|
|
72
|
-
"@deepseek-ai/dsh-
|
|
73
|
-
"@deepseek-ai/dsh-
|
|
55
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.2-alpha.2",
|
|
56
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.2",
|
|
57
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-alpha.2",
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.2",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.2",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-chat": "^0.1.2-alpha.2",
|
|
61
|
+
"@deepseek-ai/dsh-client-ui-session": "^0.1.2-alpha.2",
|
|
62
|
+
"@deepseek-ai/dsh-commands": "^0.1.2-alpha.2",
|
|
63
|
+
"@deepseek-ai/dsh-goal": "^0.1.2-alpha.2",
|
|
64
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-alpha.2",
|
|
65
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
66
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.2",
|
|
67
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.2",
|
|
68
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.2-alpha.2",
|
|
69
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.2",
|
|
70
|
+
"@deepseek-ai/dsh-client-test-runtime": "^0.1.2-alpha.2"
|
|
74
71
|
},
|
|
75
72
|
"files": [
|
|
76
73
|
"lib/index.js",
|