dsh-tender-workbench 0.2.1-beta.3 → 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.
Files changed (50) hide show
  1. package/README.md +88 -107
  2. package/lib/client.js +3482 -1296
  3. package/lib/client.js.map +1 -1
  4. package/lib/index.js +4579 -4063
  5. package/lib/types/client/TenderEntry.d.ts +12 -8
  6. package/lib/types/client/TenderEntry.d.ts.map +1 -1
  7. package/lib/types/client/artifact-api.d.ts +2 -0
  8. package/lib/types/client/artifact-api.d.ts.map +1 -1
  9. package/lib/types/client/index.d.ts +1 -1
  10. package/lib/types/client/index.d.ts.map +1 -1
  11. package/lib/types/client/intents/screening-intent.d.ts +37 -13
  12. package/lib/types/client/intents/screening-intent.d.ts.map +1 -1
  13. package/lib/types/client/locales.d.ts +580 -24
  14. package/lib/types/client/locales.d.ts.map +1 -1
  15. package/lib/types/client/workbench/TenderAnalysisReviewViews.d.ts +12 -3
  16. package/lib/types/client/workbench/TenderAnalysisReviewViews.d.ts.map +1 -1
  17. package/lib/types/client/workbench/TenderReportView.d.ts +5 -1
  18. package/lib/types/client/workbench/TenderReportView.d.ts.map +1 -1
  19. package/lib/types/client/workbench/TenderScreeningViews.d.ts.map +1 -1
  20. package/lib/types/client/workbench/TenderWorkbench.d.ts +3 -2
  21. package/lib/types/client/workbench/TenderWorkbench.d.ts.map +1 -1
  22. package/lib/types/client/workbench/session-write-flight.d.ts.map +1 -1
  23. package/lib/types/contracts/analysis-review.d.ts +203 -107
  24. package/lib/types/contracts/analysis-review.d.ts.map +1 -1
  25. package/lib/types/contracts/reporting.d.ts +284 -10
  26. package/lib/types/contracts/reporting.d.ts.map +1 -1
  27. package/lib/types/contracts/screening-intents.d.ts +52 -14
  28. package/lib/types/contracts/screening-intents.d.ts.map +1 -1
  29. package/lib/types/contracts/screening.d.ts +18 -0
  30. package/lib/types/contracts/screening.d.ts.map +1 -1
  31. package/lib/types/contracts/workflow.d.ts +8 -2
  32. package/lib/types/contracts/workflow.d.ts.map +1 -1
  33. package/lib/types/host/artifacts/artifact-route.d.ts.map +1 -1
  34. package/lib/types/host/pipeline/analysis-review.d.ts +5 -4
  35. package/lib/types/host/pipeline/analysis-review.d.ts.map +1 -1
  36. package/lib/types/host/projection.d.ts.map +1 -1
  37. package/lib/types/host/reporting/excel.d.ts.map +1 -1
  38. package/lib/types/host/reporting/pdf.d.ts.map +1 -1
  39. package/lib/types/host/reporting/report-dataset.d.ts +3 -1
  40. package/lib/types/host/reporting/report-dataset.d.ts.map +1 -1
  41. package/lib/types/host/skill.d.ts.map +1 -1
  42. package/lib/types/host/tools/analysis-review-tools.d.ts +22 -17
  43. package/lib/types/host/tools/analysis-review-tools.d.ts.map +1 -1
  44. package/lib/types/host/tools/query-tool.d.ts +4 -1
  45. package/lib/types/host/tools/query-tool.d.ts.map +1 -1
  46. package/lib/types/host/tools/report-tools.d.ts +4 -1
  47. package/lib/types/host/tools/report-tools.d.ts.map +1 -1
  48. package/lib/types/host/tools/rule-tools.d.ts +4 -1
  49. package/lib/types/host/tools/rule-tools.d.ts.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -1,146 +1,127 @@
1
- # dsh-tender-workbench
2
-
3
- `dsh-tender-workbench` is an open-source DeepSeek Harness tender Agent workbench. The current S1-S5.3 MVP provides one Session-scoped Better Sidebar workbench, three official entry points, a four-phase progressive shell over seven internal Projection nodes, and a real query → optional analysis → human review → immutable Excel/PDF delivery chain.
1
+ # dsh-tender-workbench
4
2
 
