@dsh-workbench/core 0.3.4 → 0.3.6

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 (51) hide show
  1. package/client.js +1362 -85
  2. package/dist/client/client.body.js +1362 -85
  3. package/dist/client/index.js +1362 -85
  4. package/dist/host/index.js +1019 -869
  5. package/dist/types/app/client.d.ts +234 -60
  6. package/dist/types/modules/panels/client.d.ts +1 -1
  7. package/dist/types/modules/panels/model/approval.d.ts +8 -0
  8. package/dist/types/modules/panels/model/diy-context.d.ts +4 -5
  9. package/dist/types/modules/panels/model/diy-observers.d.ts +2 -2
  10. package/dist/types/modules/panels/model/diy-page.d.ts +1 -1
  11. package/dist/types/modules/panels/model/long-task-tools.d.ts +15 -0
  12. package/dist/types/modules/panels/model/long-task-tools.test.d.ts +1 -0
  13. package/dist/types/modules/panels/unit.d.ts +6 -5
  14. package/dist/types/shared/api/context-chips.d.ts +20 -0
  15. package/dist/types/shared/api/host/approval-call.d.ts +16 -0
  16. package/dist/types/shared/api/host/diy-components.d.ts +17 -6
  17. package/dist/types/shared/api/host/diy-workshop.d.ts +0 -3
  18. package/dist/types/shared/api/host/long-task-notice.d.ts +30 -0
  19. package/dist/types/shared/api/host/mount-units.d.ts +3 -1
  20. package/dist/types/shared/api/host/preset-scope.d.ts +16 -0
  21. package/dist/types/shared/api/host/tool-scope.d.ts +6 -2
  22. package/dist/types/shared/api/host/workshop-root.d.ts +7 -0
  23. package/dist/types/shared/components/BlockerState.d.ts +12 -0
  24. package/dist/types/shared/components/PanelFoot.d.ts +9 -0
  25. package/dist/types/shared/components/Tip.d.ts +8 -0
  26. package/dist/types/shared/hooks/bundle-queries.d.ts +12 -0
  27. package/dist/types/shared/hooks/fact-transports.d.ts +4 -0
  28. package/dist/types/shared/hooks/panel-state-report.d.ts +12 -0
  29. package/dist/types/shared/hooks/use-api-resource.d.ts +22 -0
  30. package/dist/types/shared/hooks/use-blocker-actions.d.ts +8 -0
  31. package/dist/types/shared/hooks/use-capabilities.d.ts +55 -0
  32. package/dist/types/shared/hooks/use-capability-gate.d.ts +16 -0
  33. package/dist/types/shared/hooks/use-card-summary.d.ts +7 -0
  34. package/dist/types/shared/hooks/use-diy-debug.d.ts +13 -0
  35. package/dist/types/shared/hooks/use-diy-record.d.ts +13 -0
  36. package/dist/types/shared/hooks/use-facts.d.ts +10 -0
  37. package/dist/types/shared/hooks/use-host-write.d.ts +12 -0
  38. package/dist/types/shared/hooks/use-long-task.d.ts +15 -1
  39. package/dist/types/shared/hooks/use-unit-board.d.ts +17 -0
  40. package/dist/types/shared/hooks/use-visible-busy.d.ts +17 -0
  41. package/package.json +2 -2
  42. package/skills/workbench-module-diy/DATASOURCE.md +2 -2
  43. package/skills/workbench-module-diy/FAMILY.md +5 -4
  44. package/skills/workbench-module-diy/KIT.md +105 -100
  45. package/skills/workbench-module-diy/PANEL.md +19 -11
  46. package/skills/workbench-module-diy/REVIEW.md +4 -4
  47. package/skills/workbench-module-diy/SKILL.md +5 -4
  48. package/skills/workbench-module-diy/TOOLING.md +7 -3
  49. package/skills/workbench-module-diy/TOOLS.md +20 -2
  50. package/skills/workbench-module-diy/WIRING.md +2 -1
  51. package/skills/workbench-module-diy/HOOKS.md +0 -95
