@dsh-workbench/core 0.2.12 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/client.js +418 -114
  2. package/dist/client/client.body.js +418 -114
  3. package/dist/client/index.js +418 -114
  4. package/dist/host/index.js +78 -78
  5. package/dist/types/app/client.d.ts +87 -15
  6. package/dist/types/app/layouts/__tests__/kit-preview-nav.test.d.ts +1 -0
  7. package/dist/types/app/layouts/rightbar/kit-preview-controls.d.ts +1 -0
  8. package/dist/types/app/layouts/rightbar/kit-preview-frame.d.ts +4 -0
  9. package/dist/types/app/layouts/rightbar/kit-preview-hash.d.ts +1 -0
  10. package/dist/types/app/layouts/rightbar/kit-preview-rows.d.ts +1 -0
  11. package/dist/types/app/layouts/sidebar/ProjectSwitcher.d.ts +3 -1
  12. package/dist/types/app/layouts/sidebar/SidebarHeader.d.ts +12 -0
  13. package/dist/types/app/layouts/sidebar/WorkspaceAttentionDot.d.ts +9 -0
  14. package/dist/types/app/layouts/sidebar/WorkspaceAttentionTag.d.ts +7 -0
  15. package/dist/types/app/layouts/sidebar/__tests__/current-workspace.test.d.ts +1 -0
  16. package/dist/types/app/layouts/sidebar/current-workspace.d.ts +8 -0
  17. package/dist/types/app/layouts/sidebar/use-attention.d.ts +16 -0
  18. package/dist/types/app/layouts/sidebar/workspace-items.d.ts +2 -0
  19. package/dist/types/modules/sessions/index.d.ts +1 -0
  20. package/dist/types/modules/sessions/model/attention.d.ts +22 -0
  21. package/dist/types/modules/sessions/model/attention.test.d.ts +1 -0
  22. package/package.json +2 -2
  23. package/skills/workbench-module-diy/BUILD.md +1 -1
  24. package/skills/workbench-module-diy/DATASOURCE.md +1 -1
  25. package/skills/workbench-module-diy/KIT.md +57 -5
  26. package/skills/workbench-module-diy/PANEL.md +1 -1
  27. package/skills/workbench-module-diy/REVIEW.md +2 -2