5
- The three entries are `sidebar.footer.action` (“招投标”), `conversation.input.left` (“搜索招投标”), and `conversation.session.header.actions` (reopen). They all focus the same Better Sidebar single-instance Tab for the addressed Session. The workbench reads only that Session's Host Projection through a narrow `TenderProjectionPort`; it does not infer business state from chat text or maintain cross-Session state.
6
-
7
- The single query workspace now captures the complete approved condition set: source scope, up to ten keywords, publication presets/prior year/custom dates, up to twenty province/city/district regions, the analysis goal, tender information type and conditional stages/amounts, procurement method/industry/type, and proposed-project stage/approval/investment. The visible execution plan, user message, Host validation, and exact qcc calls all come from the same `TenderQueryIntentV1`; hidden or inactive branches cannot leak stale values, and `smartSort` is not exposed as a user filter.
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.
8
4
 
9
- S5.1 and S5.2 implement the mandatory UI convergence before S6. “Find opportunities” uses the approved condition-editor/execution-plan layout plus aligned overview and list/detail data surfaces. “Screen candidates” uses criteria-list/editor, impact-first preview, five-category classification/trace, and evidence-bound Agent-analysis work surfaces. Wide layouts preserve the master/detail grids; medium and narrow containers fold in the same information order. No simplified/advanced query split, legacy compatibility page, or parallel UI state machine remains.
5
+ ## What it does
10
6
 
11
- The S5.2 MVP intentionally omits “让 Agent 调整草案”, rule import, rule copy, nested condition groups, rule-version browsing/comparison, and follow-up questions for the focused project. These omissions are not rendered as disabled or simulated controls. Apart from that closed list, the two phases must match the approved design in structure, styling, layout, states, responsive behavior, and interaction.
12
-
13
- The plugin does not modify DeepSeek Harness source, inspect or write the native composer DOM, fetch MCP from the Client, access connector storage, or hold credentials. Explicit workbench submission validates one `TenderQueryIntentV1`, serializes the same object into a user-visible message, and sends it through the public scoped `conversation.send()` service without touching the composer draft.
7
+ The workbench follows four business phases:
14
8
 
15
- S2 implements `tender_workbench_query`, the exact `mcp__qcc-tender__search_tenders` and `mcp__qcc-tender__search_proposed_projects` nested calls, source-specific runtime validation, deterministic normalization, conservative announcement linking, Session-private Artifact storage, the Host Projection result, data overview, and paged/filterable data details. Empty, waiting-for-Agent, running, partial, failed, completed, and capability-missing states are projected without parsing model text.
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.
16
13
 
17
- S3 implements the read-only `tender_workbench_get_screening_context` tool plus `tender_workbench_preview_rules` and `tender_workbench_confirm_rules`. Screening starts only after an explicit user action. Agent suggestions, local drafts, previews, confirmed immutable rule versions, and classified data remain distinct. The one-layer rule contract supports explicit source scope, `title`/`purchaser`/`all` field scope, OR keywords, exception terms, enabled state, numeric priority, stable array-order tie breaking, and the five classifications `include`, `observe`, `manual-review`, `exclude`, and `unmatched`. No industry rules are built in.
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.
18
15
 
19
- The drafting-context tool reads the current query specification and normalized dataset through the Session-private manifest and returns only deterministic statistics plus at most eight representative samples; it never re-queries qcc or changes Projection state. Agent proposals omit `draftFingerprint`, which the Host computes from the validated complete draft. Each visible proposal, adjustment, or preview Intent permits exactly one preview call and ends after that result.
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.
20
17
 
21
- Preview and confirmation both read the current `activeDatasetRef` from the Session-private manifest and use the same pure classifier. Preview binds the active Artifact, Projection revision, and Host-validated draft fingerprint without creating a formal version or changing active classification. Confirmation rejects stale inputs, creates an immutable rule-set Artifact, classifies the full active dataset, and projects only summary counts and Artifact references. Classified rows remain paged behind the same loopback/same-origin/header/token boundary and retain source → normalization → raw matches/exceptions → stable decision traceability.
18
+ ## Architecture
22
19
 
