dsh-tender-workbench 0.5.5 → 0.5.7
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 +11 -0
- package/README.en.md +18 -16
- package/README.md +30 -15
- package/docs/RELEASE-0.5.7.md +20 -0
- package/lib/client.js +19 -15
- package/lib/client.js.map +1 -1
- package/lib/index.js +11 -3
- package/lib/types/client/better-sidebar-adapter.d.ts +1 -1
- package/lib/types/client/better-sidebar-adapter.d.ts.map +1 -1
- package/lib/types/client/ordinary-session-guard.d.ts +1 -1
- package/lib/types/client/tender-session-entry.d.ts +8 -9
- package/lib/types/client/tender-session-entry.d.ts.map +1 -1
- package/lib/types/host/tool-contract.d.ts.map +1 -1
- package/package.json +9 -2
- package/docs/RELEASE-0.5.5.md +0 -40
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,17 @@ All notable changes to `dsh-tender-workbench` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.5.7] - 2026-09-11
|
|
8
|
+
|
|
9
|
+
- 按 DSH-UX-001 v1.5.2,以 workspaceId + 命名空间 sessionId 创建业务会话,修复新会话落入“未分组”;保留普通会话防复用守卫及 0.5.6 Host 授权契约。
|
|
10
|
+
- 新增所选 Workspace 归组、普通新会话、入口默认关闭、Tab X/宿主收起恢复与三侧栏路径的真实隔离回归;不自动迁移历史会话。
|
|
11
|
+
|
|
12
|
+
## [0.5.6] - 2026-09-10
|
|
13
|
+
|
|
14
|
+
- 统一 Better Sidebar optional peer、基础/工作台安装预检和运行时降级文案;不自动安装侧栏、不重写工作台容器。
|
|
15
|
+
- 修复 DSH 0.1.2-rc.1 Host 工具的 Session.snapshotEvents() 与 turn/start 轮次绑定,补真实 Session 契约,避免错误拒绝直接用户请求。
|
|
16
|
+
- 补无侧栏/兼容侧栏/已知错误组合的最终 tarball 验收与实际 Host 工具业务 fixture。
|
|
17
|
+
|
|
7
18
|
## [0.5.5] - 2026-09-10
|
|
8
19
|
|
|
9
20
|
- 迁移完整 DSH 0.1.2-rc.1 公共接口,移除旧客户端 runtime 与 conversationEvents 硬依赖;补事件定义卸载清理。
|
package/README.en.md
CHANGED
|
@@ -10,9 +10,11 @@ Related agents: [数据清洗补全](https://github.com/duhu2000/dsh-data-cleani
|
|
|
10
10
|
|
|
11
11
|
`dsh-tender-workbench` is an open-source DeepSeek Harness plugin for finding, screening, reviewing, and delivering tender opportunities. It combines authorized `qcc-tender` data, deterministic screening rules, bounded Agent analysis, explicit human decisions, and immutable Excel/PDF reports in one Session-scoped Better Sidebar workbench.
|
|
12
12
|
|
|
13
|
-
Current stable version: **0.5.
|
|
13
|
+
Current stable version: **0.5.7** (stable release).
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Version 0.5.7 fixes Workspace ownership for new business Sessions. See the [release record](docs/RELEASE-0.5.7.md) for publication status and verification boundaries.
|
|
16
|
+
|
|
17
|
+
Base mode targets the full DSH 0.1.2-rc.1 distribution; Better Sidebar 0.18.1 is optional and only provides the visual workbench. Legacy hosts remain unsupported. Back up the complete Profile and verify dependencies before upgrading.
|
|
16
18
|
|
|
17
19
|
## What it does
|
|
18
20
|
|
|
@@ -53,9 +55,9 @@ This release constrains core peers to `~0.1.2-rc.1`; future combinations require
|
|
|
53
55
|
|
|
54
56
|
- DeepSeek Harness public packages: `0.1.2-rc.1`
|
|
55
57
|
- `dsh-mcp-connector`: `0.2.31`
|
|
56
|
-
- `dsh-better-sidebar
|
|
58
|
+
- Optional visual workbench: `dsh-better-sidebar@0.18.1`; the peer range is not an acceptance claim for untested versions
|
|
57
59
|
|
|
58
|
-
The active Profile must provide one coherent runtime with public Session Projection, JSONL Session Persistence, Tools, Skill, Sessions, and WebServer services. Better Sidebar
|
|
60
|
+
The active Profile must provide one coherent runtime with public Session Projection, JSONL Session Persistence, Tools, Skill, Sessions, and WebServer services. Only the visual workbench needs Better Sidebar and its `targetedOpen` / `stateSubscription` features; missing or incompatible capabilities do not block conversation activation.
|
|
59
61
|
|
|
60
62
|
Before installing, run `node scripts/check-host-compatibility.mjs --host-root /actual/node_modules/@deepseek-ai/dsh --profile-root /actual/profiles/web`. It only reads package manifests: known incompatible hosts, mixed core packages and old Sidebar fail; unknown combinations are reported as unverified. The Windows mount script requires `-DshHostRoot` and executes this gate before mutation. Upgrade the complete host explicitly after backing up the Profile: `npm install -g @deepseek-ai/dsh@0.1.2-rc.1`.
|
|
61
63
|
|
|
@@ -66,34 +68,35 @@ An installed and authorized `qcc-tender` MCP connection must expose these exact
|
|
|
66
68
|
- `mcp__qcc-tender__search_tenders`
|
|
67
69
|
- `mcp__qcc-tender__search_proposed_projects`
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
The default preflight accepts Sidebar-free base mode. Add `--workbench` (Windows mount: `-Workbench`) only when explicitly enabling the visual workbench; the Windows flag also checks its enabled bundle before any Profile write. No script automatically installs Sidebar. An already-installed Sidebar 0.17.1 breaking the new host is still blocked, even in base mode. Runtime capability probes and Tab preferences remain separate from manifest inspection.
|
|
72
|
+
|
|
73
|
+
Without Sidebar, native Sessions, input drafts, the prompt builder, action Skills and Host tools remain available. Conversation-driven query, rule preview/confirmation, human review and report generation retain their contracts; actual model orchestration and paid MCP are separate acceptance layers. Existing authorized Excel/PDF artifact links can be downloaded, but visual table/detail/filter controls, batch-review controls, history view and download buttons require the workbench. All five shortcuts only explain this boundary, preserving state without starting tasks. No alternate drawer or native-workbench rewrite is implemented. Other missing required services, unavailable MCP tools and non-JSONL persistence fail explicitly.
|
|
70
74
|
|
|
71
75
|
## Install
|
|
72
76
|
|
|
73
|
-
Install
|
|
77
|
+
Install base mode. The connector is needed for authorized QCC queries; Sidebar is not required:
|
|
74
78
|
|
|
75
79
|
```sh
|
|
76
80
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
77
|
-
dsh plugin --profile web add 'dsh-better-sidebar@0.18.1'
|
|
78
81
|
dsh plugin --profile web add dsh-tender-workbench
|
|
79
82
|
dsh web --no-open
|
|
80
83
|
```
|
|
81
84
|
|
|
82
|
-
|
|
85
|
+
Optionally enable the visual workbench with `dsh plugin --profile web add dsh-better-sidebar@0.18.1`, enable the tender Tab and fully restart the Profile.
|
|
86
|
+
|
|
87
|
+
To install the exact 0.5.7 release:
|
|
83
88
|
|
|
84
89
|
```sh
|
|
85
90
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
86
|
-
dsh plugin --profile web add
|
|
87
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.5
|
|
91
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.7
|
|
88
92
|
```
|
|
89
93
|
|
|
90
|
-
To install from an independent checkout
|
|
94
|
+
To install base mode from an independent checkout:
|
|
91
95
|
|
|
92
96
|
```sh
|
|
93
97
|
corepack pnpm@11.7.0 install --frozen-lockfile
|
|
94
98
|
corepack pnpm@11.7.0 run build
|
|
95
99
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
96
|
-
dsh plugin --profile web add 'dsh-better-sidebar@0.18.1'
|
|
97
100
|
dsh plugin --profile web add .
|
|
98
101
|
dsh web --no-open
|
|
99
102
|
```
|
|
@@ -102,8 +105,7 @@ To install a packed build:
|
|
|
102
105
|
|
|
103
106
|
```sh
|
|
104
107
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
105
|
-
dsh plugin --profile web add
|
|
106
|
-
dsh plugin --profile web add ./dsh-tender-workbench-0.5.2.tgz
|
|
108
|
+
dsh plugin --profile web add ./dsh-tender-workbench-0.5.7.tgz
|
|
107
109
|
dsh web --no-open
|
|
108
110
|
```
|
|
109
111
|
|
|
@@ -120,11 +122,11 @@ dsh plugin --profile web remove dsh-tender-workbench
|
|
|
120
122
|
Upgrade an existing installation by installing the stable version and fully restarting the Web profile:
|
|
121
123
|
|
|
122
124
|
```sh
|
|
123
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
125
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.7
|
|
124
126
|
dsh web --no-open
|
|
125
127
|
```
|
|
126
128
|
|
|
127
|
-
Version 0.5.
|
|
129
|
+
Version 0.5.7 creates business Sessions with workspaceId plus a namespaced sessionId, not cwd-only. Current membership wins; a legacy ungrouped Session must match a registered path, and an unregistered selected directory is rejected rather than redirected. Existing ungrouped history is not automatically migrated. The ordinary Session guard and 0.5.6 snapshotEvents/turn-start authorization contract remain intact. Business schemas are unchanged; history remains Session-local and live MCP is not verified. Roll back the complete backed-up host/plugin combination, not an old plugin alone on the new host.
|
|
128
130
|
|
|
129
131
|
## Using the workbench
|
|
130
132
|
|
package/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## 安装与三分钟上手
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> 基础智能体要求完整 DSH 0.1.2-rc.1,Better Sidebar 0.18.1 仅用于可选可视化工作台;升级前备份完整 Profile。
|
|
6
6
|
|
|
7
7
|
招投标智能体:支持招投标搜索、招标查询、投标查询、标讯查询、拟建项目与项目筛选,辅助商机发现、人工复核及 Excel/PDF 导出,使用客户自备授权的企查查 MCP。
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
10
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.7
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
请先满足下文的 DSH、连接器及侧边栏依赖要求;安装后完整停止并重启对应 Profile。
|
|
@@ -18,7 +18,7 @@ dsh plugin --profile web add dsh-tender-workbench@0.5.5
|
|
|
18
18
|
|
|
19
19
|
**能力边界:** 投标查询指已授权数据源内的公开标讯查询,不代办投标。无 Web 搜索兜底、订阅或自动 Bid/No-Bid 决策;不提供在线 PDF 预览。
|
|
20
20
|
|
|
21
|
-
**升级与回滚:** 升级前停止 Profile
|
|
21
|
+
**升级与回滚:** 升级前停止 Profile 并备份完整宿主/插件组合及任务目录,记录精确版本;升级后完整重启。回滚需恢复已验证的整套组合和目录副本,不能在新宿主上单独退回原始 0.5.4。
|
|
22
22
|
|
|
23
23
|
相关智能体:[数据清洗补全](https://github.com/duhu2000/dsh-data-cleaning-agent) · [AI填表](https://github.com/duhu2000/dsh-form-fill-agent) · [访前尽调](https://github.com/duhu2000/dsh-pre-duediligence) · [招投标](https://github.com/duhu2000/dsh-tender-workbench)
|
|
24
24
|
|
|
@@ -27,7 +27,9 @@ dsh plugin --profile web add dsh-tender-workbench@0.5.5
|
|
|
27
27
|
|
|
28
28
|
> 面向国内招投标团队的 DeepSeek Harness 开源智能体插件:在一个会话级工作台内完成标讯与拟建项目查询、确定性规则初筛、限定范围智能分析、人工复核,以及 Excel/PDF 报告交付。
|
|
29
29
|
>
|
|
30
|
-
> 当前稳定版本:**0.5.
|
|
30
|
+
> 当前稳定版本:**0.5.7**(正式版本)
|
|
31
|
+
|
|
32
|
+
0.5.7 修复新建业务 Session 的 Workspace 归组;发布状态及验收边界见 [发布记录](docs/RELEASE-0.5.7.md)。
|
|
31
33
|
|
|
32
34
|
[](https://github.com/duhu2000/dsh-tender-workbench/actions/workflows/ci.yml)
|
|
33
35
|
[](https://www.npmjs.com/package/dsh-tender-workbench)
|
|
@@ -61,21 +63,22 @@ dsh plugin --profile web add dsh-tender-workbench@0.5.5
|
|
|
61
63
|
|
|
62
64
|
## 30 秒开始
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
基础智能体不要求 Better Sidebar。查询企查查数据时还需已安装、已授权的 MCP 连接器;基础安装不默认强装第三方侧栏:
|
|
65
67
|
|
|
66
68
|
```sh
|
|
67
69
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
68
|
-
dsh plugin --profile web add 'dsh-better-sidebar@0.18.1'
|
|
69
70
|
dsh plugin --profile web add dsh-tender-workbench
|
|
70
71
|
dsh web --no-open
|
|
71
72
|
```
|
|
72
73
|
|
|
73
74
|
安装或移除插件后,请完整重启 Web Profile。插件通过 `dsh.bundle.patch` 启用 `cordis.patch.yml`,并注册 `dsh-tender-workbench` Loader。
|
|
74
75
|
|
|
75
|
-
|
|
76
|
+
需要可视化工作台时,再自选安装 `dsh plugin --profile web add dsh-better-sidebar@0.18.1`、在宿主设置启用招投标 Tab,并完整重启。无需侧栏也可使用下方列明的基础功能。
|
|
77
|
+
|
|
78
|
+
安装指定的 `0.5.7` 版本:
|
|
76
79
|
|
|
77
80
|
```sh
|
|
78
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
81
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.7
|
|
79
82
|
```
|
|
80
83
|
|
|
81
84
|
移除插件:
|
|
@@ -86,7 +89,7 @@ dsh plugin --profile web remove dsh-tender-workbench
|
|
|
86
89
|
|
|
87
90
|
## 使用工作台
|
|
88
91
|
|
|
89
|
-
插件提供左上角“招投标”入口和会话 Header
|
|
92
|
+
插件提供左上角“招投标”入口和会话 Header 恢复入口。入口解析当前 Session 所属 Workspace,以 `workspaceId + sessionId` 创建归入该工作区的独立原生会话。历史未分组会话仅按精确路径匹配已注册 Workspace;没有当前目录时回退首个已注册工作区,有未注册目录时提示先选择工作区,不静默转入别组。业务 ID 命名空间与普通会话守卫防止空白业务会话被“新会话”复用。显示“招投标智能体”标题与目标图标,默认不打开右侧工作台。五个流程按钮才打开对应 Better Sidebar 视图;其他会话保留各自原有标题与标识。
|
|
90
93
|
|
|
91
94
|
页面导航只切换可见阶段,不会修改业务状态或自动执行后续动作。规则建议、编辑、影响预览与确认彼此独立;报告生成前始终展示已复核和待复核范围。宽屏使用主从布局,中窄屏保持相同信息顺序,并保留局部表格滚动与可访问的固定操作区。
|
|
92
95
|
|
|
@@ -104,10 +107,10 @@ dsh plugin --profile web remove dsh-tender-workbench
|
|
|
104
107
|
|
|
105
108
|
- DeepSeek Harness 公共包:`0.1.2-rc.1`
|
|
106
109
|
- `dsh-mcp-connector`:`0.2.31`
|
|
107
|
-
- `dsh-better-sidebar
|
|
110
|
+
- 可选工作台依赖 `dsh-better-sidebar`:已验证版本 `0.18.1`,optional peer `~0.18.1` 不是整个区间已验收的承诺
|
|
108
111
|
- Node.js:`^22.19.0 || >=24.0.0`
|
|
109
112
|
|
|
110
|
-
当前 Profile 必须提供同一套公共 Session Projection、JSONL Session Persistence、Tools、Skill、Sessions 和 WebServer
|
|
113
|
+
当前 Profile 必须提供同一套公共 Session Projection、JSONL Session Persistence、Tools、Skill、Sessions 和 WebServer 服务。只有启用可视化工作台才需要 Better Sidebar,运行时探测公共 `targetedOpen` 与 `stateSubscription` 能力;缺少或能力不全时不等待、不创建自有抽屉。
|
|
111
114
|
|
|
112
115
|
先备份完整 Profile,再由用户明确升级完整宿主(`npm install -g @deepseek-ai/dsh@0.1.2-rc.1`),不能只升级某个 Session 包。安装前从本仓运行只读检查:
|
|
113
116
|
|
|
@@ -115,7 +118,7 @@ dsh plugin --profile web remove dsh-tender-workbench
|
|
|
115
118
|
node scripts/check-host-compatibility.mjs --host-root /实际路径/node_modules/@deepseek-ai/dsh --profile-root /实际路径/profiles/web
|
|
116
119
|
```
|
|
117
120
|
|
|
118
|
-
|
|
121
|
+
预检默认是基础模式,缺少侧栏只提示功能边界,不阻断、不自动安装。显式传 `--workbench` 才要求侧栏已安装,版本检查不代替运行时 capability 与 Tab 启用检查。已装 Sidebar 0.17.1 在新宿主上的硬故障仍阻断;未知组合提示未验证。Windows 挂载需 `-DshHostRoot`,默认基础模式;`-Workbench` 额外要求侧栏 bundle 已启用,所有预检均在 Profile 写入前执行。context 不是必装依赖;已装 0.36.0 的 settingsNamespace 故障仍阻断,共存基准为 0.48.0。
|
|
119
122
|
|
|
120
123
|
回滚必须恢复完整已验证的宿主/插件组合,不得在新宿主上单独退回未经修复的 0.5.4 或更早包。真实 QCC、四产品共存与正式环境验收不由启动 smoke 代签。
|
|
121
124
|
|
|
@@ -126,16 +129,28 @@ node scripts/check-host-compatibility.mjs --host-root /实际路径/node_modules
|
|
|
126
129
|
|
|
127
130
|
缺少兼容 Better Sidebar 时,对话入口和已支持的 Host 工具保持可用,流程按钮提示安装/升级、启用 Tab 并重启,不创建另一套侧拉。其余必要服务缺失、MCP 工具不可用或会话持久化不是 JSONL 时明确失败;不提供 Web 搜索、其他持久化或 Workspace 存储兜底。
|
|
128
131
|
|
|
132
|
+
### 无侧栏功能边界
|
|
133
|
+
|
|
134
|
+
| 能力 | 无侧栏 | 可视化工作台 |
|
|
135
|
+
| --- | --- | --- |
|
|
136
|
+
| 独立原生会话、普通会话切换、输入草稿、提示词生成/回填 | 可用,不因打开工作台失败而清空 | 相同 |
|
|
137
|
+
| 行为 Skill、工作流状态工具、对话驱动查询 | 可用;实际数据仍需模型和已授权 MCP | 表单配置并显式提交 |
|
|
138
|
+
| 规则预览/确认、人工复核、报告生成工具 | Host 工具保留;需对话明确请求,仍受版本绑定与确认约束 | 规则编辑、表格、批量复核和导出控件 |
|
|
139
|
+
| Excel/PDF Artifact 下载接口 | 已生成的授权下载链接可用;无可视化下载按钮 | 下载按钮可用 |
|
|
140
|
+
| 五个流程按钮、任务历史、表格详情 | 仅明确提示;不执行任务,不创建 Tab | 定位同一 Session 单例 Tab |
|
|
141
|
+
|
|
142
|
+
工具 fixture 通过不等于真实模型自动编排或付费 QCC 全链路通过;完整工作台原生化仅为后续评估,本版本未实施。
|
|
143
|
+
|
|
129
144
|
## 升级与回滚
|
|
130
145
|
|
|
131
146
|
从已有版本升级:
|
|
132
147
|
|
|
133
148
|
```sh
|
|
134
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
149
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.7
|
|
135
150
|
dsh web --no-open
|
|
136
151
|
```
|
|
137
152
|
|
|
138
|
-
0.5.
|
|
153
|
+
0.5.7 修复新建业务 Session 的 Workspace 归组,不自动搬迁已有未分组历史。保留 0.5.6 可选侧栏、`snapshotEvents()` / `turn/start` 授权绑定、Session 单例 Tab、五入口及草稿恢复。业务数据格式不变,历史仍仅限当前 Session,真实 MCP 连接未核验。回退应恢复备份的完整已验证宿主/插件组合,不能在新版宿主上单独安装原始 0.5.4 或更早版本。
|
|
139
154
|
|
|
140
155
|
## 本地开发
|
|
141
156
|
|
|
@@ -150,7 +165,7 @@ corepack pnpm@11.7.0 run check
|
|
|
150
165
|
|
|
151
166
|
`check` 会执行类型检查、完整 Vitest 测试、生产构建、README/发布状态校验以及 npm tarball 白名单预检。配置 npm Trusted Publishing 后,[发布工作流](.github/workflows/release.yml)可使用 OIDC 和 provenance;手工发布不得声称 provenance。
|
|
152
167
|
|
|
153
|
-
省、市、区数据源快照维护在 [resources/area.ts](resources/area.ts)。版本变更见 [CHANGELOG.md](CHANGELOG.md),发布检查见 [0.5.
|
|
168
|
+
省、市、区数据源快照维护在 [resources/area.ts](resources/area.ts)。版本变更见 [CHANGELOG.md](CHANGELOG.md),发布检查见 [0.5.7 发布清单](docs/RELEASE-0.5.7.md)。
|
|
154
169
|
|
|
155
170
|
## 界面演示与市场投稿
|
|
156
171
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# dsh-tender-workbench 0.5.7
|
|
2
|
+
|
|
3
|
+
Version: **0.5.7**
|
|
4
|
+
Status: **ready for release**
|
|
5
|
+
|
|
6
|
+
用户于 2026-09-11 追加授权 commit、push、tag 与 npm 发布。通过精确提交的完整门禁后合并 PR #5,推送新的 v0.5.7 tag,由 release.yml 通过 OIDC 发布;不移动旧 tag,不变更生产 Profile 或全局宿主。
|
|
7
|
+
|
|
8
|
+
## 范围与边界
|
|
9
|
+
|
|
10
|
+
采用 DSH-UX-001 v1.5.2 UX-04:入口解析 Workspace 身份并通过公开 sessions.create({ workspaceId, sessionId }) 创建会话。当前显式归属优先;旧未分组会话按已注册路径精确匹配,无当前目录时取首个 Workspace;有未注册目录时提示用户选择/注册,不回退到不相关的组。命名空间 ID 与 ordinary Session guard 防止普通空白复用,不再通过脱离 Workspace 隔离。
|
|
11
|
+
|
|
12
|
+
保留 0.5.6 的 snapshotEvents() + turn/start、直接用户请求、pending control.nextTool 与预览/确认授权边界,本版不修改 Host 工具实现。Better Sidebar 仍为可选增强,无侧栏保留原生会话/提示词/Host 工具,缺失提示不改变草稿或业务事实,不引入替代容器。
|
|
13
|
+
|
|
14
|
+
不自动搬迁历史未分组会话、不替换原生容器、不引入 alpha 依赖。真实模型/MCP及四产品同装由协调任务另外验收。回滚需恢复完整已备份的宿主/Profile/任务组合;0.5.6 仍有归组缺陷,不能声称回退后该问题已解决。
|
|
15
|
+
|
|
16
|
+
## 测试与证据
|
|
17
|
+
|
|
18
|
+
复用最终 npm pack + 实际 DSH 0.1.2-rc.1 隔离 Profile,三路径 absent / Sidebar 0.18.1 / 已知坏 0.17.1。新测试以两个 Workspace 验证选中组而非首组,断言业务与普通 Session 均保持归组;入口不建 Tab、不展开侧栏,五流程单例,Tab X、Files、宿主收起恢复,合成业务及 Excel/PDF 下载仍通过。
|
|
19
|
+
|
|
20
|
+
本地 check:43 文件、245 passed / 1 Windows-only skipped;UI 8/8。实际 DSH 无侧栏和 Sidebar 0.18.1 路径通过,旧 Sidebar 0.17.1 预检与实际启动按预期阻断。采用记录、实际结果与限制登记于 docs/WORKSPACE-OWNERSHIP-ADOPTION.md。此清单为发布前状态;发布工作流与 Registry 验证完成后以独立文档提交补充证据。
|
package/lib/client.js
CHANGED
|
@@ -4708,29 +4708,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4708
4708
|
return `${TENDER_ENTRY_SESSION_ID_PREFIX}${uuid}`;
|
|
4709
4709
|
}
|
|
4710
4710
|
/**
|
|
4711
|
-
* Resolve
|
|
4712
|
-
*
|
|
4713
|
-
*
|
|
4711
|
+
* Resolve Host-owned Workspace identity, not just a directory. Existing
|
|
4712
|
+
* membership wins; a legacy ungrouped Session may match a registered path.
|
|
4713
|
+
* Never register a new Workspace or create an ungrouped business Session here.
|
|
4714
4714
|
*/
|
|
4715
|
-
function
|
|
4716
|
-
const
|
|
4715
|
+
function resolveTenderEntryWorkspaceId(sessions, workspaces) {
|
|
4716
|
+
const sessionSnapshot = sessions.list.getSnapshot();
|
|
4717
|
+
const current = sessionSnapshot.current;
|
|
4717
4718
|
const workspaceSnapshot = workspaces.list.getSnapshot();
|
|
4718
|
-
|
|
4719
|
+
const currentWorkspace = current === void 0 ? void 0 : workspaceSnapshot.items.find((workspace) => workspace.sessionIds.includes(current));
|
|
4720
|
+
if (currentWorkspace !== void 0) return currentWorkspace.workspaceId;
|
|
4721
|
+
const cwd = current === void 0 ? void 0 : sessionSnapshot.byId[current]?.cwd;
|
|
4722
|
+
if (cwd !== void 0) return workspaceSnapshot.items.find((workspace) => workspace.path === cwd)?.workspaceId;
|
|
4723
|
+
return workspaceSnapshot.items[0]?.workspaceId;
|
|
4719
4724
|
}
|
|
4720
4725
|
/**
|
|
4721
|
-
* Create a distinct native Session
|
|
4722
|
-
*
|
|
4723
|
-
*
|
|
4724
|
-
* workbench Session.
|
|
4726
|
+
* Create a distinct native Session explicitly attached to its Workspace.
|
|
4727
|
+
* Namespaced identity + ordinary-session-guard prevent New Session reuse;
|
|
4728
|
+
* detaching the business Session from its Workspace is not an isolation method.
|
|
4725
4729
|
*/
|
|
4726
4730
|
async function createTenderEntrySession(sessions, workspaces, uuid = browserUuid) {
|
|
4727
|
-
const
|
|
4728
|
-
if (
|
|
4731
|
+
const workspaceId = resolveTenderEntryWorkspaceId(sessions, workspaces);
|
|
4732
|
+
if (workspaceId === void 0) throw new TenderSessionEntryError("workspace-unavailable");
|
|
4729
4733
|
const capability = sessions;
|
|
4730
4734
|
if (typeof capability.create !== "function") throw new TenderSessionEntryError("create-unavailable");
|
|
4731
4735
|
const requestedId = createTenderEntrySessionId(uuid());
|
|
4732
4736
|
const createdId = await capability.create({
|
|
4733
|
-
|
|
4737
|
+
workspaceId,
|
|
4734
4738
|
sessionId: requestedId
|
|
4735
4739
|
});
|
|
4736
4740
|
if (createdId !== requestedId) throw new TenderSessionEntryError("invalid-session-id");
|
|
@@ -5900,7 +5904,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5900
5904
|
tabId
|
|
5901
5905
|
]);
|
|
5902
5906
|
}
|
|
5903
|
-
/**
|
|
5907
|
+
/** Probe the optional provider before registering or opening its workbench. */
|
|
5904
5908
|
function assertBetterSidebarContract(service) {
|
|
5905
5909
|
for (const method of [
|
|
5906
5910
|
"registerTab",
|
|
@@ -28204,7 +28208,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28204
28208
|
//#region src/client/TenderEntry.tsx
|
|
28205
28209
|
const SIDEBAR_WORKSPACES_SELECTOR = "[data-slot=\"sidebar.workspaces\"]";
|
|
28206
28210
|
const TENDER_TOP_MOUNT_SELECTOR = "[data-dsh-tender-top-mount=\"true\"]";
|
|
28207
|
-
const SIDEBAR_UNAVAILABLE = "
|
|
28211
|
+
const SIDEBAR_UNAVAILABLE = "招投标可视化工作台暂不可用,当前输入和业务记录未改变。仍可使用原生对话、提示词生成和已支持的 Host 工具;流程按钮不会代为执行任务。若需工作台,请选择安装 dsh-better-sidebar@0.18.1(需 targetedOpen / stateSubscription),在宿主设置中启用招投标 Tab,再完整重启 DSH。";
|
|
28208
28212
|
/** Keep the whole focused card visible without scrolling the host conversation. */
|
|
28209
28213
|
function revealShortcut(button) {
|
|
28210
28214
|
const menu = button.parentElement;
|