dsh-tender-workbench 0.2.1-beta.4 → 0.2.2-beta.0
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.md +127 -146
- package/lib/client.js +3487 -1406
- package/lib/client.js.map +1 -1
- package/lib/index.js +4579 -4063
- package/lib/types/client/artifact-api.d.ts +2 -0
- package/lib/types/client/artifact-api.d.ts.map +1 -1
- package/lib/types/client/intents/screening-intent.d.ts +37 -13
- package/lib/types/client/intents/screening-intent.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +580 -24
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/workbench/TenderAnalysisReviewViews.d.ts +12 -3
- package/lib/types/client/workbench/TenderAnalysisReviewViews.d.ts.map +1 -1
- package/lib/types/client/workbench/TenderReportView.d.ts +5 -1
- package/lib/types/client/workbench/TenderReportView.d.ts.map +1 -1
- package/lib/types/client/workbench/TenderScreeningViews.d.ts.map +1 -1
- package/lib/types/client/workbench/TenderWorkbench.d.ts +3 -2
- package/lib/types/client/workbench/TenderWorkbench.d.ts.map +1 -1
- package/lib/types/client/workbench/session-write-flight.d.ts.map +1 -1
- package/lib/types/contracts/analysis-review.d.ts +203 -107
- package/lib/types/contracts/analysis-review.d.ts.map +1 -1
- package/lib/types/contracts/reporting.d.ts +284 -10
- package/lib/types/contracts/reporting.d.ts.map +1 -1
- package/lib/types/contracts/screening-intents.d.ts +52 -14
- package/lib/types/contracts/screening-intents.d.ts.map +1 -1
- package/lib/types/contracts/screening.d.ts +18 -0
- package/lib/types/contracts/screening.d.ts.map +1 -1
- package/lib/types/contracts/workflow.d.ts +8 -2
- package/lib/types/contracts/workflow.d.ts.map +1 -1
- package/lib/types/host/artifacts/artifact-route.d.ts.map +1 -1
- package/lib/types/host/pipeline/analysis-review.d.ts +5 -4
- package/lib/types/host/pipeline/analysis-review.d.ts.map +1 -1
- package/lib/types/host/projection.d.ts.map +1 -1
- package/lib/types/host/reporting/excel.d.ts.map +1 -1
- package/lib/types/host/reporting/pdf.d.ts.map +1 -1
- package/lib/types/host/reporting/report-dataset.d.ts +3 -1
- package/lib/types/host/reporting/report-dataset.d.ts.map +1 -1
- package/lib/types/host/skill.d.ts.map +1 -1
- package/lib/types/host/tools/analysis-review-tools.d.ts +22 -17
- package/lib/types/host/tools/analysis-review-tools.d.ts.map +1 -1
- package/lib/types/host/tools/query-tool.d.ts +4 -1
- package/lib/types/host/tools/query-tool.d.ts.map +1 -1
- package/lib/types/host/tools/report-tools.d.ts +4 -1
- package/lib/types/host/tools/report-tools.d.ts.map +1 -1
- package/lib/types/host/tools/rule-tools.d.ts +4 -1
- package/lib/types/host/tools/rule-tools.d.ts.map +1 -1
- package/package.json +126 -126
package/README.md
CHANGED
|
@@ -1,146 +1,127 @@
|
|
|
1
|
-
# dsh-tender-workbench
|
|
2
|
-
|
|
3
|
-
`dsh-tender-workbench` is an open-source DeepSeek Harness
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
The
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
```sh
|
|
69
|
-
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
70
|
-
dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
|
|
71
|
-
dsh plugin --profile web add dsh-tender-workbench@beta
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
dsh plugin --profile web add 'dsh-
|
|
80
|
-
dsh plugin --profile web add dsh-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
dsh plugin --profile web add dsh-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
dsh web
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```sh
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
## Runtime behavior
|
|
130
|
-
|
|
131
|
-
- The front-end phases are “Find opportunities / Screen candidates / Human confirmation / Deliver”. The internal `query`, `overview`, `rules`, `classification`, `analysis`, `review`, and `report` nodes remain independent Projection facts rather than a strict seven-step wizard.
|
|
132
|
-
- Navigation changes only the local view. It never advances `currentStage`, assumes a contiguous completion prefix, or disables later phases by ordinal position.
|
|
133
|
-
- A completed query is a normal lightweight outcome. The UI does not display “2/7 incomplete”; it offers progressive next steps without selecting a lightweight/full mode in advance.
|
|
134
|
-
- Query completion never creates a rule draft or starts classification. “Continue screening” sends a visible `rules.propose` Intent only after the user clicks it.
|
|
135
|
-
- Query, rules, analysis, review, report creation, and failed-format retry share one Session-scoped write flight. Rapid clicks, Enter repeats, and click/submit races create one command and remain locked through send, Agent wait, and matching tool execution; a transport retry reuses the same `commandId`.
|
|
136
|
-
- Initial Agent criteria open directly as the current Session's editable working draft; there is no suggestion-application gate, and loading the working copy never confirms rules or classifies data. Local add/edit/enable/delete operations never change persisted business state; changing the draft expires its Dry Run result, which must be refreshed before confirmation.
|
|
137
|
-
- The screening view always exposes the three approved tabs: criteria, classification results, and Agent analysis. It follows the approved primary path “confirm criteria and start classification → ask Agent to analyze candidates → enter human review”; locked tabs are visibly present but unavailable until their real dependencies exist.
|
|
138
|
-
- The criteria page uses the approved list/editor workspace. “Save draft and run Dry Run” refreshes the inline four-item impact strip and the representative-sample/global-conflict columns; there is no separate “deterministic impact preview” surface. The workbench footer owns “confirm criteria and start classification”.
|
|
139
|
-
- Confirmed classification exposes mutually exclusive totals, source/rule/conflict/disclosure filters, and per-record traceability. Analysis recommendations and user decisions remain separate row fields.
|
|
140
|
-
- S5.1 and S5.2 are implemented as the mandatory design-convergence gates before S6. Their regression contracts keep the checked-in HTML UX information architecture, responsive grids, focus behavior, exact query mapping, and closed MVP omission list from drifting back to legacy or placeholder UI.
|
|
141
|
-
- Batch review inputs and the focused-record editor keep separate local state. Selecting a record initializes its saved decision and note, so a batch choice or a previously focused record cannot leak into an individual review command.
|
|
142
|
-
- Report creation shows the current reviewed/pending scope and requires explicit confirmation for a partial report. Excel and PDF download independently through same-origin Session/token headers; temporary Blob URLs are revoked after use.
|
|
143
|
-
- The composer launcher exposes the four existing business phases as direct shortcuts. The top-left and Header entries reopen the same Session Tab without duplicating the workbench.
|
|
144
|
-
- When no Session is selected, the sidebar entry invokes the native New Session flow.
|
|
145
|
-
- The Better Sidebar registration, Projection subscription, Reveal attachment, all three Slot registrations, the placement observer, and all owned Portal mounts dispose with the Client Context or component lifecycle.
|
|
146
|
-
- Narrow layouts use a container-responsive four-phase navigation and keep the main action reachable below a scrollable content area.
|
|
1
|
+
# dsh-tender-workbench
|
|
2
|
+
|
|
3
|
+
`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.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
The workbench follows four business phases:
|
|
8
|
+
|
|
9
|
+
1. **Find opportunities**: search tender notices and proposed projects with source, keyword, date, region, stage, procurement, industry, type, amount, approval, and investment conditions supported by the connected data source.
|
|
10
|
+
2. **Screen candidates**: edit Agent-proposed criteria, run deterministic impact previews, confirm a rule set, and inspect five mutually exclusive outcomes: included, observed, manual review, rule excluded, and unmatched.
|
|
11
|
+
3. **Human confirmation**: review pending and completed records separately, prioritize Agent recommendations, make individual or batch decisions, retain notes, and undo the latest review operation.
|
|
12
|
+
4. **Deliver**: confirm the reviewed scope and generate Excel and PDF files from one immutable report snapshot. Partial delivery remains explicit when records are still pending.
|
|
13
|
+
|
|
14
|
+
Agent analysis covers every record classified as included, observed, or requiring manual review. Rule-excluded and unmatched records are not analyzed. Analysis runs in deterministic batches until the eligible set is complete, and interrupted work resumes from the remaining records.
|
|
15
|
+
|
|
16
|
+
The human-review queue keeps Agent recommendations separate from user decisions. Its default ordering is priority review, watch, not recommended, then unanalyzed. Classification lists are ordered included, observed, manual review, rule excluded, then unmatched before pagination.
|
|
17
|
+
|
|
18
|
+
## Architecture
|
|
19
|
+
|
|
20
|
+
The package is a Host + Client DeepSeek Harness plugin:
|
|
21
|
+
|
|
22
|
+
- The Client registers one Session-targeted Better Sidebar tab and public launcher actions. It builds typed, user-visible intents and consumes bounded Session projections and Artifact APIs.
|
|
23
|
+
- The Host validates intents, calls the exact authorized MCP tools, owns workflow state transitions, stores Session-private Artifacts, and renders reports.
|
|
24
|
+
- Persistent business state is reconstructed from typed conversation events and immutable Artifact references. The UI does not infer state from model text or maintain a second cross-Session state machine.
|
|
25
|
+
- Query, criteria, analysis, review, and report writes share a Session-scoped single-flight guard. Read-only browsing remains available while a write is running.
|
|
26
|
+
- Registrations, subscriptions, portals, routes, and other side effects are tied to the plugin Context lifecycle and are disposed on unload or hot reload.
|
|
27
|
+
|
|
28
|
+
The plugin uses public DeepSeek Harness services and the public `dsh-better-sidebar` contract. It does not modify Harness source, access Provider internals, fetch MCP from the browser, read connector storage, hold API credentials, or write internal data to the Workspace.
|
|
29
|
+
|
|
30
|
+
## Data and report boundaries
|
|
31
|
+
|
|
32
|
+
Each Session has one active normalized dataset. A successful new query atomically replaces that active snapshot instead of merging results; historical Artifacts remain available for traceability while downstream state from the old snapshot becomes inactive.
|
|
33
|
+
|
|
34
|
+
Schema-valid MCP fields are retained as source facts. Missing values, disclosed-but-unparseable values, source failures, rule exclusions, and user exclusions remain distinct states and are not inferred from one another.
|
|
35
|
+
|
|
36
|
+
Excel is organized for analysis and verification, with separate overview, distribution, source-specific result, review, traceability, and data-quality sheets. PDF is organized for business readers, leading with deterministic conclusions, result distributions, deadline windows, and a bounded set of records requiring near-term verification. Both formats use the same immutable report snapshot; a failed format can be retried without re-querying or changing successful files.
|
|
37
|
+
|
|
38
|
+
## Requirements and compatibility
|
|
39
|
+
|
|
40
|
+
The published package declares minimum compatible versions without a stable-version upper bound:
|
|
41
|
+
|
|
42
|
+
- DeepSeek Harness public packages: `0.1.1-rc.2`
|
|
43
|
+
- `dsh-mcp-connector`: `0.2.31`
|
|
44
|
+
- `dsh-better-sidebar`: `0.17.1`
|
|
45
|
+
|
|
46
|
+
The active Profile must provide one coherent runtime with public Session Projection, JSONL Session Persistence, Tools, Skill, Sessions, and WebServer services. Better Sidebar must expose the public `targetedOpen` and `stateSubscription` features.
|
|
47
|
+
|
|
48
|
+
An installed and authorized `qcc-tender` MCP connection must expose these exact tools:
|
|
49
|
+
|
|
50
|
+
- `mcp__qcc-tender__search_tenders`
|
|
51
|
+
- `mcp__qcc-tender__search_proposed_projects`
|
|
52
|
+
|
|
53
|
+
Missing required services, incompatible Better Sidebar capabilities, unavailable MCP tools, and non-JSONL Session persistence fail explicitly. There is no Web-search, alternate-persistence, or Workspace-storage fallback.
|
|
54
|
+
|
|
55
|
+
## Install
|
|
56
|
+
|
|
57
|
+
The current release is an internal preview published under the `beta` dist-tag:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
61
|
+
dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
|
|
62
|
+
dsh plugin --profile web add dsh-tender-workbench@beta
|
|
63
|
+
dsh web --no-open
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
To install the current exact preview version:
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
70
|
+
dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
|
|
71
|
+
dsh plugin --profile web add dsh-tender-workbench@0.2.2-beta.0
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
To install from an independent checkout, install the required Provider plugins first, then run from this repository:
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
corepack pnpm@11.7.0 install --ignore-workspace
|
|
78
|
+
corepack pnpm@11.7.0 run build
|
|
79
|
+
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
80
|
+
dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
|
|
81
|
+
dsh plugin --profile web add .
|
|
82
|
+
dsh web --no-open
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
To install a packed build:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
|
|
89
|
+
dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
|
|
90
|
+
dsh plugin --profile web add ./dsh-tender-workbench-0.2.2-beta.0.tgz
|
|
91
|
+
dsh web --no-open
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The package's `dsh.bundle.patch` declaration activates `cordis.patch.yml`, which contributes the `dsh-tender-workbench` Loader row. Restart the Web profile after adding or removing the plugin.
|
|
95
|
+
|
|
96
|
+
To remove it:
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
dsh plugin --profile web remove dsh-tender-workbench
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Using the workbench
|
|
103
|
+
|
|
104
|
+
The plugin exposes a top-left “招投标” launcher, four phase shortcuts below the conversation composer, and a Session Header recovery action. Every entry focuses the same Better Sidebar tab for the addressed Session. When no Session is selected, the sidebar action starts the native New Session flow.
|
|
105
|
+
|
|
106
|
+
Navigation only changes the visible workbench phase. It does not mutate business state or run a later action. Criteria are proposed, edited, previewed, and confirmed as distinct steps. Agent recommendations never become user decisions automatically. Report generation always shows the reviewed and pending scope before creating a delivery snapshot.
|
|
107
|
+
|
|
108
|
+
The layout is container-responsive: wide workspaces use master/detail grids, while medium and narrow workspaces preserve the same information order with local table scrolling and reachable fixed actions.
|
|
109
|
+
|
|
110
|
+
## Development
|
|
111
|
+
|
|
112
|
+
Use the Node.js and pnpm versions declared by the repository:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
corepack pnpm@11.7.0 install --ignore-workspace
|
|
116
|
+
corepack pnpm@11.7.0 run typecheck
|
|
117
|
+
corepack pnpm@11.7.0 run test
|
|
118
|
+
corepack pnpm@11.7.0 run build
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The build emits the Host loader at `lib/index.js`, the Client bundle at `lib/client.js`, and declarations under `lib/types/`.
|
|
122
|
+
|
|
123
|
+
The province, city, and district source snapshot is maintained in [resources/area.ts](resources/area.ts).
|
|
124
|
+
|
|
125
|
+
## Current scope
|
|
126
|
+
|
|
127
|
+
The plugin does not provide online PDF preview, delivery-version comparison, regeneration of already successful files, subscriptions, CRM follow-up, enterprise profiles, source-accuracy verification, or Bid/No-Bid decisions. Query, classification, analysis, and review are all valid stopping points; later actions only run after explicit user input.
|