dsh-tender-workbench 0.5.8 → 0.5.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 +6 -0
- package/README.en.md +7 -7
- package/README.md +8 -8
- package/docs/RELEASE-0.5.9.md +10 -0
- package/lib/client.js +43 -16
- package/lib/client.js.map +1 -1
- package/lib/types/client/TenderEntry.d.ts.map +1 -1
- package/lib/types/client/tender-hero-bridge.d.ts +2 -2
- package/lib/types/client/tender-hero-bridge.d.ts.map +1 -1
- package/package.json +2 -2
- package/docs/RELEASE-0.5.8.md +0 -14
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.9] - 2026-09-14
|
|
8
|
+
|
|
9
|
+
- 按 DSH-UX-001 1.5.4 删除首页副标题及占位,保留原生工作区、模式、输入框和业务导航。
|
|
10
|
+
- 当前 Session 的品牌标题在原生 Hero 延迟加载、重建后恢复;退出时清理,不写用户自定义会话名称。
|
|
11
|
+
- 保留固定入口名称、可选侧栏、Profile 历史和人工确认契约。
|
|
12
|
+
|
|
7
13
|
## [0.5.8] - 2026-09-13
|
|
8
14
|
|
|
9
15
|
- 按共享规范 v1.5.3 增加 Profile 持久只读历史:来源 Workspace/Session 不变,显式导航来源会话,不复制或重绑旧 projection;完成记录锁定。
|
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.9** (stable release).
|
|
14
14
|
|
|
15
|
-
Version 0.5.
|
|
15
|
+
Version 0.5.9 removes the home subtitle and restores scoped branding after native headline remounts. It retains 0.5.8 Profile history and actual execution telemetry. See the [release record](docs/RELEASE-0.5.9.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.9 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.9
|
|
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.9.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.9
|
|
126
126
|
dsh web --no-open
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
Version 0.5.
|
|
129
|
+
Version 0.5.9 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.9
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
请先满足下文的 DSH、连接器及侧边栏依赖要求;安装后完整停止并重启对应 Profile。
|
|
@@ -27,9 +27,9 @@ dsh plugin --profile web add dsh-tender-workbench@0.5.8
|
|
|
27
27
|
|
|
28
28
|
> 面向国内招投标团队的 DeepSeek Harness 开源智能体插件:在一个会话级工作台内完成标讯与拟建项目查询、确定性规则初筛、限定范围智能分析、人工复核,以及 Excel/PDF 报告交付。
|
|
29
29
|
>
|
|
30
|
-
> 当前稳定版本:**0.5.
|
|
30
|
+
> 当前稳定版本:**0.5.9**(正式版本)
|
|
31
31
|
|
|
32
|
-
0.5.8
|
|
32
|
+
0.5.9 按统一规范移除首页副标题,并修复当前业务品牌标题在宿主重建后的恢复;保留 0.5.8 的 Profile 历史和真实执行进度。发布状态及验收边界见 [发布记录](docs/RELEASE-0.5.9.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.9` 版本:
|
|
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.9
|
|
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.9
|
|
150
150
|
dsh web --no-open
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
0.5.
|
|
153
|
+
0.5.9 保留 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.9 发布清单](docs/RELEASE-0.5.9.md)。
|
|
169
169
|
|
|
170
170
|
## 界面演示与市场投稿
|
|
171
171
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 招投标 0.5.9 发布记录
|
|
2
|
+
|
|
3
|
+
Version: **0.5.9**
|
|
4
|
+
Status: **ready for release**
|
|
5
|
+
|
|
6
|
+
统一首页移除副标题;修复仅限当前业务 Hero 的品牌标题延迟加载/重建恢复。保留原生输入、快捷菜单、用户会话标题及业务授权。
|
|
7
|
+
|
|
8
|
+
本地 typecheck、入口/历史/进度 28 测试及 Chromium 8 布局场景通过。完整 check、PR/main CI、OIDC/Registry 校验在发布流程执行。UI 为隔离 React fixture;本轮未重新执行最终 tarball 真实 Host、四产品共存、付费模型/MCP。UX47 终止/重连组合边界见 HOME-STANDARD-1.5.4.md。
|
|
9
|
+
|
|
10
|
+
旧 npm/Tag 不修改,生产 Profile 不操作。
|
package/lib/client.js
CHANGED
|
@@ -4814,7 +4814,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4814
4814
|
}
|
|
4815
4815
|
//#endregion
|
|
4816
4816
|
//#region \0dsh-tender-workbench-css:/home/runner/work/dsh-tender-workbench/dsh-tender-workbench/src/client/workbench-entry.module.css.mjs
|
|
4817
|
-
const css$2 = ".X4SUna_topMount{flex:none;width:100%;min-width:0}.X4SUna_topEntry{box-sizing:border-box;width:100%;padding-right:var(--dsh-sidebar-inline-padding,12px)}.X4SUna_headerButton{color:var(--text-secondary,#475467);cursor:pointer;font:inherit;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;display:inline-flex}.X4SUna_sidebarButton:disabled{cursor:wait;opacity:.62}.X4SUna_sidebarButton{box-sizing:border-box;white-space:nowrap;border-radius:6px;flex:none;justify-content:flex-start;gap:8px;width:100%;min-width:0;height:42px;margin:0 0 8px;padding:0 10px;overflow:hidden}.X4SUna_sidebarRail{border-radius:50%;justify-content:center;width:36px;height:36px;padding:0}.X4SUna_sidebarError{color:#b42318;overflow-wrap:anywhere;padding:2px 12px 7px;font-size:11px;line-height:16px;display:block}.X4SUna_headerButton{border:1px solid var(--border-color,#e5e7eb);border-radius:999px;min-height:26px;padding:4px 8px;font-size:11px}.X4SUna_headerButton[data-workbench-status=running]{border-color:var(--qcc-border);color:var(--qcc-action)}.X4SUna_headerButton[data-workbench-status=failed],.X4SUna_headerButton[data-workbench-status=unavailable]{color:#b42318;border-color:#d92d2066}.X4SUna_topEntry[data-wide=false] .X4SUna_sidebarError{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.X4SUna_sidebarButton>svg{color:var(--qcc-action)}.X4SUna_sidebarButton:hover,.X4SUna_sidebarButton[aria-current=page]{color:var(--qcc-action);background:var(--qcc-selected)}.X4SUna_headerButton{color:var(--qcc-action);border-color:var(--qcc-border);border-radius:6px}.X4SUna_headerButton:hover,.X4SUna_headerButton:focus-visible{color:var(--qcc-hover);background:var(--qcc-selected)}.X4SUna_heroMount{width:100%;min-width:0}.X4SUna_hero{text-align:center;margin:0 auto 16px}.X4SUna_heroRow{justify-content:center;align-items:center;gap:12px;display:flex}.X4SUna_heroRow h1{color:var(--qcc-text);margin:0;font-family:inherit;font-size:28px;font-weight:650;line-height:1.3}.X4SUna_heroLogo{width:48px;height:48px;color:var(--qcc-action);background:var(--qcc-selected);border-radius:12px;flex:none;place-items:center;display:grid}.
|
|
4817
|
+
const css$2 = ".X4SUna_topMount{flex:none;width:100%;min-width:0}.X4SUna_topEntry{box-sizing:border-box;width:100%;padding-right:var(--dsh-sidebar-inline-padding,12px)}.X4SUna_headerButton{color:var(--text-secondary,#475467);cursor:pointer;font:inherit;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;display:inline-flex}.X4SUna_sidebarButton:disabled{cursor:wait;opacity:.62}.X4SUna_sidebarButton{box-sizing:border-box;white-space:nowrap;border-radius:6px;flex:none;justify-content:flex-start;gap:8px;width:100%;min-width:0;height:42px;margin:0 0 8px;padding:0 10px;overflow:hidden}.X4SUna_sidebarRail{border-radius:50%;justify-content:center;width:36px;height:36px;padding:0}.X4SUna_sidebarError{color:#b42318;overflow-wrap:anywhere;padding:2px 12px 7px;font-size:11px;line-height:16px;display:block}.X4SUna_headerButton{border:1px solid var(--border-color,#e5e7eb);border-radius:999px;min-height:26px;padding:4px 8px;font-size:11px}.X4SUna_headerButton[data-workbench-status=running]{border-color:var(--qcc-border);color:var(--qcc-action)}.X4SUna_headerButton[data-workbench-status=failed],.X4SUna_headerButton[data-workbench-status=unavailable]{color:#b42318;border-color:#d92d2066}.X4SUna_topEntry[data-wide=false] .X4SUna_sidebarError{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.X4SUna_sidebarButton>svg{color:var(--qcc-action)}.X4SUna_sidebarButton:hover,.X4SUna_sidebarButton[aria-current=page]{color:var(--qcc-action);background:var(--qcc-selected)}.X4SUna_headerButton{color:var(--qcc-action);border-color:var(--qcc-border);border-radius:6px}.X4SUna_headerButton:hover,.X4SUna_headerButton:focus-visible{color:var(--qcc-hover);background:var(--qcc-selected)}.X4SUna_heroMount{width:100%;min-width:0}.X4SUna_hero{text-align:center;margin:0 auto 16px}.X4SUna_heroRow{justify-content:center;align-items:center;gap:12px;display:flex}.X4SUna_heroRow h1{color:var(--qcc-text);margin:0;font-family:inherit;font-size:28px;font-weight:650;line-height:1.3}.X4SUna_heroLogo{width:48px;height:48px;color:var(--qcc-action);background:var(--qcc-selected);border-radius:12px;flex:none;place-items:center;display:grid}.X4SUna_shortcutMount{flex:none;width:100%;min-width:0}.X4SUna_shortcuts{box-sizing:border-box;scrollbar-width:none;flex-wrap:nowrap;justify-content:safe center;align-items:center;gap:8px;width:100%;min-width:0;max-width:780px;margin:18px auto 0;padding:5px 16px;display:flex;overflow-x:auto}.X4SUna_shortcuts::-webkit-scrollbar{display:none}.X4SUna_shortcuts button{box-sizing:border-box;border:1px solid var(--qcc-border);min-width:108px;min-height:54px;color:var(--qcc-muted);background:var(--qcc-surface);font:inherit;white-space:nowrap;cursor:pointer;border-radius:8px;flex-direction:column;flex:none;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-size:12px;line-height:1.4;display:inline-flex}.X4SUna_shortcutIcon{width:17px;height:17px;display:inline-flex}.X4SUna_shortcutIcon svg{width:17px;height:17px}.X4SUna_shortcuts button:hover:not(:disabled),.X4SUna_shortcuts button:focus-visible{color:var(--qcc-action);background:var(--qcc-selected)}.X4SUna_promptEntry{z-index:40;pointer-events:none;position:absolute;inset:0}[data-composer-card]:has(.X4SUna_promptEntry){padding-top:48px}.X4SUna_promptEntry .X4SUna_promptTrigger{pointer-events:auto;position:absolute;top:10px;left:16px}.X4SUna_promptEntry .X4SUna_promptNotice{position:absolute;top:16px;left:140px;right:16px}.X4SUna_promptTrigger{border:1px solid var(--qcc-border);background:var(--qcc-selected);color:var(--qcc-action);font:inherit;cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:inline-flex}.X4SUna_promptNotice{color:var(--qcc-muted);font-size:12px}.X4SUna_backdrop{z-index:2000;pointer-events:auto;box-sizing:border-box;background:#0a18286b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.X4SUna_dialog{background:var(--qcc-surface);width:min(720px,100%);min-height:0;max-height:calc(100dvh - 48px);color:var(--qcc-text);border:1px solid var(--qcc-border);border-radius:12px;grid-template-rows:auto minmax(0,1fr) auto;font:14px/1.6 PingFang SC,Microsoft YaHei,sans-serif;display:grid;overflow:hidden;box-shadow:0 20px 60px #00000038}.X4SUna_dialog *{box-sizing:border-box}.X4SUna_dialogHeader{border-bottom:1px solid var(--qcc-border);justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 24px;display:flex}.X4SUna_dialogHeader h2{margin:0;font-size:20px}.X4SUna_dialogHeader p{color:var(--qcc-muted);margin:8px 0 0;font-size:12px}.X4SUna_dialog button{border:1px solid var(--qcc-border);min-height:36px;color:var(--qcc-text);background:var(--qcc-surface);font:inherit;cursor:pointer;border-radius:6px;padding:8px 12px}.X4SUna_dialog button:hover{color:var(--qcc-action);background:var(--qcc-selected)}.X4SUna_dialog .X4SUna_closeButton{flex:none;width:36px;padding:0;font-size:22px}.X4SUna_dialogBody{overscroll-behavior:contain;gap:20px;min-height:0;padding:24px;display:grid;overflow:auto}.X4SUna_dialogBody fieldset{border:0;min-width:0;margin:0;padding:0}.X4SUna_dialogBody legend{padding:0 0 8px;font-weight:600}.X4SUna_scopeGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.X4SUna_scopeGrid label{border:1px solid var(--qcc-border);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:12px;display:flex}.X4SUna_scopeGrid label[data-selected=true]{border-color:var(--qcc-action);color:var(--qcc-action);background:var(--qcc-selected)}.X4SUna_scopeGrid input{accent-color:var(--qcc-action);margin:0}.X4SUna_formField{flex-wrap:wrap;gap:8px;font-weight:600;display:flex}.X4SUna_formField span{color:var(--qcc-muted);font-size:12px;font-weight:400}.X4SUna_formField :where(input,textarea,select){border:1px solid var(--qcc-border);width:100%;min-width:0;color:var(--qcc-text);background:var(--qcc-surface);font:inherit;border-radius:6px;padding:10px 12px;font-weight:400}.X4SUna_formField textarea{resize:vertical}.X4SUna_fieldGrid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.X4SUna_formHint{color:var(--qcc-muted);margin:0;font-size:12px}.X4SUna_promptPreview{border:1px solid var(--qcc-border);background:var(--qcc-page);border-radius:8px;padding:12px}.X4SUna_promptPreview summary{color:var(--qcc-action);cursor:pointer}.X4SUna_promptPreview pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}.X4SUna_dialogFooter{border-top:1px solid var(--qcc-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 24px;display:flex}.X4SUna_dialogFooter>:where(span,p){color:var(--qcc-muted);margin:0;font-size:12px}.X4SUna_dialogActions{flex-wrap:wrap;gap:8px;display:flex}.X4SUna_dialog .X4SUna_action{border-color:var(--qcc-action);color:var(--qcc-on-action);background:var(--qcc-action)}.X4SUna_dialog .X4SUna_action:hover{border-color:var(--qcc-hover);color:var(--qcc-on-action);background:var(--qcc-hover)}@media (width<=600px){.X4SUna_heroRow h1{font-size:22px}.X4SUna_heroLogo{border-radius:8px;width:40px;height:40px}.X4SUna_heroLogo svg{width:24px;height:24px}.X4SUna_shortcuts{justify-content:flex-start;padding-inline:12px}.X4SUna_shortcuts button{min-width:92px;padding:7px 10px}.X4SUna_backdrop{padding:12px}.X4SUna_dialog{max-height:calc(100dvh - 24px)}.X4SUna_dialogHeader,.X4SUna_dialogBody,.X4SUna_dialogFooter{padding:16px}.X4SUna_fieldGrid{grid-template-columns:1fr}.X4SUna_scopeGrid{gap:4px}.X4SUna_scopeGrid label{gap:4px;padding:8px 4px;font-size:12px}.X4SUna_formField :where(input,textarea,select){font-size:16px}}";
|
|
4818
4818
|
const tagId$2 = "dsh-tender-workbench/workbench-entry.module.css";
|
|
4819
4819
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
4820
4820
|
const tag = document.createElement("style");
|
|
@@ -4869,24 +4869,51 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4869
4869
|
//#endregion
|
|
4870
4870
|
//#region src/client/tender-hero-bridge.ts
|
|
4871
4871
|
/**
|
|
4872
|
-
* Compatibility bridge for DSH 0.1.
|
|
4872
|
+
* Compatibility bridge for DSH 0.1.2-rc.1 (no session headline slot).
|
|
4873
4873
|
* Hide only the verified native brand row, insert an owned row, and restore it
|
|
4874
4874
|
* on exit. Never claim the root/single hero.brand.mark slot or rewrite siblings.
|
|
4875
4875
|
*/
|
|
4876
4876
|
function mountTenderHero(anchor, onMount) {
|
|
4877
4877
|
const hero = anchor.closest("[data-phase=\"hero\"]");
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4878
|
+
if (!hero) return () => {};
|
|
4879
|
+
let row;
|
|
4880
|
+
let mount;
|
|
4881
|
+
let display = "";
|
|
4882
|
+
const restore = () => {
|
|
4883
|
+
mount?.remove();
|
|
4884
|
+
if (row?.style.display === "none") row.style.display = display;
|
|
4885
|
+
row = void 0;
|
|
4886
|
+
mount = void 0;
|
|
4887
|
+
};
|
|
4888
|
+
const sync = () => {
|
|
4889
|
+
const next = (hero.querySelector("[class*=\"headlineText\"]") ?? [...hero.querySelectorAll("span")].find((node) => ["探索未至之境", "Into the Unknown"].includes(node.textContent?.trim() ?? "")))?.parentElement;
|
|
4890
|
+
if (!next || !next.querySelector("[class*=\"fishHitbox\"]") || next.contains(anchor)) {
|
|
4891
|
+
if (mount) {
|
|
4892
|
+
restore();
|
|
4893
|
+
onMount(null);
|
|
4894
|
+
}
|
|
4895
|
+
return;
|
|
4896
|
+
}
|
|
4897
|
+
if (next === row && mount?.parentElement === next.parentElement) return;
|
|
4898
|
+
restore();
|
|
4899
|
+
row = next;
|
|
4900
|
+
display = row.style.display;
|
|
4901
|
+
mount = anchor.ownerDocument.createElement("div");
|
|
4902
|
+
mount.className = `${qcc_theme_module_css_default.scope} ${workbench_entry_module_css_default.heroMount}`;
|
|
4903
|
+
mount.dataset.dshTenderHero = "true";
|
|
4904
|
+
row.style.display = "none";
|
|
4905
|
+
row.before(mount);
|
|
4906
|
+
onMount(mount);
|
|
4907
|
+
};
|
|
4908
|
+
sync();
|
|
4909
|
+
const observer = new MutationObserver(sync);
|
|
4910
|
+
observer.observe(hero, {
|
|
4911
|
+
childList: true,
|
|
4912
|
+
subtree: true
|
|
4913
|
+
});
|
|
4887
4914
|
return () => {
|
|
4888
|
-
|
|
4889
|
-
|
|
4915
|
+
observer.disconnect();
|
|
4916
|
+
restore();
|
|
4890
4917
|
};
|
|
4891
4918
|
}
|
|
4892
4919
|
/** input.dock is BEFORE the native composer: portal only our navigation below it. */
|
|
@@ -28550,16 +28577,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28550
28577
|
hidden: true,
|
|
28551
28578
|
"data-dsh-tender-hero-anchor": "true"
|
|
28552
28579
|
}),
|
|
28553
|
-
owned && blank && heroMount && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.
|
|
28580
|
+
owned && blank && heroMount && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
28554
28581
|
className: workbench_entry_module_css_default.hero,
|
|
28555
|
-
children:
|
|
28582
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
28556
28583
|
className: workbench_entry_module_css_default.heroRow,
|
|
28557
28584
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
28558
28585
|
className: workbench_entry_module_css_default.heroLogo,
|
|
28559
28586
|
"aria-hidden": "true",
|
|
28560
28587
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconGoalOutline16, { size: 26 })
|
|
28561
28588
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", { children: "招投标智能体" })]
|
|
28562
|
-
})
|
|
28589
|
+
})
|
|
28563
28590
|
}), heroMount),
|
|
28564
28591
|
owned && menuMount && (0, react_dom.createPortal)(menu, menuMount)
|
|
28565
28592
|
] });
|