@michengai/dsh-btw 0.1.7 → 0.1.9
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/CHANGELOG.md +9 -0
- package/CHANGELOG.zh-CN.md +9 -0
- package/README.md +10 -7
- package/README.zh-CN.md +10 -7
- package/lib/client.js +6 -10
- package/lib/index.js +57 -10
- package/lib/types/client/SelectionAsk.d.ts +1 -1
- package/lib/types/client/composer.d.ts +3 -2
- package/lib/types/server/tool-guard.d.ts +25 -11
- package/package.json +35 -30
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.9] - 2026-09-18
|
|
4
|
+
|
|
5
|
+
- Support DSH `0.1.6-alpha.2` while retaining compatibility with the six previously supported host versions.
|
|
6
|
+
- Use the official composer focus action when adding a quote to the conversation.
|
|
7
|
+
|
|
8
|
+
## [0.1.8] - 2026-09-16
|
|
9
|
+
|
|
10
|
+
- Support DSH `0.1.6-alpha.1` while retaining compatibility with the five previously supported host versions.
|
|
11
|
+
|
|
3
12
|
## [0.1.7] - 2026-09-13
|
|
4
13
|
|
|
5
14
|
- Add a compact conversation text-selection toolbar to quote text in the composer or ask an independent BTW question, alongside sidebar file-selection actions.
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## [0.1.9] - 2026-09-18
|
|
4
|
+
|
|
5
|
+
- 支持 DSH `0.1.6-alpha.2`,同时保留此前六个宿主版本的兼容支持。
|
|
6
|
+
- 添加引用到对话时改用宿主输入框的官方聚焦接口。
|
|
7
|
+
|
|
8
|
+
## [0.1.8] - 2026-09-16
|
|
9
|
+
|
|
10
|
+
- 支持 DSH `0.1.6-alpha.1`,同时保留此前五个宿主版本的兼容支持。
|
|
11
|
+
|
|
3
12
|
## [0.1.7] - 2026-09-13
|
|
4
13
|
|
|
5
14
|
- 新增正文划词旁问:通过紧凑横条添加引用到对话或发起独立旁问,与侧边栏文件划词选项共存。
|
package/README.md
CHANGED
|
@@ -49,23 +49,26 @@ Each answer has its own copy, collapse or expand, and close controls in the uppe
|
|
|
49
49
|
|
|
50
50
|
## DSH product ecosystem
|
|
51
51
|
|
|
52
|
-
For a
|
|
52
|
+
For a desktop workbench, download [DSH Codex Desktop](https://github.com/MichengAI/dsh-codex-desktop/releases). Existing [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) installations can add plugins as needed by following each project's README. Below are 11 first-party plugins; consult the corresponding desktop release notes and bundled catalog for what that version includes.
|
|
53
53
|
|
|
54
54
|
| Plugin | What you can do |
|
|
55
55
|
| --- | --- |
|
|
56
56
|
| [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | Organize projects and conversations, search tasks, and navigate chat turns |
|
|
57
|
-
| [
|
|
58
|
-
| [Automation](https://github.com/MichengAI/dsh-automation) | Schedule tasks and review each run |
|
|
57
|
+
| [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | Choose and summon specialists for your task |
|
|
59
58
|
| [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | Find, enable, create, and import local skills |
|
|
60
59
|
| [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | Search, restore, or clean up archived conversations |
|
|
61
|
-
| [
|
|
60
|
+
| [IM Connect](https://github.com/MichengAI/dsh-im-connect) | Send tasks and receive replies through messaging platforms |
|
|
61
|
+
| [Automation](https://github.com/MichengAI/dsh-automation) | Schedule tasks and review each run |
|
|
62
62
|
| [BTW](https://github.com/MichengAI/dsh-btw) | Ask side questions without interrupting the main task |
|
|
63
|
-
| [Simplify](https://github.com/MichengAI/dsh-simplify) | Use
|
|
63
|
+
| [Simplify](https://github.com/MichengAI/dsh-simplify) | Use `/simplify` to improve code within your Git changes |
|
|
64
|
+
| [PUA](https://github.com/MichengAI/dsh-pua) | Guide the Agent to try new approaches after failures, investigate causes, and verify results before completion |
|
|
65
|
+
| [Code Review](https://github.com/MichengAI/dsh-code-review) | Use `/review` to request an independent Agent code review and receive the report in the current conversation |
|
|
66
|
+
| [Codex Pet](https://github.com/MichengAI/dsh-codex-pet) | View conversation notifications and respond to tool approvals and questions through a desktop pet |
|
|
64
67
|
|
|
65
68
|
## Prerequisites
|
|
66
69
|
|
|
67
70
|
- An installed copy of DeepSeek Harness.
|
|
68
|
-
- Host peers accept exactly `0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2`.
|
|
71
|
+
- Host peers accept exactly `0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2`.
|
|
69
72
|
- Node.js 22+ and `dsh` available in your terminal.
|
|
70
73
|
|
|
71
74
|
## Installation
|
|
@@ -157,7 +160,7 @@ npm run check
|
|
|
157
160
|
|
|
158
161
|
`npm run check` runs type checking, tests, and a build.
|
|
159
162
|
|
|
160
|
-
Development and builds target `0.1.
|
|
163
|
+
Development and builds target `0.1.6-alpha.2`. `npm run test:compat` builds with that baseline and runs the test suite on each of the seven isolated host versions, using a test model adapter. DOM component tests do not replace live-browser acceptance.
|
|
161
164
|
|
|
162
165
|
Previous manual end-to-end acceptance with Edge and a live DeepSeek model passed on `0.1.5-rc.1`: side questions, attachment rejection, copying, collapse/expand, cancellation, and continued parent-session operation. This is not part of `npm run test:compat`. The selection toolbar, draft insertion, sidebar coexistence, and real-model side answers were subsequently checked on `0.1.5-rc.2`; the full end-to-end suite remains pending on that version and the older three versions.
|
|
163
166
|
|
package/README.zh-CN.md
CHANGED
|
@@ -49,23 +49,26 @@
|
|
|
49
49
|
|
|
50
50
|
## DSH 产品生态
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
想使用桌面工作台,可下载 [DSH Codex Desktop](https://github.com/MichengAI/dsh-codex-desktop/releases);已有 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 环境,可按各项目 README 按需安装。以下列出 11 个自研插件;桌面端实际随附范围以对应版本的发行说明和内置清单为准。
|
|
53
53
|
|
|
54
54
|
| 插件 | 你可以用它做什么 |
|
|
55
55
|
| --- | --- |
|
|
56
56
|
| [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | 整理项目与会话、搜索任务、跳转对话轮次 |
|
|
57
|
-
| [
|
|
58
|
-
| [Automation](https://github.com/MichengAI/dsh-automation) | 按计划执行任务,查看每次运行的结果 |
|
|
57
|
+
| [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | 按任务选择并召唤专业角色 |
|
|
59
58
|
| [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | 统一查找、启停、创建和导入本机技能 |
|
|
60
59
|
| [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | 搜索、恢复或清理已归档会话 |
|
|
61
|
-
| [
|
|
60
|
+
| [IM Connect](https://github.com/MichengAI/dsh-im-connect) | 从消息平台下任务、收回复 |
|
|
61
|
+
| [Automation](https://github.com/MichengAI/dsh-automation) | 按计划执行任务,查看每次运行的结果 |
|
|
62
62
|
| [BTW](https://github.com/MichengAI/dsh-btw) | 在当前上下文中临时旁问,不打断主任务 |
|
|
63
|
-
| [Simplify](https://github.com/MichengAI/dsh-simplify) | 用
|
|
63
|
+
| [Simplify](https://github.com/MichengAI/dsh-simplify) | 用 `/simplify` 整理 Git 改动范围内的代码 |
|
|
64
|
+
| [PUA](https://github.com/MichengAI/dsh-pua) | 引导 Agent 在失败时换方法、查原因,并在完成前验证结果 |
|
|
65
|
+
| [Code Review](https://github.com/MichengAI/dsh-code-review) | 用 `/review` 发起独立 Agent 代码审查,在当前会话接收报告 |
|
|
66
|
+
| [Codex Pet](https://github.com/MichengAI/dsh-codex-pet) | 通过桌面宠物查看会话提醒、处理工具审批和问题回答 |
|
|
64
67
|
|
|
65
68
|
## 前置条件
|
|
66
69
|
|
|
67
70
|
- 已安装 DeepSeek Harness。
|
|
68
|
-
- 宿主 peer 依赖精确声明为 `0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2`。
|
|
71
|
+
- 宿主 peer 依赖精确声明为 `0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2`。
|
|
69
72
|
- Node.js 22+,可在终端执行 `dsh`。
|
|
70
73
|
|
|
71
74
|
## 安装
|
|
@@ -156,7 +159,7 @@ npm run check
|
|
|
156
159
|
|
|
157
160
|
`npm run check` 执行类型检查、测试和构建。
|
|
158
161
|
|
|
159
|
-
开发与构建基线为 `0.1.
|
|
162
|
+
开发与构建基线为 `0.1.6-alpha.2`。`npm run test:compat` 用该基线编译,再在七个隔离宿主版本中分别运行测试集,模型使用测试适配器。DOM 组件测试不替代真实浏览器验收。
|
|
160
163
|
|
|
161
164
|
此前在 `0.1.5-rc.1` 上完成真实 Edge 与 DeepSeek 模型的手工端到端验收,旁问、附件拒绝、复制、折叠/展开、取消和父会话继续均通过。这不属于 `npm run test:compat`;随后在 `0.1.5-rc.2` 验证了划词横条、添加引用、侧边栏共存及真实模型旁问回答;该版本与旧三版的完整端到端用例仍未全部验收。
|
|
162
165
|
|
package/lib/client.js
CHANGED
|
@@ -13404,11 +13404,11 @@ function appendQuote(draft, reference) {
|
|
|
13404
13404
|
|
|
13405
13405
|
`;
|
|
13406
13406
|
}
|
|
13407
|
-
function addQuoteToComposer(input, reference, t
|
|
13407
|
+
function addQuoteToComposer(input, reference, t) {
|
|
13408
13408
|
const snapshot = input.state.getSnapshot();
|
|
13409
13409
|
if (snapshot.phase === "adjudicating" || snapshot.phase === "submitting") throw new Error(t("error.composerBusy"));
|
|
13410
13410
|
input.setDraft(appendQuote(snapshot.draft, reference));
|
|
13411
|
-
focus();
|
|
13411
|
+
input.focus?.();
|
|
13412
13412
|
}
|
|
13413
13413
|
|
|
13414
13414
|
// src/client/SelectionAsk.tsx
|
|
@@ -13569,9 +13569,7 @@ function SelectionAsk({ store, sessionId, t, addToConversation }) {
|
|
|
13569
13569
|
const add = () => {
|
|
13570
13570
|
if (!draft) return;
|
|
13571
13571
|
try {
|
|
13572
|
-
addToConversation(draft.reference
|
|
13573
|
-
anchor.current?.closest("[data-composer-seat]")?.querySelector('[contenteditable="true"]:not([aria-disabled="true"]), textarea:not(:disabled):not([readonly])')?.focus({ preventScroll: true });
|
|
13574
|
-
});
|
|
13572
|
+
addToConversation(draft.reference);
|
|
13575
13573
|
setDraft(void 0);
|
|
13576
13574
|
} catch (issue) {
|
|
13577
13575
|
setError(issue instanceof Error ? issue.message : String(issue));
|
|
@@ -13677,6 +13675,7 @@ function apply(ctx) {
|
|
|
13677
13675
|
close: (session, id) => execute(session, `/${CLOSE_COMMAND} ${id}`)
|
|
13678
13676
|
}, t);
|
|
13679
13677
|
const claim = (sessionId) => ({ claim: {
|
|
13678
|
+
name: "btw",
|
|
13680
13679
|
token: "/btw",
|
|
13681
13680
|
get hint() {
|
|
13682
13681
|
return t("command.hint");
|
|
@@ -13732,13 +13731,10 @@ function apply(ctx) {
|
|
|
13732
13731
|
});
|
|
13733
13732
|
ctx.effect(() => () => store.dispose());
|
|
13734
13733
|
function Dock(props) {
|
|
13735
|
-
return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(SelectionAsk, { key: props.session.sessionId, store, sessionId: props.session.sessionId, t: props.t, addToConversation: (reference
|
|
13734
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(SelectionAsk, { key: props.session.sessionId, store, sessionId: props.session.sessionId, t: props.t, addToConversation: (reference) => {
|
|
13736
13735
|
const session = ctx.get("sessions").scope(props.session.sessionId);
|
|
13737
13736
|
if (!session) throw new Error(props.t("error.backend"));
|
|
13738
|
-
|
|
13739
|
-
addQuoteToComposer(input, reference, props.t, () => {
|
|
13740
|
-
focusComposer?.();
|
|
13741
|
-
});
|
|
13737
|
+
addQuoteToComposer(ctx.conversation.input.for(session), reference, props.t);
|
|
13742
13738
|
} }), /* @__PURE__ */ import_react6.default.createElement(BubbleDock, { store, sessionId: props.session.sessionId, t: props.t }));
|
|
13743
13739
|
}
|
|
13744
13740
|
slots.inject("conversation.input.dock", () => slots.register({ name: "conversation.input.dock", id: "michengai-btw", order: -50, locale: NS }, Dock));
|
package/lib/index.js
CHANGED
|
@@ -331,18 +331,60 @@ ${text}` : "" }));
|
|
|
331
331
|
};
|
|
332
332
|
|
|
333
333
|
// src/server/tool-guard.ts
|
|
334
|
-
|
|
334
|
+
var DENY = "BTW \u4EC5\u5141\u8BB8\u6587\u5B57\u56DE\u7B54\uFF0C\u7981\u6B62\u6267\u884C\u4EFB\u4F55\u5DE5\u5177\u3002";
|
|
335
|
+
function descriptorLabel(data) {
|
|
336
|
+
if (typeof data !== "object" || data === null || !("label" in data) || typeof data.label !== "string") return void 0;
|
|
337
|
+
return data.label;
|
|
338
|
+
}
|
|
339
|
+
function lastDescriptorLabel(session, identityOf) {
|
|
340
|
+
if (!session) return void 0;
|
|
341
|
+
if (identityOf) {
|
|
342
|
+
const identity = identityOf(session);
|
|
343
|
+
return typeof identity?.label === "string" ? identity.label : void 0;
|
|
344
|
+
}
|
|
345
|
+
const events = session.snapshotEvents;
|
|
346
|
+
if (typeof events !== "function") return void 0;
|
|
347
|
+
return descriptorLabel(events().findLast((item) => item.type === "subagent/descriptor")?.data);
|
|
348
|
+
}
|
|
349
|
+
function identityOfFromContext(ctx) {
|
|
350
|
+
try {
|
|
351
|
+
const projections = ctx.get("sessionProjections");
|
|
352
|
+
const snapshot = projections?.snapshot;
|
|
353
|
+
if (typeof snapshot !== "function") return void 0;
|
|
354
|
+
return (session) => {
|
|
355
|
+
try {
|
|
356
|
+
return snapshot(session, ["subagent"]).values?.subagent ?? null;
|
|
357
|
+
} catch {
|
|
358
|
+
return null;
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
} catch {
|
|
362
|
+
return void 0;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
function createAnswerOnlyGuard(labels, identityOf) {
|
|
335
366
|
const owned = /* @__PURE__ */ new WeakSet();
|
|
336
|
-
|
|
367
|
+
const claim = (value) => {
|
|
368
|
+
if (value) owned.add(value);
|
|
369
|
+
};
|
|
370
|
+
const guard = ({ agent }) => {
|
|
337
371
|
if (!agent) return void 0;
|
|
338
|
-
if (
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
372
|
+
if (owned.has(agent) || agent.session !== void 0 && owned.has(agent.session)) return DENY;
|
|
373
|
+
const label = lastDescriptorLabel(agent.session, identityOf);
|
|
374
|
+
if (!label || !labels.has(label)) return void 0;
|
|
375
|
+
claim(agent);
|
|
376
|
+
claim(agent.session);
|
|
377
|
+
return DENY;
|
|
378
|
+
};
|
|
379
|
+
guard.own = (agent) => {
|
|
380
|
+
claim(agent);
|
|
381
|
+
};
|
|
382
|
+
guard.recognize = (session, event) => {
|
|
383
|
+
if (event.type !== "subagent/descriptor") return;
|
|
384
|
+
const label = descriptorLabel(event.data);
|
|
385
|
+
if (label && labels.has(label)) claim(session);
|
|
345
386
|
};
|
|
387
|
+
return guard;
|
|
346
388
|
}
|
|
347
389
|
|
|
348
390
|
// src/server/command-visibility.ts
|
|
@@ -373,7 +415,10 @@ var PERSONA = `\u4F60\u662F\u5F53\u524D\u4E3B\u4EFB\u52A1\u4E4B\u5916\u7684\u4E0
|
|
|
373
415
|
function apply(ctx) {
|
|
374
416
|
ctx.effect(() => hideInternalCommands(ctx.commands));
|
|
375
417
|
const labels = /* @__PURE__ */ new Set();
|
|
376
|
-
const
|
|
418
|
+
const host = ctx.extend({ fiber: ctx.root.fiber });
|
|
419
|
+
const protection = createAnswerOnlyGuard(labels, identityOfFromContext(host));
|
|
420
|
+
const releaseGuard = host.tools.guard(protection);
|
|
421
|
+
const stopWatch = host.on("session/event", (session, event) => protection.recognize(session, event));
|
|
377
422
|
const jobs = new SideJobs(async (request) => {
|
|
378
423
|
const provider = ctx.subagents.getProvider("fork");
|
|
379
424
|
if (!provider?.inheritsParentContext || !provider.capabilities.toolFilter || !provider.capabilities.persona) {
|
|
@@ -392,6 +437,7 @@ function apply(ctx) {
|
|
|
392
437
|
|
|
393
438
|
${request.question}` }]
|
|
394
439
|
});
|
|
440
|
+
if (run.localAgent) protection.own(run.localAgent);
|
|
395
441
|
return {
|
|
396
442
|
result: run.result,
|
|
397
443
|
dispose: async () => {
|
|
@@ -406,6 +452,7 @@ ${request.question}` }]
|
|
|
406
452
|
}, 9e4, {
|
|
407
453
|
onError: (error) => ctx.logger.warn(error),
|
|
408
454
|
onIdle: async () => {
|
|
455
|
+
stopWatch();
|
|
409
456
|
await releaseGuard();
|
|
410
457
|
}
|
|
411
458
|
});
|
|
@@ -6,5 +6,5 @@ export declare function SelectionAsk({ store, sessionId, t, addToConversation }:
|
|
|
6
6
|
store: BubbleStore;
|
|
7
7
|
sessionId: string;
|
|
8
8
|
t: BtwTranslate;
|
|
9
|
-
addToConversation: (reference: string
|
|
9
|
+
addToConversation: (reference: string) => void;
|
|
10
10
|
}): React.JSX.Element;
|
|
@@ -7,9 +7,10 @@ interface DraftInput {
|
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
9
|
setDraft(text: string): void;
|
|
10
|
+
focus?(): void;
|
|
10
11
|
}
|
|
11
12
|
/** 固定追加引用,保留原草稿;统一引用内部换行,正文空白不裁剪。 */
|
|
12
13
|
export declare function appendQuote(draft: string, reference: string): string;
|
|
13
|
-
/**
|
|
14
|
-
export declare function addQuoteToComposer(input: DraftInput, reference: string, t: BtwTranslate
|
|
14
|
+
/** 提交事务期间不改写草稿;成功写入后把键盘交回宿主输入框。 */
|
|
15
|
+
export declare function addQuoteToComposer(input: DraftInput, reference: string, t: BtwTranslate): void;
|
|
15
16
|
export {};
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
interface
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
type: string;
|
|
5
|
-
data: unknown;
|
|
6
|
-
}[];
|
|
7
|
-
};
|
|
1
|
+
export interface SessionEventLike {
|
|
2
|
+
readonly type: string;
|
|
3
|
+
readonly data?: unknown;
|
|
8
4
|
}
|
|
5
|
+
export interface SessionIdentityHint {
|
|
6
|
+
snapshotEvents?(): readonly SessionEventLike[];
|
|
7
|
+
}
|
|
8
|
+
export interface AgentIdentity {
|
|
9
|
+
session?: object;
|
|
10
|
+
}
|
|
11
|
+
export interface SubagentIdentityHint {
|
|
12
|
+
readonly label?: string;
|
|
13
|
+
}
|
|
14
|
+
export type IdentityOf = (session: object) => SubagentIdentityHint | null | undefined;
|
|
15
|
+
export interface AnswerOnlyGuard {
|
|
16
|
+
(execution: {
|
|
17
|
+
agent?: AgentIdentity;
|
|
18
|
+
}): string | undefined;
|
|
19
|
+
own(agent: object): void;
|
|
20
|
+
recognize(session: object, event: SessionEventLike): void;
|
|
21
|
+
}
|
|
22
|
+
/** 官方替换同步事件扫描:ctx.sessionProjections.snapshot(session, ['subagent']).values.subagent */
|
|
23
|
+
export declare function identityOfFromContext(ctx: {
|
|
24
|
+
get(name: string): unknown;
|
|
25
|
+
}): IdentityOf | undefined;
|
|
9
26
|
/** 空白名单过滤继承工具;本保护额外拒绝 PTC 及子作用域自注册工具。 */
|
|
10
|
-
export declare function createAnswerOnlyGuard(labels: ReadonlySet<string
|
|
11
|
-
agent?: AgentIdentity;
|
|
12
|
-
}) => string | undefined;
|
|
13
|
-
export {};
|
|
27
|
+
export declare function createAnswerOnlyGuard(labels: ReadonlySet<string>, identityOf?: IdentityOf): AnswerOnlyGuard;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@michengai/dsh-btw",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "DSH 一次性只读旁问气泡",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -63,39 +63,44 @@
|
|
|
63
63
|
"license": "Apache-2.0",
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
66
|
-
"@deepseek-ai/dsh-commands": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
|
|
67
|
-
"@deepseek-ai/dsh-subagent": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
|
|
68
|
-
"@deepseek-ai/dsh-tools": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
|
|
66
|
+
"@deepseek-ai/dsh-commands": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
67
|
+
"@deepseek-ai/dsh-subagent": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
68
|
+
"@deepseek-ai/dsh-tools": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
69
69
|
"react": "^18.3.1"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@deepseek-ai/cordis": "4.0.2",
|
|
73
|
-
"@deepseek-ai/dsh-agent": "0.1.
|
|
74
|
-
"@deepseek-ai/dsh-agent-loop": "0.1.
|
|
75
|
-
"@deepseek-ai/dsh-api-gateway": "0.1.
|
|
76
|
-
"@deepseek-ai/dsh-api-session-controller": "0.1.
|
|
77
|
-
"@deepseek-ai/dsh-attachment": "0.1.
|
|
78
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
79
|
-
"@deepseek-ai/dsh-client-ui-chat": "0.1.
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1.
|
|
81
|
-
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.
|
|
82
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.1.
|
|
83
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.
|
|
84
|
-
"@deepseek-ai/dsh-client-ui-theme": "0.1.
|
|
85
|
-
"@deepseek-ai/dsh-commands": "0.1.
|
|
86
|
-
"@deepseek-ai/dsh-
|
|
87
|
-
"@deepseek-ai/dsh-
|
|
88
|
-
"@deepseek-ai/dsh-
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/dsh-
|
|
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-
|
|
73
|
+
"@deepseek-ai/dsh-agent": "0.1.6-alpha.2",
|
|
74
|
+
"@deepseek-ai/dsh-agent-loop": "0.1.6-alpha.2",
|
|
75
|
+
"@deepseek-ai/dsh-api-gateway": "0.1.6-alpha.2",
|
|
76
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.6-alpha.2",
|
|
77
|
+
"@deepseek-ai/dsh-attachment": "0.1.6-alpha.2",
|
|
78
|
+
"@deepseek-ai/dsh-client-locale": "0.1.6-alpha.2",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.1.6-alpha.2",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.6-alpha.2",
|
|
81
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.6-alpha.2",
|
|
82
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.6-alpha.2",
|
|
83
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.6-alpha.2",
|
|
84
|
+
"@deepseek-ai/dsh-client-ui-theme": "0.1.6-alpha.2",
|
|
85
|
+
"@deepseek-ai/dsh-commands": "0.1.6-alpha.2",
|
|
86
|
+
"@deepseek-ai/dsh-invariants": "0.1.6-alpha.2",
|
|
87
|
+
"@deepseek-ai/dsh-llm": "0.1.6-alpha.2",
|
|
88
|
+
"@deepseek-ai/dsh-ptc-runtime": "0.1.6-alpha.2",
|
|
89
|
+
"@deepseek-ai/dsh-sandbox": "0.1.6-alpha.2",
|
|
90
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.1.6-alpha.2",
|
|
91
|
+
"@deepseek-ai/dsh-scope": "0.1.6-alpha.2",
|
|
92
|
+
"@deepseek-ai/dsh-session": "0.1.6-alpha.2",
|
|
93
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.6-alpha.2",
|
|
94
|
+
"@deepseek-ai/dsh-session-projection": "0.1.6-alpha.2",
|
|
95
|
+
"@deepseek-ai/dsh-subagent": "0.1.6-alpha.2",
|
|
96
|
+
"@deepseek-ai/dsh-subagent-fork-in-process": "0.1.6-alpha.2",
|
|
97
|
+
"@deepseek-ai/dsh-subagent-in-process-driver": "0.1.6-alpha.2",
|
|
98
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.6-alpha.2",
|
|
99
|
+
"@deepseek-ai/dsh-tools": "0.1.6-alpha.2",
|
|
100
|
+
"@deepseek-ai/dsh-user-approval": "0.1.6-alpha.2",
|
|
101
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.6-alpha.2",
|
|
102
|
+
"@deepseek-ai/dsh-typert-registry": "0.1.6-alpha.2",
|
|
103
|
+
"@deepseek-ai/dsh-util-time": "0.1.6-alpha.2",
|
|
99
104
|
"@types/node": "^22.0.0",
|
|
100
105
|
"@types/react": "^18.3.1",
|
|
101
106
|
"@types/react-dom": "^18.3.7",
|