dsh-tender-workbench 0.5.9 → 0.5.10
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 +6 -0
- package/README.en.md +7 -7
- package/README.md +8 -8
- package/docs/RELEASE-0.5.10.md +10 -0
- package/lib/client.js +52 -0
- package/lib/client.js.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/submission-reveal.d.ts +16 -0
- package/lib/types/client/submission-reveal.d.ts.map +1 -0
- package/package.json +2 -2
- package/docs/RELEASE-0.5.9.md +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to `dsh-tender-workbench` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.5.10] - 2026-09-14
|
|
8
|
+
|
|
9
|
+
- Open the current tender workbench once after Host-observed submission admission. Prompt draft fill, failed sends, restored history and later model events do not open it.
|
|
10
|
+
- Preserve session isolation, original admission callbacks and manual closure; contain optional sidebar failures.
|
|
11
|
+
|
|
12
|
+
|
|
7
13
|
## [0.5.9] - 2026-09-14
|
|
8
14
|
|
|
9
15
|
- 按 DSH-UX-001 1.5.4 删除首页副标题及占位,保留原生工作区、模式、输入框和业务导航。
|
package/README.en.md
CHANGED
|
@@ -10,9 +10,9 @@ 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.10** (stable release).
|
|
14
14
|
|
|
15
|
-
Version 0.5.
|
|
15
|
+
Version 0.5.10 opens the current workbench once after Host-observed submission admission. Draft fill and later progress never reopen it. Scoped home branding, Profile history and actual execution telemetry are retained. See the [release record](docs/RELEASE-0.5.10.md) for publication status and verification boundaries.
|
|
16
16
|
|
|
17
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.
|
|
18
18
|
|
|
@@ -84,11 +84,11 @@ dsh web --no-open
|
|
|
84
84
|
|
|
85
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
86
|
|
|
87
|
-
To install the exact 0.5.
|
|
87
|
+
To install the exact 0.5.10 release:
|
|
88
88
|
|
|
89
89
|
```sh
|
|
90
90
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
91
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
91
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.10
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
To install base mode from an independent checkout:
|
|
@@ -105,7 +105,7 @@ To install a packed build:
|
|
|
105
105
|
|
|
106
106
|
```sh
|
|
107
107
|
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
108
|
-
dsh plugin --profile web add ./dsh-tender-workbench-0.5.
|
|
108
|
+
dsh plugin --profile web add ./dsh-tender-workbench-0.5.10.tgz
|
|
109
109
|
dsh web --no-open
|
|
110
110
|
```
|
|
111
111
|
|
|
@@ -122,11 +122,11 @@ dsh plugin --profile web remove dsh-tender-workbench
|
|
|
122
122
|
Upgrade an existing installation by installing the stable version and fully restarting the Web profile:
|
|
123
123
|
|
|
124
124
|
```sh
|
|
125
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
125
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.10
|
|
126
126
|
dsh web --no-open
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
Version 0.5.
|
|
129
|
+
Version 0.5.10 retains Workspace ownership, the ordinary Session guard and the 0.5.6 snapshotEvents/turn-start authorization contract. Business state remains Session-local; Profile history stores metadata only, never writable projections or download capabilities. Existing unopened Sessions are not scanned: reopening indexes their current task, without restoring old snapshots. Back up the Profile's `.dsh-tender-workbench/history-v1.json` alongside task directories. Live MCP is not verified. Roll back the complete backed-up host/plugin combination, not an old plugin alone on the new host.
|
|
130
130
|
|
|
131
131
|
## Using the workbench
|
|
132
132
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
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.10
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
请先满足下文的 DSH、连接器及侧边栏依赖要求;安装后完整停止并重启对应 Profile。
|
|
@@ -27,9 +27,9 @@ dsh plugin --profile web add dsh-tender-workbench@0.5.9
|
|
|
27
27
|
|
|
28
28
|
> 面向国内招投标团队的 DeepSeek Harness 开源智能体插件:在一个会话级工作台内完成标讯与拟建项目查询、确定性规则初筛、限定范围智能分析、人工复核,以及 Excel/PDF 报告交付。
|
|
29
29
|
>
|
|
30
|
-
> 当前稳定版本:**0.5.
|
|
30
|
+
> 当前稳定版本:**0.5.10**(正式版本)
|
|
31
31
|
|
|
32
|
-
0.5.
|
|
32
|
+
0.5.10 在任务提交被 Host 接纳后自动展开对应工作台;回填草稿不展开,手动收起后不会被后续进度反复拉开。保留首页品牌、Profile 历史和真实执行进度。发布状态及验收边界见 [发布记录](docs/RELEASE-0.5.10.md)。
|
|
33
33
|
|
|
34
34
|
[](https://github.com/duhu2000/dsh-tender-workbench/actions/workflows/ci.yml)
|
|
35
35
|
[](https://www.npmjs.com/package/dsh-tender-workbench)
|
|
@@ -75,10 +75,10 @@ dsh web --no-open
|
|
|
75
75
|
|
|
76
76
|
需要可视化工作台时,再自选安装 `dsh plugin --profile web add dsh-better-sidebar@0.18.1`、在宿主设置启用招投标 Tab,并完整重启。无需侧栏也可使用下方列明的基础功能。
|
|
77
77
|
|
|
78
|
-
安装指定的 `0.5.
|
|
78
|
+
安装指定的 `0.5.10` 版本:
|
|
79
79
|
|
|
80
80
|
```sh
|
|
81
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
81
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.10
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
移除插件:
|
|
@@ -146,11 +146,11 @@ node scripts/check-host-compatibility.mjs --host-root /实际路径/node_modules
|
|
|
146
146
|
从已有版本升级:
|
|
147
147
|
|
|
148
148
|
```sh
|
|
149
|
-
dsh plugin --profile web add dsh-tender-workbench@0.5.
|
|
149
|
+
dsh plugin --profile web add dsh-tender-workbench@0.5.10
|
|
150
150
|
dsh web --no-open
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
0.5.
|
|
153
|
+
0.5.10 保留 Workspace 归组、0.5.6 可选侧栏与 `snapshotEvents()` / `turn/start` 授权绑定。业务任务仍属于原 Session;Profile 历史只存摘要,不复制旧 projection,也不自动搬迁未分组任务。旧会话在重新打开后才补入当前任务摘要,历史页不恢复旧快照到当前任务。索引位于对应 Profile 的 `.dsh-tender-workbench/history-v1.json`,备份时一并保留。真实 MCP 连接未核验。回退应恢复备份的完整已验证宿主/插件组合,不能在新版宿主上单独安装原始 0.5.4 或更早版本。
|
|
154
154
|
|
|
155
155
|
## 本地开发
|
|
156
156
|
|
|
@@ -165,7 +165,7 @@ corepack pnpm@11.7.0 run check
|
|
|
165
165
|
|
|
166
166
|
`check` 会执行类型检查、完整 Vitest 测试、生产构建、README/发布状态校验以及 npm tarball 白名单预检。配置 npm Trusted Publishing 后,[发布工作流](.github/workflows/release.yml)可使用 OIDC 和 provenance;手工发布不得声称 provenance。
|
|
167
167
|
|
|
168
|
-
省、市、区数据源快照维护在 [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.10 发布清单](docs/RELEASE-0.5.10.md)。
|
|
169
169
|
|
|
170
170
|
## 界面演示与市场投稿
|
|
171
171
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 招投标 0.5.10 发布记录
|
|
2
|
+
|
|
3
|
+
Version: **0.5.10**
|
|
4
|
+
Status: **ready for release**
|
|
5
|
+
|
|
6
|
+
落实 UX-48:提示词回填不展开;当前招投标 Session 的提交经 Host `beginSubmission` 的 `onRetire(reason: observed)` 确认接纳后,自动展开对应工作台一次。失败、跨会话回调、重复结算、卸载后回调和后续进度不重复展开;可选侧栏错误不影响提交。
|
|
7
|
+
|
|
8
|
+
兼容边界:无该接纳 API 的旧 Host 保留手动打开;侧栏依赖缺失时不伪造任务进度或延迟抢焦点。本轮不重新执行付费模型/MCP 或四产品真实 Host 共存测试。
|
|
9
|
+
|
|
10
|
+
定向回归 12 项通过;完整发布门禁和精确提交 CI 在发布前验证。采用既有 GitHub OIDC Trusted Publishing,无需用户重复 npm 登录。不修改既有版本或 Tag。
|
package/lib/client.js
CHANGED
|
@@ -28990,6 +28990,55 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28990
28990
|
});
|
|
28991
28991
|
}
|
|
28992
28992
|
//#endregion
|
|
28993
|
+
//#region src/client/submission-reveal.ts
|
|
28994
|
+
/** Observe Host admission, never draft edits, model output, or restored history. */
|
|
28995
|
+
function installTenderSubmissionReveal(sessions, reveal) {
|
|
28996
|
+
let stop = () => {};
|
|
28997
|
+
let current;
|
|
28998
|
+
let active = true;
|
|
28999
|
+
let bound;
|
|
29000
|
+
const connect = () => {
|
|
29001
|
+
const id = sessions.list.getSnapshot().current;
|
|
29002
|
+
const face = id === void 0 ? void 0 : sessions.binding(id)?.session;
|
|
29003
|
+
if (id === current && face === bound) return;
|
|
29004
|
+
stop();
|
|
29005
|
+
stop = () => {};
|
|
29006
|
+
current = id;
|
|
29007
|
+
bound = face;
|
|
29008
|
+
if (!id || !isTenderEntrySessionId(id) || typeof face?.beginSubmission !== "function") return;
|
|
29009
|
+
const original = face.beginSubmission;
|
|
29010
|
+
const wrapped = function(input) {
|
|
29011
|
+
let retired = false;
|
|
29012
|
+
return original.call(this, {
|
|
29013
|
+
...input,
|
|
29014
|
+
onRetire: (settlement) => {
|
|
29015
|
+
try {
|
|
29016
|
+
input.onRetire?.(settlement);
|
|
29017
|
+
} finally {
|
|
29018
|
+
if (!retired) {
|
|
29019
|
+
retired = true;
|
|
29020
|
+
if (settlement.reason === "observed" && active && sessions.list.getSnapshot().current === id) try {
|
|
29021
|
+
reveal(id);
|
|
29022
|
+
} catch {}
|
|
29023
|
+
}
|
|
29024
|
+
}
|
|
29025
|
+
}
|
|
29026
|
+
});
|
|
29027
|
+
};
|
|
29028
|
+
face.beginSubmission = wrapped;
|
|
29029
|
+
stop = () => {
|
|
29030
|
+
if (face.beginSubmission === wrapped) face.beginSubmission = original;
|
|
29031
|
+
};
|
|
29032
|
+
};
|
|
29033
|
+
const unsubscribe = sessions.list.subscribe?.(connect);
|
|
29034
|
+
connect();
|
|
29035
|
+
return () => {
|
|
29036
|
+
active = false;
|
|
29037
|
+
unsubscribe?.();
|
|
29038
|
+
stop();
|
|
29039
|
+
};
|
|
29040
|
+
}
|
|
29041
|
+
//#endregion
|
|
28993
29042
|
//#region src/client/skill-catalog.ts
|
|
28994
29043
|
var TenderSkillPreflightError = class extends Error {
|
|
28995
29044
|
code;
|
|
@@ -31512,6 +31561,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31512
31561
|
throw new Error(t("sidebar.createFailed"), { cause: error });
|
|
31513
31562
|
}
|
|
31514
31563
|
};
|
|
31564
|
+
ctx.effect(() => installTenderSubmissionReveal(sessions, (sessionId) => {
|
|
31565
|
+
openSession(sessionId, "opportunity");
|
|
31566
|
+
}), "dsh-tender-workbench: accepted submission reveal");
|
|
31515
31567
|
ctx.inject(["betterSidebar"], (providerContext) => {
|
|
31516
31568
|
const service = providerContext.betterSidebar;
|
|
31517
31569
|
try {
|