@dsh-workbench/core 0.2.13 → 0.2.15

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 (42) hide show
  1. package/client.js +700 -124
  2. package/dist/client/client.body.js +700 -124
  3. package/dist/client/index.js +701 -125
  4. package/dist/host/index.js +387 -22
  5. package/dist/types/app/client.d.ts +124 -6
  6. package/dist/types/app/layouts/rightbar/DebugStrip.d.ts +11 -0
  7. package/dist/types/app/layouts/rightbar/kit-preview-controls.d.ts +1 -0
  8. package/dist/types/app/layouts/sidebar/DebugFooterAction.d.ts +13 -0
  9. package/dist/types/app/layouts/sidebar/ProjectSwitcher.d.ts +4 -1
  10. package/dist/types/app/layouts/sidebar/SidebarHeader.d.ts +12 -0
  11. package/dist/types/app/layouts/sidebar/WorkspaceAttentionDot.d.ts +9 -0
  12. package/dist/types/app/layouts/sidebar/WorkspaceAttentionTag.d.ts +7 -0
  13. package/dist/types/app/layouts/sidebar/__tests__/current-workspace.test.d.ts +1 -0
  14. package/dist/types/app/layouts/sidebar/__tests__/debug-ui.test.d.ts +1 -0
  15. package/dist/types/app/layouts/sidebar/current-workspace.d.ts +8 -0
  16. package/dist/types/app/layouts/sidebar/debug-footer.d.ts +4 -0
  17. package/dist/types/app/layouts/sidebar/session-pick.d.ts +2 -1
  18. package/dist/types/app/layouts/sidebar/use-attention.d.ts +16 -0
  19. package/dist/types/app/layouts/sidebar/workspace-items.d.ts +2 -0
  20. package/dist/types/modules/panels/__tests__/diy-harness.d.ts +6 -3
  21. package/dist/types/modules/panels/model/diy-browser.d.ts +3 -0
  22. package/dist/types/modules/panels/model/diy-debug-routes.d.ts +2 -0
  23. package/dist/types/modules/panels/model/diy-debug-routes.test.d.ts +1 -0
  24. package/dist/types/modules/panels/model/diy-debug-tools.d.ts +8 -0
  25. package/dist/types/modules/panels/model/diy-debug-tools.test.d.ts +1 -0
  26. package/dist/types/modules/panels/model/diy-look.d.ts +2 -1
  27. package/dist/types/modules/panels/model/diy-page.d.ts +12 -0
  28. package/dist/types/modules/panels/model/diy-scripts.d.ts +2 -1
  29. package/dist/types/modules/panels/model/diy-tools.d.ts +2 -1
  30. package/dist/types/modules/panels/model/handoff.d.ts +1 -0
  31. package/dist/types/modules/panels/unit.d.ts +7 -2
  32. package/dist/types/modules/sessions/index.d.ts +1 -0
  33. package/dist/types/modules/sessions/model/attention.d.ts +29 -0
  34. package/dist/types/modules/sessions/model/attention.test.d.ts +1 -0
  35. package/dist/types/shared/hooks/use-api-resource.d.ts +1 -0
  36. package/dist/types/shared/hooks/use-diy-debug.d.ts +4 -0
  37. package/package.json +2 -2
  38. package/skills/workbench-module-diy/BUILD.md +1 -1
  39. package/skills/workbench-module-diy/DATASOURCE.md +1 -1
  40. package/skills/workbench-module-diy/KIT.md +22 -5
  41. package/skills/workbench-module-diy/PANEL.md +1 -1
  42. package/skills/workbench-module-diy/REVIEW.md +1 -1
@@ -50,6 +50,7 @@ export declare const kit: {
50
50
  enabled?: boolean;
51
51
  key?: string;
52
52
  fact?: string;
53
+ report?: boolean;
53
54
  }): apiResourceModule.ResourceState<T>;
54
55
  };