@@ -88,13 +88,13 @@ export declare const kit: {
88
88
  gateOf(capability: apiModule.CapabilityPayload | null, mode: apiModule.GateMode): apiModule.UnitGate;
89
89
  splitBlocker(candidates: readonly (apiModule.ModuleBlocker | undefined)[]): apiModule.UnitBlockers;
90
90
  probeKeyOf(error: apiModule.ApiError | undefined): string | null;
91
- hasEnvSupply(manifest: apiModule.UnitManifest): boolean;
92
91
  declarationProblemsOf(subject: string, raw: unknown): readonly string[];
93
92
  readDeclaration(subject: string, raw: unknown): apiModule.DeclarationRead;
94
93
  WORKBENCH_API_VERSION: 1;
95
94
  SUPPORTED_API_VERSIONS: readonly number[];
96
95
  DECLARATION_KEYS: readonly string[];
97
96
  DECLARATION_REQUIRED_KEYS: readonly string[];
97
+ hasEnvSupply(manifest: apiModule.UnitManifest): boolean;
98
98
  apiGet<T>(route: string, query?: apiModule.Query, options?: apiModule.ApiGetOptions): Promise<apiModule.ApiResponse<T>>;
99
99
  apiPost<T>(route: string, body: Record<string, unknown>): Promise<apiModule.ApiResponse<T>>;
100
100
  ActivityBlock({ head, children }: apiModule.ActivityBlockProps): JSX.Element;
@@ -109,6 +109,11 @@ export declare const kit: {
109
109
  CardBoundary: typeof apiModule.CardBoundary;
110
110
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
111
111
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
112
+ Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
113
+ FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
114
+ FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
115
+ FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
116
+ Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
112
117
  LongTaskRow(props: apiModule.LongTaskRowProps): JSX.Element;
113
118
  Note({ tone, as, role, children }: apiModule.NoteProps): JSX.Element;
114
119
  SkeletonRows({ rows }: {
@@ -123,7 +128,6 @@ export declare const kit: {
123
128
  Rows({ children }: apiModule.RowsProps): JSX.Element;
124
129
  Row({ label, value }: apiModule.RowProps): JSX.Element;
125
130
  SaveBar({ busy, disabled, labels, onCancel, onSave }: apiModule.SaveBarProps): JSX.Element;
126
- SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
127
131
  searchTextOf(option: apiModule.SelectFieldOption): string;
128
132
  defaultSelectFilter(option: apiModule.SelectFieldOption, query: string): boolean;
129
133
  filterSelectOptions(options: readonly apiModule.SelectFieldOption[], query: string, filter?: (option: apiModule.SelectFieldOption, query: string) => boolean): readonly apiModule.SelectFieldOption[];
@@ -131,11 +135,11 @@ export declare const kit: {
131
135
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
132
136
  selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
133
137
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
138
+ SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
139
+ Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
134
140
  Stack({ children }: apiModule.StackProps): JSX.Element;
135
141
  StateBlock({ title, dot, hint, actions, resolving, children }: apiModule.StateBlockProps): JSX.Element;
136
142
  TextField({ invalid, className, ...rest }: apiModule.TextFieldProps): JSX.Element;
137
- Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
138
- Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
139
143
  IconConversation({ size }: apiModule.IconProps): JSX.Element;
140
144
  IconBrandMark({ size }: apiModule.IconProps): JSX.Element;
141
145
  IconOpencli({ size }: apiModule.IconProps): JSX.Element;
@@ -229,6 +233,15 @@ export declare const kit: {
229
233
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
230
234
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
231
235
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
236
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
237
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
238
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
239
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
240
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
241
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
242
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
243
+ readonly "project.attention.state.running": "\u5728\u8DD1";
244
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
232
245
  readonly "hover.copied": "\u5DF2\u590D\u5236";
233
246
  readonly "time.now": "\u521A\u521A";
234
247
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -582,7 +595,7 @@ export declare const kit: {
582
595
  readonly "configSync.emptyProviders": "\u5DE5\u4F5C\u53F0\u8FD8\u6CA1\u6709\u4EFB\u4F55\u6A21\u578B\u4F9B\u5E94\u5546 \u2014\u2014 \u53BB\u300C\u914D\u7F6E\u540C\u6B65\u300D\u4ECE\u67D0\u4E2A profile \u628A llm- \u90A3\u51E0\u884C\u642C\u8FC7\u6765\uFF0C\u6216\u81EA\u5DF1\u53BB\u300C\u6A21\u578B\u300D\u91CC\u914D\u3002";
583
596
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
584
597
  };
585
- en: Record<"time.now" | "time.ago" | "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.failed" | "env.unit.failedHint" | "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" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "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.notActive" | "panels.market.notUsable" | "panels.market.broken" | "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.swapSlow" | "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.needCommands" | "panels.market.localMark" | "panels.market.localHint" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.workbenchName" | "panels.market.workbenchLocal" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginBroken" | "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.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "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.failureInstalled" | "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.classifying" | "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.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "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.cardBroken" | "panels.cardRetry" | "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" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed", string>;
598
+ en: Record<"time.now" | "time.ago" | "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.failed" | "env.unit.failedHint" | "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" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "project.attention.warning.one" | "project.attention.warning.other" | "project.attention.running.one" | "project.attention.running.other" | "project.attention.done.one" | "project.attention.done.other" | "project.attention.state.warning" | "project.attention.state.running" | "project.attention.state.done" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "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.notActive" | "panels.market.notUsable" | "panels.market.broken" | "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.swapSlow" | "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.needCommands" | "panels.market.localMark" | "panels.market.localHint" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.workbenchName" | "panels.market.workbenchLocal" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginBroken" | "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.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "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.failureInstalled" | "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.classifying" | "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.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "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.cardBroken" | "panels.cardRetry" | "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" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed", string>;
586
599
  };
587
600
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
588
601
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -633,6 +646,15 @@ export declare const kit: {
633
646
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
634
647
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
635
648
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
649
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
650
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
651
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
652
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
653
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
654
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
655
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
656
+ readonly "project.attention.state.running": "\u5728\u8DD1";
657
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
636
658
  readonly "hover.copied": "\u5DF2\u590D\u5236";
637
659
  readonly "time.now": "\u521A\u521A";
638
660
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -989,6 +1011,8 @@ export declare const kit: {
989
1011
  blockerPending(busy: boolean, running: string | null): boolean;
990
1012
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
991
1013
  holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
1014
+ firstProblemOf(root: ParentNode): Element | null;
1015
+ revealFirstProblem(root: ParentNode): boolean;
992
1016
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
993
1017
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
994
1018
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -1061,13 +1085,13 @@ export declare const kit: {
1061
1085
  gateOf(capability: apiModule.CapabilityPayload | null, mode: apiModule.GateMode): apiModule.UnitGate;
1062
1086
  splitBlocker(candidates: readonly (apiModule.ModuleBlocker | undefined)[]): apiModule.UnitBlockers;
1063
1087
  probeKeyOf(error: apiModule.ApiError | undefined): string | null;
1064
- hasEnvSupply(manifest: apiModule.UnitManifest): boolean;
1065
1088
  declarationProblemsOf(subject: string, raw: unknown): readonly string[];
1066
1089
  readDeclaration(subject: string, raw: unknown): apiModule.DeclarationRead;
1067
1090
  WORKBENCH_API_VERSION: 1;
1068
1091
  SUPPORTED_API_VERSIONS: readonly number[];
1069
1092
  DECLARATION_KEYS: readonly string[];
1070
1093
  DECLARATION_REQUIRED_KEYS: readonly string[];
1094
+ hasEnvSupply(manifest: apiModule.UnitManifest): boolean;
1071
1095
  apiGet<T>(route: string, query?: apiModule.Query, options?: apiModule.ApiGetOptions): Promise<apiModule.ApiResponse<T>>;
1072
1096
  apiPost<T>(route: string, body: Record<string, unknown>): Promise<apiModule.ApiResponse<T>>;
1073
1097
  ActivityBlock({ head, children }: apiModule.ActivityBlockProps): JSX.Element;
@@ -1082,6 +1106,11 @@ export declare const kit: {
1082
1106
  CardBoundary: typeof apiModule.CardBoundary;
1083
1107
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
1084
1108
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
1109
+ Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
1110
+ FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
1111
+ FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
1112
+ FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
1113
+ Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
1085
1114
  LongTaskRow(props: apiModule.LongTaskRowProps): JSX.Element;
1086
1115
  Note({ tone, as, role, children }: apiModule.NoteProps): JSX.Element;
1087
1116
  SkeletonRows({ rows }: {
@@ -1096,7 +1125,6 @@ export declare const kit: {
1096
1125
  Rows({ children }: apiModule.RowsProps): JSX.Element;
1097
1126
  Row({ label, value }: apiModule.RowProps): JSX.Element;
1098
1127
  SaveBar({ busy, disabled, labels, onCancel, onSave }: apiModule.SaveBarProps): JSX.Element;
1099
- SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
1100
1128
  searchTextOf(option: apiModule.SelectFieldOption): string;
1101
1129
  defaultSelectFilter(option: apiModule.SelectFieldOption, query: string): boolean;
1102
1130
  filterSelectOptions(options: readonly apiModule.SelectFieldOption[], query: string, filter?: (option: apiModule.SelectFieldOption, query: string) => boolean): readonly apiModule.SelectFieldOption[];
@@ -1104,11 +1132,11 @@ export declare const kit: {
1104
1132
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
1105
1133
  selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
1106
1134
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
1135
+ SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
1136
+ Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
1107
1137
  Stack({ children }: apiModule.StackProps): JSX.Element;
1108
1138
  StateBlock({ title, dot, hint, actions, resolving, children }: apiModule.StateBlockProps): JSX.Element;
1109
1139
  TextField({ invalid, className, ...rest }: apiModule.TextFieldProps): JSX.Element;
1110
- Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
1111
- Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
1112
1140
  IconConversation({ size }: apiModule.IconProps): JSX.Element;
1113
1141
  IconBrandMark({ size }: apiModule.IconProps): JSX.Element;
1114
1142
  IconOpencli({ size }: apiModule.IconProps): JSX.Element;
@@ -1202,6 +1230,15 @@ export declare const kit: {
1202
1230
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
1203
1231
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1204
1232
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1233
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1234
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1235
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1236
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1237
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1238
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1239
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
1240
+ readonly "project.attention.state.running": "\u5728\u8DD1";
1241
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
1205
1242
  readonly "hover.copied": "\u5DF2\u590D\u5236";
1206
1243
  readonly "time.now": "\u521A\u521A";
1207
1244
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -1555,7 +1592,7 @@ export declare const kit: {
1555
1592
  readonly "configSync.emptyProviders": "\u5DE5\u4F5C\u53F0\u8FD8\u6CA1\u6709\u4EFB\u4F55\u6A21\u578B\u4F9B\u5E94\u5546 \u2014\u2014 \u53BB\u300C\u914D\u7F6E\u540C\u6B65\u300D\u4ECE\u67D0\u4E2A profile \u628A llm- \u90A3\u51E0\u884C\u642C\u8FC7\u6765\uFF0C\u6216\u81EA\u5DF1\u53BB\u300C\u6A21\u578B\u300D\u91CC\u914D\u3002";
1556
1593
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1557
1594
  };
1558
- en: Record<"time.now" | "time.ago" | "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.failed" | "env.unit.failedHint" | "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" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "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.notActive" | "panels.market.notUsable" | "panels.market.broken" | "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.swapSlow" | "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.needCommands" | "panels.market.localMark" | "panels.market.localHint" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.workbenchName" | "panels.market.workbenchLocal" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginBroken" | "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.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "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.failureInstalled" | "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.classifying" | "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.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "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.cardBroken" | "panels.cardRetry" | "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" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed", string>;
1595
+ en: Record<"time.now" | "time.ago" | "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.failed" | "env.unit.failedHint" | "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" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "project.attention.warning.one" | "project.attention.warning.other" | "project.attention.running.one" | "project.attention.running.other" | "project.attention.done.one" | "project.attention.done.other" | "project.attention.state.warning" | "project.attention.state.running" | "project.attention.state.done" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "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.notActive" | "panels.market.notUsable" | "panels.market.broken" | "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.swapSlow" | "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.needCommands" | "panels.market.localMark" | "panels.market.localHint" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.workbenchName" | "panels.market.workbenchLocal" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginBroken" | "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.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "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.failureInstalled" | "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.classifying" | "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.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "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.cardBroken" | "panels.cardRetry" | "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" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed", string>;
1559
1596
  };
1560
1597
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
1561
1598
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -1606,6 +1643,15 @@ export declare const kit: {
1606
1643
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
1607
1644
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1608
1645
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1646
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1647
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1648
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1649
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1650
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1651
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1652
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
1653
+ readonly "project.attention.state.running": "\u5728\u8DD1";
1654
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
1609
1655
  readonly "hover.copied": "\u5DF2\u590D\u5236";
1610
1656
  readonly "time.now": "\u521A\u521A";
1611
1657
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -1962,6 +2008,8 @@ export declare const kit: {
1962
2008
  blockerPending(busy: boolean, running: string | null): boolean;
1963
2009
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
1964
2010
  holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
2011
+ firstProblemOf(root: ParentNode): Element | null;
2012
+ revealFirstProblem(root: ParentNode): boolean;
1965
2013
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
1966
2014
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
1967
2015
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -2029,13 +2077,13 @@ export declare const kit: {
2029
2077
  gateOf(capability: apiModule.CapabilityPayload | null, mode: apiModule.GateMode): apiModule.UnitGate;
2030
2078
  splitBlocker(candidates: readonly (apiModule.ModuleBlocker | undefined)[]): apiModule.UnitBlockers;
2031
2079
  probeKeyOf(error: apiModule.ApiError | undefined): string | null;
2032
- hasEnvSupply(manifest: apiModule.UnitManifest): boolean;
2033
2080
  declarationProblemsOf(subject: string, raw: unknown): readonly string[];
2034
2081
  readDeclaration(subject: string, raw: unknown): apiModule.DeclarationRead;
2035
2082
  WORKBENCH_API_VERSION: 1;
2036
2083
  SUPPORTED_API_VERSIONS: readonly number[];
2037
2084
  DECLARATION_KEYS: readonly string[];
2038
2085
  DECLARATION_REQUIRED_KEYS: readonly string[];
2086
+ hasEnvSupply(manifest: apiModule.UnitManifest): boolean;
2039
2087
  apiGet<T>(route: string, query?: apiModule.Query, options?: apiModule.ApiGetOptions): Promise<apiModule.ApiResponse<T>>;
2040
2088
  apiPost<T>(route: string, body: Record<string, unknown>): Promise<apiModule.ApiResponse<T>>;
2041
2089
  ActivityBlock({ head, children }: apiModule.ActivityBlockProps): JSX.Element;
@@ -2050,6 +2098,11 @@ export declare const kit: {
2050
2098
  CardBoundary: typeof apiModule.CardBoundary;
2051
2099
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
2052
2100
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
2101
+ Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
2102
+ FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
2103
+ FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
2104
+ FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
2105
+ Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
2053
2106
  LongTaskRow(props: apiModule.LongTaskRowProps): JSX.Element;
2054
2107
  Note({ tone, as, role, children }: apiModule.NoteProps): JSX.Element;
2055
2108
  SkeletonRows({ rows }: {
@@ -2064,7 +2117,6 @@ export declare const kit: {
2064
2117
  Rows({ children }: apiModule.RowsProps): JSX.Element;
2065
2118
  Row({ label, value }: apiModule.RowProps): JSX.Element;
2066
2119
  SaveBar({ busy, disabled, labels, onCancel, onSave }: apiModule.SaveBarProps): JSX.Element;
2067
- SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
2068
2120
  searchTextOf(option: apiModule.SelectFieldOption): string;
2069
2121
  defaultSelectFilter(option: apiModule.SelectFieldOption, query: string): boolean;
2070
2122
  filterSelectOptions(options: readonly apiModule.SelectFieldOption[], query: string, filter?: (option: apiModule.SelectFieldOption, query: string) => boolean): readonly apiModule.SelectFieldOption[];
@@ -2072,11 +2124,11 @@ export declare const kit: {
2072
2124
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
2073
2125
  selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
2074
2126
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
2127
+ SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
2128
+ Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
2075
2129
  Stack({ children }: apiModule.StackProps): JSX.Element;
2076
2130
  StateBlock({ title, dot, hint, actions, resolving, children }: apiModule.StateBlockProps): JSX.Element;
2077
2131
  TextField({ invalid, className, ...rest }: apiModule.TextFieldProps): JSX.Element;
2078
- Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
2079
- Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
2080
2132
  IconConversation({ size }: apiModule.IconProps): JSX.Element;
2081
2133
  IconBrandMark({ size }: apiModule.IconProps): JSX.Element;
2082
2134
  IconOpencli({ size }: apiModule.IconProps): JSX.Element;
@@ -2170,6 +2222,15 @@ export declare const kit: {
2170
2222
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
2171
2223
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2172
2224
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2225
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2226
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2227
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2228
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2229
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2230
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2231
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
2232
+ readonly "project.attention.state.running": "\u5728\u8DD1";
2233
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
2173
2234
  readonly "hover.copied": "\u5DF2\u590D\u5236";
2174
2235
  readonly "time.now": "\u521A\u521A";
2175
2236
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -2523,7 +2584,7 @@ export declare const kit: {
2523
2584
  readonly "configSync.emptyProviders": "\u5DE5\u4F5C\u53F0\u8FD8\u6CA1\u6709\u4EFB\u4F55\u6A21\u578B\u4F9B\u5E94\u5546 \u2014\u2014 \u53BB\u300C\u914D\u7F6E\u540C\u6B65\u300D\u4ECE\u67D0\u4E2A profile \u628A llm- \u90A3\u51E0\u884C\u642C\u8FC7\u6765\uFF0C\u6216\u81EA\u5DF1\u53BB\u300C\u6A21\u578B\u300D\u91CC\u914D\u3002";
2524
2585
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
2525
2586
  };
2526
- en: Record<"time.now" | "time.ago" | "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.failed" | "env.unit.failedHint" | "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" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "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.notActive" | "panels.market.notUsable" | "panels.market.broken" | "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.swapSlow" | "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.needCommands" | "panels.market.localMark" | "panels.market.localHint" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.workbenchName" | "panels.market.workbenchLocal" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginBroken" | "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.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "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.failureInstalled" | "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.classifying" | "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.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "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.cardBroken" | "panels.cardRetry" | "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" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed", string>;
2587
+ en: Record<"time.now" | "time.ago" | "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.failed" | "env.unit.failedHint" | "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" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "project.attention.warning.one" | "project.attention.warning.other" | "project.attention.running.one" | "project.attention.running.other" | "project.attention.done.one" | "project.attention.done.other" | "project.attention.state.warning" | "project.attention.state.running" | "project.attention.state.done" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "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.notActive" | "panels.market.notUsable" | "panels.market.broken" | "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.swapSlow" | "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.needCommands" | "panels.market.localMark" | "panels.market.localHint" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.workbenchName" | "panels.market.workbenchLocal" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginBroken" | "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.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "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.failureInstalled" | "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.classifying" | "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.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "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.cardBroken" | "panels.cardRetry" | "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" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed", string>;
2527
2588
  };
2528
2589
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
2529
2590
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -2574,6 +2635,15 @@ export declare const kit: {
2574
2635
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
2575
2636
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2576
2637
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2638
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2639
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2640
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2641
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2642
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2643
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2644
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
2645
+ readonly "project.attention.state.running": "\u5728\u8DD1";
2646
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
2577
2647
  readonly "hover.copied": "\u5DF2\u590D\u5236";
2578
2648
  readonly "time.now": "\u521A\u521A";
2579
2649
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -2930,6 +3000,8 @@ export declare const kit: {
2930
3000
  blockerPending(busy: boolean, running: string | null): boolean;
2931
3001
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
2932
3002
  holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
3003
+ firstProblemOf(root: ParentNode): Element | null;
3004
+ revealFirstProblem(root: ParentNode): boolean;
2933
3005
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
2934
3006
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
2935
3007
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -6,5 +6,6 @@ export declare function SelectRichDemo(): JSX.Element;
6
6
  export declare function SelectStateDemo(): JSX.Element;
7
7
  export declare function AppearanceDemo(): JSX.Element;
8
8
  export declare function ChoiceDemo(): JSX.Element;
9
+ export declare function FormActionsDemo(): JSX.Element;
9
10
  export declare function SaveBarDemo(): JSX.Element;
10
11
  export declare function LinkDemo(): JSX.Element;
@@ -1,4 +1,8 @@
1
1
  import type { ReactNode } from '@dsh-workbench/shared';
2
+ export declare function KitNavProvider({ children }: {
3
+ readonly children?: ReactNode;
4
+ }): JSX.Element;
5
+ export declare function KitNav(): JSX.Element | null;
2
6
  export declare function Section({ title, note, children, }: {
3
7
  readonly title: string;
4
8
  readonly note?: string;
@@ -0,0 +1 @@
1
+ export declare function hashTargetsSection(anchor: string, hash: string): boolean;
@@ -1,4 +1,5 @@
1
1
  export declare function RowsSection(): JSX.Element;
2
+ export declare function FormSection(): JSX.Element;
2
3
  export declare function ActivitySection(): JSX.Element;
3
4
  export declare function LongTaskSection(): JSX.Element;
4
5
  export declare function IconSection(): JSX.Element;
@@ -1,10 +1,12 @@
1
1
  import type { Translate, WorkspaceView } from '@dsh-workbench/shared';
2
+ import type { Attention } from '../../../modules/sessions';
2
3
  export interface ProjectSwitcherProps {
3
4
  items: readonly WorkspaceView[];
4
5
  current: WorkspaceView | null;
6
+ attention: Attention;
5
7
  onPick: (workspaceId: string) => void;
6
8
  onAdd: () => void;
7
9
  onRename: (workspaceId: string, title: string) => Promise<boolean>;
8
10
  t: Translate;
9
11
  }
10
- export declare function ProjectSwitcher({ items, current, onPick, onAdd, onRename, t }: ProjectSwitcherProps): JSX.Element;
12
+ export declare function ProjectSwitcher({ items, current, attention, onPick, onAdd, onRename, t }: ProjectSwitcherProps): JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { RenderSlot, Translate } from '@dsh-workbench/shared';
2
+ import type { WorkspaceAttention } from '../../../modules/sessions';
3
+ export interface SidebarHeaderProps {
4
+ readonly collapsed: boolean;
5
+ readonly wide: boolean;
6
+ readonly attention: WorkspaceAttention | null;
7
+ readonly t: Translate;
8
+ readonly renderSlot: RenderSlot;
9
+ readonly onToggle: () => void;
10
+ readonly onSelectPanel: (panelId: string | null) => void;
11
+ }
12
+ export declare function SidebarHeader(props: SidebarHeaderProps): JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { Translate } from '@dsh-workbench/shared';
2
+ import { type WorkspaceAttention } from '../../../modules/sessions';
3
+ export interface WorkspaceAttentionDotProps {
4
+ readonly attention: WorkspaceAttention | null;
5
+ readonly t: Translate;
6
+ readonly variant?: 'inline' | 'overlay';
7
+ readonly tip?: boolean;
8
+ }
9
+ export declare function WorkspaceAttentionDot({ attention, t, variant, tip, }: WorkspaceAttentionDotProps): JSX.Element | null;
@@ -0,0 +1,7 @@
1
+ import type { Translate } from '@dsh-workbench/shared';
2
+ import { type WorkspaceAttention } from '../../../modules/sessions';
3
+ export interface WorkspaceAttentionTagProps {
4
+ readonly attention: WorkspaceAttention | null;
5
+ readonly t: Translate;
6
+ }
7
+ export declare function WorkspaceAttentionTag({ attention, t }: WorkspaceAttentionTagProps): JSX.Element | null;
@@ -0,0 +1,8 @@
1
+ import type { SessionsSnapshot, WorkspaceView } from '@dsh-workbench/shared';
2
+ export interface CurrentWorkspaceInput {
3
+ readonly items: readonly WorkspaceView[];
4
+ readonly sessions: SessionsSnapshot;
5
+ readonly panelActive: boolean;
6
+ readonly storedId: string | null;
7
+ }
8
+ export declare function resolveCurrentWorkspace(input: CurrentWorkspaceInput): WorkspaceView | null;