23
- S4 implements stable bounded `tender_workbench_analysis_next` batches, evidence-bound `tender_workbench_analysis_commit`, and independent `tender_workbench_apply_review` / `tender_workbench_revert_review` commands. Agent recommendations are optional and never become user decisions. Users can review analyzed or unanalyzed rows individually or in an explicit batch, restore rows to `pending`, keep notes, and replay the latest-operation undo from Session-private review Artifacts.
20
+ The package is a Host + Client DeepSeek Harness plugin:
24
21
 
25
- S5 implements read-only `tender_workbench_get_report_context` plus `tender_workbench_generate_report`. S5.3 makes the delivery result-first: the PDF is a content-driven business report with a conclusion-led first page, two deterministic charts, and bounded verification records; chapters continue in the available space and start a new page only when needed. Normal business volumes are expected to produce roughly 4-6 pages, while small result sets may be shorter. Excel separates management results, source-specific execution lists, traceability, and data-quality definitions across fixed-purpose Sheets. The Host fixes all numeric facts, distributions, record selection, workbook structure, PDF sections, fonts, pagination, and visual layout. Agent narrative is optional, bounded, reference-validated against one `ReportContextV2` fingerprint, and stored once in the immutable `ReportDatasetV2` snapshot for both files. Without narrative, both deterministic files still generate.
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.
26
27
 
27
- The project has not shipped a prior report snapshot format, so S5.3 deliberately accepts only the current `ReportDatasetV2` contract. Failed-format retry reads the same immutable V2 snapshot, reruns only the requested failed renderer, and never re-queries, adapts an older Schema, or asks Agent to rewrite content.
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.
28
29
 
29
- Every successful query replaces the Session's single active dataset snapshot atomically; it never appends or merges earlier batches. Historical Artifacts remain in the Session directory, while old rules, classification, analysis, review, and reports leave the active chain. The same `commandId` and canonical parameters replay the first result; a user-triggered rerun receives a new `commandId` even when its parameters are identical. A failed all-source rerun does not replace a previously active successful dataset.
30
+ ## Data and report boundaries
30
31
 
31
- The confirmed S2 data boundary is deliberately narrow: schema-valid `qcc-tender` MCP fields are treated as source facts without Web or multi-source accuracy verification. Missing or unparseable fields retain their source text and are shown as disclosure/parse status, not as source errors. Each Session has one active query dataset; a successful new query replaces that active snapshot instead of appending or merging batches, while historical artifacts remain available for traceability and prior downstream results leave the active workflow.
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.
32
33
 
33
- Internal data is located only through the public `sessionPersistence.locate(session.header)` seam and is stored beside the default JSONL Session transcript under `dsh-tender-workbench/v1/`; the transcript itself is never read or modified. The read-only rows/download API is loopback-only and requires same-origin browser provenance, the Session header, and an Artifact capability token. Tokens stay in request headers rather than URLs.
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.
34
35
 
35
- The MVP deliberately does not implement report preview/version centers, successful-file regeneration, subscriptions, CRM follow-up, enterprise profiles, Bid/No-Bid decisions, source-accuracy verification, or dark theme. Query, classification, analysis, and review may each be a valid stopping point; no later action runs without explicit user input.
36
-
37
- ## Documentation
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.
38
37
 
39
- - [Province, city, and district source snapshot](resources/area.ts)
40
-
41
- ## Compatibility
42
-
43
- The published plugin does not pin DeepSeek Harness, MCP Connector, or Better Sidebar to exact deployment versions. Its peer metadata declares minimums with no stable-version upper bound: DSH public packages from `0.1.1-rc.2`, MCP Connector from `0.2.31`, and Better Sidebar from `0.17.1`. The active Profile still supplies one coherent runtime. Runtime compatibility remains capability-based: Better Sidebar must expose the public `targetedOpen` and `stateSubscription` features, while the Host must provide the public Session Projection, JSONL Session Persistence, Tools, Skill, Sessions, and WebServer services used by the workflow. Development and release verification currently use DSH `0.1.1-rc.2` with Better Sidebar `0.17.1` as a reproducible reference combination, not as an exact installation restriction.
38
+ ## Requirements and compatibility
44
39
 
45
- S2-S5 additionally require the standard JSONL Session Persistence service and an installed, authorized `qcc-tender` MCP connection exposing the exact tools `mcp__qcc-tender__search_tenders` and `mcp__qcc-tender__search_proposed_projects`. Missing capabilities, missing tools, or non-JSONL persistence fail explicitly; there is no Web-search, Workspace-storage, or alternate-persistence fallback.
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:
46
58
 
