dsh-tender-workbench 0.5.2 → 0.5.4
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 +9 -0
- package/README.en.md +22 -7
- package/README.md +39 -9
- package/docs/RELEASE-0.5.4.md +26 -0
- package/lib/client.js +264 -66
- package/lib/client.js.map +1 -1
- package/lib/types/client/TenderEntry.d.ts +2 -2
- package/lib/types/client/TenderEntry.d.ts.map +1 -1
- package/lib/types/client/better-sidebar-adapter.d.ts +5 -5
- package/lib/types/client/better-sidebar-adapter.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/workbench/TenderWorkbench.d.ts.map +1 -1
- package/lib/types/client/workbench/navigation-controller.d.ts +8 -3
- package/lib/types/client/workbench/navigation-controller.d.ts.map +1 -1
- package/lib/types/client/workbench/session-view-memory.d.ts +10 -0
- package/lib/types/client/workbench/session-view-memory.d.ts.map +1 -0
- package/package.json +16 -4
- package/docs/RELEASE-0.5.2.md +0 -23
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
-
import type {
|
|
2
|
+
import type { WorkbenchDestination } from './workbench/navigation-controller.ts';
|
|
3
3
|
export interface TenderHeroInjected {
|
|
4
|
-
openPhase(phase:
|
|
4
|
+
openPhase(phase: WorkbenchDestination): boolean;
|
|
5
5
|
}
|
|
6
6
|
export type TenderHeroTitleBridgeProps = PropsRuntime<'conversation.input.dock'> & PropsLocale<'tenderFilter'> & InjectFace<TenderHeroInjected>;
|
|
7
7
|
/** Only this session's own DOM is branded; no root/single brand slot. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TenderEntry.d.ts","sourceRoot":"","sources":["../../../src/client/TenderEntry.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAS7F,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"TenderEntry.d.ts","sourceRoot":"","sources":["../../../src/client/TenderEntry.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAS7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAKhF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;CAChD;AAED,MAAM,MAAM,0BAA0B,GAAG,YAAY,CAAC,yBAAyB,CAAC,GAC5E,WAAW,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAahE,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,0BAA0B,+BAiCrG;AAED,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC,uBAAuB,CAAC,GACvE,UAAU,CAAC,0BAA0B,CAAC,GACtC,WAAW,CAAC,cAAc,CAAC,CAAA;AAiB/B,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,uBAAuB,sCAsEvG;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,IAAI,OAAO,CAAA;CACzB;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,qCAAqC,CAAC,GACpF,UAAU,CAAC,yBAAyB,CAAC,GACrC,WAAW,CAAC,cAAc,CAAC,CAAA;AAE/B,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,sBAAsB,sCAmB9G"}
|
|
@@ -10,15 +10,16 @@ export interface TenderWorkbenchRevealController {
|
|
|
10
10
|
attach(sessionId: string, target: RevealTarget): () => void;
|
|
11
11
|
/** Consume one explicit user-entry reveal request, now or after first mount. */
|
|
12
12
|
request(sessionId: string): void;
|
|
13
|
+
dispose(): void;
|
|
13
14
|
}
|
|
14
15
|
/** Reveal only the panel that owns the workbench Tab; floating Tabs are already visible. */
|
|
15
16
|
export declare function revealTenderWorkbenchState(state: SidebarState, tabId: string): SidebarState;
|
|
16
17
|
/**
|
|
17
18
|
* Session-scoped, non-persistent handshake between an explicit product entry
|
|
18
|
-
* and the mounted Better Sidebar Tab.
|
|
19
|
-
*
|
|
19
|
+
* and the mounted Better Sidebar Tab. No service means inert (isolated rendering
|
|
20
|
+
* only). Production binds a probed service and explicitly disposes its listener.
|
|
20
21
|
*/
|
|
21
|
-
export declare function createTenderWorkbenchRevealController(): TenderWorkbenchRevealController;
|
|
22
|
+
export declare function createTenderWorkbenchRevealController(service?: Pick<BetterSidebarService, 'getSnapshot' | 'subscribeState'>): TenderWorkbenchRevealController;
|
|
22
23
|
/** Bind the workbench shell to its Session reveal controller. */
|
|
23
24
|
export declare function useTenderWorkbenchReveal(controller: TenderWorkbenchRevealController, props: Pick<TabComponentProps, 'scope' | 'store' | 'tab'>): void;
|
|
24
25
|
/** Fail loudly only when the mandatory provider lacks an exercised capability. */
|
|
@@ -27,8 +28,7 @@ export declare function assertBetterSidebarContract(service: BetterSidebarServic
|
|
|
27
28
|
export declare function registerTenderWorkbenchTab(service: BetterSidebarService, component: (props: TabComponentProps) => ReactNode, title?: string | (() => string), icon?: ReactNode | ((size: number) => ReactNode)): () => void;
|
|
28
29
|
/**
|
|
29
30
|
* Create or focus the workbench Tab in the explicitly supplied Session. A
|
|
30
|
-
* reveal
|
|
31
|
-
* inactive targeted opens never alter a hidden Session's panel geometry.
|
|
31
|
+
* pending reveal is consumed only when its Session becomes current.
|
|
32
32
|
*/
|
|
33
33
|
export declare function openTenderWorkbench(service: BetterSidebarService, scope: SessionScope, reveal: TenderWorkbenchRevealController): boolean;
|
|
34
34
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"better-sidebar-adapter.d.ts","sourceRoot":"","sources":["../../../src/client/better-sidebar-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAClB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,uBAAuB,EAAG,4BAAqC,CAAA;AAE5E,UAAU,YAAY;IACpB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,+BAA+B;IAC9C,wDAAwD;IACxD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI,CAAA;IAC3D,gFAAgF;IAChF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"better-sidebar-adapter.d.ts","sourceRoot":"","sources":["../../../src/client/better-sidebar-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAClB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,uBAAuB,EAAG,4BAAqC,CAAA;AAE5E,UAAU,YAAY;IACpB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,+BAA+B;IAC9C,wDAAwD;IACxD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI,CAAA;IAC3D,gFAAgF;IAChF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,OAAO,IAAI,IAAI,CAAA;CAChB;AAkBD,4FAA4F;AAC5F,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAS3F;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,gBAAgB,CAAC,GACrE,+BAA+B,CAgDjC;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,+BAA+B,EAC3C,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,GACxD,IAAI,CAKN;AAED,kFAAkF;AAClF,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAc/E;AAED,gGAAgG;AAChG,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,EAClD,KAAK,GAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAS,EACtC,IAAI,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,GAC/C,MAAM,IAAI,CAUZ;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAMT"}
|
|
@@ -6,7 +6,7 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
|
6
6
|
tenderFilter: TenderKey;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
9
|
+
/** Core conversation stays available while the optional workbench provider is absent. */
|
|
10
10
|
export declare const inject: string[];
|
|
11
11
|
/** Register the dedicated Session entry, workbench Tab, Hero brand, and Header recovery action. */
|
|
12
12
|
export declare function apply(ctx: TenderClientContext): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAoB9D,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAiBrD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,2DAA2D;QAC3D,YAAY,EAAE,SAAS,CAAA;KACxB;CACF;AAID,yFAAyF;AACzF,eAAO,MAAM,MAAM,UAElB,CAAA;AAmCD,mGAAmG;AACnG,wBAAgB,KAAK,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAsIpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TenderWorkbench.d.ts","sourceRoot":"","sources":["../../../../src/client/workbench/TenderWorkbench.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAS/D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAA;AAMnF,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,mCAAmC,
|
|
1
|
+
{"version":3,"file":"TenderWorkbench.d.ts","sourceRoot":"","sources":["../../../../src/client/workbench/TenderWorkbench.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
2
|
import type { TenderWorkflowProjectionV2, WorkflowStage } from '../../contracts/workflow.ts';
|
|
3
|
+
import { createSessionViewMemory } from './session-view-memory.ts';
|
|
3
4
|
export type WorkbenchPhaseIcon = 'search' | 'screening' | 'decision' | 'delivery';
|
|
4
5
|
/** Single front-stage mapping for the seven non-linear Projection nodes. */
|
|
5
6
|
export declare const TENDER_WORKBENCH_PHASES: readonly [{
|
|
@@ -32,15 +33,19 @@ export declare const TENDER_WORKBENCH_PHASES: readonly [{
|
|
|
32
33
|
readonly completionNode: "report";
|
|
33
34
|
}];
|
|
34
35
|
export type WorkbenchPhase = typeof TENDER_WORKBENCH_PHASES[number]['id'];
|
|
36
|
+
export type WorkbenchDestination = WorkbenchPhase | 'history';
|
|
35
37
|
export type WorkbenchPhaseProgress = 'not-started' | 'progress' | 'completed' | 'running' | 'failed' | 'blocked' | 'unavailable';
|
|
36
38
|
export declare const WORKBENCH_PHASES: readonly WorkbenchPhase[];
|
|
37
39
|
export declare function tenderWorkbenchPhaseProgress(projection: TenderWorkflowProjectionV2 | undefined, phase: WorkbenchPhase): WorkbenchPhaseProgress;
|
|
38
40
|
export declare function tenderWorkbenchPhaseForStage(stage: WorkflowStage | undefined): WorkbenchPhase;
|
|
39
41
|
export interface TenderWorkbenchNavigationController {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
readonly memory: ReturnType<typeof createSessionViewMemory>;
|
|
43
|
+
currentView(sessionId: string): WorkbenchDestination;
|
|
44
|
+
attach(sessionId: string, select: Dispatch<SetStateAction<WorkbenchDestination>>): () => void;
|
|
45
|
+
request(sessionId: string, phase: WorkbenchDestination): void;
|
|
46
|
+
dispose(): void;
|
|
42
47
|
}
|
|
43
48
|
/** Session-scoped transient navigation; it never represents workflow progress. */
|
|
44
49
|
export declare function createTenderWorkbenchNavigationController(): TenderWorkbenchNavigationController;
|
|
45
|
-
export declare function useTenderWorkbenchNavigation(controller: TenderWorkbenchNavigationController, sessionId: string, select: Dispatch<SetStateAction<
|
|
50
|
+
export declare function useTenderWorkbenchNavigation(controller: TenderWorkbenchNavigationController, sessionId: string, select: Dispatch<SetStateAction<WorkbenchDestination>>): void;
|
|
46
51
|
//# sourceMappingURL=navigation-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-controller.d.ts","sourceRoot":"","sources":["../../../../src/client/workbench/navigation-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACd,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"navigation-controller.d.ts","sourceRoot":"","sources":["../../../../src/client/workbench/navigation-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACd,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;AAEjF,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCjC,CAAA;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AACzE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAA;AAEhI,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAAmD,CAAA;AAEzG,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,0BAA0B,GAAG,SAAS,EAClD,KAAK,EAAE,cAAc,GACpB,sBAAsB,CAaxB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,cAAc,CAG7F;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;IAC3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAAA;IACpD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;IAC7F,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAC7D,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,kFAAkF;AAClF,wBAAgB,yCAAyC,IAAI,mCAAmC,CAgC/F;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,mCAAmC,EAC/C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,GACrD,IAAI,CAEN"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
+
/** Client-lifetime view memory only. Never stores task facts or host geometry. */
|
|
3
|
+
export declare function createSessionViewMemory(): {
|
|
4
|
+
read<T>(sessionId: string, key: string, initial: () => T): T;
|
|
5
|
+
write<T>(sessionId: string, key: string, value: T): void;
|
|
6
|
+
dispose(): void;
|
|
7
|
+
};
|
|
8
|
+
/** The production view is keyed by Session: remounts recover only that Session. */
|
|
9
|
+
export declare function useSessionViewState<T>(memory: ReturnType<typeof createSessionViewMemory>, sessionId: string, key: string, initial: () => T): [T, Dispatch<SetStateAction<T>>];
|
|
10
|
+
//# sourceMappingURL=session-view-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-view-memory.d.ts","sourceRoot":"","sources":["../../../../src/client/workbench/session-view-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAEjF,kFAAkF;AAClF,wBAAgB,uBAAuB;SAI9B,CAAC,aAAa,MAAM,OAAO,MAAM,WAAW,MAAM,CAAC,GAAG,CAAC;UAItD,CAAC,aAAa,MAAM,OAAO,MAAM,SAAS,CAAC;;EAQpD;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,MAAM,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,EAClD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,GACf,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAUlC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-tender-workbench",
|
|
3
|
-
"version": "0.5.
|
|
4
|
-
"description": "DeepSeek Harness
|
|
3
|
+
"version": "0.5.4",
|
|
4
|
+
"description": "Tender search and bid intelligence in DeepSeek Harness with proposed project search, rule screening, human review and Excel/PDF exports using user-authorized Qichacha MCP.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
7
7
|
"dsh",
|
|
@@ -12,7 +12,19 @@
|
|
|
12
12
|
"招投标",
|
|
13
13
|
"标讯",
|
|
14
14
|
"拟建项目",
|
|
15
|
-
"企查查"
|
|
15
|
+
"企查查",
|
|
16
|
+
"招标查询",
|
|
17
|
+
"投标查询",
|
|
18
|
+
"标讯查询",
|
|
19
|
+
"商机发现",
|
|
20
|
+
"项目筛选",
|
|
21
|
+
"tender search",
|
|
22
|
+
"bid intelligence",
|
|
23
|
+
"proposed project",
|
|
24
|
+
"企查查MCP",
|
|
25
|
+
"企查查 MCP",
|
|
26
|
+
"tender-search",
|
|
27
|
+
"bid-intelligence"
|
|
16
28
|
],
|
|
17
29
|
"author": "Sunhh3221",
|
|
18
30
|
"type": "module",
|
|
@@ -35,7 +47,7 @@
|
|
|
35
47
|
"README.en.md",
|
|
36
48
|
"CHANGELOG.md",
|
|
37
49
|
"cordis.patch.yml",
|
|
38
|
-
"docs/RELEASE-0.5.
|
|
50
|
+
"docs/RELEASE-0.5.4.md",
|
|
39
51
|
"lib/index.js",
|
|
40
52
|
"lib/client.js",
|
|
41
53
|
"lib/client.js.map",
|
package/docs/RELEASE-0.5.2.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# dsh-tender-workbench 0.5.2 发布清单
|
|
2
|
-
|
|
3
|
-
- Version: **0.5.2**
|
|
4
|
-
- Status: **release candidate**
|
|
5
|
-
- 日期:2026-09-07
|
|
6
|
-
- 标签:`v0.5.2`
|
|
7
|
-
- npm:`dsh-tender-workbench@0.5.2`,目标 dist-tag 为 `latest`
|
|
8
|
-
|
|
9
|
-
## 范围与验证
|
|
10
|
-
|
|
11
|
-
首页输入框下方四个快捷按钮对齐共享规范 v1.1.3:上图标、下文字的描边卡片,企查查蓝浅深色及 hover/focus 状态;桌面单行居中,窄屏菜单内部横滚。键盘聚焦时完整显示卡片和焦点环,仅滚动菜单,不滚动宿主会话。保留默认收起侧栏、点击按钮才打开对应工作台的行为。
|
|
12
|
-
|
|
13
|
-
不改动菜单名称、品牌图标、原生输入框、右侧业务能力、数据契约或其它插件。发布日期检查改为校验当前版本的日期标题格式,不再写死旧日期。
|
|
14
|
-
|
|
15
|
-
变更后的完整本地检查通过:219 项测试通过、1 项既有跳过;类型、构建、文档和打包校验通过。隔离 React/Chromium 浅深色 × 四种尺寸共 8 组通过,覆盖卡片尺寸/排列/颜色、键盘可达、窄屏横滚及侧栏显式打开。版本更新后再次执行完整门禁。
|
|
16
|
-
|
|
17
|
-
## 发布流程
|
|
18
|
-
|
|
19
|
-
提交并推送 main,确认 Linux Node 22/24 与 Windows Node 24 CI 后创建不可变 annotated tag v0.5.2。release.yml 使用 GitHub OIDC Trusted Publishing 发布 npm 并生成 provenance,随后核对 Registry latest/gitHead/publisher、远端 tag 和 GitHub Release。
|
|
20
|
-
|
|
21
|
-
## 验收边界与回退
|
|
22
|
-
|
|
23
|
-
本次不安装或重启用户本机 DSH,不调用真实 QCC。浏览器测试是实际组件与隔离宿主 DOM,升级后仍需真实宿主验收。必要时安装 `dsh-tender-workbench@0.5.1` 并重启 Profile;无需迁移数据,不覆盖 npm 版本或移动公开标签。
|