@dsh-workbench/shared 0.1.7 → 0.1.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/dist/api/dsh-client.d.ts +11 -0
- package/dist/components/Activity.css +69 -0
- package/dist/components/Activity.d.ts +23 -0
- package/dist/components/Activity.js +23 -0
- package/dist/components/ApprovalPlan.css +41 -0
- package/dist/components/ApprovalPlan.d.ts +13 -0
- package/dist/components/ApprovalPlan.js +11 -0
- package/dist/components/Card.css +20 -0
- package/dist/components/Card.d.ts +13 -0
- package/dist/components/Card.js +8 -0
- package/dist/components/Note.css +14 -0
- package/dist/components/Note.d.ts +8 -0
- package/dist/components/Note.js +6 -0
- package/dist/components/ResourceStates.css +5 -1
- package/dist/components/Rows.css +30 -0
- package/dist/components/Rows.d.ts +11 -0
- package/dist/components/Rows.js +10 -0
- package/dist/components/SettingsSection.css +26 -0
- package/dist/components/SettingsSection.d.ts +9 -0
- package/dist/components/SettingsSection.js +9 -0
- package/dist/components/Stack.css +7 -0
- package/dist/components/Stack.d.ts +6 -0
- package/dist/components/Stack.js +5 -0
- package/dist/components/StateBlock.css +36 -0
- package/dist/components/StateBlock.d.ts +11 -0
- package/dist/components/StateBlock.js +12 -0
- package/dist/components/icons.d.ts +1 -0
- package/dist/components/icons.js +4 -0
- package/dist/config/constants.d.ts +2 -0
- package/dist/config/constants.js +2 -0
- package/dist/i18n/en.js +5 -2
- package/dist/i18n/index.d.ts +6 -3
- package/dist/i18n/zh.d.ts +5 -2
- package/dist/i18n/zh.js +5 -2
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/lib/react.d.ts +1 -0
- package/dist/lib/react.js +1 -0
- package/package.json +1 -1
- package/src/api/dsh-client.ts +13 -0
- package/src/components/Activity.css +69 -0
- package/src/components/Activity.tsx +76 -0
- package/src/components/ApprovalPlan.css +41 -0
- package/src/components/ApprovalPlan.tsx +33 -0
- package/src/components/Card.css +20 -0
- package/src/components/Card.tsx +28 -0
- package/src/components/Note.css +14 -0
- package/src/components/Note.tsx +14 -0
- package/src/components/ResourceStates.css +5 -1
- package/src/components/Rows.css +30 -0
- package/src/components/Rows.tsx +25 -0
- package/src/components/SettingsSection.css +26 -0
- package/src/components/SettingsSection.tsx +22 -0
- package/src/components/Stack.css +7 -0
- package/src/components/Stack.tsx +11 -0
- package/src/components/StateBlock.css +36 -0
- package/src/components/StateBlock.tsx +29 -0
- package/src/components/icons.tsx +16 -0
- package/src/config/constants.ts +4 -0
- package/src/i18n/en.ts +5 -2
- package/src/i18n/zh.ts +5 -2
- package/src/index.ts +8 -0
- package/src/lib/react.test.ts +2 -1
- package/src/lib/react.ts +1 -0
package/dist/api/dsh-client.d.ts
CHANGED
|
@@ -157,6 +157,17 @@ export interface DshSessionsService {
|
|
|
157
157
|
};
|
|
158
158
|
scope(sessionId: string): unknown | undefined;
|
|
159
159
|
}
|
|
160
|
+
export interface DshObservable<T> {
|
|
161
|
+
getSnapshot(): T;
|
|
162
|
+
subscribe(listener: () => void): () => void;
|
|
163
|
+
}
|
|
164
|
+
export interface DshSidebarRight {
|
|
165
|
+
readonly mounted: DshObservable<string | undefined>;
|
|
166
|
+
isExpanded(): boolean;
|
|
167
|
+
toggleExpanded(): void;
|
|
168
|
+
openResource(address: string, options?: unknown): void;
|
|
169
|
+
openTab(kind: string, options?: unknown): void;
|
|
170
|
+
}
|
|
160
171
|
export interface DshClientContext {
|
|
161
172
|
get<T = unknown>(name: string): T | undefined;
|
|
162
173
|
provide(name: string, value: unknown): void;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-activityBlock {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--wb-len-6);
|
|
6
|
+
padding-top: var(--wb-len-10);
|
|
7
|
+
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.wb-activityBlock:first-child {
|
|
11
|
+
border-top: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.wb-activityBlockHead {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
justify-content: space-between;
|
|
18
|
+
gap: var(--wb-len-8);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.wb-activityLine {
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
gap: var(--wb-len-6);
|
|
25
|
+
margin: 0;
|
|
26
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
27
|
+
line-height: var(--wb-line-18);
|
|
28
|
+
color: var(--dsw-alias-label-secondary);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.wb-activityLineText {
|
|
32
|
+
flex: none;
|
|
33
|
+
min-width: 0;
|
|
34
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
35
|
+
line-height: var(--wb-line-18);
|
|
36
|
+
overflow-wrap: anywhere;
|
|
37
|
+
white-space: pre-wrap;
|
|
38
|
+
max-height: var(--wb-len-72);
|
|
39
|
+
overflow-y: auto;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.wb-activityLineAt {
|
|
43
|
+
flex: none;
|
|
44
|
+
margin-left: auto;
|
|
45
|
+
font-size: var(--wb-font-10);
|
|
46
|
+
line-height: var(--wb-line-16);
|
|
47
|
+
font-variant-numeric: tabular-nums;
|
|
48
|
+
color: var(--dsw-alias-label-tertiary);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.wb-activityLine > .wb-activityLineAt,
|
|
52
|
+
.wb-activityLine > .wb-activityLineActions {
|
|
53
|
+
margin-left: auto;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {
|
|
57
|
+
margin-left: 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.wb-activityLineActions {
|
|
61
|
+
flex: none;
|
|
62
|
+
display: inline-flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
gap: var(--wb-len-6);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.wb-activityActionFailed {
|
|
68
|
+
color: var(--dsw-alias-state-error-primary);
|
|
69
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import './Activity.css';
|
|
3
|
+
export interface ActivityBlockProps {
|
|
4
|
+
readonly head?: ReactNode | undefined;
|
|
5
|
+
readonly children?: ReactNode | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare function ActivityBlock({ head, children }: ActivityBlockProps): JSX.Element;
|
|
8
|
+
export interface ActivityLineProps {
|
|
9
|
+
readonly dot?: ReactNode | undefined;
|
|
10
|
+
readonly text: ReactNode;
|
|
11
|
+
readonly at?: ReactNode | undefined;
|
|
12
|
+
readonly actions?: ReactNode | undefined;
|
|
13
|
+
}
|
|
14
|
+
export declare function ActivityLine({ dot, text, at, actions }: ActivityLineProps): JSX.Element;
|
|
15
|
+
export interface ActivityActionProps {
|
|
16
|
+
readonly label: string;
|
|
17
|
+
readonly hint?: string | undefined;
|
|
18
|
+
readonly icon: ReactNode;
|
|
19
|
+
readonly href?: string | undefined;
|
|
20
|
+
readonly onClick?: (() => void) | undefined;
|
|
21
|
+
readonly failed?: boolean | undefined;
|
|
22
|
+
}
|
|
23
|
+
export declare function ActivityAction({ label, hint, icon, href, onClick, failed }: ActivityActionProps): JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Button, Tooltip } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
2
|
+
import { h } from '../lib/react.js';
|
|
3
|
+
import './Activity.css';
|
|
4
|
+
export function ActivityBlock({ head, children }) {
|
|
5
|
+
return (h("div", { className: "wb-activityBlock" },
|
|
6
|
+
head === undefined ? null : h("div", { className: "wb-activityBlockHead" }, head),
|
|
7
|
+
children));
|
|
8
|
+
}
|
|
9
|
+
export function ActivityLine({ dot, text, at, actions }) {
|
|
10
|
+
return (h("div", { className: "wb-activityLine" },
|
|
11
|
+
dot,
|
|
12
|
+
h("span", { className: "wb-activityLineText" }, text),
|
|
13
|
+
at === undefined ? null : h("span", { className: "wb-activityLineAt" }, at),
|
|
14
|
+
actions === undefined ? null : h("span", { className: "wb-activityLineActions" }, actions)));
|
|
15
|
+
}
|
|
16
|
+
export function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
17
|
+
const tip = hint ?? label;
|
|
18
|
+
if (href !== undefined) {
|
|
19
|
+
return (h("a", { className: "wb-iconButton", href: href, target: "_blank", rel: "noreferrer noopener", title: tip, "aria-label": label }, icon));
|
|
20
|
+
}
|
|
21
|
+
return (h(Tooltip, { side: "bottom", align: "end", gap: 6, portal: true, label: tip },
|
|
22
|
+
h(Button, { type: "button", variant: "ghost", size: "sm", className: failed === true ? 'wb-iconButton wb-activityActionFailed' : 'wb-iconButton', "aria-label": label, icon: icon, onClick: onClick })));
|
|
23
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-approvalPlan {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--wb-len-6);
|
|
6
|
+
}
|
|
7
|
+
.wb-approvalHint {
|
|
8
|
+
margin: 0;
|
|
9
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
10
|
+
line-height: var(--wb-line-18);
|
|
11
|
+
color: var(--dsw-alias-label-secondary);
|
|
12
|
+
}
|
|
13
|
+
.wb-approvalRows {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
gap: var(--wb-len-2);
|
|
17
|
+
margin: 0;
|
|
18
|
+
}
|
|
19
|
+
.wb-approvalRow {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: baseline;
|
|
22
|
+
gap: var(--wb-len-8);
|
|
23
|
+
}
|
|
24
|
+
.wb-approvalLabel {
|
|
25
|
+
flex: none;
|
|
26
|
+
width: var(--wb-len-56);
|
|
27
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
28
|
+
line-height: var(--wb-line-18);
|
|
29
|
+
color: var(--dsw-alias-label-tertiary);
|
|
30
|
+
}
|
|
31
|
+
.wb-approvalValue {
|
|
32
|
+
margin: 0;
|
|
33
|
+
font-size: var(--dsw-font-xs-13-font-size);
|
|
34
|
+
line-height: var(--wb-line-18);
|
|
35
|
+
font-weight: 500;
|
|
36
|
+
color: var(--dsw-alias-label-primary);
|
|
37
|
+
overflow-wrap: anywhere;
|
|
38
|
+
}
|
|
39
|
+
.wb-approvalWarn {
|
|
40
|
+
color: var(--dsw-alias-label-secondary);
|
|
41
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import './ApprovalPlan.css';
|
|
3
|
+
export interface ApprovalPlanRow {
|
|
4
|
+
readonly label: ReactNode;
|
|
5
|
+
readonly value: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface ApprovalPlanProps {
|
|
8
|
+
readonly rows: readonly ApprovalPlanRow[];
|
|
9
|
+
readonly hint?: ReactNode | undefined;
|
|
10
|
+
readonly warn?: ReactNode | undefined;
|
|
11
|
+
readonly children?: ReactNode | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare function ApprovalPlan({ rows, hint, warn, children }: ApprovalPlanProps): JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { h } from '../lib/react.js';
|
|
2
|
+
import './ApprovalPlan.css';
|
|
3
|
+
export function ApprovalPlan({ rows, hint, warn, children }) {
|
|
4
|
+
return (h("div", { className: "wb-approvalPlan" },
|
|
5
|
+
hint === undefined ? null : h("p", { className: "wb-approvalHint" }, hint),
|
|
6
|
+
h("dl", { className: "wb-approvalRows" }, rows.map((row, index) => (h("div", { className: "wb-approvalRow", key: String(index) },
|
|
7
|
+
h("dt", { className: "wb-approvalLabel" }, row.label),
|
|
8
|
+
h("dd", { className: "wb-approvalValue" }, row.value))))),
|
|
9
|
+
children,
|
|
10
|
+
warn === undefined ? null : h("p", { className: "wb-approvalWarn" }, warn)));
|
|
11
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-card {
|
|
3
|
+
border: 0.5px solid var(--dsw-alias-border-l3);
|
|
4
|
+
border-radius: var(--dsw-radius-xl);
|
|
5
|
+
background: var(--dsw-alias-bg-layer-1);
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
flex: none;
|
|
10
|
+
}
|
|
11
|
+
.wb-cardBody {
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
gap: var(--wb-len-12);
|
|
15
|
+
padding: var(--wb-len-12);
|
|
16
|
+
}
|
|
17
|
+
.wb-cardBody > :not([data-wb-bleed]) {
|
|
18
|
+
padding-left: var(--wb-len-8);
|
|
19
|
+
padding-right: var(--wb-len-8);
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import type { Translate } from '../api/dsh-client.js';
|
|
3
|
+
import './Card.css';
|
|
4
|
+
export interface CardProps {
|
|
5
|
+
readonly t: Translate;
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly refreshing: boolean;
|
|
8
|
+
readonly onRefresh: () => void;
|
|
9
|
+
readonly meta?: ReactNode | undefined;
|
|
10
|
+
readonly head?: ReactNode | undefined;
|
|
11
|
+
readonly children?: ReactNode | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare function Card({ t, title, refreshing, onRefresh, meta, head, children }: CardProps): JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { h } from '../lib/react.js';
|
|
2
|
+
import { CardHead } from './CardHead.js';
|
|
3
|
+
import './Card.css';
|
|
4
|
+
export function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
|
|
5
|
+
return (h("section", { className: "wb-card" },
|
|
6
|
+
head === undefined ? (h(CardHead, { t: t, title: title, refreshing: refreshing, onRefresh: onRefresh, meta: meta })) : (head),
|
|
7
|
+
h("div", { className: "wb-cardBody" }, children)));
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-note {
|
|
3
|
+
margin: 0;
|
|
4
|
+
font-size: var(--dsw-font-xxxs-11-font-size);
|
|
5
|
+
line-height: var(--wb-line-16);
|
|
6
|
+
color: var(--dsw-alias-label-tertiary);
|
|
7
|
+
}
|
|
8
|
+
.wb-problem {
|
|
9
|
+
margin: 0;
|
|
10
|
+
font-size: var(--dsw-font-xxxs-11-font-size);
|
|
11
|
+
line-height: var(--wb-line-16);
|
|
12
|
+
color: var(--dsw-alias-state-error-primary);
|
|
13
|
+
overflow-wrap: anywhere;
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import './Note.css';
|
|
3
|
+
export interface NoteProps {
|
|
4
|
+
readonly tone?: 'muted' | 'problem';
|
|
5
|
+
readonly as?: 'p' | 'span';
|
|
6
|
+
readonly children?: ReactNode | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare function Note({ tone, as, children }: NoteProps): JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { h } from '../lib/react.js';
|
|
2
|
+
import './Note.css';
|
|
3
|
+
export function Note({ tone = 'muted', as, children }) {
|
|
4
|
+
const className = tone === 'problem' ? 'wb-problem' : 'wb-note';
|
|
5
|
+
return as === 'span' ? h("span", { className: className }, children) : h("p", { className: className }, children);
|
|
6
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-row:has(> [data-wb-dot]) {
|
|
3
|
+
grid-template-columns: 84px minmax(0, 1fr);
|
|
4
|
+
}
|
|
5
|
+
.wb-rows {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
}
|
|
9
|
+
.wb-row {
|
|
10
|
+
display: grid;
|
|
11
|
+
grid-template-columns: 56px minmax(0, 1fr);
|
|
12
|
+
align-items: baseline;
|
|
13
|
+
gap: var(--wb-len-8);
|
|
14
|
+
padding: var(--wb-len-4) 0;
|
|
15
|
+
}
|
|
16
|
+
.wb-row + .wb-row {
|
|
17
|
+
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
18
|
+
}
|
|
19
|
+
.wb-rowKey {
|
|
20
|
+
font-size: var(--dsw-font-xxxs-11-font-size);
|
|
21
|
+
line-height: var(--wb-line-16);
|
|
22
|
+
color: var(--dsw-alias-label-tertiary);
|
|
23
|
+
}
|
|
24
|
+
.wb-rowValue {
|
|
25
|
+
min-width: 0;
|
|
26
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
27
|
+
line-height: var(--wb-line-18);
|
|
28
|
+
color: var(--dsw-alias-label-primary);
|
|
29
|
+
overflow-wrap: anywhere;
|
|
30
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import './Rows.css';
|
|
3
|
+
export interface RowsProps {
|
|
4
|
+
readonly children?: ReactNode | undefined;
|
|
5
|
+
}
|
|
6
|
+
export declare function Rows({ children }: RowsProps): JSX.Element;
|
|
7
|
+
export interface RowProps {
|
|
8
|
+
readonly label: ReactNode;
|
|
9
|
+
readonly value: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export declare function Row({ label, value }: RowProps): JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { h } from '../lib/react.js';
|
|
2
|
+
import './Rows.css';
|
|
3
|
+
export function Rows({ children }) {
|
|
4
|
+
return h("div", { className: "wb-rows" }, children);
|
|
5
|
+
}
|
|
6
|
+
export function Row({ label, value }) {
|
|
7
|
+
return (h("div", { className: "wb-row" },
|
|
8
|
+
h("span", { className: "wb-rowKey" }, label),
|
|
9
|
+
h("span", { className: "wb-rowValue" }, value)));
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-settings {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--wb-len-8);
|
|
6
|
+
padding: var(--wb-len-10);
|
|
7
|
+
border: 0.5px solid var(--dsw-alias-border-l2);
|
|
8
|
+
border-radius: var(--dsw-radius-md);
|
|
9
|
+
background: var(--dsw-alias-bg-layer-1);
|
|
10
|
+
}
|
|
11
|
+
.wb-settingsHead {
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
gap: var(--wb-len-8);
|
|
15
|
+
}
|
|
16
|
+
.wb-settingsTitle {
|
|
17
|
+
flex: 1 1 auto;
|
|
18
|
+
min-width: 0;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
text-overflow: ellipsis;
|
|
21
|
+
white-space: nowrap;
|
|
22
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
23
|
+
line-height: var(--wb-line-18);
|
|
24
|
+
font-weight: 500;
|
|
25
|
+
color: var(--dsw-alias-label-primary);
|
|
26
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import './SettingsSection.css';
|
|
3
|
+
export interface SettingsSectionProps {
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readonly title: ReactNode;
|
|
6
|
+
readonly action?: ReactNode | undefined;
|
|
7
|
+
readonly children?: ReactNode | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function SettingsSection({ label, title, action, children }: SettingsSectionProps): JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { h } from '../lib/react.js';
|
|
2
|
+
import './SettingsSection.css';
|
|
3
|
+
export function SettingsSection({ label, title, action, children }) {
|
|
4
|
+
return (h("section", { className: "wb-settings", role: "group", "aria-label": label },
|
|
5
|
+
h("header", { className: "wb-settingsHead" },
|
|
6
|
+
h("span", { className: "wb-settingsTitle" }, title),
|
|
7
|
+
action),
|
|
8
|
+
children));
|
|
9
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
.wb-stateBlock {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--wb-len-6);
|
|
6
|
+
}
|
|
7
|
+
.wb-stateBlockTitle {
|
|
8
|
+
margin: 0;
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
gap: var(--wb-len-6);
|
|
12
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
13
|
+
line-height: var(--wb-line-18);
|
|
14
|
+
color: var(--dsw-alias-label-primary);
|
|
15
|
+
}
|
|
16
|
+
.wb-stateBlockHint {
|
|
17
|
+
margin: 0;
|
|
18
|
+
font-size: var(--dsw-font-xxxs-11-font-size);
|
|
19
|
+
line-height: var(--wb-line-16);
|
|
20
|
+
color: var(--dsw-alias-label-tertiary);
|
|
21
|
+
}
|
|
22
|
+
.wb-stateBlockActions {
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
gap: var(--wb-len-8);
|
|
26
|
+
margin-top: var(--wb-len-2);
|
|
27
|
+
}
|
|
28
|
+
.wb-stateBlockResolving {
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
gap: var(--wb-len-8);
|
|
32
|
+
margin: 0;
|
|
33
|
+
font-size: var(--dsw-font-xxs-12-font-size);
|
|
34
|
+
line-height: var(--wb-line-18);
|
|
35
|
+
color: var(--dsw-alias-label-secondary);
|
|
36
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from '../lib/react.js';
|
|
2
|
+
import './StateBlock.css';
|
|
3
|
+
export interface StateBlockProps {
|
|
4
|
+
readonly title?: ReactNode | undefined;
|
|
5
|
+
readonly dot?: ReactNode | undefined;
|
|
6
|
+
readonly hint?: ReactNode | undefined;
|
|
7
|
+
readonly actions?: ReactNode | undefined;
|
|
8
|
+
readonly resolving?: ReactNode | undefined;
|
|
9
|
+
readonly children?: ReactNode | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function StateBlock({ title, dot, hint, actions, resolving, children }: StateBlockProps): JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { h } from '../lib/react.js';
|
|
2
|
+
import './StateBlock.css';
|
|
3
|
+
export function StateBlock({ title, dot, hint, actions, resolving, children }) {
|
|
4
|
+
return (h("div", { className: "wb-stateBlock" },
|
|
5
|
+
title === undefined && dot === undefined ? null : (h("p", { className: "wb-stateBlockTitle" },
|
|
6
|
+
dot,
|
|
7
|
+
title)),
|
|
8
|
+
resolving === undefined ? null : h("p", { className: "wb-stateBlockResolving" }, resolving),
|
|
9
|
+
hint === undefined ? null : h("p", { className: "wb-stateBlockHint" }, hint),
|
|
10
|
+
children,
|
|
11
|
+
actions === undefined ? null : h("div", { className: "wb-stateBlockActions" }, actions)));
|
|
12
|
+
}
|
|
@@ -4,3 +4,4 @@ export interface IconProps {
|
|
|
4
4
|
export declare function IconConversation({ size }: IconProps): JSX.Element;
|
|
5
5
|
export declare function IconBrandMark({ size }: IconProps): JSX.Element;
|
|
6
6
|
export declare function IconModules({ size }: IconProps): JSX.Element;
|
|
7
|
+
export declare function IconPanelScreen({ size }: IconProps): JSX.Element;
|
package/dist/components/icons.js
CHANGED
|
@@ -18,3 +18,7 @@ export function IconModules({ size = 16 }) {
|
|
|
18
18
|
h("rect", { x: "2.5", y: "8.9", width: "4.6", height: "4.6", rx: "1.2", stroke: "currentColor", strokeWidth: "1.2" }),
|
|
19
19
|
h("rect", { x: "8.9", y: "8.9", width: "4.6", height: "4.6", rx: "1.2", stroke: "currentColor", strokeWidth: "1.2" })));
|
|
20
20
|
}
|
|
21
|
+
export function IconPanelScreen({ size = 16 }) {
|
|
22
|
+
return (h("svg", { width: size, height: size, viewBox: "0 0 1024 1024", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", style: { display: 'block', overflow: 'hidden' } },
|
|
23
|
+
h("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" })));
|
|
24
|
+
}
|
|
@@ -23,5 +23,7 @@ export declare const PANEL_POLL_MS = 2000;
|
|
|
23
23
|
export declare const DEFAULT_WORKSPACE_TITLE = "default-workspace";
|
|
24
24
|
export declare const STORAGE_KEY_PROJECT = "dsh-workbench.project";
|
|
25
25
|
export declare const STORAGE_KEY_RIGHTBAR = "dsh-workbench.rightbar.expanded";
|
|
26
|
+
export declare const STORAGE_KEY_RIGHTBAR_COLUMN = "dsh-workbench.rightbar.column";
|
|
27
|
+
export declare const RIGHTBAR_FULLSCREEN_WIDTH = 768;
|
|
26
28
|
export declare const LOCALE_NS = "workbench";
|
|
27
29
|
export declare const LOCALES: readonly ["zh", "en"];
|
package/dist/config/constants.js
CHANGED
|
@@ -23,5 +23,7 @@ export const PANEL_POLL_MS = 2000;
|
|
|
23
23
|
export const DEFAULT_WORKSPACE_TITLE = "default-workspace";
|
|
24
24
|
export const STORAGE_KEY_PROJECT = "dsh-workbench.project";
|
|
25
25
|
export const STORAGE_KEY_RIGHTBAR = "dsh-workbench.rightbar.expanded";
|
|
26
|
+
export const STORAGE_KEY_RIGHTBAR_COLUMN = "dsh-workbench.rightbar.column";
|
|
27
|
+
export const RIGHTBAR_FULLSCREEN_WIDTH = 768;
|
|
26
28
|
export const LOCALE_NS = "workbench";
|
|
27
29
|
export const LOCALES = ["zh", "en"];
|
package/dist/i18n/en.js
CHANGED
|
@@ -79,7 +79,7 @@ export const en = {
|
|
|
79
79
|
'panels.market.empty': 'No modules available',
|
|
80
80
|
'panels.market.installedSection': 'Installed',
|
|
81
81
|
'panels.market.moduleOutdated': 'update available',
|
|
82
|
-
'panels.market.moduleRestartHint': '
|
|
82
|
+
'panels.market.moduleRestartHint': 'installed but not active — restart dsh once to bring it up',
|
|
83
83
|
'panels.market.restartNeeded': 'The new version is installed — restart once to pick it up.',
|
|
84
84
|
'panels.market.foot': 'After installing, enable it in the panel page of that project.',
|
|
85
85
|
'panels.market.recheck': 'Check for updates',
|
|
@@ -275,13 +275,16 @@ export const en = {
|
|
|
275
275
|
'rightbar.label': 'Data panels',
|
|
276
276
|
'rightbar.expand': 'Expand the data panel',
|
|
277
277
|
'rightbar.collapse': 'Collapse the data panel',
|
|
278
|
+
'rightbar.column.label': 'Right column',
|
|
279
|
+
'rightbar.column.workbench': 'Workbench panel',
|
|
280
|
+
'rightbar.column.dsh': 'dsh panel',
|
|
278
281
|
'rightbar.refresh': 'Refresh',
|
|
279
282
|
'rightbar.refreshing': 'Refreshing…',
|
|
280
283
|
'rightbar.updatedAt': 'updated {time}',
|
|
281
284
|
'rightbar.noProject': 'The current session has no workspace',
|
|
282
285
|
'coding.notARepo.title': 'This workspace is not a Coding repository',
|
|
283
286
|
'error.unknown': 'Something went wrong',
|
|
284
|
-
'board.title': '
|
|
287
|
+
'board.title': 'Workbench panel',
|
|
285
288
|
'panel.conversation': 'Conversation',
|
|
286
289
|
'panels.label': 'Global panels',
|
|
287
290
|
};
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -81,7 +81,7 @@ export declare const dictionaries: {
|
|
|
81
81
|
readonly 'panels.market.empty': "暂无可用模块";
|
|
82
82
|
readonly 'panels.market.installedSection': "已装";
|
|
83
83
|
readonly 'panels.market.moduleOutdated': "有新版";
|
|
84
|
-
readonly 'panels.market.moduleRestartHint': "
|
|
84
|
+
readonly 'panels.market.moduleRestartHint': "装好了但还没生效 —— 重启一次 dsh 就会出来";
|
|
85
85
|
readonly 'panels.market.restartNeeded': "新版装好了,重启一次才生效。";
|
|
86
86
|
readonly 'panels.market.foot': "装好后到那个项目的面板页勾选它,模块才会出现。";
|
|
87
87
|
readonly 'panels.market.recheck': "重新检查更新";
|
|
@@ -277,17 +277,20 @@ export declare const dictionaries: {
|
|
|
277
277
|
readonly 'rightbar.label': "数据面板";
|
|
278
278
|
readonly 'rightbar.expand': "展开数据面板";
|
|
279
279
|
readonly 'rightbar.collapse': "收起数据面板";
|
|
280
|
+
readonly 'rightbar.column.label': "右侧栏";
|
|
281
|
+
readonly 'rightbar.column.workbench': "工作台面板";
|
|
282
|
+
readonly 'rightbar.column.dsh': "dsh 面板";
|
|
280
283
|
readonly 'rightbar.refresh': "刷新";
|
|
281
284
|
readonly 'rightbar.refreshing': "刷新中…";
|
|
282
285
|
readonly 'rightbar.updatedAt': "更新于 {time}";
|
|
283
286
|
readonly 'rightbar.noProject': "当前会话没有所属项目";
|
|
284
287
|
readonly 'coding.notARepo.title': "这个项目不是 Coding 仓库";
|
|
285
288
|
readonly 'error.unknown': "出错了";
|
|
286
|
-
readonly 'board.title': "
|
|
289
|
+
readonly 'board.title': "工作台面板";
|
|
287
290
|
readonly 'panel.conversation': "对话";
|
|
288
291
|
readonly 'panels.label': "全局面板";
|
|
289
292
|
};
|
|
290
|
-
en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.missingPlugin" | "env.unit.hint" | "env.unit.missingCommands" | "env.unit.missingCommandsHint" | "env.unit.unchecked" | "env.unit.uncheckedHint" | "brand.name" | "toggle.open" | "toggle.collapse" | "project.label" | "workspace.section" | "project.none" | "project.empty" | "project.add" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.missingPlugin" | "panels.dep.missingCommands" | "panels.dep.unchecked" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.empty" | "panels.emptyHint" | "env.title" | "env.checking" | "env.installing" | "env.failed" | "env.elapsed" | "env.stepFailed.install" | "env.stepFailed.path" | "env.stepFailed.shell" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.daemon" | "env.bridge.extension" | "env.bridge.extensionLink" | "env.bridge.profile" | "env.bridge.stale" | "env.bridge.unknown" | "env.fix.title" | "env.fix.why" | "env.fix.whyPath" | "env.fix.whyShell" | "env.fix.step" | "env.fix.stepPath" | "env.fix.stepShell" | "env.fix.permission" | "env.fix.network" | "env.fix.details" | "env.retry" | "env.copyCommand" | "env.copied" | "env.step.opencli" | "env.step.codingPlugin" | "env.step.bridge" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "rightbar.label" | "rightbar.expand" | "rightbar.collapse" | "rightbar.refresh" | "rightbar.refreshing" | "rightbar.updatedAt" | "rightbar.noProject" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
|
|
293
|
+
en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.missingPlugin" | "env.unit.hint" | "env.unit.missingCommands" | "env.unit.missingCommandsHint" | "env.unit.unchecked" | "env.unit.uncheckedHint" | "brand.name" | "toggle.open" | "toggle.collapse" | "project.label" | "workspace.section" | "project.none" | "project.empty" | "project.add" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.missingPlugin" | "panels.dep.missingCommands" | "panels.dep.unchecked" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.empty" | "panels.emptyHint" | "env.title" | "env.checking" | "env.installing" | "env.failed" | "env.elapsed" | "env.stepFailed.install" | "env.stepFailed.path" | "env.stepFailed.shell" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.daemon" | "env.bridge.extension" | "env.bridge.extensionLink" | "env.bridge.profile" | "env.bridge.stale" | "env.bridge.unknown" | "env.fix.title" | "env.fix.why" | "env.fix.whyPath" | "env.fix.whyShell" | "env.fix.step" | "env.fix.stepPath" | "env.fix.stepShell" | "env.fix.permission" | "env.fix.network" | "env.fix.details" | "env.retry" | "env.copyCommand" | "env.copied" | "env.step.opencli" | "env.step.codingPlugin" | "env.step.bridge" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "rightbar.label" | "rightbar.expand" | "rightbar.collapse" | "rightbar.column.label" | "rightbar.column.workbench" | "rightbar.column.dsh" | "rightbar.refresh" | "rightbar.refreshing" | "rightbar.updatedAt" | "rightbar.noProject" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
|
|
291
294
|
};
|
|
292
295
|
export type { WorkbenchMessages };
|
|
293
296
|
export interface Dictionaries {
|