55
56
  components: {
@@ -110,6 +111,7 @@ export declare const kit: {
110
111
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
111
112
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
112
113
  Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
114
+ FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
113
115
  FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
114
116
  FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
115
117
  Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
@@ -132,7 +134,7 @@ export declare const kit: {
132
134
  filterSelectOptions(options: readonly apiModule.SelectFieldOption[], query: string, filter?: (option: apiModule.SelectFieldOption, query: string) => boolean): readonly apiModule.SelectFieldOption[];
133
135
  selectCursorValue(shown: readonly apiModule.SelectFieldOption[], cursor: number | null): string | null;
134
136
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
135
- selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
137
+ selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined, revealId?: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
136
138
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
137
139
  SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
138
140
  Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
@@ -160,6 +162,7 @@ export declare const kit: {
160
162
  PANELS_SERVICE: "workbenchPanels";
161
163
  UNITS_SERVICE: "workbenchUnits";
162
164
  PANEL_STATE_SERVICE: "workbenchPanelState";
165
+ DIY_DEBUG_SERVICE: "workbenchDiyDebug";
163
166
  PANEL_LIST_LIMIT: 50;
164
167
  OPENCLI_TIMEOUT_MS: 120000;
165
168
  OPENCLI_MAX_CONCURRENT: 4;
@@ -232,6 +235,15 @@ export declare const kit: {
232
235
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
233
236
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
234
237
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
238
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
239
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
240
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
241
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
242
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
243
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
244
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
245
+ readonly "project.attention.state.running": "\u5728\u8DD1";
246
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
235
247
  readonly "hover.copied": "\u5DF2\u590D\u5236";
236
248
  readonly "time.now": "\u521A\u521A";
237
249
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -584,8 +596,16 @@ export declare const kit: {
584
596
  readonly "configSync.noSource": "\u8FD9\u53F0\u673A\u5668\u4E0A\u53EA\u6709\u5DE5\u4F5C\u53F0\u8FD9\u4E00\u4E2A profile\uFF0C\u6CA1\u6709\u53EF\u540C\u6B65\u7684\u6765\u6E90";
585
597
  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";
586
598
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
599
+ readonly "debug.status": "\u8C03\u8BD5\u4E2D";
600
+ readonly "debug.stalled": "\u8C03\u8BD5\u6401\u7F6E";
601
+ readonly "debug.tip.active": "\u5DE5\u574A\u90A3\u5757\u677F\u4E0A\u6B63\u5728\u8C03\u8BD5 {unit}\uFF08{since}\uFF09\u00B7 \u70B9\u4E00\u4E0B\u56DE\u5230\u90A3\u4E00\u5C4F \u00B7 \u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5";
602
+ readonly "debug.tip.stalled": "\u8C03\u8BD5\u88AB\u6401\u7F6E\u4E86 \u2014\u2014 \u8981\u4F60\u56DE\u5230\u5DE5\u4F5C\u53F0DIY \u90A3\u4E00\u5C4F \u00B7 \u70B9\u4E00\u4E0B\u56DE\u53BB";
603
+ readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
604
+ readonly "debug.strip.active": "\u8C03\u8BD5\u4E2D \u00B7 {unit} \u00B7 {since}";
605
+ readonly "debug.strip.note": "\u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u6682\u505C\u300D";
606
+ readonly "debug.stripStalled": "\u8C03\u8BD5\u6401\u7F6E \u2014\u2014 \u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u7EE7\u7EED\u300D";
587
607
  };
588
- 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>;
608
+ 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" | "debug.status" | "debug.stalled" | "debug.tip.active" | "debug.tip.stalled" | "debug.back" | "debug.strip.active" | "debug.strip.note" | "debug.stripStalled", string>;
589
609
  };
590
610
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
591
611
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -636,6 +656,15 @@ export declare const kit: {
636
656
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
637
657
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
638
658
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
659
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
660
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
661
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
662
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
663
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
664
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
665
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
666
+ readonly "project.attention.state.running": "\u5728\u8DD1";
667
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
639
668
  readonly "hover.copied": "\u5DF2\u590D\u5236";
640
669
  readonly "time.now": "\u521A\u521A";
641
670
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -988,12 +1017,23 @@ export declare const kit: {
988
1017
  readonly "configSync.noSource": "\u8FD9\u53F0\u673A\u5668\u4E0A\u53EA\u6709\u5DE5\u4F5C\u53F0\u8FD9\u4E00\u4E2A profile\uFF0C\u6CA1\u6709\u53EF\u540C\u6B65\u7684\u6765\u6E90";
989
1018
  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";
990
1019
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1020
+ readonly "debug.status": "\u8C03\u8BD5\u4E2D";
1021
+ readonly "debug.stalled": "\u8C03\u8BD5\u6401\u7F6E";
1022
+ readonly "debug.tip.active": "\u5DE5\u574A\u90A3\u5757\u677F\u4E0A\u6B63\u5728\u8C03\u8BD5 {unit}\uFF08{since}\uFF09\u00B7 \u70B9\u4E00\u4E0B\u56DE\u5230\u90A3\u4E00\u5C4F \u00B7 \u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5";
1023
+ readonly "debug.tip.stalled": "\u8C03\u8BD5\u88AB\u6401\u7F6E\u4E86 \u2014\u2014 \u8981\u4F60\u56DE\u5230\u5DE5\u4F5C\u53F0DIY \u90A3\u4E00\u5C4F \u00B7 \u70B9\u4E00\u4E0B\u56DE\u53BB";
1024
+ readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
1025
+ readonly "debug.strip.active": "\u8C03\u8BD5\u4E2D \u00B7 {unit} \u00B7 {since}";
1026
+ readonly "debug.strip.note": "\u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u6682\u505C\u300D";
1027
+ readonly "debug.stripStalled": "\u8C03\u8BD5\u6401\u7F6E \u2014\u2014 \u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u7EE7\u7EED\u300D";
991
1028
  };
992
1029
  blockerPending(busy: boolean, running: string | null): boolean;
993
1030
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
994
1031
  holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
995
1032
  firstProblemOf(root: ParentNode): Element | null;
996
1033
  revealFirstProblem(root: ParentNode): boolean;
1034
+ createDebugStore(): apiModule.DebugStore;
1035
+ debugOwnerText(state: apiModule.DebugState): string;
1036
+ DEBUG_STALE_MS: number;
997
1037
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
998
1038
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
999
1039
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -1088,6 +1128,7 @@ export declare const kit: {
1088
1128
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
1089
1129
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
1090
1130
  Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
1131
+ FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
1091
1132
  FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
1092
1133
  FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
1093
1134
  Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
@@ -1110,7 +1151,7 @@ export declare const kit: {
1110
1151
  filterSelectOptions(options: readonly apiModule.SelectFieldOption[], query: string, filter?: (option: apiModule.SelectFieldOption, query: string) => boolean): readonly apiModule.SelectFieldOption[];
1111
1152
  selectCursorValue(shown: readonly apiModule.SelectFieldOption[], cursor: number | null): string | null;
1112
1153
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
1113
- selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
1154
+ selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined, revealId?: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
1114
1155
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
1115
1156
  SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
1116
1157
  Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
@@ -1138,6 +1179,7 @@ export declare const kit: {
1138
1179
  PANELS_SERVICE: "workbenchPanels";
1139
1180
  UNITS_SERVICE: "workbenchUnits";
1140
1181
  PANEL_STATE_SERVICE: "workbenchPanelState";
1182
+ DIY_DEBUG_SERVICE: "workbenchDiyDebug";
1141
1183
  PANEL_LIST_LIMIT: 50;
1142
1184
  OPENCLI_TIMEOUT_MS: 120000;
1143
1185
  OPENCLI_MAX_CONCURRENT: 4;
@@ -1210,6 +1252,15 @@ export declare const kit: {
1210
1252
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
1211
1253
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1212
1254
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1255
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1256
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1257
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1258
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1259
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1260
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1261
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
1262
+ readonly "project.attention.state.running": "\u5728\u8DD1";
1263
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
1213
1264
  readonly "hover.copied": "\u5DF2\u590D\u5236";
1214
1265
  readonly "time.now": "\u521A\u521A";
1215
1266
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -1562,8 +1613,16 @@ export declare const kit: {
1562
1613
  readonly "configSync.noSource": "\u8FD9\u53F0\u673A\u5668\u4E0A\u53EA\u6709\u5DE5\u4F5C\u53F0\u8FD9\u4E00\u4E2A profile\uFF0C\u6CA1\u6709\u53EF\u540C\u6B65\u7684\u6765\u6E90";
1563
1614
  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";
1564
1615
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1616
+ readonly "debug.status": "\u8C03\u8BD5\u4E2D";
1617
+ readonly "debug.stalled": "\u8C03\u8BD5\u6401\u7F6E";
1618
+ readonly "debug.tip.active": "\u5DE5\u574A\u90A3\u5757\u677F\u4E0A\u6B63\u5728\u8C03\u8BD5 {unit}\uFF08{since}\uFF09\u00B7 \u70B9\u4E00\u4E0B\u56DE\u5230\u90A3\u4E00\u5C4F \u00B7 \u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5";
1619
+ readonly "debug.tip.stalled": "\u8C03\u8BD5\u88AB\u6401\u7F6E\u4E86 \u2014\u2014 \u8981\u4F60\u56DE\u5230\u5DE5\u4F5C\u53F0DIY \u90A3\u4E00\u5C4F \u00B7 \u70B9\u4E00\u4E0B\u56DE\u53BB";
1620
+ readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
1621
+ readonly "debug.strip.active": "\u8C03\u8BD5\u4E2D \u00B7 {unit} \u00B7 {since}";
1622
+ readonly "debug.strip.note": "\u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u6682\u505C\u300D";
1623
+ readonly "debug.stripStalled": "\u8C03\u8BD5\u6401\u7F6E \u2014\u2014 \u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u7EE7\u7EED\u300D";
1565
1624
  };
1566
- 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>;
1625
+ 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" | "debug.status" | "debug.stalled" | "debug.tip.active" | "debug.tip.stalled" | "debug.back" | "debug.strip.active" | "debug.strip.note" | "debug.stripStalled", string>;
1567
1626
  };
1568
1627
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
1569
1628
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -1614,6 +1673,15 @@ export declare const kit: {
1614
1673
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
1615
1674
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1616
1675
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
1676
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1677
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
1678
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1679
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
1680
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1681
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
1682
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
1683
+ readonly "project.attention.state.running": "\u5728\u8DD1";
1684
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
1617
1685
  readonly "hover.copied": "\u5DF2\u590D\u5236";
1618
1686
  readonly "time.now": "\u521A\u521A";
1619
1687
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -1966,12 +2034,23 @@ export declare const kit: {
1966
2034
  readonly "configSync.noSource": "\u8FD9\u53F0\u673A\u5668\u4E0A\u53EA\u6709\u5DE5\u4F5C\u53F0\u8FD9\u4E00\u4E2A profile\uFF0C\u6CA1\u6709\u53EF\u540C\u6B65\u7684\u6765\u6E90";
1967
2035
  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";
1968
2036
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
2037
+ readonly "debug.status": "\u8C03\u8BD5\u4E2D";
2038
+ readonly "debug.stalled": "\u8C03\u8BD5\u6401\u7F6E";
2039
+ readonly "debug.tip.active": "\u5DE5\u574A\u90A3\u5757\u677F\u4E0A\u6B63\u5728\u8C03\u8BD5 {unit}\uFF08{since}\uFF09\u00B7 \u70B9\u4E00\u4E0B\u56DE\u5230\u90A3\u4E00\u5C4F \u00B7 \u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5";
2040
+ readonly "debug.tip.stalled": "\u8C03\u8BD5\u88AB\u6401\u7F6E\u4E86 \u2014\u2014 \u8981\u4F60\u56DE\u5230\u5DE5\u4F5C\u53F0DIY \u90A3\u4E00\u5C4F \u00B7 \u70B9\u4E00\u4E0B\u56DE\u53BB";
2041
+ readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
2042
+ readonly "debug.strip.active": "\u8C03\u8BD5\u4E2D \u00B7 {unit} \u00B7 {since}";
2043
+ readonly "debug.strip.note": "\u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u6682\u505C\u300D";
2044
+ readonly "debug.stripStalled": "\u8C03\u8BD5\u6401\u7F6E \u2014\u2014 \u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u7EE7\u7EED\u300D";
1969
2045
  };
1970
2046
  blockerPending(busy: boolean, running: string | null): boolean;
1971
2047
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
1972
2048
  holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
1973
2049
  firstProblemOf(root: ParentNode): Element | null;
1974
2050
  revealFirstProblem(root: ParentNode): boolean;
2051
+ createDebugStore(): apiModule.DebugStore;
2052
+ debugOwnerText(state: apiModule.DebugState): string;
2053
+ DEBUG_STALE_MS: number;
1975
2054
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
1976
2055
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
1977
2056
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -2061,6 +2140,7 @@ export declare const kit: {
2061
2140
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
2062
2141
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
2063
2142
  Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
2143
+ FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
2064
2144
  FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
2065
2145
  FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
2066
2146
  Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
@@ -2083,7 +2163,7 @@ export declare const kit: {
2083
2163
  filterSelectOptions(options: readonly apiModule.SelectFieldOption[], query: string, filter?: (option: apiModule.SelectFieldOption, query: string) => boolean): readonly apiModule.SelectFieldOption[];
2084
2164
  selectCursorValue(shown: readonly apiModule.SelectFieldOption[], cursor: number | null): string | null;
2085
2165
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
2086
- selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
2166
+ selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined, revealId?: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
2087
2167
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
2088
2168
  SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
2089
2169
  Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
@@ -2111,6 +2191,7 @@ export declare const kit: {
2111
2191
  PANELS_SERVICE: "workbenchPanels";
2112
2192
  UNITS_SERVICE: "workbenchUnits";
2113
2193
  PANEL_STATE_SERVICE: "workbenchPanelState";
2194
+ DIY_DEBUG_SERVICE: "workbenchDiyDebug";
2114
2195
  PANEL_LIST_LIMIT: 50;
2115
2196
  OPENCLI_TIMEOUT_MS: 120000;
2116
2197
  OPENCLI_MAX_CONCURRENT: 4;
@@ -2183,6 +2264,15 @@ export declare const kit: {
2183
2264
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
2184
2265
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2185
2266
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2267
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2268
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2269
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2270
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2271
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2272
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2273
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
2274
+ readonly "project.attention.state.running": "\u5728\u8DD1";
2275
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
2186
2276
  readonly "hover.copied": "\u5DF2\u590D\u5236";
2187
2277
  readonly "time.now": "\u521A\u521A";
2188
2278
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -2535,8 +2625,16 @@ export declare const kit: {
2535
2625
  readonly "configSync.noSource": "\u8FD9\u53F0\u673A\u5668\u4E0A\u53EA\u6709\u5DE5\u4F5C\u53F0\u8FD9\u4E00\u4E2A profile\uFF0C\u6CA1\u6709\u53EF\u540C\u6B65\u7684\u6765\u6E90";
2536
2626
  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";
2537
2627
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
2628
+ readonly "debug.status": "\u8C03\u8BD5\u4E2D";
2629
+ readonly "debug.stalled": "\u8C03\u8BD5\u6401\u7F6E";
2630
+ readonly "debug.tip.active": "\u5DE5\u574A\u90A3\u5757\u677F\u4E0A\u6B63\u5728\u8C03\u8BD5 {unit}\uFF08{since}\uFF09\u00B7 \u70B9\u4E00\u4E0B\u56DE\u5230\u90A3\u4E00\u5C4F \u00B7 \u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5";
2631
+ readonly "debug.tip.stalled": "\u8C03\u8BD5\u88AB\u6401\u7F6E\u4E86 \u2014\u2014 \u8981\u4F60\u56DE\u5230\u5DE5\u4F5C\u53F0DIY \u90A3\u4E00\u5C4F \u00B7 \u70B9\u4E00\u4E0B\u56DE\u53BB";
2632
+ readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
2633
+ readonly "debug.strip.active": "\u8C03\u8BD5\u4E2D \u00B7 {unit} \u00B7 {since}";
2634
+ readonly "debug.strip.note": "\u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u6682\u505C\u300D";
2635
+ readonly "debug.stripStalled": "\u8C03\u8BD5\u6401\u7F6E \u2014\u2014 \u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u7EE7\u7EED\u300D";
2538
2636
  };
2539
- 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>;
2637
+ 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" | "debug.status" | "debug.stalled" | "debug.tip.active" | "debug.tip.stalled" | "debug.back" | "debug.strip.active" | "debug.strip.note" | "debug.stripStalled", string>;
2540
2638
  };
2541
2639
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
2542
2640
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -2587,6 +2685,15 @@ export declare const kit: {
2587
2685
  readonly "status.completed": "\u5DF2\u5B8C\u6210";
2588
2686
  readonly "status.subagentsRunning.one": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2589
2687
  readonly "status.subagentsRunning.other": "{n} \u4E2A\u5B50\u4EE3\u7406\u8FD0\u884C\u4E2D";
2688
+ readonly "project.attention.warning.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2689
+ readonly "project.attention.warning.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u7B49\u4F60\u70B9\u5934";
2690
+ readonly "project.attention.running.one": "1 \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2691
+ readonly "project.attention.running.other": "{n} \u4E2A\u4F1A\u8BDD\u5728\u8DD1";
2692
+ readonly "project.attention.done.one": "1 \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2693
+ readonly "project.attention.done.other": "{n} \u4E2A\u4F1A\u8BDD\u8DD1\u5B8C\u6CA1\u770B";
2694
+ readonly "project.attention.state.warning": "\u5F85\u5BA1\u6279";
2695
+ readonly "project.attention.state.running": "\u5728\u8DD1";
2696
+ readonly "project.attention.state.done": "\u65B0\u6D88\u606F";
2590
2697
  readonly "hover.copied": "\u5DF2\u590D\u5236";
2591
2698
  readonly "time.now": "\u521A\u521A";
2592
2699
  readonly "time.minutes": "{n} \u5206\u949F\u524D";
@@ -2939,12 +3046,23 @@ export declare const kit: {
2939
3046
  readonly "configSync.noSource": "\u8FD9\u53F0\u673A\u5668\u4E0A\u53EA\u6709\u5DE5\u4F5C\u53F0\u8FD9\u4E00\u4E2A profile\uFF0C\u6CA1\u6709\u53EF\u540C\u6B65\u7684\u6765\u6E90";
2940
3047
  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";
2941
3048
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
3049
+ readonly "debug.status": "\u8C03\u8BD5\u4E2D";
3050
+ readonly "debug.stalled": "\u8C03\u8BD5\u6401\u7F6E";
3051
+ readonly "debug.tip.active": "\u5DE5\u574A\u90A3\u5757\u677F\u4E0A\u6B63\u5728\u8C03\u8BD5 {unit}\uFF08{since}\uFF09\u00B7 \u70B9\u4E00\u4E0B\u56DE\u5230\u90A3\u4E00\u5C4F \u00B7 \u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5";
3052
+ readonly "debug.tip.stalled": "\u8C03\u8BD5\u88AB\u6401\u7F6E\u4E86 \u2014\u2014 \u8981\u4F60\u56DE\u5230\u5DE5\u4F5C\u53F0DIY \u90A3\u4E00\u5C4F \u00B7 \u70B9\u4E00\u4E0B\u56DE\u53BB";
3053
+ readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
3054
+ readonly "debug.strip.active": "\u8C03\u8BD5\u4E2D \u00B7 {unit} \u00B7 {since}";
3055
+ readonly "debug.strip.note": "\u8981\u505C\u5C31\u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u6682\u505C\u300D";
3056
+ readonly "debug.stripStalled": "\u8C03\u8BD5\u6401\u7F6E \u2014\u2014 \u5BF9 agent \u8BF4\u4E00\u53E5\u300C\u7EE7\u7EED\u300D";
2942
3057
  };
2943
3058
  blockerPending(busy: boolean, running: string | null): boolean;
2944
3059
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
2945
3060
  holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
2946
3061
  firstProblemOf(root: ParentNode): Element | null;
2947
3062
  revealFirstProblem(root: ParentNode): boolean;
3063
+ createDebugStore(): apiModule.DebugStore;
3064
+ debugOwnerText(state: apiModule.DebugState): string;
3065
+ DEBUG_STALE_MS: number;
2948
3066
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
2949
3067
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
2950
3068
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -0,0 +1,11 @@
1
+ import type { DebugState, Translate } from '@dsh-workbench/shared';
2
+ export interface DebugStripProps {
3
+ readonly board: string | null;
4
+ readonly t: Translate;
5
+ }
6
+ export interface DebugStripView {
7
+ readonly text: string;
8
+ readonly stalled: boolean;
9
+ }
10
+ export declare function debugStripView(state: DebugState, t: Translate): DebugStripView;
11
+ export declare function DebugStrip({ board, t }: DebugStripProps): JSX.Element | null;
@@ -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;
@@ -0,0 +1,13 @@
1
+ import type { DebugState, Translate } from '@dsh-workbench/shared';
2
+ export interface DebugFooterActionProps {
3
+ readonly wide?: boolean | undefined;
4
+ readonly t: Translate;
5
+ readonly goWorkshop?: (() => void) | undefined;
6
+ }
7
+ export interface DebugFooterView {
8
+ readonly label: string;
9
+ readonly tip: string;
10
+ readonly stalled: boolean;
11
+ }
12
+ export declare function debugFooterView(state: DebugState, t: Translate): DebugFooterView;
13
+ export declare function DebugFooterAction({ wide, t, goWorkshop }: DebugFooterActionProps): JSX.Element | null;
@@ -1,10 +1,13 @@
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;
7
+ compact?: boolean;
5
8
  onPick: (workspaceId: string) => void;
6
9
  onAdd: () => void;
7
10
  onRename: (workspaceId: string, title: string) => Promise<boolean>;
8
11
  t: Translate;
9
12
  }
10
- export declare function ProjectSwitcher({ items, current, onPick, onAdd, onRename, t }: ProjectSwitcherProps): JSX.Element;
13
+ export declare function ProjectSwitcher({ items, current, attention, compact, 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;