@dsh-workbench/core 0.1.6 → 0.1.8
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 +87 -34
- package/bin/dsh-workbench +16 -2
- package/client.js +429 -103
- package/dist/client/client.body.js +429 -103
- package/dist/client/index.js +429 -103
- package/dist/types/app/client.d.ts +72 -9
- package/dist/types/app/layouts/rightbar/ColumnSwitch.d.ts +10 -0
- package/dist/types/app/layouts/rightbar/Rightbar.d.ts +3 -1
- package/dist/types/app/layouts/rightbar/dsh-column-source.d.ts +6 -0
- package/dist/types/app/layouts/rightbar/dsh-column-source.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/presentation.d.ts +9 -0
- package/dist/types/app/layouts/rightbar/presentation.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/store.d.ts +9 -0
- package/docs/HANDOFF.md +15 -2
- package/docs/OPERATIONS.md +1 -0
- package/package.json +2 -2
- package/dist/types/app/layouts/rightbar/ExpandButton.d.ts +0 -9
|
@@ -91,7 +91,12 @@ export declare const kit: {
|
|
|
91
91
|
probeKeyOf(error: apiModule.ApiError | undefined): string | null;
|
|
92
92
|
apiGet<T>(route: string, query?: apiModule.Query, options?: apiModule.ApiGetOptions): Promise<apiModule.ApiResponse<T>>;
|
|
93
93
|
apiPost<T>(route: string, body: Record<string, unknown>): Promise<apiModule.ApiResponse<T>>;
|
|
94
|
+
ActivityBlock({ head, children }: apiModule.ActivityBlockProps): JSX.Element;
|
|
95
|
+
ActivityLine({ dot, text, at, actions }: apiModule.ActivityLineProps): JSX.Element;
|
|
96
|
+
ActivityAction({ label, hint, icon, href, onClick, failed }: apiModule.ActivityActionProps): JSX.Element;
|
|
94
97
|
ApprovalDetail(props: apiModule.ApprovalDetailProps): JSX.Element | null;
|
|
98
|
+
ApprovalPlan({ rows, hint, warn, children }: apiModule.ApprovalPlanProps): JSX.Element;
|
|
99
|
+
Card({ t, title, refreshing, onRefresh, meta, head, children }: apiModule.CardProps): JSX.Element;
|
|
95
100
|
CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
|
|
96
101
|
ChoiceGroup({ label, name, value, options, disabled, onChange }: apiModule.ChoiceGroupProps): JSX.Element;
|
|
97
102
|
LongTaskRow(props: apiModule.LongTaskRowProps): JSX.Element;
|
|
@@ -109,6 +114,7 @@ export declare const kit: {
|
|
|
109
114
|
readonly onPick: () => void;
|
|
110
115
|
} | undefined;
|
|
111
116
|
}): JSX.Element;
|
|
117
|
+
Note({ tone, as, children }: apiModule.NoteProps): JSX.Element;
|
|
112
118
|
SkeletonRows({ rows }: {
|
|
113
119
|
rows?: number;
|
|
114
120
|
}): JSX.Element;
|
|
@@ -118,11 +124,17 @@ export declare const kit: {
|
|
|
118
124
|
icon?: apiModule.ReactNode;
|
|
119
125
|
compact?: boolean;
|
|
120
126
|
}): JSX.Element;
|
|
127
|
+
Rows({ children }: apiModule.RowsProps): JSX.Element;
|
|
128
|
+
Row({ label, value }: apiModule.RowProps): JSX.Element;
|
|
121
129
|
SaveBar({ busy, disabled, labels, onCancel, onSave }: apiModule.SaveBarProps): JSX.Element;
|
|
130
|
+
SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
|
|
131
|
+
Stack({ children }: apiModule.StackProps): JSX.Element;
|
|
132
|
+
StateBlock({ title, dot, hint, actions, resolving, children }: apiModule.StateBlockProps): JSX.Element;
|
|
122
133
|
TextField({ invalid, className, ...rest }: apiModule.TextFieldProps): JSX.Element;
|
|
123
134
|
IconConversation({ size }: apiModule.IconProps): JSX.Element;
|
|
124
135
|
IconBrandMark({ size }: apiModule.IconProps): JSX.Element;
|
|
125
136
|
IconModules({ size }: apiModule.IconProps): JSX.Element;
|
|
137
|
+
IconPanelScreen({ size }: apiModule.IconProps): JSX.Element;
|
|
126
138
|
PLUGIN_ID: "@dsh-workbench/core";
|
|
127
139
|
API_PREFIX: "/workbench/api";
|
|
128
140
|
PREFS_PREFIX: "/workbench/api/prefs";
|
|
@@ -148,6 +160,8 @@ export declare const kit: {
|
|
|
148
160
|
DEFAULT_WORKSPACE_TITLE: "default-workspace";
|
|
149
161
|
STORAGE_KEY_PROJECT: "dsh-workbench.project";
|
|
150
162
|
STORAGE_KEY_RIGHTBAR: "dsh-workbench.rightbar.expanded";
|
|
163
|
+
STORAGE_KEY_RIGHTBAR_COLUMN: "dsh-workbench.rightbar.column";
|
|
164
|
+
RIGHTBAR_FULLSCREEN_WIDTH: 768;
|
|
151
165
|
LOCALE_NS: "workbench";
|
|
152
166
|
LOCALES: readonly ["zh", "en"];
|
|
153
167
|
readText(key: string): string | null;
|
|
@@ -433,17 +447,20 @@ export declare const kit: {
|
|
|
433
447
|
readonly "rightbar.label": "\u6570\u636E\u9762\u677F";
|
|
434
448
|
readonly "rightbar.expand": "\u5C55\u5F00\u6570\u636E\u9762\u677F";
|
|
435
449
|
readonly "rightbar.collapse": "\u6536\u8D77\u6570\u636E\u9762\u677F";
|
|
450
|
+
readonly "rightbar.column.label": "\u53F3\u4FA7\u680F";
|
|
451
|
+
readonly "rightbar.column.workbench": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
452
|
+
readonly "rightbar.column.dsh": "dsh \u9762\u677F";
|
|
436
453
|
readonly "rightbar.refresh": "\u5237\u65B0";
|
|
437
454
|
readonly "rightbar.refreshing": "\u5237\u65B0\u4E2D\u2026";
|
|
438
455
|
readonly "rightbar.updatedAt": "\u66F4\u65B0\u4E8E {time}";
|
|
439
456
|
readonly "rightbar.noProject": "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6240\u5C5E\u9879\u76EE";
|
|
440
457
|
readonly "coding.notARepo.title": "\u8FD9\u4E2A\u9879\u76EE\u4E0D\u662F Coding \u4ED3\u5E93";
|
|
441
458
|
readonly "error.unknown": "\u51FA\u9519\u4E86";
|
|
442
|
-
readonly "board.title": "\
|
|
459
|
+
readonly "board.title": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
443
460
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
444
461
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
445
462
|
};
|
|
446
|
-
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>;
|
|
463
|
+
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>;
|
|
447
464
|
};
|
|
448
465
|
mergeMessages(base: apiModule.Dictionaries, contributions: readonly apiModule.MessagesContribution[]): apiModule.Dictionaries;
|
|
449
466
|
zh: {
|
|
@@ -723,13 +740,16 @@ export declare const kit: {
|
|
|
723
740
|
readonly "rightbar.label": "\u6570\u636E\u9762\u677F";
|
|
724
741
|
readonly "rightbar.expand": "\u5C55\u5F00\u6570\u636E\u9762\u677F";
|
|
725
742
|
readonly "rightbar.collapse": "\u6536\u8D77\u6570\u636E\u9762\u677F";
|
|
743
|
+
readonly "rightbar.column.label": "\u53F3\u4FA7\u680F";
|
|
744
|
+
readonly "rightbar.column.workbench": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
745
|
+
readonly "rightbar.column.dsh": "dsh \u9762\u677F";
|
|
726
746
|
readonly "rightbar.refresh": "\u5237\u65B0";
|
|
727
747
|
readonly "rightbar.refreshing": "\u5237\u65B0\u4E2D\u2026";
|
|
728
748
|
readonly "rightbar.updatedAt": "\u66F4\u65B0\u4E8E {time}";
|
|
729
749
|
readonly "rightbar.noProject": "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6240\u5C5E\u9879\u76EE";
|
|
730
750
|
readonly "coding.notARepo.title": "\u8FD9\u4E2A\u9879\u76EE\u4E0D\u662F Coding \u4ED3\u5E93";
|
|
731
751
|
readonly "error.unknown": "\u51FA\u9519\u4E86";
|
|
732
|
-
readonly "board.title": "\
|
|
752
|
+
readonly "board.title": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
733
753
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
734
754
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
735
755
|
};
|
|
@@ -740,6 +760,7 @@ export declare const kit: {
|
|
|
740
760
|
Fragment: import("react").ExoticComponent<import("react").FragmentProps>;
|
|
741
761
|
useState: typeof import("react").useState;
|
|
742
762
|
useEffect: typeof import("react").useEffect;
|
|
763
|
+
useLayoutEffect: typeof import("react").useLayoutEffect;
|
|
743
764
|
useMemo: typeof import("react").useMemo;
|
|
744
765
|
useCallback: typeof import("react").useCallback;
|
|
745
766
|
useRef: typeof import("react").useRef;
|
|
@@ -795,7 +816,12 @@ export declare const kit: {
|
|
|
795
816
|
probeKeyOf(error: apiModule.ApiError | undefined): string | null;
|
|
796
817
|
apiGet<T>(route: string, query?: apiModule.Query, options?: apiModule.ApiGetOptions): Promise<apiModule.ApiResponse<T>>;
|
|
797
818
|
apiPost<T>(route: string, body: Record<string, unknown>): Promise<apiModule.ApiResponse<T>>;
|
|
819
|
+
ActivityBlock({ head, children }: apiModule.ActivityBlockProps): JSX.Element;
|
|
820
|
+
ActivityLine({ dot, text, at, actions }: apiModule.ActivityLineProps): JSX.Element;
|
|
821
|
+
ActivityAction({ label, hint, icon, href, onClick, failed }: apiModule.ActivityActionProps): JSX.Element;
|
|
798
822
|
ApprovalDetail(props: apiModule.ApprovalDetailProps): JSX.Element | null;
|
|
823
|
+
ApprovalPlan({ rows, hint, warn, children }: apiModule.ApprovalPlanProps): JSX.Element;
|
|
824
|
+
Card({ t, title, refreshing, onRefresh, meta, head, children }: apiModule.CardProps): JSX.Element;
|
|
799
825
|
CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
|
|
800
826
|
ChoiceGroup({ label, name, value, options, disabled, onChange }: apiModule.ChoiceGroupProps): JSX.Element;
|
|
801
827
|
LongTaskRow(props: apiModule.LongTaskRowProps): JSX.Element;
|
|
@@ -813,6 +839,7 @@ export declare const kit: {
|
|
|
813
839
|
readonly onPick: () => void;
|
|
814
840
|
} | undefined;
|
|
815
841
|
}): JSX.Element;
|
|
842
|
+
Note({ tone, as, children }: apiModule.NoteProps): JSX.Element;
|
|
816
843
|
SkeletonRows({ rows }: {
|
|
817
844
|
rows?: number;
|
|
818
845
|
}): JSX.Element;
|
|
@@ -822,11 +849,17 @@ export declare const kit: {
|
|
|
822
849
|
icon?: apiModule.ReactNode;
|
|
823
850
|
compact?: boolean;
|
|
824
851
|
}): JSX.Element;
|
|
852
|
+
Rows({ children }: apiModule.RowsProps): JSX.Element;
|
|
853
|
+
Row({ label, value }: apiModule.RowProps): JSX.Element;
|
|
825
854
|
SaveBar({ busy, disabled, labels, onCancel, onSave }: apiModule.SaveBarProps): JSX.Element;
|
|
855
|
+
SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
|
|
856
|
+
Stack({ children }: apiModule.StackProps): JSX.Element;
|
|
857
|
+
StateBlock({ title, dot, hint, actions, resolving, children }: apiModule.StateBlockProps): JSX.Element;
|
|
826
858
|
TextField({ invalid, className, ...rest }: apiModule.TextFieldProps): JSX.Element;
|
|
827
859
|
IconConversation({ size }: apiModule.IconProps): JSX.Element;
|
|
828
860
|
IconBrandMark({ size }: apiModule.IconProps): JSX.Element;
|
|
829
861
|
IconModules({ size }: apiModule.IconProps): JSX.Element;
|
|
862
|
+
IconPanelScreen({ size }: apiModule.IconProps): JSX.Element;
|
|
830
863
|
PLUGIN_ID: "@dsh-workbench/core";
|
|
831
864
|
API_PREFIX: "/workbench/api";
|
|
832
865
|
PREFS_PREFIX: "/workbench/api/prefs";
|
|
@@ -852,6 +885,8 @@ export declare const kit: {
|
|
|
852
885
|
DEFAULT_WORKSPACE_TITLE: "default-workspace";
|
|
853
886
|
STORAGE_KEY_PROJECT: "dsh-workbench.project";
|
|
854
887
|
STORAGE_KEY_RIGHTBAR: "dsh-workbench.rightbar.expanded";
|
|
888
|
+
STORAGE_KEY_RIGHTBAR_COLUMN: "dsh-workbench.rightbar.column";
|
|
889
|
+
RIGHTBAR_FULLSCREEN_WIDTH: 768;
|
|
855
890
|
LOCALE_NS: "workbench";
|
|
856
891
|
LOCALES: readonly ["zh", "en"];
|
|
857
892
|
readText(key: string): string | null;
|
|
@@ -1137,17 +1172,20 @@ export declare const kit: {
|
|
|
1137
1172
|
readonly "rightbar.label": "\u6570\u636E\u9762\u677F";
|
|
1138
1173
|
readonly "rightbar.expand": "\u5C55\u5F00\u6570\u636E\u9762\u677F";
|
|
1139
1174
|
readonly "rightbar.collapse": "\u6536\u8D77\u6570\u636E\u9762\u677F";
|
|
1175
|
+
readonly "rightbar.column.label": "\u53F3\u4FA7\u680F";
|
|
1176
|
+
readonly "rightbar.column.workbench": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
1177
|
+
readonly "rightbar.column.dsh": "dsh \u9762\u677F";
|
|
1140
1178
|
readonly "rightbar.refresh": "\u5237\u65B0";
|
|
1141
1179
|
readonly "rightbar.refreshing": "\u5237\u65B0\u4E2D\u2026";
|
|
1142
1180
|
readonly "rightbar.updatedAt": "\u66F4\u65B0\u4E8E {time}";
|
|
1143
1181
|
readonly "rightbar.noProject": "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6240\u5C5E\u9879\u76EE";
|
|
1144
1182
|
readonly "coding.notARepo.title": "\u8FD9\u4E2A\u9879\u76EE\u4E0D\u662F Coding \u4ED3\u5E93";
|
|
1145
1183
|
readonly "error.unknown": "\u51FA\u9519\u4E86";
|
|
1146
|
-
readonly "board.title": "\
|
|
1184
|
+
readonly "board.title": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
1147
1185
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
1148
1186
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
1149
1187
|
};
|
|
1150
|
-
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>;
|
|
1188
|
+
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>;
|
|
1151
1189
|
};
|
|
1152
1190
|
mergeMessages(base: apiModule.Dictionaries, contributions: readonly apiModule.MessagesContribution[]): apiModule.Dictionaries;
|
|
1153
1191
|
zh: {
|
|
@@ -1427,13 +1465,16 @@ export declare const kit: {
|
|
|
1427
1465
|
readonly "rightbar.label": "\u6570\u636E\u9762\u677F";
|
|
1428
1466
|
readonly "rightbar.expand": "\u5C55\u5F00\u6570\u636E\u9762\u677F";
|
|
1429
1467
|
readonly "rightbar.collapse": "\u6536\u8D77\u6570\u636E\u9762\u677F";
|
|
1468
|
+
readonly "rightbar.column.label": "\u53F3\u4FA7\u680F";
|
|
1469
|
+
readonly "rightbar.column.workbench": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
1470
|
+
readonly "rightbar.column.dsh": "dsh \u9762\u677F";
|
|
1430
1471
|
readonly "rightbar.refresh": "\u5237\u65B0";
|
|
1431
1472
|
readonly "rightbar.refreshing": "\u5237\u65B0\u4E2D\u2026";
|
|
1432
1473
|
readonly "rightbar.updatedAt": "\u66F4\u65B0\u4E8E {time}";
|
|
1433
1474
|
readonly "rightbar.noProject": "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6240\u5C5E\u9879\u76EE";
|
|
1434
1475
|
readonly "coding.notARepo.title": "\u8FD9\u4E2A\u9879\u76EE\u4E0D\u662F Coding \u4ED3\u5E93";
|
|
1435
1476
|
readonly "error.unknown": "\u51FA\u9519\u4E86";
|
|
1436
|
-
readonly "board.title": "\
|
|
1477
|
+
readonly "board.title": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
1437
1478
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
1438
1479
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
1439
1480
|
};
|
|
@@ -1444,6 +1485,7 @@ export declare const kit: {
|
|
|
1444
1485
|
Fragment: import("react").ExoticComponent<import("react").FragmentProps>;
|
|
1445
1486
|
useState: typeof import("react").useState;
|
|
1446
1487
|
useEffect: typeof import("react").useEffect;
|
|
1488
|
+
useLayoutEffect: typeof import("react").useLayoutEffect;
|
|
1447
1489
|
useMemo: typeof import("react").useMemo;
|
|
1448
1490
|
useCallback: typeof import("react").useCallback;
|
|
1449
1491
|
useRef: typeof import("react").useRef;
|
|
@@ -1494,7 +1536,12 @@ export declare const kit: {
|
|
|
1494
1536
|
probeKeyOf(error: apiModule.ApiError | undefined): string | null;
|
|
1495
1537
|
apiGet<T>(route: string, query?: apiModule.Query, options?: apiModule.ApiGetOptions): Promise<apiModule.ApiResponse<T>>;
|
|
1496
1538
|
apiPost<T>(route: string, body: Record<string, unknown>): Promise<apiModule.ApiResponse<T>>;
|
|
1539
|
+
ActivityBlock({ head, children }: apiModule.ActivityBlockProps): JSX.Element;
|
|
1540
|
+
ActivityLine({ dot, text, at, actions }: apiModule.ActivityLineProps): JSX.Element;
|
|
1541
|
+
ActivityAction({ label, hint, icon, href, onClick, failed }: apiModule.ActivityActionProps): JSX.Element;
|
|
1497
1542
|
ApprovalDetail(props: apiModule.ApprovalDetailProps): JSX.Element | null;
|
|
1543
|
+
ApprovalPlan({ rows, hint, warn, children }: apiModule.ApprovalPlanProps): JSX.Element;
|
|
1544
|
+
Card({ t, title, refreshing, onRefresh, meta, head, children }: apiModule.CardProps): JSX.Element;
|
|
1498
1545
|
CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
|
|
1499
1546
|
ChoiceGroup({ label, name, value, options, disabled, onChange }: apiModule.ChoiceGroupProps): JSX.Element;
|
|
1500
1547
|
LongTaskRow(props: apiModule.LongTaskRowProps): JSX.Element;
|
|
@@ -1512,6 +1559,7 @@ export declare const kit: {
|
|
|
1512
1559
|
readonly onPick: () => void;
|
|
1513
1560
|
} | undefined;
|
|
1514
1561
|
}): JSX.Element;
|
|
1562
|
+
Note({ tone, as, children }: apiModule.NoteProps): JSX.Element;
|
|
1515
1563
|
SkeletonRows({ rows }: {
|
|
1516
1564
|
rows?: number;
|
|
1517
1565
|
}): JSX.Element;
|
|
@@ -1521,11 +1569,17 @@ export declare const kit: {
|
|
|
1521
1569
|
icon?: apiModule.ReactNode;
|
|
1522
1570
|
compact?: boolean;
|
|
1523
1571
|
}): JSX.Element;
|
|
1572
|
+
Rows({ children }: apiModule.RowsProps): JSX.Element;
|
|
1573
|
+
Row({ label, value }: apiModule.RowProps): JSX.Element;
|
|
1524
1574
|
SaveBar({ busy, disabled, labels, onCancel, onSave }: apiModule.SaveBarProps): JSX.Element;
|
|
1575
|
+
SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
|
|
1576
|
+
Stack({ children }: apiModule.StackProps): JSX.Element;
|
|
1577
|
+
StateBlock({ title, dot, hint, actions, resolving, children }: apiModule.StateBlockProps): JSX.Element;
|
|
1525
1578
|
TextField({ invalid, className, ...rest }: apiModule.TextFieldProps): JSX.Element;
|
|
1526
1579
|
IconConversation({ size }: apiModule.IconProps): JSX.Element;
|
|
1527
1580
|
IconBrandMark({ size }: apiModule.IconProps): JSX.Element;
|
|
1528
1581
|
IconModules({ size }: apiModule.IconProps): JSX.Element;
|
|
1582
|
+
IconPanelScreen({ size }: apiModule.IconProps): JSX.Element;
|
|
1529
1583
|
PLUGIN_ID: "@dsh-workbench/core";
|
|
1530
1584
|
API_PREFIX: "/workbench/api";
|
|
1531
1585
|
PREFS_PREFIX: "/workbench/api/prefs";
|
|
@@ -1551,6 +1605,8 @@ export declare const kit: {
|
|
|
1551
1605
|
DEFAULT_WORKSPACE_TITLE: "default-workspace";
|
|
1552
1606
|
STORAGE_KEY_PROJECT: "dsh-workbench.project";
|
|
1553
1607
|
STORAGE_KEY_RIGHTBAR: "dsh-workbench.rightbar.expanded";
|
|
1608
|
+
STORAGE_KEY_RIGHTBAR_COLUMN: "dsh-workbench.rightbar.column";
|
|
1609
|
+
RIGHTBAR_FULLSCREEN_WIDTH: 768;
|
|
1554
1610
|
LOCALE_NS: "workbench";
|
|
1555
1611
|
LOCALES: readonly ["zh", "en"];
|
|
1556
1612
|
readText(key: string): string | null;
|
|
@@ -1836,17 +1892,20 @@ export declare const kit: {
|
|
|
1836
1892
|
readonly "rightbar.label": "\u6570\u636E\u9762\u677F";
|
|
1837
1893
|
readonly "rightbar.expand": "\u5C55\u5F00\u6570\u636E\u9762\u677F";
|
|
1838
1894
|
readonly "rightbar.collapse": "\u6536\u8D77\u6570\u636E\u9762\u677F";
|
|
1895
|
+
readonly "rightbar.column.label": "\u53F3\u4FA7\u680F";
|
|
1896
|
+
readonly "rightbar.column.workbench": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
1897
|
+
readonly "rightbar.column.dsh": "dsh \u9762\u677F";
|
|
1839
1898
|
readonly "rightbar.refresh": "\u5237\u65B0";
|
|
1840
1899
|
readonly "rightbar.refreshing": "\u5237\u65B0\u4E2D\u2026";
|
|
1841
1900
|
readonly "rightbar.updatedAt": "\u66F4\u65B0\u4E8E {time}";
|
|
1842
1901
|
readonly "rightbar.noProject": "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6240\u5C5E\u9879\u76EE";
|
|
1843
1902
|
readonly "coding.notARepo.title": "\u8FD9\u4E2A\u9879\u76EE\u4E0D\u662F Coding \u4ED3\u5E93";
|
|
1844
1903
|
readonly "error.unknown": "\u51FA\u9519\u4E86";
|
|
1845
|
-
readonly "board.title": "\
|
|
1904
|
+
readonly "board.title": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
1846
1905
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
1847
1906
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
1848
1907
|
};
|
|
1849
|
-
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>;
|
|
1908
|
+
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>;
|
|
1850
1909
|
};
|
|
1851
1910
|
mergeMessages(base: apiModule.Dictionaries, contributions: readonly apiModule.MessagesContribution[]): apiModule.Dictionaries;
|
|
1852
1911
|
zh: {
|
|
@@ -2126,13 +2185,16 @@ export declare const kit: {
|
|
|
2126
2185
|
readonly "rightbar.label": "\u6570\u636E\u9762\u677F";
|
|
2127
2186
|
readonly "rightbar.expand": "\u5C55\u5F00\u6570\u636E\u9762\u677F";
|
|
2128
2187
|
readonly "rightbar.collapse": "\u6536\u8D77\u6570\u636E\u9762\u677F";
|
|
2188
|
+
readonly "rightbar.column.label": "\u53F3\u4FA7\u680F";
|
|
2189
|
+
readonly "rightbar.column.workbench": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
2190
|
+
readonly "rightbar.column.dsh": "dsh \u9762\u677F";
|
|
2129
2191
|
readonly "rightbar.refresh": "\u5237\u65B0";
|
|
2130
2192
|
readonly "rightbar.refreshing": "\u5237\u65B0\u4E2D\u2026";
|
|
2131
2193
|
readonly "rightbar.updatedAt": "\u66F4\u65B0\u4E8E {time}";
|
|
2132
2194
|
readonly "rightbar.noProject": "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6240\u5C5E\u9879\u76EE";
|
|
2133
2195
|
readonly "coding.notARepo.title": "\u8FD9\u4E2A\u9879\u76EE\u4E0D\u662F Coding \u4ED3\u5E93";
|
|
2134
2196
|
readonly "error.unknown": "\u51FA\u9519\u4E86";
|
|
2135
|
-
readonly "board.title": "\
|
|
2197
|
+
readonly "board.title": "\u5DE5\u4F5C\u53F0\u9762\u677F";
|
|
2136
2198
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
2137
2199
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
2138
2200
|
};
|
|
@@ -2143,6 +2205,7 @@ export declare const kit: {
|
|
|
2143
2205
|
Fragment: import("react").ExoticComponent<import("react").FragmentProps>;
|
|
2144
2206
|
useState: typeof import("react").useState;
|
|
2145
2207
|
useEffect: typeof import("react").useEffect;
|
|
2208
|
+
useLayoutEffect: typeof import("react").useLayoutEffect;
|
|
2146
2209
|
useMemo: typeof import("react").useMemo;
|
|
2147
2210
|
useCallback: typeof import("react").useCallback;
|
|
2148
2211
|
useRef: typeof import("react").useRef;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SnapshotSelectorHook, Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import { type RightbarColumn, type RightbarState } from './store';
|
|
3
|
+
import type { DshColumnSource } from './dsh-column-source';
|
|
4
|
+
export interface ColumnSwitchProps {
|
|
5
|
+
useRightbar: SnapshotSelectorHook<RightbarState>;
|
|
6
|
+
selectColumn: (column: RightbarColumn) => void;
|
|
7
|
+
dshColumn: DshColumnSource;
|
|
8
|
+
t: Translate;
|
|
9
|
+
}
|
|
10
|
+
export declare function ColumnSwitch({ useRightbar, selectColumn, dshColumn, t }: ColumnSwitchProps): JSX.Element;
|
|
@@ -4,6 +4,8 @@ import type { PanelStep } from '@dsh-workbench/shared';
|
|
|
4
4
|
import type { RightbarState } from './store';
|
|
5
5
|
export interface RightbarProps extends RightbarActions {
|
|
6
6
|
readonly t: Translate;
|
|
7
|
+
readonly width: number;
|
|
8
|
+
readonly viewportWidth: number;
|
|
7
9
|
readonly canShow: boolean;
|
|
8
10
|
readonly useSessions: SnapshotSelectorHook<SessionsSnapshot>;
|
|
9
11
|
readonly useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>;
|
|
@@ -21,4 +23,4 @@ export interface RightbarActions {
|
|
|
21
23
|
openMarket: () => void;
|
|
22
24
|
units: ClientUnitRegistry;
|
|
23
25
|
}
|
|
24
|
-
export declare function Rightbar(props: RightbarProps): JSX.Element
|
|
26
|
+
export declare function Rightbar(props: RightbarProps): JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { PanelStep } from '@dsh-workbench/shared';
|
|
2
2
|
export type { PanelStep } from '@dsh-workbench/shared';
|
|
3
|
+
export type RightbarColumn = 'workbench' | 'dsh';
|
|
3
4
|
export interface RightbarState {
|
|
4
5
|
readonly expanded: boolean;
|
|
6
|
+
readonly column: RightbarColumn;
|
|
5
7
|
readonly trail: readonly PanelStep[];
|
|
6
8
|
}
|
|
7
9
|
export interface RightbarStore {
|
|
@@ -9,6 +11,7 @@ export interface RightbarStore {
|
|
|
9
11
|
subscribe(listener: () => void): () => void;
|
|
10
12
|
setExpanded(expanded: boolean): void;
|
|
11
13
|
toggleExpanded(): void;
|
|
14
|
+
setColumn(column: RightbarColumn): void;
|
|
12
15
|
open(step: PanelStep): void;
|
|
13
16
|
goTo(index: number): void;
|
|
14
17
|
back(): void;
|
|
@@ -20,4 +23,10 @@ export interface RightbarPersistence {
|
|
|
20
23
|
writeText(key: string, value: string | null): void;
|
|
21
24
|
}
|
|
22
25
|
export declare const RIGHTBAR_DEFAULT_EXPANDED = true;
|
|
26
|
+
export declare const RIGHTBAR_DEFAULT_COLUMN: RightbarColumn;
|
|
27
|
+
export interface RightbarColumnPressed {
|
|
28
|
+
readonly workbench: boolean;
|
|
29
|
+
readonly dsh: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function pressedColumns(state: RightbarState, dshExpanded: boolean): RightbarColumnPressed;
|
|
23
32
|
export declare function createRightbarStore(persistence?: RightbarPersistence): RightbarStore;
|
package/docs/HANDOFF.md
CHANGED
|
@@ -33,6 +33,13 @@ npx @dsh-workbench/core
|
|
|
33
33
|
而带 scope 的包,pnpm / npx 只会去 `.npmrc` 里**给这个 scope 指的那个源**找它 ——
|
|
34
34
|
不设这一行,症状是 `404 Not Found - GET https://registry.npmjs.org/@pagoda%2fdsh-workbench`。
|
|
35
35
|
|
|
36
|
+
> ⚠️ **0.1.6 的已知缺陷**:`setup` 可能死在
|
|
37
|
+
> `…/@dsh-workbench/core/scripts/seed-profile.sh: Permission denied`(发出去的包里随包脚本丢了
|
|
38
|
+
> 可执行位,`pnpm publish` 只给 `bin` 字段点名那条 755)。应急:给那份副本补上 x 位,
|
|
39
|
+
> 再重跑同一条 `npx` 命令 ——
|
|
40
|
+
> `chmod +x ~/.npm/_npx/*/node_modules/@dsh-workbench/core/{scripts/seed-profile.sh,bin/opencli-isolated}`。
|
|
41
|
+
> 0.1.7 起启动器已不吃 x 位,重装那个版本即可根治。
|
|
42
|
+
|
|
36
43
|
### 设置从哪来:**两边都要的在 `dsh web` 里配**(单向、实时)
|
|
37
44
|
|
|
38
45
|
工作台启动时会用 `--patch` 把 `profiles/web/cordis.patch.yml` 叠在自己的差异层之上
|
|
@@ -150,12 +157,18 @@ pnpm release:dry # 门禁 + 发布计划 + 打包清单校验,不联网、
|
|
|
150
157
|
pnpm release # 真发(发前会再跑一次门禁)
|
|
151
158
|
```
|
|
152
159
|
|
|
153
|
-
提版本号之后再发:`npm version patch
|
|
160
|
+
提版本号之后再发:`npm version patch`。脚本把几个坑写成了**硬失败**:
|
|
154
161
|
|
|
155
162
|
- **`dist/` 在 `.gitignore` 里**:npm 打包的兜底就是 `.gitignore`,不在 `files` 里显式列出
|
|
156
163
|
就会漏掉构建产物 —— 症状不是报错,而是"别人装上后宿主侧起不来";
|
|
157
164
|
- 版本号在源上已被占(pnpm 到最后一步才报,白等一轮门禁);
|
|
158
|
-
- `private: true`
|
|
165
|
+
- `private: true` 没摘;
|
|
166
|
+
- **随包脚本的可执行位**:`pnpm publish` 只给 `package.json#bin` 点名的那**一个**文件 755,
|
|
167
|
+
其余在 tarball 里一律 644(`npm pack` 会保留,而 git 里的 x 位不进 tarball)——
|
|
168
|
+
所以随包脚本一律不吃 x 位:启动器里 `bash` 呼 `seed-profile.sh`、opencli 那条稳定路径写成
|
|
169
|
+
自己拥有的转发脚本,`selfcheck` 有一条判据钉着。这类错**本机复现不出来**,只在别人机器上炸
|
|
170
|
+
(0.1.6 就是这么坏在 `seed-profile.sh: Permission denied` 上的,见
|
|
171
|
+
[`.scratch/dsh-ui-alignment/spec.md`](../../../.scratch/dsh-ui-alignment/spec.md) §18.41)。
|
|
159
172
|
|
|
160
173
|
## 七、版本与兼容(实话)
|
|
161
174
|
|
package/docs/OPERATIONS.md
CHANGED
|
@@ -115,3 +115,4 @@ WORKBENCH_PORT=3091 pnpm run dev # 换端口(监听与实例同一个端口
|
|
|
115
115
|
| 改了源码没变化 | 忘了 `pnpm run build`,或没重启进程(宿主缓存已加载的包) |
|
|
116
116
|
| 体检那屏「检测浏览器通道 · 没连上」,可面板照样能用 | 本机全局 opencli 与隔离运行时版本不一致 ⇒ daemon 被顶成对方那版(`Stale daemon detected: daemon vX != CLI vY`)。下一条浏览器命令会自动把它重启回来,体检也会复检后改回「已连接」([ADR-0024](../../../docs/adr/0024-warm-the-sites-before-the-panel.md) §3.2.1)。**要彻底不抖**:让两边同版本 —— 把 `OPENCLI_PIN`(`src/shared/config/constants.ts`)对齐到 `opencli --version`,再 `npm i --prefix ~/.dsh/workbench/opencli/toolchain @jackwener/opencli@<那个版本> --cache ~/.dsh/workbench/opencli/npm-cache` |
|
|
117
117
|
| Settings 页报 `overridden by a home patch` | 想在 Settings 里改的行被 `$DSH_HOME/cordis.patch.yml` 或 `--patch` 覆盖了 |
|
|
118
|
+
| **别人机器上** `npx @dsh-workbench/core setup` 报 `scripts/seed-profile.sh: Permission denied`(或体检永远说"隔离运行时没装好") | 发出去的包里**随包脚本丢了 x 位**:`pnpm publish` 只给 `package.json#bin` 点名那条文件 755,其余一律 644(`npm pack` 会保留,而 `git` 里的 x 位不进 tarball —— 所以**本机永远复现不出来**)。0.1.6 的已知缺陷:应急 `chmod +x <包目录>/{scripts/seed-profile.sh,bin/opencli-isolated}`,正规解是升到 0.1.7(启动器与 `selfcheck` 已改成不吃 x 位) |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-workbench/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "个人工作台:Agent 工作台外壳(左栏 + 常驻对话 + 自研右侧数据面板)。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"icon": "./icon.svg",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"access": "public"
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@dsh-workbench/shared": "0.1.
|
|
81
|
+
"@dsh-workbench/shared": "0.1.8"
|
|
82
82
|
},
|
|
83
83
|
"scripts": {
|
|
84
84
|
"build": "node scripts/build.mjs && node scripts/build-types.mjs",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Translate } from '@dsh-workbench/shared';
|
|
2
|
-
export interface ExpandButtonProps {
|
|
3
|
-
useRightbar: <R>(selector: (state: {
|
|
4
|
-
expanded: boolean;
|
|
5
|
-
}) => R) => R;
|
|
6
|
-
toggleRightbar: () => void;
|
|
7
|
-
t: Translate;
|
|
8
|
-
}
|
|
9
|
-
export declare function ExpandButton({ useRightbar, toggleRightbar, t }: ExpandButtonProps): JSX.Element | null;
|