@deepseek-ai/dsh-client-ui-conversation 0.1.1-rc.1 → 0.1.1-rc.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 +1 -1
- package/README.zh.md +1 -1
- package/lib/client.js +22 -37
- package/lib/types/client/locales.d.ts +0 -6
- package/package.json +49 -49
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-conversation/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 96f67677f690f12929cf691ab5901ded399504d3
|
|
6
|
+
README.zh.md: 05fdcd7a989fb74eb9f86f11cffb4eb77d38088a
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ The view ring is a slot: the strict session-body registration declares the sessi
|
|
|
14
14
|
|
|
15
15
|
Chat business rows are independent registry contributions rather than a closed built-in union. A client plugin declaration-merges its typed `ChatNodeDataMap` key, registers a `ConversationNodeDefinition` on `ctx.conversationEvents`, and registers the matching keyed renderer on `conversation.chat.node`; it does not modify Session folds or a central renderer switch. The [Conversation Node cookbook](../../../docs/cookbook/adding-a-conversation-node.md) covers stable event ids, append/prepend replay, Location data, and renderer constraints.
|
|
16
16
|
|
|
17
|
-
Approvals take over the composer through the chain this package declares: `ApprovalPanel` registers as a selector-routed `'conversation.composer'` entry (the ui-user-questions pattern) and occupies the composer in place of the InputBar while an approval wait is pending (amber strip, justification headline, paired command line from the running call's args, one-shot refuse/allow). The `PendingApproval` domain face in `contract/slots.ts` owns the wire encoding — the `ApprovalResponsePayload` value with the audit correlation — over the runtime's `PendingWait` carrier; the broadcast `approval/resolved` frame settles the wait and restores the composer. The runtime manager projects every approval or question wait through `SessionSummary.pendingInteraction`, including sessions never instantiated; `ui-workspace` owns its sidebar presentation. Pending waits leave the message flow entirely: questions (ui-user-questions) and approvals (ApprovalPanel) both answer through the composer takeover, so no display-only placeholder card remains. The composer's bottom-row Access seat mounts `PermissionSelect`, fed by the host-computed `permissions` projection through the standard-kit `useProjection` (key absence hides the chip); the chip opens a Menu-primitive dropdown whose
|
|
17
|
+
Approvals take over the composer through the chain this package declares: `ApprovalPanel` registers as a selector-routed `'conversation.composer'` entry (the ui-user-questions pattern) and occupies the composer in place of the InputBar while an approval wait is pending (amber strip, justification headline, paired command line from the running call's args, one-shot refuse/allow). The `PendingApproval` domain face in `contract/slots.ts` owns the wire encoding — the `ApprovalResponsePayload` value with the audit correlation — over the runtime's `PendingWait` carrier; the broadcast `approval/resolved` frame settles the wait and restores the composer. The runtime manager projects every approval or question wait through `SessionSummary.pendingInteraction`, including sessions never instantiated; `ui-workspace` owns its sidebar presentation. Pending waits leave the message flow entirely: questions (ui-user-questions) and approvals (ApprovalPanel) both answer through the composer takeover, so no display-only placeholder card remains. The composer's bottom-row Access seat mounts `PermissionSelect`, fed by the host-computed `permissions` projection through the standard-kit `useProjection` (key absence hides the chip); the chip opens a Menu-primitive dropdown whose kebab-case preset names render as title-case labels. Safe preset picks submit `/permission <preset>` immediately through the bar's injected `command` callback, while `danger-full-access` is presented as `Full access` and first opens an in-page Modal risk confirmation. The enabling action stays disabled until the user checks the acknowledgement; cancel, Escape, close, and mask click submit nothing.
|
|
18
18
|
|
|
19
19
|
The session header dispatches each current ordinary title and subagent breadcrumb through the optional session-scoped `'conversation.session.header.lineage'` seat, followed by the `'conversation.session.header.actions'` list and the independent `'conversation.session.header.utilities'` list at the right edge. Each lineage owner supplies plain breadcrumb identity and display text; the render site retains the ordinary title as fallback, and an ancestor also supplies its upward-navigation callback. Removing the occupant restores every title without affecting header actions, and optional Session utilities cannot reorder or move either group. The composer chain currency includes the current conversation `session`; ui-subagent selects one-shot or parent-unavailable addressed sessions for reason-specific read-only copy, while the ordinary InputBar keeps every addressed child Send-only because the continuation service exposes no public per-Activation cancellation operation and `session.cancel` would bypass its ownership.
|
|
20
20
|
|
package/README.zh.md
CHANGED
|
@@ -24,7 +24,7 @@ Think 行默认保持折叠,并在不展开思维链的情况下暴露实时
|
|
|
24
24
|
|
|
25
25
|
聊天流会把每条生产方关联的重试链投影为一个稳定的弱化状态行,并用最新一次尝试更新该行;每个重试事件仍保留在运行时快照与会话日志中。前端倒计时以客户端收到事件的时刻为计划延迟的起点,避免 Host 与浏览器的时钟偏差;剩余时间向上取整到秒,且下限为 1 秒。最近一次尚未完成的重试会显示从左到右的文字渐变动画。后续轮次事实用于区分已开始的尝试与在退避期间取消的尝试,Host 的 running 位只控制实时动画;随后该行会显示静态的已完成或已取消标签。normal 策略行显示有限重试上限;always 策略行显示 `∞`。激活该行会显示最近一次重试的精确延迟和失败消息。客户端运行时会在相应重试节点到达前移除每次失败尝试的流式输出尾部;后续某次尝试成功后,该状态仍保持可见。终态失败会在其轮次边界渲染为持久的内联状态——重试耗尽后与定格的重试行并列——展示适合显示的持久消息与可选错误码,但不会提供 Host 无法兑现的操作;AUTH 文案绝不会回显提供方给出的凭据片段。
|
|
26
26
|
|
|
27
|
-
审批通过本包声明的链条接管编辑器:`ApprovalPanel` 注册为按选择器路由的 `'conversation.composer'` 配置项(ui-user-questions 模式),在审批等待未决期间取代 InputBar 占据编辑器(琥珀色条、理由标题、来自运行中调用参数的配对命令行、一次性的拒绝/允许)。`contract/slots.ts` 中的 `PendingApproval` 领域面在运行时 `PendingWait` 载体之上拥有 wire 编码——带审计关联的 `ApprovalResponsePayload` 值;广播的 `approval/resolved` 帧使等待落定并恢复编辑器。运行时 manager 会将所有审批或问题等待通过 `SessionSummary.pendingInteraction` 投影出来,未实例化的会话也不例外;`ui-workspace` 负责其侧边栏呈现。未决等待完全离开消息流:问题(ui-user-questions)与审批(ApprovalPanel)都经编辑器接管作答,不再保留只读占位卡。编辑器底行的 Access 席位挂载 `PermissionSelect`,由 host 计算的 `permissions` 投影经标准工具包 `useProjection` 供数(key 缺席即隐藏 chip);chip 打开 Menu
|
|
27
|
+
审批通过本包声明的链条接管编辑器:`ApprovalPanel` 注册为按选择器路由的 `'conversation.composer'` 配置项(ui-user-questions 模式),在审批等待未决期间取代 InputBar 占据编辑器(琥珀色条、理由标题、来自运行中调用参数的配对命令行、一次性的拒绝/允许)。`contract/slots.ts` 中的 `PendingApproval` 领域面在运行时 `PendingWait` 载体之上拥有 wire 编码——带审计关联的 `ApprovalResponsePayload` 值;广播的 `approval/resolved` 帧使等待落定并恢复编辑器。运行时 manager 会将所有审批或问题等待通过 `SessionSummary.pendingInteraction` 投影出来,未实例化的会话也不例外;`ui-workspace` 负责其侧边栏呈现。未决等待完全离开消息流:问题(ui-user-questions)与审批(ApprovalPanel)都经编辑器接管作答,不再保留只读占位卡。编辑器底行的 Access 席位挂载 `PermissionSelect`,由 host 计算的 `permissions` 投影经标准工具包 `useProjection` 供数(key 缺席即隐藏 chip);chip 打开 Menu 原语下拉,其中 kebab-case 预设名渲染为 Title Case 标签;普通安全预设会立即经输入栏注入的 `command` 回调提交 `/permission <preset>`,而 `danger-full-access` 在界面中显示为 `Full access`,选择后先打开页面内的 Modal 风险确认。用户勾选确认项前启用按钮始终不可用;取消、Escape、关闭按钮与点击遮罩都不会提交命令。
|
|
28
28
|
|
|
29
29
|
`TodoDock` 以 `order: 0` 占用 `'conversation.input.dock'` 列表 slot(位于 Goal 与 Queue 之前),作为计划条读取 host 计算的 `todos` 投影(当前计划:其后没有更晚 `turn/start` 的最近一次 `todo/write`)并渲染 `TodoPanel`。面板接收纯列表,列表为空时自我隐藏;列表非空时默认折叠,表头显示标题及以 `·` 连接的各状态计数(如 `1 已完成 · 2 进行中 · 1 待处理`,省略零计数)。dock adapter 拥有 selection,因此面板保持为 props 的纯函数。输入区 composer 链隐藏的一切也会隐藏整个 dock。`todo_write` 工具行属于 [`ui-tool`](../ui-tool/README.zh.md)。
|
|
30
30
|
|
package/lib/client.js
CHANGED
|
@@ -3241,8 +3241,8 @@ window.__ModuleLoader__.load({
|
|
|
3241
3241
|
//#region lib/types/client/skeleton/PermissionSelect.js
|
|
3242
3242
|
const FULL_ACCESS = "danger-full-access";
|
|
3243
3243
|
const shieldOutline = "M8.20554 0.899994L14.7901 3.36857V7.01026C14.7901 12 11.0466 14.2103 8.20554 15.3C5.36446 14.2103 1.62012 12 1.62012 7.01026V3.36857L8.20554 0.899994Z";
|
|
3244
|
-
const permissionGlyphs =
|
|
3245
|
-
|
|
3244
|
+
const permissionGlyphs = {
|
|
3245
|
+
"read-only": (0, react_jsx_runtime.jsxs)("svg", {
|
|
3246
3246
|
width: "16",
|
|
3247
3247
|
height: "16",
|
|
3248
3248
|
viewBox: "0 0 16 16",
|
|
@@ -3257,8 +3257,8 @@ window.__ModuleLoader__.load({
|
|
|
3257
3257
|
d: "M12.1654 5.7552L8.9447 9.41475C8.73044 9.65816 8.53628 9.8804 8.35774 10.0423C8.1713 10.2114 7.94235 10.3717 7.64016 10.4254C7.48207 10.4535 7.32 10.4552 7.16151 10.4294C6.85843 10.3801 6.62728 10.2223 6.43836 10.0559C6.25752 9.89653 6.06037 9.67732 5.84264 9.43705L4.72925 8.20897L5.63557 7.38707L6.74897 8.61594C6.98603 8.87755 7.12974 9.03533 7.24673 9.13839C7.31033 9.19443 7.34485 9.21476 7.35823 9.22122C7.38068 9.22484 7.40352 9.22515 7.42593 9.22122C7.40522 9.22502 7.42893 9.23294 7.53583 9.136C7.65132 9.03126 7.79316 8.87139 8.02643 8.60638L11.2479 4.94763L12.1654 5.7552Z",
|
|
3258
3258
|
fill: "currentColor"
|
|
3259
3259
|
})]
|
|
3260
|
-
})
|
|
3261
|
-
|
|
3260
|
+
}),
|
|
3261
|
+
"workspace-write": (0, react_jsx_runtime.jsxs)("svg", {
|
|
3262
3262
|
width: "16",
|
|
3263
3263
|
height: "16",
|
|
3264
3264
|
viewBox: "0 0 16 16",
|
|
@@ -3286,8 +3286,8 @@ window.__ModuleLoader__.load({
|
|
|
3286
3286
|
fill: "currentColor"
|
|
3287
3287
|
})
|
|
3288
3288
|
]
|
|
3289
|
-
})
|
|
3290
|
-
[FULL_ACCESS
|
|
3289
|
+
}),
|
|
3290
|
+
[FULL_ACCESS]: (0, react_jsx_runtime.jsxs)("svg", {
|
|
3291
3291
|
width: "16",
|
|
3292
3292
|
height: "16",
|
|
3293
3293
|
viewBox: "0 0 16 16",
|
|
@@ -3309,33 +3309,25 @@ window.__ModuleLoader__.load({
|
|
|
3309
3309
|
fill: "currentColor"
|
|
3310
3310
|
})
|
|
3311
3311
|
]
|
|
3312
|
-
})
|
|
3313
|
-
|
|
3312
|
+
})
|
|
3313
|
+
};
|
|
3314
3314
|
/** Glyph for a permission option value; host-configured names outside the design set get none. */
|
|
3315
3315
|
function permissionGlyph(value) {
|
|
3316
|
-
return permissionGlyphs
|
|
3316
|
+
return permissionGlyphs[value];
|
|
3317
3317
|
}
|
|
3318
3318
|
/**
|
|
3319
|
-
* Display transform:
|
|
3320
|
-
* non-kebab host-configured names
|
|
3319
|
+
* Display transform: kebab-case machine names render as title-case labels
|
|
3320
|
+
* (`workspace-write` → `Workspace Write`); non-kebab host-configured names
|
|
3321
|
+
* pass through. Full access intentionally overrides the machine-name
|
|
3322
|
+
* transform so both permission surfaces use the product label `Full access`;
|
|
3323
|
+
* the warning body remains locale-aware.
|
|
3321
3324
|
*/
|
|
3322
3325
|
function displayName(name) {
|
|
3323
3326
|
if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(name)) return name;
|
|
3324
3327
|
return name.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
3325
3328
|
}
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
["workspace-write", "Workspace Write"],
|
|
3329
|
-
[FULL_ACCESS, "Full access"]
|
|
3330
|
-
]);
|
|
3331
|
-
function permissionLabel(value, name, t) {
|
|
3332
|
-
const builtInName = BUILT_IN_PERMISSION_NAMES.get(value);
|
|
3333
|
-
if (builtInName !== void 0 && (name === value || name === builtInName)) {
|
|
3334
|
-
if (value === "read-only") return t("access.preset.readOnly");
|
|
3335
|
-
if (value === "workspace-write") return t("access.preset.workspaceWrite");
|
|
3336
|
-
if (value === FULL_ACCESS) return t("access.preset.fullAccess");
|
|
3337
|
-
}
|
|
3338
|
-
return displayName(name);
|
|
3329
|
+
function optionLabel(option) {
|
|
3330
|
+
return option.value === FULL_ACCESS ? "Full access" : displayName(option.name);
|
|
3339
3331
|
}
|
|
3340
3332
|
function PermissionSelect({ value, locked, command, t }) {
|
|
3341
3333
|
const [pick, setPick] = (0, react.useState)(null);
|
|
@@ -3351,13 +3343,12 @@ window.__ModuleLoader__.load({
|
|
|
3351
3343
|
if (value === void 0) return null;
|
|
3352
3344
|
const currentValue = pick ?? value.currentValue;
|
|
3353
3345
|
const current = value.options.find((option) => option.value === currentValue);
|
|
3354
|
-
const currentLabel = current === void 0 ? permissionLabel(currentValue, currentValue, t) : permissionLabel(current.value, current.name, t);
|
|
3355
3346
|
const busy = pick !== null || confirmation !== null;
|
|
3356
3347
|
const items = value.options.filter((o) => o.value !== "custom").map((option) => {
|
|
3357
3348
|
const icon = permissionGlyph(option.value);
|
|
3358
3349
|
return {
|
|
3359
3350
|
id: option.value,
|
|
3360
|
-
label:
|
|
3351
|
+
label: optionLabel(option),
|
|
3361
3352
|
...icon === void 0 ? {} : { icon }
|
|
3362
3353
|
};
|
|
3363
3354
|
});
|
|
@@ -3399,7 +3390,7 @@ window.__ModuleLoader__.load({
|
|
|
3399
3390
|
anchor: (0, react_jsx_runtime.jsxs)("button", {
|
|
3400
3391
|
type: "button",
|
|
3401
3392
|
className: PermissionSelect_module_css_default.trigger,
|
|
3402
|
-
"aria-label": t("input.accessMode", { name:
|
|
3393
|
+
"aria-label": t("input.accessMode", { name: current === void 0 ? displayName(currentValue) : optionLabel(current) }),
|
|
3403
3394
|
title: current?.description,
|
|
3404
3395
|
disabled: locked || busy,
|
|
3405
3396
|
onClick: () => {
|
|
@@ -3413,7 +3404,7 @@ window.__ModuleLoader__.load({
|
|
|
3413
3404
|
}),
|
|
3414
3405
|
(0, react_jsx_runtime.jsx)("span", {
|
|
3415
3406
|
className: PermissionSelect_module_css_default.triggerLabel,
|
|
3416
|
-
children:
|
|
3407
|
+
children: current === void 0 ? displayName(currentValue) : optionLabel(current)
|
|
3417
3408
|
}),
|
|
3418
3409
|
(0, react_jsx_runtime.jsx)("span", {
|
|
3419
3410
|
className: clsx(PermissionSelect_module_css_default.chevron, open && PermissionSelect_module_css_default.chevronOpen),
|
|
@@ -6189,14 +6180,11 @@ window.__ModuleLoader__.load({
|
|
|
6189
6180
|
"settings.enter.description": "仅在智能体运行时生效;Cmd/Ctrl+Enter 使用另一行为",
|
|
6190
6181
|
"settings.enter.queue": "排队发送",
|
|
6191
6182
|
"settings.enter.steer": "插话发送",
|
|
6192
|
-
"access.
|
|
6193
|
-
"access.
|
|
6194
|
-
"access.preset.fullAccess": "完全权限",
|
|
6195
|
-
"access.confirm.title": "确认启用完全权限?",
|
|
6196
|
-
"access.confirm.description": "启用完全权限后,智能体将减少确认步骤,并且可以直接执行更多操作,包括敏感操作、文件修改或外部命令。仅建议在你信任当前任务时使用。",
|
|
6183
|
+
"access.confirm.title": "确认启用 Full access?",
|
|
6184
|
+
"access.confirm.description": "启用 Full access 后,agent 将减少确认步骤,并且可以直接执行更多操作,包括敏感操作、文件修改或外部命令。仅建议在你信任当前任务时使用。",
|
|
6197
6185
|
"access.confirm.acknowledge": "我已了解风险,并愿意继续",
|
|
6198
6186
|
"access.confirm.cancel": "取消",
|
|
6199
|
-
"access.confirm.enable": "
|
|
6187
|
+
"access.confirm.enable": "启用 Full access",
|
|
6200
6188
|
"hero.headline": "探索未至之境",
|
|
6201
6189
|
"hero.preview": "预览版",
|
|
6202
6190
|
"hero.chooseWorkspace": "选择工作区",
|
|
@@ -6365,9 +6353,6 @@ window.__ModuleLoader__.load({
|
|
|
6365
6353
|
"settings.enter.description": "Busy only; Cmd/Ctrl+Enter uses the other behavior",
|
|
6366
6354
|
"settings.enter.queue": "Queue",
|
|
6367
6355
|
"settings.enter.steer": "Steer",
|
|
6368
|
-
"access.preset.readOnly": "Read Only",
|
|
6369
|
-
"access.preset.workspaceWrite": "Workspace Write",
|
|
6370
|
-
"access.preset.fullAccess": "Full access",
|
|
6371
6356
|
"access.confirm.title": "Enable Full access?",
|
|
6372
6357
|
"access.confirm.description": "Full access reduces confirmation steps and lets the agent perform more actions directly, including sensitive operations, file changes, or external commands. Only use it when you trust the current task.",
|
|
6373
6358
|
"access.confirm.acknowledge": "I understand the risks and want to continue",
|
|
@@ -59,9 +59,6 @@ export declare const zh: {
|
|
|
59
59
|
'settings.enter.description': string;
|
|
60
60
|
'settings.enter.queue': string;
|
|
61
61
|
'settings.enter.steer': string;
|
|
62
|
-
'access.preset.readOnly': string;
|
|
63
|
-
'access.preset.workspaceWrite': string;
|
|
64
|
-
'access.preset.fullAccess': string;
|
|
65
62
|
'access.confirm.title': string;
|
|
66
63
|
'access.confirm.description': string;
|
|
67
64
|
'access.confirm.acknowledge': string;
|
|
@@ -237,9 +234,6 @@ export declare const en: {
|
|
|
237
234
|
'settings.enter.description': string;
|
|
238
235
|
'settings.enter.queue': string;
|
|
239
236
|
'settings.enter.steer': string;
|
|
240
|
-
'access.preset.readOnly': string;
|
|
241
|
-
'access.preset.workspaceWrite': string;
|
|
242
|
-
'access.preset.fullAccess': string;
|
|
243
237
|
'access.confirm.title': string;
|
|
244
238
|
'access.confirm.description': string;
|
|
245
239
|
'access.confirm.acknowledge': string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-conversation",
|
|
3
3
|
"description": "Conversation domain: skeleton, ordered chat flow, composer with the Host-backed busy-Enter preference, and details host",
|
|
4
|
-
"version": "0.1.1-rc.
|
|
4
|
+
"version": "0.1.1-rc.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -49,59 +49,59 @@
|
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
52
|
-
"@deepseek-ai/dsh-agent": "^0.1.1-rc.
|
|
53
|
-
"@deepseek-ai/dsh-
|
|
54
|
-
"@deepseek-ai/dsh-
|
|
55
|
-
"@deepseek-ai/dsh-client-
|
|
56
|
-
"@deepseek-ai/dsh-client-
|
|
57
|
-
"@deepseek-ai/dsh-client-ui-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
59
|
-
"@deepseek-ai/dsh-
|
|
60
|
-
"@deepseek-ai/dsh-
|
|
61
|
-
"@deepseek-ai/dsh-
|
|
62
|
-
"@deepseek-ai/dsh-
|
|
63
|
-
"@deepseek-ai/dsh-
|
|
64
|
-
"@deepseek-ai/dsh-
|
|
65
|
-
"@deepseek-ai/dsh-
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
67
|
-
"@deepseek-ai/dsh-settings": "^0.1.1-rc.
|
|
68
|
-
"@deepseek-ai/dsh-
|
|
69
|
-
"@deepseek-ai/dsh-
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-
|
|
72
|
-
"@deepseek-ai/dsh-
|
|
73
|
-
"@deepseek-ai/dsh-
|
|
52
|
+
"@deepseek-ai/dsh-agent": "^0.1.1-rc.2",
|
|
53
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2",
|
|
54
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-commands": "^0.1.1-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-brand": "^0.1.1-rc.2",
|
|
60
|
+
"@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
|
|
61
|
+
"@deepseek-ai/dsh-llm-retry": "^0.1.1-rc.2",
|
|
62
|
+
"@deepseek-ai/dsh-session-stats": "^0.1.1-rc.2",
|
|
63
|
+
"@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2",
|
|
64
|
+
"@deepseek-ai/dsh-tools": "^0.1.1-rc.2",
|
|
65
|
+
"@deepseek-ai/dsh-compaction": "^0.1.1-rc.2",
|
|
66
|
+
"@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
|
|
67
|
+
"@deepseek-ai/dsh-settings": "^0.1.1-rc.2",
|
|
68
|
+
"@deepseek-ai/dsh-attachment": "^0.1.1-rc.2",
|
|
69
|
+
"@deepseek-ai/dsh-goal": "^0.1.1-rc.2",
|
|
70
|
+
"@deepseek-ai/dsh-permission-presets": "^0.1.1-rc.2",
|
|
71
|
+
"@deepseek-ai/dsh-plan-mode": "^0.1.1-rc.2",
|
|
72
|
+
"@deepseek-ai/dsh-tool-todo": "^0.1.1-rc.2",
|
|
73
|
+
"@deepseek-ai/dsh-client-ui-layout": "^0.1.1-rc.2"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/react": "~18.3.1",
|
|
77
77
|
"react": "^18.2.0",
|
|
78
78
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
79
|
-
"@deepseek-ai/dsh-agent": "^0.1.1-rc.
|
|
80
|
-
"@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.
|
|
81
|
-
"@deepseek-ai/dsh-attachment": "^0.1.1-rc.
|
|
82
|
-
"@deepseek-ai/dsh-brand": "^0.1.1-rc.
|
|
83
|
-
"@deepseek-ai/dsh-client-
|
|
84
|
-
"@deepseek-ai/dsh-client-
|
|
85
|
-
"@deepseek-ai/dsh-client-
|
|
86
|
-
"@deepseek-ai/dsh-client-
|
|
87
|
-
"@deepseek-ai/dsh-client-ui-
|
|
88
|
-
"@deepseek-ai/dsh-client-ui-
|
|
89
|
-
"@deepseek-ai/dsh-client-ui-
|
|
90
|
-
"@deepseek-ai/dsh-client-ui-
|
|
91
|
-
"@deepseek-ai/dsh-
|
|
92
|
-
"@deepseek-ai/dsh-
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/dsh-
|
|
96
|
-
"@deepseek-ai/dsh-
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.1-rc.
|
|
100
|
-
"@deepseek-ai/dsh-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@deepseek-ai/dsh-
|
|
79
|
+
"@deepseek-ai/dsh-agent": "^0.1.1-rc.2",
|
|
80
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2",
|
|
81
|
+
"@deepseek-ai/dsh-attachment": "^0.1.1-rc.2",
|
|
82
|
+
"@deepseek-ai/dsh-brand": "^0.1.1-rc.2",
|
|
83
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2",
|
|
84
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2",
|
|
85
|
+
"@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
|
|
86
|
+
"@deepseek-ai/dsh-client-ui-layout": "^0.1.1-rc.2",
|
|
87
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.1-rc.2",
|
|
88
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2",
|
|
89
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2",
|
|
90
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.1-rc.2",
|
|
91
|
+
"@deepseek-ai/dsh-commands": "^0.1.1-rc.2",
|
|
92
|
+
"@deepseek-ai/dsh-compaction": "^0.1.1-rc.2",
|
|
93
|
+
"@deepseek-ai/dsh-goal": "^0.1.1-rc.2",
|
|
94
|
+
"@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
|
|
95
|
+
"@deepseek-ai/dsh-llm-retry": "^0.1.1-rc.2",
|
|
96
|
+
"@deepseek-ai/dsh-permission-presets": "^0.1.1-rc.2",
|
|
97
|
+
"@deepseek-ai/dsh-client-test-runtime": "^0.1.1-rc.2",
|
|
98
|
+
"@deepseek-ai/dsh-plan-mode": "^0.1.1-rc.2",
|
|
99
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2",
|
|
100
|
+
"@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2",
|
|
101
|
+
"@deepseek-ai/dsh-tool-todo": "^0.1.1-rc.2",
|
|
102
|
+
"@deepseek-ai/dsh-tools": "^0.1.1-rc.2",
|
|
103
|
+
"@deepseek-ai/dsh-settings": "^0.1.1-rc.2",
|
|
104
|
+
"@deepseek-ai/dsh-session-stats": "^0.1.1-rc.2"
|
|
105
105
|
},
|
|
106
106
|
"files": [
|
|
107
107
|
"lib/index.js",
|