@@ -78,14 +78,21 @@ export declare const kit: {
78
78
  writeRoute(channel: apiModule.WriteChannel, resource: string): string;
79
79
  writeOutcomeOf<T>(response: apiModule.ApiResponse<T> | null, networkText: string): apiModule.WriteOutcome<T>;
80
80
  runsRouteOf(unit: string): string;
81
+ stopRouteOf(unit: string): string;
81
82
  longTaskPollMs(live: boolean, override?: number | undefined): number;
82
83
  longTaskRunsOf<T>(state: {
83
84
  readonly phase?: string | undefined;
84
85
  readonly value?: apiModule.LongTasksPayload | undefined;
85
86
  }): readonly T[];
86
87
  longTaskDot(status: apiModule.LongTaskStatus): "ongoing" | "done" | "error" | "idle";
88
+ longTaskStopStage(state: {
89
+ readonly armed: boolean;
90
+ readonly busy: boolean;
91
+ }): apiModule.LongTaskStopStage;
92
+ longTaskStopPress(stage: apiModule.LongTaskStopStage): "arm" | "fire" | "ignore";
87
93
  LONG_TASK_POLL_MS: 1500;
88
94
  LONG_TASK_IDLE_MS: 10000;
95
+ LONG_TASK_STOP_ARM_MS: 3000;
89
96
  gateOf(capability: apiModule.CapabilityPayload | null, mode: apiModule.GateMode): apiModule.UnitGate;
90
97
  splitBlocker(candidates: readonly (apiModule.ModuleBlocker | undefined)[]): apiModule.UnitBlockers;
91
98
  probeKeyOf(error: apiModule.ApiError | undefined): string | null;
@@ -111,7 +118,35 @@ export declare const kit: {
111
118
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
112
119
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
113
120
  Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
121
+ Form(props: apiModule.FormProps): JSX.Element;
114
122
  FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
123
+ visibleFieldsOf(fields: readonly apiModule.FormField[]): readonly apiModule.FormField[];
124
+ duplicateKeysOf(fields: readonly apiModule.FormField[]): readonly string[];
125
+ reportDuplicateKeys(fields: readonly apiModule.FormField[]): void;
126
+ formValuesOf(fields: readonly apiModule.FormField[]): Readonly<Record<string, apiModule.FormValue>>;
127
+ formProblemsOf(fields: readonly apiModule.FormField[], show: boolean): Readonly<Record<string, apiModule.ReactNode | undefined>>;
128
+ formFirstProblemOf(fields: readonly apiModule.FormField[], problems: Readonly<Record<string, apiModule.ReactNode | undefined>>): apiModule.FormField | undefined;
129
+ formSubmitOf(fields: readonly apiModule.FormField[]): apiModule.FormSubmitOutcome;
130
+ formActionsOf(args: {
131
+ readonly extra: readonly apiModule.FormAction[] | undefined;
132
+ readonly cancel: {
133
+ readonly label: apiModule.ReactNode;
134
+ readonly onClick: () => void;
135
+ } | undefined;
136
+ readonly submit: {
137
+ readonly label: apiModule.ReactNode;
138
+ readonly busyLabel?: apiModule.ReactNode | undefined;
139
+ };
140
+ readonly busy: boolean;
141
+ readonly disabled: boolean;
142
+ readonly onSubmitClick: () => void;
143
+ }): readonly apiModule.FormAction[];
144
+ formRowsOf(args: {
145
+ readonly fields: readonly apiModule.FormField[];
146
+ readonly problems: Readonly<Record<string, apiModule.ReactNode | undefined>>;
147
+ readonly showProblem: boolean;
148
+ readonly busy: boolean;
149
+ }): readonly apiModule.ReactNode[];
115
150
  FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
116
151
  FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
117
152
  Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
@@ -136,6 +171,26 @@ export declare const kit: {
136
171
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
137
172
  selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined, revealId?: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
138
173
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
174
+ selectTriggerNode(args: {
175
+ readonly id: string | undefined;
176
+ readonly className: string;
177
+ readonly disabled: boolean;
178
+ readonly invalid: boolean;
179
+ readonly open: boolean;
180
+ readonly ariaLabel: string | undefined;
181
+ readonly title: string | undefined;
182
+ readonly icon: apiModule.ReactNode | undefined;
183
+ readonly value: apiModule.ReactNode;
184
+ readonly iconOnly: boolean;
185
+ readonly onOpen: () => void;
186
+ }): apiModule.ReactNode;
187
+ selectLoadingNode(args: {
188
+ readonly id: string | undefined;
189
+ readonly className: string;
190
+ readonly invalid: boolean;
191
+ readonly ariaLabel: string | undefined;
192
+ readonly loadingText: string | undefined;
193
+ }): apiModule.ReactNode;
139
194
  SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
140
195
  Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
141
196
  Stack({ children }: apiModule.StackProps): JSX.Element;
@@ -168,6 +223,7 @@ export declare const kit: {
168
223
  PANEL_STATE_SERVICE: "workbenchPanelState";
169
224
  DIY_DEBUG_SERVICE: "workbenchDiyDebug";
170
225
  DIY_RECORD_SERVICE: "workbenchDiyRecord";
226
+ SESSION_PROJECTIONS_SERVICE: "sessionProjections";
171
227
  PANEL_LIST_LIMIT: 50;
172
228
  OPENCLI_TIMEOUT_MS: 120000;
173
229
  OPENCLI_MAX_CONCURRENT: 4;
@@ -604,20 +660,19 @@ export declare const kit: {
604
660
  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";
605
661
  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";
606
662
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
607
- readonly "debug.status": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
608
- readonly "debug.status.trouble": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u5F02\u5E38";
609
- readonly "debug.stalled": "\u5DE5\u4F5C\u53F0 DIY \u8C03\u8BD5\u6682\u505C";
663
+ readonly "debug.workspace": "\u8FD9\u4E2A\u5DE5\u4F5C\u533A";
664
+ readonly "debug.status": "\u300C{title}\u300D\u8C03\u8BD5\u4E2D";
665
+ readonly "debug.status.trouble": "\u8C03\u8BD5\u8981\u4F60\u770B\u4E00\u773C\uFF08{title}\uFF09";
666
+ readonly "debug.stalled": "\u8C03\u8BD5\u5DF2\u6682\u505C\uFF08{title}\uFF09";
610
667
  readonly "debug.act.pause": "\u6682\u505C\u8C03\u8BD5";
611
668
  readonly "debug.act.resume": "\u7EE7\u7EED\u8C03\u8BD5";
612
669
  readonly "debug.act.stop": "\u7ED3\u675F\u8C03\u8BD5";
613
670
  readonly "debug.act.stop.ask": "\u786E\u8BA4\u7ED3\u675F";
614
- readonly "debug.card.here.title": "\u5F53\u524D\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
671
+ readonly "debug.card.here.title": "\u6B63\u5728\u8C03\u8BD5\u300C{title}\u300D";
615
672
  readonly "debug.card.here.note": "\u8BF7\u52FF\u5207\u6362\u5DE5\u4F5C\u533A\u548C\u64CD\u4F5C\u9762\u677F";
616
- readonly "debug.card.away.title": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
617
- readonly "debug.card.away.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0 DIY \u5DE5\u4F5C\u533A";
673
+ readonly "debug.card.away.note": "\u8BF7\u5207\u56DE\u300C{title}\u300D\u90A3\u4E00\u5C4F";
618
674
  readonly "debug.card.paused.note": "\u5DF2\u6682\u505C";
619
- readonly "debug.card.hidden.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0\u9762\u677F";
620
- readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
675
+ readonly "debug.card.hidden.note": "\u8BF7\u5207\u56DE\u5DE5\u4F5C\u53F0\u9762\u677F";
621
676
  readonly "record.waiting": "\u53D6\u8BC1\u4EA4\u63A5 \u00B7 \u7B49\u4F60\u51FA\u624B";
622
677
  readonly "record.waiting.note": "\u8BF7\u5728\u90A3\u4E00\u9875\u6309\u300C\u5F00\u59CB\u5F55\u5236\u300D\uFF0C\u505A\u5B8C\u6309\u300C\u7ED3\u675F\u5F55\u5236\u300D\uFF08\u5F55\u5B8C\u4E0D\u66FF\u4F60\u5207\u56DE\u6765\uFF09";
623
678
  readonly "record.recording": "\u5F55\u5236\u4E2D";
@@ -632,8 +687,10 @@ export declare const kit: {
632
687
  readonly "approval.record.noUrl": "\u6CA1\u7ED9\u7AD9\u70B9\u5730\u5740\uFF08\u8FD9\u6B21\u4F1A\u88AB\u5F53\u573A\u62D2\uFF09";
633
688
  readonly "approval.record.oneAction": "\u4E00\u6B21\u64CD\u4F5C";
634
689
  readonly "approval.record.noSwitch": "\u5F55\u5B8C\u4E0D\u4F1A\u66FF\u4F60\u5207\u56DE\u6765\uFF08\u5DE6\u680F\u5E95\u90E8\u4F1A\u4EAE\u4E00\u6761\u72B6\u6001\uFF09";
690
+ readonly "approval.longTask.what": "\u8981\u505C\u7684\u90A3\u4E00\u8D9F";
691
+ readonly "approval.longTask.signal": "\u505C\u4E86\u53EA\u662F\u8BA9\u5916\u58F3\u53D1\u51FA\u4E2D\u65AD\u4FE1\u53F7 \u2014\u2014 \u5E73\u53F0\u4FA7\u90A3\u8D9F\u6D3B\u513F\u7684\u6536\u5C3E\u770B\u6A21\u5757\u81EA\u5DF1";
635
692
  };
636
- 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.hintJoin" | "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.hasProblem" | "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.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.title" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "debug.back" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch", string>;
693
+ 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.hintJoin" | "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.hasProblem" | "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.workspace" | "debug.status" | "debug.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch" | "approval.longTask.what" | "approval.longTask.signal", string>;
637
694
  };
638
695
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
639
696
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -1047,20 +1104,19 @@ export declare const kit: {
1047
1104
  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";
1048
1105
  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";
1049
1106
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1050
- readonly "debug.status": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
1051
- readonly "debug.status.trouble": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u5F02\u5E38";
1052
- readonly "debug.stalled": "\u5DE5\u4F5C\u53F0 DIY \u8C03\u8BD5\u6682\u505C";
1107
+ readonly "debug.workspace": "\u8FD9\u4E2A\u5DE5\u4F5C\u533A";
1108
+ readonly "debug.status": "\u300C{title}\u300D\u8C03\u8BD5\u4E2D";
1109
+ readonly "debug.status.trouble": "\u8C03\u8BD5\u8981\u4F60\u770B\u4E00\u773C\uFF08{title}\uFF09";
1110
+ readonly "debug.stalled": "\u8C03\u8BD5\u5DF2\u6682\u505C\uFF08{title}\uFF09";
1053
1111
  readonly "debug.act.pause": "\u6682\u505C\u8C03\u8BD5";
1054
1112
  readonly "debug.act.resume": "\u7EE7\u7EED\u8C03\u8BD5";
1055
1113
  readonly "debug.act.stop": "\u7ED3\u675F\u8C03\u8BD5";
1056
1114
  readonly "debug.act.stop.ask": "\u786E\u8BA4\u7ED3\u675F";
1057
- readonly "debug.card.here.title": "\u5F53\u524D\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
1115
+ readonly "debug.card.here.title": "\u6B63\u5728\u8C03\u8BD5\u300C{title}\u300D";
1058
1116
  readonly "debug.card.here.note": "\u8BF7\u52FF\u5207\u6362\u5DE5\u4F5C\u533A\u548C\u64CD\u4F5C\u9762\u677F";
1059
- readonly "debug.card.away.title": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
1060
- readonly "debug.card.away.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0 DIY \u5DE5\u4F5C\u533A";
1117
+ readonly "debug.card.away.note": "\u8BF7\u5207\u56DE\u300C{title}\u300D\u90A3\u4E00\u5C4F";
1061
1118
  readonly "debug.card.paused.note": "\u5DF2\u6682\u505C";
1062
- readonly "debug.card.hidden.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0\u9762\u677F";
1063
- readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
1119
+ readonly "debug.card.hidden.note": "\u8BF7\u5207\u56DE\u5DE5\u4F5C\u53F0\u9762\u677F";
1064
1120
  readonly "record.waiting": "\u53D6\u8BC1\u4EA4\u63A5 \u00B7 \u7B49\u4F60\u51FA\u624B";
1065
1121
  readonly "record.waiting.note": "\u8BF7\u5728\u90A3\u4E00\u9875\u6309\u300C\u5F00\u59CB\u5F55\u5236\u300D\uFF0C\u505A\u5B8C\u6309\u300C\u7ED3\u675F\u5F55\u5236\u300D\uFF08\u5F55\u5B8C\u4E0D\u66FF\u4F60\u5207\u56DE\u6765\uFF09";
1066
1122
  readonly "record.recording": "\u5F55\u5236\u4E2D";
@@ -1075,15 +1131,15 @@ export declare const kit: {
1075
1131
  readonly "approval.record.noUrl": "\u6CA1\u7ED9\u7AD9\u70B9\u5730\u5740\uFF08\u8FD9\u6B21\u4F1A\u88AB\u5F53\u573A\u62D2\uFF09";
1076
1132
  readonly "approval.record.oneAction": "\u4E00\u6B21\u64CD\u4F5C";
1077
1133
  readonly "approval.record.noSwitch": "\u5F55\u5B8C\u4E0D\u4F1A\u66FF\u4F60\u5207\u56DE\u6765\uFF08\u5DE6\u680F\u5E95\u90E8\u4F1A\u4EAE\u4E00\u6761\u72B6\u6001\uFF09";
1134
+ readonly "approval.longTask.what": "\u8981\u505C\u7684\u90A3\u4E00\u8D9F";
1135
+ readonly "approval.longTask.signal": "\u505C\u4E86\u53EA\u662F\u8BA9\u5916\u58F3\u53D1\u51FA\u4E2D\u65AD\u4FE1\u53F7 \u2014\u2014 \u5E73\u53F0\u4FA7\u90A3\u8D9F\u6D3B\u513F\u7684\u6536\u5C3E\u770B\u6A21\u5757\u81EA\u5DF1";
1078
1136
  };
1079
1137
  blockerPending(busy: boolean, running: string | null): boolean;
1080
1138
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
1081
- holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
1082
- firstProblemOf(root: ParentNode): Element | null;
1083
- revealFirstProblem(root: ParentNode): boolean;
1084
1139
  insideWorkshop(root: string, target: string): boolean;
1085
1140
  boardFactOf(probe: apiModule.BoardProbe, workshop: string | null): apiModule.BoardFactState;
1086
1141
  boardSituation(probe: apiModule.BoardProbe, workshop: string | null): apiModule.BoardSituation;
1142
+ holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
1087
1143
  parseDebugIntent(value: unknown): apiModule.DebugIntent | null;
1088
1144
  createDebugStore(): apiModule.DebugStore;
1089
1145
  debugOwnerText(state: apiModule.DebugState): string;
@@ -1092,6 +1148,8 @@ export declare const kit: {
1092
1148
  createRecordStore(): apiModule.RecordStore;
1093
1149
  recordOwnerText(state: apiModule.RecordState): string;
1094
1150
  RECORD_STALE_MS: number;
1151
+ firstProblemOf(root: ParentNode): Element | null;
1152
+ revealFirstProblem(root: ParentNode): boolean;
1095
1153
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
1096
1154
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
1097
1155
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -1153,14 +1211,21 @@ export declare const kit: {
1153
1211
  writeRoute(channel: apiModule.WriteChannel, resource: string): string;
1154
1212
  writeOutcomeOf<T>(response: apiModule.ApiResponse<T> | null, networkText: string): apiModule.WriteOutcome<T>;
1155
1213
  runsRouteOf(unit: string): string;
1214
+ stopRouteOf(unit: string): string;
1156
1215
  longTaskPollMs(live: boolean, override?: number | undefined): number;
1157
1216
  longTaskRunsOf<T>(state: {
1158
1217
  readonly phase?: string | undefined;
1159
1218
  readonly value?: apiModule.LongTasksPayload | undefined;
1160
1219
  }): readonly T[];
1161
1220
  longTaskDot(status: apiModule.LongTaskStatus): "ongoing" | "done" | "error" | "idle";
1221
+ longTaskStopStage(state: {
1222
+ readonly armed: boolean;
1223
+ readonly busy: boolean;
1224
+ }): apiModule.LongTaskStopStage;
1225
+ longTaskStopPress(stage: apiModule.LongTaskStopStage): "arm" | "fire" | "ignore";
1162
1226
  LONG_TASK_POLL_MS: 1500;
1163
1227
  LONG_TASK_IDLE_MS: 10000;
1228
+ LONG_TASK_STOP_ARM_MS: 3000;
1164
1229
  gateOf(capability: apiModule.CapabilityPayload | null, mode: apiModule.GateMode): apiModule.UnitGate;
1165
1230
  splitBlocker(candidates: readonly (apiModule.ModuleBlocker | undefined)[]): apiModule.UnitBlockers;
1166
1231
  probeKeyOf(error: apiModule.ApiError | undefined): string | null;
@@ -1186,7 +1251,35 @@ export declare const kit: {
1186
1251
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
1187
1252
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
1188
1253
  Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
1254
+ Form(props: apiModule.FormProps): JSX.Element;
1189
1255
  FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
1256
+ visibleFieldsOf(fields: readonly apiModule.FormField[]): readonly apiModule.FormField[];
1257
+ duplicateKeysOf(fields: readonly apiModule.FormField[]): readonly string[];
1258
+ reportDuplicateKeys(fields: readonly apiModule.FormField[]): void;
1259
+ formValuesOf(fields: readonly apiModule.FormField[]): Readonly<Record<string, apiModule.FormValue>>;
1260
+ formProblemsOf(fields: readonly apiModule.FormField[], show: boolean): Readonly<Record<string, apiModule.ReactNode | undefined>>;
1261
+ formFirstProblemOf(fields: readonly apiModule.FormField[], problems: Readonly<Record<string, apiModule.ReactNode | undefined>>): apiModule.FormField | undefined;
1262
+ formSubmitOf(fields: readonly apiModule.FormField[]): apiModule.FormSubmitOutcome;
1263
+ formActionsOf(args: {
1264
+ readonly extra: readonly apiModule.FormAction[] | undefined;
1265
+ readonly cancel: {
1266
+ readonly label: apiModule.ReactNode;
1267
+ readonly onClick: () => void;
1268
+ } | undefined;
1269
+ readonly submit: {
1270
+ readonly label: apiModule.ReactNode;
1271
+ readonly busyLabel?: apiModule.ReactNode | undefined;
1272
+ };
1273
+ readonly busy: boolean;
1274
+ readonly disabled: boolean;
1275
+ readonly onSubmitClick: () => void;
1276
+ }): readonly apiModule.FormAction[];
1277
+ formRowsOf(args: {
1278
+ readonly fields: readonly apiModule.FormField[];
1279
+ readonly problems: Readonly<Record<string, apiModule.ReactNode | undefined>>;
1280
+ readonly showProblem: boolean;
1281
+ readonly busy: boolean;
1282
+ }): readonly apiModule.ReactNode[];
1190
1283
  FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
1191
1284
  FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
1192
1285
  Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
@@ -1211,6 +1304,26 @@ export declare const kit: {
1211
1304
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
1212
1305
  selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined, revealId?: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
1213
1306
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
1307
+ selectTriggerNode(args: {
1308
+ readonly id: string | undefined;
1309
+ readonly className: string;
1310
+ readonly disabled: boolean;
1311
+ readonly invalid: boolean;
1312
+ readonly open: boolean;
1313
+ readonly ariaLabel: string | undefined;
1314
+ readonly title: string | undefined;
1315
+ readonly icon: apiModule.ReactNode | undefined;
1316
+ readonly value: apiModule.ReactNode;
1317
+ readonly iconOnly: boolean;
1318
+ readonly onOpen: () => void;
1319
+ }): apiModule.ReactNode;
1320
+ selectLoadingNode(args: {
1321
+ readonly id: string | undefined;
1322
+ readonly className: string;
1323
+ readonly invalid: boolean;
1324
+ readonly ariaLabel: string | undefined;
1325
+ readonly loadingText: string | undefined;
1326
+ }): apiModule.ReactNode;
1214
1327
  SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
1215
1328
  Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
1216
1329
  Stack({ children }: apiModule.StackProps): JSX.Element;
@@ -1243,6 +1356,7 @@ export declare const kit: {
1243
1356
  PANEL_STATE_SERVICE: "workbenchPanelState";
1244
1357
  DIY_DEBUG_SERVICE: "workbenchDiyDebug";
1245
1358
  DIY_RECORD_SERVICE: "workbenchDiyRecord";
1359
+ SESSION_PROJECTIONS_SERVICE: "sessionProjections";
1246
1360
  PANEL_LIST_LIMIT: 50;
1247
1361
  OPENCLI_TIMEOUT_MS: 120000;
1248
1362
  OPENCLI_MAX_CONCURRENT: 4;
@@ -1679,20 +1793,19 @@ export declare const kit: {
1679
1793
  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";
1680
1794
  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";
1681
1795
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1682
- readonly "debug.status": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
1683
- readonly "debug.status.trouble": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u5F02\u5E38";
1684
- readonly "debug.stalled": "\u5DE5\u4F5C\u53F0 DIY \u8C03\u8BD5\u6682\u505C";
1796
+ readonly "debug.workspace": "\u8FD9\u4E2A\u5DE5\u4F5C\u533A";
1797
+ readonly "debug.status": "\u300C{title}\u300D\u8C03\u8BD5\u4E2D";
1798
+ readonly "debug.status.trouble": "\u8C03\u8BD5\u8981\u4F60\u770B\u4E00\u773C\uFF08{title}\uFF09";
1799
+ readonly "debug.stalled": "\u8C03\u8BD5\u5DF2\u6682\u505C\uFF08{title}\uFF09";
1685
1800
  readonly "debug.act.pause": "\u6682\u505C\u8C03\u8BD5";
1686
1801
  readonly "debug.act.resume": "\u7EE7\u7EED\u8C03\u8BD5";
1687
1802
  readonly "debug.act.stop": "\u7ED3\u675F\u8C03\u8BD5";
1688
1803
  readonly "debug.act.stop.ask": "\u786E\u8BA4\u7ED3\u675F";
1689
- readonly "debug.card.here.title": "\u5F53\u524D\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
1804
+ readonly "debug.card.here.title": "\u6B63\u5728\u8C03\u8BD5\u300C{title}\u300D";
1690
1805
  readonly "debug.card.here.note": "\u8BF7\u52FF\u5207\u6362\u5DE5\u4F5C\u533A\u548C\u64CD\u4F5C\u9762\u677F";
1691
- readonly "debug.card.away.title": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
1692
- readonly "debug.card.away.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0 DIY \u5DE5\u4F5C\u533A";
1806
+ readonly "debug.card.away.note": "\u8BF7\u5207\u56DE\u300C{title}\u300D\u90A3\u4E00\u5C4F";
1693
1807
  readonly "debug.card.paused.note": "\u5DF2\u6682\u505C";
1694
- readonly "debug.card.hidden.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0\u9762\u677F";
1695
- readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
1808
+ readonly "debug.card.hidden.note": "\u8BF7\u5207\u56DE\u5DE5\u4F5C\u53F0\u9762\u677F";
1696
1809
  readonly "record.waiting": "\u53D6\u8BC1\u4EA4\u63A5 \u00B7 \u7B49\u4F60\u51FA\u624B";
1697
1810
  readonly "record.waiting.note": "\u8BF7\u5728\u90A3\u4E00\u9875\u6309\u300C\u5F00\u59CB\u5F55\u5236\u300D\uFF0C\u505A\u5B8C\u6309\u300C\u7ED3\u675F\u5F55\u5236\u300D\uFF08\u5F55\u5B8C\u4E0D\u66FF\u4F60\u5207\u56DE\u6765\uFF09";
1698
1811
  readonly "record.recording": "\u5F55\u5236\u4E2D";
@@ -1707,8 +1820,10 @@ export declare const kit: {
1707
1820
  readonly "approval.record.noUrl": "\u6CA1\u7ED9\u7AD9\u70B9\u5730\u5740\uFF08\u8FD9\u6B21\u4F1A\u88AB\u5F53\u573A\u62D2\uFF09";
1708
1821
  readonly "approval.record.oneAction": "\u4E00\u6B21\u64CD\u4F5C";
1709
1822
  readonly "approval.record.noSwitch": "\u5F55\u5B8C\u4E0D\u4F1A\u66FF\u4F60\u5207\u56DE\u6765\uFF08\u5DE6\u680F\u5E95\u90E8\u4F1A\u4EAE\u4E00\u6761\u72B6\u6001\uFF09";
1823
+ readonly "approval.longTask.what": "\u8981\u505C\u7684\u90A3\u4E00\u8D9F";
1824
+ readonly "approval.longTask.signal": "\u505C\u4E86\u53EA\u662F\u8BA9\u5916\u58F3\u53D1\u51FA\u4E2D\u65AD\u4FE1\u53F7 \u2014\u2014 \u5E73\u53F0\u4FA7\u90A3\u8D9F\u6D3B\u513F\u7684\u6536\u5C3E\u770B\u6A21\u5757\u81EA\u5DF1";
1710
1825
  };
1711
- 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.hintJoin" | "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.hasProblem" | "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.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.title" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "debug.back" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch", string>;
1826
+ 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.hintJoin" | "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.hasProblem" | "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.workspace" | "debug.status" | "debug.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch" | "approval.longTask.what" | "approval.longTask.signal", string>;
1712
1827
  };
1713
1828
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
1714
1829
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -2122,20 +2237,19 @@ export declare const kit: {
2122
2237
  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";
2123
2238
  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";
2124
2239
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
2125
- readonly "debug.status": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
2126
- readonly "debug.status.trouble": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u5F02\u5E38";
2127
- readonly "debug.stalled": "\u5DE5\u4F5C\u53F0 DIY \u8C03\u8BD5\u6682\u505C";
2240
+ readonly "debug.workspace": "\u8FD9\u4E2A\u5DE5\u4F5C\u533A";
2241
+ readonly "debug.status": "\u300C{title}\u300D\u8C03\u8BD5\u4E2D";
2242
+ readonly "debug.status.trouble": "\u8C03\u8BD5\u8981\u4F60\u770B\u4E00\u773C\uFF08{title}\uFF09";
2243
+ readonly "debug.stalled": "\u8C03\u8BD5\u5DF2\u6682\u505C\uFF08{title}\uFF09";
2128
2244
  readonly "debug.act.pause": "\u6682\u505C\u8C03\u8BD5";
2129
2245
  readonly "debug.act.resume": "\u7EE7\u7EED\u8C03\u8BD5";
2130
2246
  readonly "debug.act.stop": "\u7ED3\u675F\u8C03\u8BD5";
2131
2247
  readonly "debug.act.stop.ask": "\u786E\u8BA4\u7ED3\u675F";
2132
- readonly "debug.card.here.title": "\u5F53\u524D\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
2248
+ readonly "debug.card.here.title": "\u6B63\u5728\u8C03\u8BD5\u300C{title}\u300D";
2133
2249
  readonly "debug.card.here.note": "\u8BF7\u52FF\u5207\u6362\u5DE5\u4F5C\u533A\u548C\u64CD\u4F5C\u9762\u677F";
2134
- readonly "debug.card.away.title": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
2135
- readonly "debug.card.away.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0 DIY \u5DE5\u4F5C\u533A";
2250
+ readonly "debug.card.away.note": "\u8BF7\u5207\u56DE\u300C{title}\u300D\u90A3\u4E00\u5C4F";
2136
2251
  readonly "debug.card.paused.note": "\u5DF2\u6682\u505C";
2137
- readonly "debug.card.hidden.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0\u9762\u677F";
2138
- readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
2252
+ readonly "debug.card.hidden.note": "\u8BF7\u5207\u56DE\u5DE5\u4F5C\u53F0\u9762\u677F";
2139
2253
  readonly "record.waiting": "\u53D6\u8BC1\u4EA4\u63A5 \u00B7 \u7B49\u4F60\u51FA\u624B";
2140
2254
  readonly "record.waiting.note": "\u8BF7\u5728\u90A3\u4E00\u9875\u6309\u300C\u5F00\u59CB\u5F55\u5236\u300D\uFF0C\u505A\u5B8C\u6309\u300C\u7ED3\u675F\u5F55\u5236\u300D\uFF08\u5F55\u5B8C\u4E0D\u66FF\u4F60\u5207\u56DE\u6765\uFF09";
2141
2255
  readonly "record.recording": "\u5F55\u5236\u4E2D";
@@ -2150,15 +2264,15 @@ export declare const kit: {
2150
2264
  readonly "approval.record.noUrl": "\u6CA1\u7ED9\u7AD9\u70B9\u5730\u5740\uFF08\u8FD9\u6B21\u4F1A\u88AB\u5F53\u573A\u62D2\uFF09";
2151
2265
  readonly "approval.record.oneAction": "\u4E00\u6B21\u64CD\u4F5C";
2152
2266
  readonly "approval.record.noSwitch": "\u5F55\u5B8C\u4E0D\u4F1A\u66FF\u4F60\u5207\u56DE\u6765\uFF08\u5DE6\u680F\u5E95\u90E8\u4F1A\u4EAE\u4E00\u6761\u72B6\u6001\uFF09";
2267
+ readonly "approval.longTask.what": "\u8981\u505C\u7684\u90A3\u4E00\u8D9F";
2268
+ readonly "approval.longTask.signal": "\u505C\u4E86\u53EA\u662F\u8BA9\u5916\u58F3\u53D1\u51FA\u4E2D\u65AD\u4FE1\u53F7 \u2014\u2014 \u5E73\u53F0\u4FA7\u90A3\u8D9F\u6D3B\u513F\u7684\u6536\u5C3E\u770B\u6A21\u5757\u81EA\u5DF1";
2153
2269
  };
2154
2270
  blockerPending(busy: boolean, running: string | null): boolean;
2155
2271
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
2156
- holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
2157
- firstProblemOf(root: ParentNode): Element | null;
2158
- revealFirstProblem(root: ParentNode): boolean;
2159
2272
  insideWorkshop(root: string, target: string): boolean;
2160
2273
  boardFactOf(probe: apiModule.BoardProbe, workshop: string | null): apiModule.BoardFactState;
2161
2274
  boardSituation(probe: apiModule.BoardProbe, workshop: string | null): apiModule.BoardSituation;
2275
+ holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
2162
2276
  parseDebugIntent(value: unknown): apiModule.DebugIntent | null;
2163
2277
  createDebugStore(): apiModule.DebugStore;
2164
2278
  debugOwnerText(state: apiModule.DebugState): string;
@@ -2167,6 +2281,8 @@ export declare const kit: {
2167
2281
  createRecordStore(): apiModule.RecordStore;
2168
2282
  recordOwnerText(state: apiModule.RecordState): string;
2169
2283
  RECORD_STALE_MS: number;
2284
+ firstProblemOf(root: ParentNode): Element | null;
2285
+ revealFirstProblem(root: ParentNode): boolean;
2170
2286
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
2171
2287
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
2172
2288
  createPanelStateStore(): apiModule.PanelStateStore;
@@ -2223,14 +2339,21 @@ export declare const kit: {
2223
2339
  writeRoute(channel: apiModule.WriteChannel, resource: string): string;
2224
2340
  writeOutcomeOf<T>(response: apiModule.ApiResponse<T> | null, networkText: string): apiModule.WriteOutcome<T>;
2225
2341
  runsRouteOf(unit: string): string;
2342
+ stopRouteOf(unit: string): string;
2226
2343
  longTaskPollMs(live: boolean, override?: number | undefined): number;
2227
2344
  longTaskRunsOf<T>(state: {
2228
2345
  readonly phase?: string | undefined;
2229
2346
  readonly value?: apiModule.LongTasksPayload | undefined;
2230
2347
  }): readonly T[];
2231
2348
  longTaskDot(status: apiModule.LongTaskStatus): "ongoing" | "done" | "error" | "idle";
2349
+ longTaskStopStage(state: {
2350
+ readonly armed: boolean;
2351
+ readonly busy: boolean;
2352
+ }): apiModule.LongTaskStopStage;
2353
+ longTaskStopPress(stage: apiModule.LongTaskStopStage): "arm" | "fire" | "ignore";
2232
2354
  LONG_TASK_POLL_MS: 1500;
2233
2355
  LONG_TASK_IDLE_MS: 10000;
2356
+ LONG_TASK_STOP_ARM_MS: 3000;
2234
2357
  gateOf(capability: apiModule.CapabilityPayload | null, mode: apiModule.GateMode): apiModule.UnitGate;
2235
2358
  splitBlocker(candidates: readonly (apiModule.ModuleBlocker | undefined)[]): apiModule.UnitBlockers;
2236
2359
  probeKeyOf(error: apiModule.ApiError | undefined): string | null;
@@ -2256,7 +2379,35 @@ export declare const kit: {
2256
2379
  CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle, }: apiModule.CardHeadProps): JSX.Element;
2257
2380
  ChoiceGroup(props: apiModule.ChoiceGroupProps): JSX.Element;
2258
2381
  Field({ label, hint, children }: apiModule.FieldProps): JSX.Element;
2382
+ Form(props: apiModule.FormProps): JSX.Element;
2259
2383
  FormActions({ actions }: apiModule.FormActionsProps): JSX.Element | null;
2384
+ visibleFieldsOf(fields: readonly apiModule.FormField[]): readonly apiModule.FormField[];
2385
+ duplicateKeysOf(fields: readonly apiModule.FormField[]): readonly string[];
2386
+ reportDuplicateKeys(fields: readonly apiModule.FormField[]): void;
2387
+ formValuesOf(fields: readonly apiModule.FormField[]): Readonly<Record<string, apiModule.FormValue>>;
2388
+ formProblemsOf(fields: readonly apiModule.FormField[], show: boolean): Readonly<Record<string, apiModule.ReactNode | undefined>>;
2389
+ formFirstProblemOf(fields: readonly apiModule.FormField[], problems: Readonly<Record<string, apiModule.ReactNode | undefined>>): apiModule.FormField | undefined;
2390
+ formSubmitOf(fields: readonly apiModule.FormField[]): apiModule.FormSubmitOutcome;
2391
+ formActionsOf(args: {
2392
+ readonly extra: readonly apiModule.FormAction[] | undefined;
2393
+ readonly cancel: {
2394
+ readonly label: apiModule.ReactNode;
2395
+ readonly onClick: () => void;
2396
+ } | undefined;
2397
+ readonly submit: {
2398
+ readonly label: apiModule.ReactNode;
2399
+ readonly busyLabel?: apiModule.ReactNode | undefined;
2400
+ };
2401
+ readonly busy: boolean;
2402
+ readonly disabled: boolean;
2403
+ readonly onSubmitClick: () => void;
2404
+ }): readonly apiModule.FormAction[];
2405
+ formRowsOf(args: {
2406
+ readonly fields: readonly apiModule.FormField[];
2407
+ readonly problems: Readonly<Record<string, apiModule.ReactNode | undefined>>;
2408
+ readonly showProblem: boolean;
2409
+ readonly busy: boolean;
2410
+ }): readonly apiModule.ReactNode[];
2260
2411
  FormRows({ children }: apiModule.FormRowsProps): JSX.Element;
2261
2412
  FormRow({ label, hint, problem, layout, children }: apiModule.FormRowProps): JSX.Element;
2262
2413
  Link({ href, children, title, external, className }: apiModule.LinkProps): JSX.Element;
@@ -2281,6 +2432,26 @@ export declare const kit: {
2281
2432
  stepSelectCursor(shown: readonly apiModule.SelectFieldOption[], cursor: number | null, step: 1 | -1): number | null;
2282
2433
  selectEntries(shown: readonly apiModule.SelectFieldOption[], emptyText: string | undefined, revealId?: string | undefined): readonly import("@deepseek-ai/dsh-client-ui-primitives").MenuEntry[];
2283
2434
  SelectField(props: apiModule.SelectFieldProps): apiModule.ReactNode;
2435
+ selectTriggerNode(args: {
2436
+ readonly id: string | undefined;
2437
+ readonly className: string;
2438
+ readonly disabled: boolean;
2439
+ readonly invalid: boolean;
2440
+ readonly open: boolean;
2441
+ readonly ariaLabel: string | undefined;
2442
+ readonly title: string | undefined;
2443
+ readonly icon: apiModule.ReactNode | undefined;
2444
+ readonly value: apiModule.ReactNode;
2445
+ readonly iconOnly: boolean;
2446
+ readonly onOpen: () => void;
2447
+ }): apiModule.ReactNode;
2448
+ selectLoadingNode(args: {
2449
+ readonly id: string | undefined;
2450
+ readonly className: string;
2451
+ readonly invalid: boolean;
2452
+ readonly ariaLabel: string | undefined;
2453
+ readonly loadingText: string | undefined;
2454
+ }): apiModule.ReactNode;
2284
2455
  SettingsSection({ label, title, action, children }: apiModule.SettingsSectionProps): JSX.Element;
2285
2456
  Spinner({ size, label }: apiModule.SpinnerProps): JSX.Element;
2286
2457
  Stack({ children }: apiModule.StackProps): JSX.Element;
@@ -2313,6 +2484,7 @@ export declare const kit: {
2313
2484
  PANEL_STATE_SERVICE: "workbenchPanelState";
2314
2485
  DIY_DEBUG_SERVICE: "workbenchDiyDebug";
2315
2486
  DIY_RECORD_SERVICE: "workbenchDiyRecord";
2487
+ SESSION_PROJECTIONS_SERVICE: "sessionProjections";
2316
2488
  PANEL_LIST_LIMIT: 50;
2317
2489
  OPENCLI_TIMEOUT_MS: 120000;
2318
2490
  OPENCLI_MAX_CONCURRENT: 4;
@@ -2749,20 +2921,19 @@ export declare const kit: {
2749
2921
  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";
2750
2922
  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";
2751
2923
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
2752
- readonly "debug.status": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
2753
- readonly "debug.status.trouble": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u5F02\u5E38";
2754
- readonly "debug.stalled": "\u5DE5\u4F5C\u53F0 DIY \u8C03\u8BD5\u6682\u505C";
2924
+ readonly "debug.workspace": "\u8FD9\u4E2A\u5DE5\u4F5C\u533A";
2925
+ readonly "debug.status": "\u300C{title}\u300D\u8C03\u8BD5\u4E2D";
2926
+ readonly "debug.status.trouble": "\u8C03\u8BD5\u8981\u4F60\u770B\u4E00\u773C\uFF08{title}\uFF09";
2927
+ readonly "debug.stalled": "\u8C03\u8BD5\u5DF2\u6682\u505C\uFF08{title}\uFF09";
2755
2928
  readonly "debug.act.pause": "\u6682\u505C\u8C03\u8BD5";
2756
2929
  readonly "debug.act.resume": "\u7EE7\u7EED\u8C03\u8BD5";
2757
2930
  readonly "debug.act.stop": "\u7ED3\u675F\u8C03\u8BD5";
2758
2931
  readonly "debug.act.stop.ask": "\u786E\u8BA4\u7ED3\u675F";
2759
- readonly "debug.card.here.title": "\u5F53\u524D\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
2932
+ readonly "debug.card.here.title": "\u6B63\u5728\u8C03\u8BD5\u300C{title}\u300D";
2760
2933
  readonly "debug.card.here.note": "\u8BF7\u52FF\u5207\u6362\u5DE5\u4F5C\u533A\u548C\u64CD\u4F5C\u9762\u677F";
2761
- readonly "debug.card.away.title": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
2762
- readonly "debug.card.away.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0 DIY \u5DE5\u4F5C\u533A";
2934
+ readonly "debug.card.away.note": "\u8BF7\u5207\u56DE\u300C{title}\u300D\u90A3\u4E00\u5C4F";
2763
2935
  readonly "debug.card.paused.note": "\u5DF2\u6682\u505C";
2764
- readonly "debug.card.hidden.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0\u9762\u677F";
2765
- readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
2936
+ readonly "debug.card.hidden.note": "\u8BF7\u5207\u56DE\u5DE5\u4F5C\u53F0\u9762\u677F";
2766
2937
  readonly "record.waiting": "\u53D6\u8BC1\u4EA4\u63A5 \u00B7 \u7B49\u4F60\u51FA\u624B";
2767
2938
  readonly "record.waiting.note": "\u8BF7\u5728\u90A3\u4E00\u9875\u6309\u300C\u5F00\u59CB\u5F55\u5236\u300D\uFF0C\u505A\u5B8C\u6309\u300C\u7ED3\u675F\u5F55\u5236\u300D\uFF08\u5F55\u5B8C\u4E0D\u66FF\u4F60\u5207\u56DE\u6765\uFF09";
2768
2939
  readonly "record.recording": "\u5F55\u5236\u4E2D";
@@ -2777,8 +2948,10 @@ export declare const kit: {
2777
2948
  readonly "approval.record.noUrl": "\u6CA1\u7ED9\u7AD9\u70B9\u5730\u5740\uFF08\u8FD9\u6B21\u4F1A\u88AB\u5F53\u573A\u62D2\uFF09";
2778
2949
  readonly "approval.record.oneAction": "\u4E00\u6B21\u64CD\u4F5C";
2779
2950
  readonly "approval.record.noSwitch": "\u5F55\u5B8C\u4E0D\u4F1A\u66FF\u4F60\u5207\u56DE\u6765\uFF08\u5DE6\u680F\u5E95\u90E8\u4F1A\u4EAE\u4E00\u6761\u72B6\u6001\uFF09";
2951
+ readonly "approval.longTask.what": "\u8981\u505C\u7684\u90A3\u4E00\u8D9F";
2952
+ readonly "approval.longTask.signal": "\u505C\u4E86\u53EA\u662F\u8BA9\u5916\u58F3\u53D1\u51FA\u4E2D\u65AD\u4FE1\u53F7 \u2014\u2014 \u5E73\u53F0\u4FA7\u90A3\u8D9F\u6D3B\u513F\u7684\u6536\u5C3E\u770B\u6A21\u5757\u81EA\u5DF1";
2780
2953
  };
2781
- 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.hintJoin" | "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.hasProblem" | "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.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.title" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "debug.back" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch", string>;
2954
+ 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.hintJoin" | "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.hasProblem" | "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.workspace" | "debug.status" | "debug.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch" | "approval.longTask.what" | "approval.longTask.signal", string>;
2782
2955
  };
2783
2956
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
2784
2957
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -3192,20 +3365,19 @@ export declare const kit: {
3192
3365
  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";
3193
3366
  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";
3194
3367
  readonly "configSync.failed": "\u540C\u6B65\u6CA1\u6210\u529F\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
3195
- readonly "debug.status": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
3196
- readonly "debug.status.trouble": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u5F02\u5E38";
3197
- readonly "debug.stalled": "\u5DE5\u4F5C\u53F0 DIY \u8C03\u8BD5\u6682\u505C";
3368
+ readonly "debug.workspace": "\u8FD9\u4E2A\u5DE5\u4F5C\u533A";
3369
+ readonly "debug.status": "\u300C{title}\u300D\u8C03\u8BD5\u4E2D";
3370
+ readonly "debug.status.trouble": "\u8C03\u8BD5\u8981\u4F60\u770B\u4E00\u773C\uFF08{title}\uFF09";
3371
+ readonly "debug.stalled": "\u8C03\u8BD5\u5DF2\u6682\u505C\uFF08{title}\uFF09";
3198
3372
  readonly "debug.act.pause": "\u6682\u505C\u8C03\u8BD5";
3199
3373
  readonly "debug.act.resume": "\u7EE7\u7EED\u8C03\u8BD5";
3200
3374
  readonly "debug.act.stop": "\u7ED3\u675F\u8C03\u8BD5";
3201
3375
  readonly "debug.act.stop.ask": "\u786E\u8BA4\u7ED3\u675F";
3202
- readonly "debug.card.here.title": "\u5F53\u524D\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
3376
+ readonly "debug.card.here.title": "\u6B63\u5728\u8C03\u8BD5\u300C{title}\u300D";
3203
3377
  readonly "debug.card.here.note": "\u8BF7\u52FF\u5207\u6362\u5DE5\u4F5C\u533A\u548C\u64CD\u4F5C\u9762\u677F";
3204
- readonly "debug.card.away.title": "\u5DE5\u4F5C\u53F0 DIY \u5F00\u53D1\u8C03\u8BD5\u4E2D";
3205
- readonly "debug.card.away.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0 DIY \u5DE5\u4F5C\u533A";
3378
+ readonly "debug.card.away.note": "\u8BF7\u5207\u56DE\u300C{title}\u300D\u90A3\u4E00\u5C4F";
3206
3379
  readonly "debug.card.paused.note": "\u5DF2\u6682\u505C";
3207
- readonly "debug.card.hidden.note": "\u8BF7\u5207\u6362\u5230\u5DE5\u4F5C\u53F0\u9762\u677F";
3208
- readonly "debug.back": "\u56DE\u5230\u5DE5\u574A\u90A3\u4E00\u5C4F";
3380
+ readonly "debug.card.hidden.note": "\u8BF7\u5207\u56DE\u5DE5\u4F5C\u53F0\u9762\u677F";
3209
3381
  readonly "record.waiting": "\u53D6\u8BC1\u4EA4\u63A5 \u00B7 \u7B49\u4F60\u51FA\u624B";
3210
3382
  readonly "record.waiting.note": "\u8BF7\u5728\u90A3\u4E00\u9875\u6309\u300C\u5F00\u59CB\u5F55\u5236\u300D\uFF0C\u505A\u5B8C\u6309\u300C\u7ED3\u675F\u5F55\u5236\u300D\uFF08\u5F55\u5B8C\u4E0D\u66FF\u4F60\u5207\u56DE\u6765\uFF09";
3211
3383
  readonly "record.recording": "\u5F55\u5236\u4E2D";
@@ -3220,15 +3392,15 @@ export declare const kit: {
3220
3392
  readonly "approval.record.noUrl": "\u6CA1\u7ED9\u7AD9\u70B9\u5730\u5740\uFF08\u8FD9\u6B21\u4F1A\u88AB\u5F53\u573A\u62D2\uFF09";
3221
3393
  readonly "approval.record.oneAction": "\u4E00\u6B21\u64CD\u4F5C";
3222
3394
  readonly "approval.record.noSwitch": "\u5F55\u5B8C\u4E0D\u4F1A\u66FF\u4F60\u5207\u56DE\u6765\uFF08\u5DE6\u680F\u5E95\u90E8\u4F1A\u4EAE\u4E00\u6761\u72B6\u6001\uFF09";
3395
+ readonly "approval.longTask.what": "\u8981\u505C\u7684\u90A3\u4E00\u8D9F";
3396
+ readonly "approval.longTask.signal": "\u505C\u4E86\u53EA\u662F\u8BA9\u5916\u58F3\u53D1\u51FA\u4E2D\u65AD\u4FE1\u53F7 \u2014\u2014 \u5E73\u53F0\u4FA7\u90A3\u8D9F\u6D3B\u513F\u7684\u6536\u5C3E\u770B\u6A21\u5757\u81EA\u5DF1";
3223
3397
  };
3224
3398
  blockerPending(busy: boolean, running: string | null): boolean;
3225
3399
  blockerActionLabel(action: apiModule.BlockerActionShape, state: apiModule.BlockerLabelState, t: apiModule.BlockerLabelTranslate): string;
3226
- holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
3227
- firstProblemOf(root: ParentNode): Element | null;
3228
- revealFirstProblem(root: ParentNode): boolean;
3229
3400
  insideWorkshop(root: string, target: string): boolean;
3230
3401
  boardFactOf(probe: apiModule.BoardProbe, workshop: string | null): apiModule.BoardFactState;
3231
3402
  boardSituation(probe: apiModule.BoardProbe, workshop: string | null): apiModule.BoardSituation;
3403
+ holdBusy(since: number | null, now: number, floorMs: number): apiModule.BusyHold;
3232
3404
  parseDebugIntent(value: unknown): apiModule.DebugIntent | null;
3233
3405
  createDebugStore(): apiModule.DebugStore;
3234
3406
  debugOwnerText(state: apiModule.DebugState): string;
@@ -3237,6 +3409,8 @@ export declare const kit: {
3237
3409
  createRecordStore(): apiModule.RecordStore;
3238
3410
  recordOwnerText(state: apiModule.RecordState): string;
3239
3411
  RECORD_STALE_MS: number;
3412
+ firstProblemOf(root: ParentNode): Element | null;
3413
+ revealFirstProblem(root: ParentNode): boolean;
3240
3414
  parseCardsReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCardsReport>;
3241
3415
  parseCrashReport(payload: unknown): apiModule.PanelParse<apiModule.PanelCrashReport>;
3242
3416
  createPanelStateStore(): apiModule.PanelStateStore;