47
- `peerDependencies` let package managers diagnose versions below those minimums, but the current `dsh plugin` command delegates to pnpm, whose Profile defaults report peer conflicts as warnings instead of guaranteed installation failures. DSH currently has no Bundle-manifest prerequisite field. Consequently this package cannot promise a hard pre-install rejection on every DSH version; missing Host services still keep the Host plugin from activating, and missing Better Sidebar features fail Client activation before a business command is sent.
48
-
49
- ## Build and test
50
-
51
- From this directory:
52
-
53
- ```sh
54
- pnpm install --ignore-workspace
55
- pnpm run typecheck
56
- pnpm run test
57
- pnpm run build
58
- ```
59
-
60
- The build emits the Host loader entry at `lib/index.js`, the DSH Client factory bundle at `lib/client.js`, and declarations under `lib/types/`.
61
-
62
- ## Install into the Web profile
63
-
64
- ### Install the internal preview from npm
65
-
66
- The current release is an internal preview published under the `beta` dist-tag. Install it explicitly through `@beta` so the preview channel remains clear even when npm also resolves the first published version through `latest`:
67
-
68
59
  ```sh
69
60
  dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
70
61
  dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
71
62
  dsh plugin --profile web add dsh-tender-workbench@beta
72
63
  dsh web --no-open
73
- ```
74
-
75
- To install an exact version:
76
-
77
- ```sh
78
- dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
79
- dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
80
- dsh plugin --profile web add dsh-tender-workbench@0.2.1-beta.3
81
64
  ```
82
-
83
- After a stable version is published to `latest`, users will be able to install it without an explicit tag:
84
-
65
+
66
+ To install the current exact preview version:
67
+
85
68
  ```sh
86
69
  dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
87
70
  dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
88
- dsh plugin --profile web add dsh-tender-workbench
71
+ dsh plugin --profile web add dsh-tender-workbench@0.2.2-beta.0
89
72
  ```
90
-
91
- ### Install from an independent source checkout
92
-
93
- Install and mount MCP Connector and Better Sidebar first. Then build this repository and run the following command from the plugin root when the public `dsh` CLI is available:
73
+
74
+ To install from an independent checkout, install the required Provider plugins first, then run from this repository:
94
75
 
95
76
  ```sh
77
+ corepack pnpm@11.7.0 install --ignore-workspace
78
+ corepack pnpm@11.7.0 run build
96
79
  dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
97
80
  dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
98
81
  dsh plugin --profile web add .
99
82
  dsh web --no-open
100
- ```
101
-
102
- If `dsh` is only available through a separate DeepSeek Harness source checkout, pass this plugin's absolute path instead of assuming that it is nested inside the Harness repository:
103
-
104
- ```sh
105
- cd /path/to/deepseek-harness
106
- pnpm dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
107
- pnpm dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
108
- pnpm dsh plugin --profile web add /absolute/path/to/dsh-tender-workbench
109
- pnpm dsh web --no-open
110
83
  ```
111
-
112
- ### Install from a tarball
113
-
84
+
85
+ To install a packed build:
86
+
114
87
  ```sh
115
88
  dsh plugin --profile web add 'dsh-mcp-connector@>=0.2.31'
116
89
  dsh plugin --profile web add 'dsh-better-sidebar@>=0.17.1'
117
- dsh plugin --profile web add ./dsh-tender-workbench-0.2.1-beta.3.tgz
90
+ dsh plugin --profile web add ./dsh-tender-workbench-0.2.2-beta.0.tgz
118
91
  dsh web --no-open
119
92
  ```
120
-
121
- Restart the Web profile after adding or removing the bundle. The plugin package's `dsh.bundle.patch` declaration activates `cordis.patch.yml`, whose only contribution is the `dsh-tender-workbench` Loader row.
122
-
123
- To remove it:
124
-
125
- ```sh
126
- dsh plugin --profile web remove dsh-tender-workbench
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 input shortcut always selects the “Find opportunities” phase. Sidebar 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, and all three Slot entries dispose with the Client Context.
146
- - Narrow layouts use a container-responsive four-phase navigation and keep the main action reachable below a scrollable content area.
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.