@dsh-workbench/core 0.1.10 → 0.1.12

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.
@@ -892,171 +892,39 @@ function resolvePluginSource(source, env, options = {}) {
892
892
  }
893
893
  //#endregion
894
894
  //#region ../shared/dist/host/tool-approval.js
895
- function compose(detail, texts) {
896
- if (detail === void 0 || typeof detail.zh !== "string" || detail.zh.trim() === "") return texts.generic;
897
- return {
898
- en: `${detail.en} — ${texts.question.en}`,
899
- zh: `${detail.zh} —— ${texts.question.zh}`
900
- };
895
+ function messageOf(error) {
896
+ return error instanceof Error ? error.message : String(error);
901
897
  }
902
- function actionOf$1(call) {
903
- const raw = call.arguments;
904
- if (typeof raw !== "object" || raw === null) return {};
905
- const value = raw;
898
+ function compose(detail, verdict) {
899
+ if (detail === void 0 || typeof detail.zh !== "string" || detail.zh.trim() === "") return verdict.fallback;
906
900
  return {
907
- ...typeof value.action === "string" ? { action: value.action } : {},
908
- ...typeof value.id === "string" ? { id: value.id } : typeof value.unit === "string" ? { id: value.unit } : {}
909
- };
910
- }
911
- var READ_ONLY_ACTIONS = /* @__PURE__ */ new Set(["list", ""]);
912
- var READ = { kind: "read" };
913
- var UNKNOWN = { kind: "unknown" };
914
- function ask(spec) {
915
- return {
916
- kind: "ask",
917
- spec
918
- };
919
- }
920
- function confirmed(call) {
921
- const raw = call.arguments;
922
- if (typeof raw !== "object" || raw === null) return void 0;
923
- const value = raw.confirm;
924
- return typeof value === "boolean" ? value : void 0;
925
- }
926
- function effectOf(call, context) {
927
- const name = call.name ?? "";
928
- const { action, id } = actionOf$1(call);
929
- const readAction = action !== void 0 && action !== "" && READ_ONLY_ACTIONS.has(action);
930
- const what = () => {
931
- if (id === void 0 || id === "") return "一个模块";
932
- return `「${context.titleOf?.(id) ?? id}」`;
901
+ en: `${detail.en} — ${verdict.question.en}`,
902
+ zh: `${detail.zh} —— ${verdict.question.zh}`
933
903
  };
934
- if (name === "workbench_cmdb_release") {
935
- if (confirmed(call) !== true) return READ;
936
- return ask({
937
- reason: "confirm=true releases a version to a real environment",
938
- generic: {
939
- en: "The agent wants to deploy a version for real (confirm: true) — it deploys on the platform (non-production). Allow?",
940
- zh: "agent 想在非生产环境上**真的部署一个版本**(confirm: true)—— 会在平台上部署。允许吗?"
941
- },
942
- question: {
943
- en: "it deploys on the platform for real (non-production). Allow?",
944
- zh: "会在平台上真的部署一次(非生产环境)。允许吗?"
945
- }
946
- });
947
- }
948
- if (name === "workbench_coding_issue_comment" || name === "workbench_coding_issue_transfer") {
949
- if (confirmed(call) !== true) return READ;
950
- const comment = name === "workbench_coding_issue_comment";
951
- return ask({
952
- reason: comment ? "confirm=true posts a comment on the platform" : "confirm=true moves an issue to another status on the platform",
953
- generic: comment ? {
954
- en: "The agent wants to post a comment on the platform for real (confirm: true) — it writes on the platform. Allow?",
955
- zh: "agent 想**真的给一条缺陷加评论**(confirm: true)—— 会写平台数据。允许吗?"
956
- } : {
957
- en: "The agent wants to move an issue to another status for real (confirm: true) — it writes on the platform. Allow?",
958
- zh: "agent 想**真的把一条缺陷流转到别的状态**(confirm: true)—— 会写平台数据。允许吗?"
959
- },
960
- question: comment ? {
961
- en: "it posts that comment on the platform for real. Allow?",
962
- zh: "会在平台上真的发表这条评论。允许吗?"
963
- } : {
964
- en: "it changes that issue status on the platform for real. Allow?",
965
- zh: "会在平台上真的改这条缺陷的状态。允许吗?"
966
- }
967
- });
968
- }
969
- if (name === "workbench_modules") {
970
- if (readAction) return READ;
971
- if (action === "update-dependency") return ask({
972
- reason: `workbench_modules update-dependency ${id ?? ""} upgrades a shared dependency on this machine`,
973
- generic: {
974
- en: `The agent wants to upgrade the shared dependency ${what()} (it changes what is installed on this machine). Allow?`,
975
- zh: `agent 想升级共用依赖 ${what()}(会改这台机器上装的东西)。允许吗?`
976
- },
977
- question: {
978
- en: "it upgrades that shared dependency on this machine. Allow?",
979
- zh: `会升级共用依赖 ${what()}。允许吗?`
980
- }
981
- });
982
- const verb = action === "install" ? "装" : action === "uninstall" ? "卸载" : action === "update" ? "更新" : "装 / 更新 / 卸载";
983
- return ask({
984
- reason: `workbench_modules ${action ?? "(unknown action)"} ${id ?? ""} changes plugins on this machine`.trim(),
985
- generic: {
986
- en: `The agent wants to ${verb === "装" ? "install" : verb === "卸载" ? "remove" : verb === "更新" ? "update" : "install/update/remove"} the module ${what()} (it changes plugins on this machine). Allow?`,
987
- zh: `agent 想${verb}模块 ${what()}(会改这台机器上的插件)。允许吗?`
988
- },
989
- question: {
990
- en: "it changes plugins on this machine. Allow?",
991
- zh: "会改这台机器上的插件。允许吗?"
992
- }
993
- });
994
- }
995
- if (name !== "workbench_panels") return UNKNOWN;
996
- if (readAction) return READ;
997
- if (action === "hide") return ask({
998
- reason: "workbench_panels hide removes a module from the panel",
999
- generic: {
1000
- en: `The agent wants to remove ${what()} from this project's panel (its agent tools go offline here too). Allow?`,
1001
- zh: `agent 想把 ${what()} 从这个项目的面板上收起来(这个项目里它的 agent 工具也一起下线)。允许吗?`
1002
- },
1003
- question: {
1004
- en: "it takes that module off this panel (its agent tools go offline here too). Allow?",
1005
- zh: `${what()}会从这个项目的面板上收起来(这个项目里它的 agent 工具也一起下线)。允许吗?`
1006
- }
1007
- });
1008
- if (action === "move") return ask({
1009
- reason: "workbench_panels move reorders the panel",
1010
- generic: {
1011
- en: `The agent wants to reorder this project's panel (put ${what()} first). Allow?`,
1012
- zh: `agent 想调整这个项目面板的顺序(把 ${what()} 放前面)。允许吗?`
1013
- },
1014
- question: {
1015
- en: `it reorders this panel (${what()} goes first). Allow?`,
1016
- zh: `会调整这个项目面板的顺序(${what()}放前面)。允许吗?`
1017
- }
1018
- });
1019
- if (action === "reset") return ask({
1020
- reason: "workbench_panels reset clears the panel",
1021
- generic: {
1022
- en: "The agent wants to clear this project's panel (every module goes offline here). Allow?",
1023
- zh: "agent 想清空这个项目的面板(所有模块在这个项目里都下线)。允许吗?"
1024
- },
1025
- question: {
1026
- en: "it clears this panel (every module goes offline here). Allow?",
1027
- zh: "会清空这个项目的面板(所有模块在这个项目里都下线)。允许吗?"
1028
- }
1029
- });
1030
- return ask({
1031
- reason: `workbench_panels ${action ?? "(unknown action)"} changes the user's panel`,
1032
- generic: {
1033
- en: `The agent wants to add ${what()} to this project's panel. Allow?`,
1034
- zh: `agent 想把 ${what()} 加到**这个项目**的面板上。允许吗?`
1035
- },
1036
- question: {
1037
- en: `it adds ${what()} to this project's panel. Allow?`,
1038
- zh: `会把 ${what()} 加到**这个项目**的面板上。允许吗?`
1039
- }
1040
- });
1041
904
  }
1042
905
  async function approvalFor(call, context = {}) {
1043
- const effect = effectOf(call, context);
1044
- if (effect.kind === "read") return void 0;
1045
- if (effect.kind === "unknown") {
1046
- if (context.writes !== true) return void 0;
906
+ if (context.writes !== true) return void 0;
907
+ let verdict;
908
+ try {
909
+ verdict = context.policy?.(call);
910
+ } catch (error) {
1047
911
  return {
1048
912
  kind: "deny",
1049
- reason: `${call.name ?? "这把工具"} 在清单里声明会写东西,但审批表没认领这次调用 —— 停下:给它在 tool-approval.ts 里补一条审批(含"这次会发生什么"),别让写静默过去`
913
+ reason: `问"要不要审批"的时候套件的策略抛了错,已经停下:${messageOf(error)}`
1050
914
  };
1051
915
  }
1052
- const { spec } = effect;
916
+ if (verdict?.kind === "read") return void 0;
917
+ if (verdict?.kind !== "ask") return {
918
+ kind: "deny",
919
+ reason: `${call.name ?? "这把工具"} 在清单里声明会写东西,但它的套件没认领这次调用 —— 停下:在套件的 needsApproval 里补一条审批(含"这次会发生什么"),别让写静默过去`
920
+ };
1053
921
  let facts;
1054
922
  try {
1055
923
  facts = await context.detailOf?.(call);
1056
924
  } catch (error) {
1057
925
  return {
1058
926
  kind: "deny",
1059
- reason: `拿不到"这次会发生什么",已经停下:${error instanceof Error ? error.message : String(error)}`
927
+ reason: `拿不到"这次会发生什么",已经停下:${messageOf(error)}`
1060
928
  };
1061
929
  }
1062
930
  if (facts !== void 0 && "blocked" in facts) return {
@@ -1065,8 +933,8 @@ async function approvalFor(call, context = {}) {
1065
933
  };
1066
934
  return {
1067
935
  kind: "ask",
1068
- reason: spec.reason,
1069
- displayReason: compose(facts, spec)
936
+ reason: verdict.reason,
937
+ displayReason: compose(facts, verdict)
1070
938
  };
1071
939
  }
1072
940
  //#endregion
@@ -1588,6 +1456,101 @@ function createRegistryNotebook(dir) {
1588
1456
  }
1589
1457
  };
1590
1458
  }
1459
+ var panelsUnit = {
1460
+ id: "panels",
1461
+ kind: "ui",
1462
+ card: null,
1463
+ tools: [{
1464
+ name: "workbench_panels",
1465
+ writes: true
1466
+ }, {
1467
+ name: "workbench_modules",
1468
+ writes: true
1469
+ }],
1470
+ host: {
1471
+ inject: [],
1472
+ optional: ["tools", "shell"]
1473
+ }
1474
+ };
1475
+ //#endregion
1476
+ //#region src/modules/panels/model/approval.ts
1477
+ var READ = { kind: "read" };
1478
+ var READ_ONLY_ACTIONS = /* @__PURE__ */ new Set(["list", ""]);
1479
+ function actionOf$1(call) {
1480
+ const raw = call.arguments;
1481
+ if (typeof raw !== "object" || raw === null) return {};
1482
+ const value = raw;
1483
+ return {
1484
+ ...typeof value.action === "string" ? { action: value.action } : {},
1485
+ ...typeof value.id === "string" ? { id: value.id } : typeof value.unit === "string" ? { id: value.unit } : {}
1486
+ };
1487
+ }
1488
+ function whatOf(id) {
1489
+ if (id === void 0 || id === "") return "一个模块";
1490
+ return `「${id}」`;
1491
+ }
1492
+ function askOf(reason, question, fallback) {
1493
+ return {
1494
+ kind: "ask",
1495
+ reason,
1496
+ question,
1497
+ fallback
1498
+ };
1499
+ }
1500
+ var panelsApproval = (call) => {
1501
+ const { action, id } = actionOf$1(call);
1502
+ const readAction = action !== void 0 && action !== "" && READ_ONLY_ACTIONS.has(action);
1503
+ const what = whatOf(id);
1504
+ if (call.name === "workbench_modules") {
1505
+ if (readAction) return READ;
1506
+ if (action === "update-dependency") return askOf(`workbench_modules update-dependency ${id ?? ""} upgrades a shared dependency on this machine`, {
1507
+ en: "it upgrades that shared dependency on this machine. Allow?",
1508
+ zh: `会升级共用依赖 ${what}。允许吗?`
1509
+ }, {
1510
+ en: `The agent wants to upgrade the shared dependency ${what} (it changes what is installed on this machine). Allow?`,
1511
+ zh: `agent 想升级共用依赖 ${what}(会改这台机器上装的东西)。允许吗?`
1512
+ });
1513
+ const verb = action === "install" ? "装" : action === "uninstall" ? "卸载" : action === "update" ? "更新" : "装 / 更新 / 卸载";
1514
+ const verbEn = verb === "装" ? "install" : verb === "卸载" ? "remove" : verb === "更新" ? "update" : "install/update/remove";
1515
+ return askOf(`workbench_modules ${action ?? "(unknown action)"} ${id ?? ""} changes plugins on this machine`.trim(), {
1516
+ en: "it changes plugins on this machine. Allow?",
1517
+ zh: "会改这台机器上的插件。允许吗?"
1518
+ }, {
1519
+ en: `The agent wants to ${verbEn} the module ${what} (it changes plugins on this machine). Allow?`,
1520
+ zh: `agent 想${verb}模块 ${what}(会改这台机器上的插件)。允许吗?`
1521
+ });
1522
+ }
1523
+ if (call.name !== "workbench_panels") return void 0;
1524
+ if (readAction) return READ;
1525
+ if (action === "hide") return askOf("workbench_panels hide removes a module from the panel", {
1526
+ en: "it takes that module off this panel (its agent tools go offline here too). Allow?",
1527
+ zh: `${what}会从这个项目的面板上收起来(这个项目里它的 agent 工具也一起下线)。允许吗?`
1528
+ }, {
1529
+ en: `The agent wants to remove ${what} from this project's panel (its agent tools go offline here too). Allow?`,
1530
+ zh: `agent 想把 ${what} 从这个项目的面板上收起来(这个项目里它的 agent 工具也一起下线)。允许吗?`
1531
+ });
1532
+ if (action === "move") return askOf("workbench_panels move reorders the panel", {
1533
+ en: `it reorders this panel (${what} goes first). Allow?`,
1534
+ zh: `会调整这个项目面板的顺序(${what}放前面)。允许吗?`
1535
+ }, {
1536
+ en: `The agent wants to reorder this project's panel (put ${what} first). Allow?`,
1537
+ zh: `agent 想调整这个项目面板的顺序(把 ${what} 放前面)。允许吗?`
1538
+ });
1539
+ if (action === "reset") return askOf("workbench_panels reset clears the panel", {
1540
+ en: "it clears this panel (every module goes offline here). Allow?",
1541
+ zh: "会清空这个项目的面板(所有模块在这个项目里都下线)。允许吗?"
1542
+ }, {
1543
+ en: "The agent wants to clear this project's panel (every module goes offline here). Allow?",
1544
+ zh: "agent 想清空这个项目的面板(所有模块在这个项目里都下线)。允许吗?"
1545
+ });
1546
+ return askOf(`workbench_panels ${action ?? "(unknown action)"} changes the user's panel`, {
1547
+ en: `it adds ${what} to this project's panel. Allow?`,
1548
+ zh: `会把 ${what} 加到**这个项目**的面板上。允许吗?`
1549
+ }, {
1550
+ en: `The agent wants to add ${what} to this project's panel. Allow?`,
1551
+ zh: `agent 想把 ${what} 加到**这个项目**的面板上。允许吗?`
1552
+ });
1553
+ };
1591
1554
  //#endregion
1592
1555
  //#region src/shared/api/host/release.ts
1593
1556
  function parseLedgerVersion(stdout, name) {
@@ -2432,22 +2395,6 @@ function applyPanelsPref(panels, payload) {
2432
2395
  units: panels.move(action.id, action.index ?? 0, path)
2433
2396
  };
2434
2397
  }
2435
- var panelsUnit = {
2436
- id: "panels",
2437
- kind: "ui",
2438
- card: null,
2439
- tools: [{
2440
- name: "workbench_panels",
2441
- writes: true
2442
- }, {
2443
- name: "workbench_modules",
2444
- writes: true
2445
- }],
2446
- host: {
2447
- inject: [],
2448
- optional: ["tools", "shell"]
2449
- }
2450
- };
2451
2398
  //#endregion
2452
2399
  //#region src/modules/panels/model/handoff.ts
2453
2400
  var PANELS_FACT = "panels";
@@ -2843,6 +2790,7 @@ var HOST_UNITS = [{
2843
2790
  routes: panelRoutes(panels, values),
2844
2791
  registerTools: () => [...registerPanelTools(ctx, panels, values), ...registerMarketTools(ctx, market)],
2845
2792
  factsOf: (call) => panelsFactsOf(call, manifests()),
2793
+ needsApproval: panelsApproval,
2846
2794
  gate: {
2847
2795
  deniedTools: (workspace) => manifests().filter((manifest) => manifest.card !== null).filter((manifest) => !panels.isEnabled(manifest.id, workspace)).flatMap((manifest) => manifest.tools.map((tool) => tool.name)),
2848
2796
  subscribe: (listener) => panels.subscribe(listener)
@@ -3094,6 +3042,21 @@ function bundleInspectHandler(ctx) {
3094
3042
  };
3095
3043
  }
3096
3044
  //#endregion
3045
+ //#region src/shared/api/diy.ts
3046
+ var WORKSHOP_TITLE = "工作台DIY";
3047
+ //#endregion
3048
+ //#region src/shared/api/host/diy.ts
3049
+ var WORKSHOP_RELATIVE = "workbench/diy";
3050
+ function workshopPathOf(ctx) {
3051
+ const homePath = ctx.get("dshHomePath");
3052
+ if (typeof homePath !== "function") return null;
3053
+ try {
3054
+ return homePath(WORKSHOP_RELATIVE);
3055
+ } catch {
3056
+ return null;
3057
+ }
3058
+ }
3059
+ //#endregion
3097
3060
  //#region src/shared/api/dsh-plugins.ts
3098
3061
  var DSH_PLUGINS_ROUTE = "dsh-plugins";
3099
3062
  //#endregion
@@ -4140,6 +4103,14 @@ function apply(ctx) {
4140
4103
  const units = createUnitRegistry();
4141
4104
  ctx.provide(UNITS_SERVICE, units);
4142
4105
  assembleHostUnits(units);
4106
+ ctx.inject(["workspaceRegistry"], (scoped) => {
4107
+ const registry = scoped.get("workspaceRegistry");
4108
+ const workshop = workshopPathOf(scoped);
4109
+ if (registry === void 0 || workshop === null) return;
4110
+ registry.create(workshop, WORKSHOP_TITLE).catch((error) => {
4111
+ ctx.logger?.warn?.(`dsh-workbench: 工坊没能登记成工作区 —— ${String(error)}`);
4112
+ });
4113
+ });
4143
4114
  const opencliEnv = process.env.DSH_WORKBENCH_OPENCLI;
4144
4115
  const installEnv = process.env.DSH_WORKBENCH_OPENCLI_INSTALL;
4145
4116
  const liveManifests = () => units.manifests();
@@ -4365,20 +4336,21 @@ function apply(ctx) {
4365
4336
  const off = ctx.on?.("tools/pre-execute", async (exec, next) => {
4366
4337
  const decision = await next();
4367
4338
  if (decision.kind !== "allow") return decision;
4368
- const detailOf = async (call) => {
4369
- for (const { result } of mounted.values()) {
4370
- const facts = await result.approvalDetail?.(call);
4371
- if (facts !== void 0) return facts;
4372
- }
4373
- };
4339
+ const name = exec.name === void 0 ? void 0 : String(exec.name);
4340
+ const tool = name === void 0 ? void 0 : unitsOfTool().get(name);
4341
+ const owner = tool === void 0 ? void 0 : mounted.get(tool.unit)?.result;
4342
+ const detailOf = owner === void 0 ? void 0 : (call) => owner.approvalDetail?.(call);
4374
4343
  const workspace = sessionWorkspace(exec) ?? void 0;
4375
- return await approvalFor({
4376
- ...exec.name === void 0 ? {} : { name: exec.name },
4344
+ const call = {
4345
+ ...name === void 0 ? {} : { name },
4377
4346
  arguments: exec.arguments,
4378
4347
  ...workspace === void 0 ? {} : { workspace }
4379
- }, {
4348
+ };
4349
+ const policy = owner?.needsApproval;
4350
+ return await approvalFor(call, {
4380
4351
  detailOf,
4381
- writes: exec.name === void 0 ? false : unitsOfTool().get(String(exec.name))?.writes ?? false
4352
+ policy,
4353
+ writes: tool?.writes ?? false
4382
4354
  }) ?? decision;
4383
4355
  });
4384
4356
  return () => off?.();
@@ -220,6 +220,7 @@ export declare const kit: {
220
220
  readonly "panels.enabled": "\u8FD9\u4E2A\u9879\u76EE\u5DF2\u542F\u7528";
221
221
  readonly "panels.disabled": "\u8FD9\u4E2A\u9879\u76EE\u672A\u542F\u7528";
222
222
  readonly "panels.choose": "\u9009\u62E9\u6A21\u5757";
223
+ readonly "panels.buildModule": "\u9020\u4E00\u4E2A\u6A21\u5757";
223
224
  readonly "panels.failed": "\u6539\u914D\u7F6E\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
224
225
  readonly "panels.hintEffect": "\u505C\u7528 = agent \u62FF\u4E0D\u5230\u76F8\u5173\u6570\u636E";
225
226
  readonly "panels.dragHint": "\u62D6\u52A8\u8C03\u6574\u987A\u5E8F";
@@ -483,7 +484,7 @@ export declare const kit: {
483
484
  readonly "panel.conversation": "\u5BF9\u8BDD";
484
485
  readonly "panels.label": "\u5168\u5C40\u9762\u677F";
485
486
  };
486
- en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.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.search.label" | "project.search.placeholder" | "project.search.empty" | "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.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.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.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.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" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
487
+ en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.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.search.label" | "project.search.placeholder" | "project.search.empty" | "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.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "panels.dep.missingPlugin" | "panels.dep.missingCommands" | "panels.dep.unchecked" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.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" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
487
488
  };
488
489
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
489
490
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -533,6 +534,7 @@ export declare const kit: {
533
534
  readonly "panels.enabled": "\u8FD9\u4E2A\u9879\u76EE\u5DF2\u542F\u7528";
534
535
  readonly "panels.disabled": "\u8FD9\u4E2A\u9879\u76EE\u672A\u542F\u7528";
535
536
  readonly "panels.choose": "\u9009\u62E9\u6A21\u5757";
537
+ readonly "panels.buildModule": "\u9020\u4E00\u4E2A\u6A21\u5757";
536
538
  readonly "panels.failed": "\u6539\u914D\u7F6E\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
537
539
  readonly "panels.hintEffect": "\u505C\u7528 = agent \u62FF\u4E0D\u5230\u76F8\u5173\u6570\u636E";
538
540
  readonly "panels.dragHint": "\u62D6\u52A8\u8C03\u6574\u987A\u5E8F";
@@ -987,6 +989,7 @@ export declare const kit: {
987
989
  readonly "panels.enabled": "\u8FD9\u4E2A\u9879\u76EE\u5DF2\u542F\u7528";
988
990
  readonly "panels.disabled": "\u8FD9\u4E2A\u9879\u76EE\u672A\u542F\u7528";
989
991
  readonly "panels.choose": "\u9009\u62E9\u6A21\u5757";
992
+ readonly "panels.buildModule": "\u9020\u4E00\u4E2A\u6A21\u5757";
990
993
  readonly "panels.failed": "\u6539\u914D\u7F6E\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
991
994
  readonly "panels.hintEffect": "\u505C\u7528 = agent \u62FF\u4E0D\u5230\u76F8\u5173\u6570\u636E";
992
995
  readonly "panels.dragHint": "\u62D6\u52A8\u8C03\u6574\u987A\u5E8F";
@@ -1250,7 +1253,7 @@ export declare const kit: {
1250
1253
  readonly "panel.conversation": "\u5BF9\u8BDD";
1251
1254
  readonly "panels.label": "\u5168\u5C40\u9762\u677F";
1252
1255
  };
1253
- en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.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.search.label" | "project.search.placeholder" | "project.search.empty" | "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.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.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.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.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" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
1256
+ en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.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.search.label" | "project.search.placeholder" | "project.search.empty" | "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.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "panels.dep.missingPlugin" | "panels.dep.missingCommands" | "panels.dep.unchecked" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.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" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
1254
1257
  };
1255
1258
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
1256
1259
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -1300,6 +1303,7 @@ export declare const kit: {
1300
1303
  readonly "panels.enabled": "\u8FD9\u4E2A\u9879\u76EE\u5DF2\u542F\u7528";
1301
1304
  readonly "panels.disabled": "\u8FD9\u4E2A\u9879\u76EE\u672A\u542F\u7528";
1302
1305
  readonly "panels.choose": "\u9009\u62E9\u6A21\u5757";
1306
+ readonly "panels.buildModule": "\u9020\u4E00\u4E2A\u6A21\u5757";
1303
1307
  readonly "panels.failed": "\u6539\u914D\u7F6E\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1304
1308
  readonly "panels.hintEffect": "\u505C\u7528 = agent \u62FF\u4E0D\u5230\u76F8\u5173\u6570\u636E";
1305
1309
  readonly "panels.dragHint": "\u62D6\u52A8\u8C03\u6574\u987A\u5E8F";
@@ -1749,6 +1753,7 @@ export declare const kit: {
1749
1753
  readonly "panels.enabled": "\u8FD9\u4E2A\u9879\u76EE\u5DF2\u542F\u7528";
1750
1754
  readonly "panels.disabled": "\u8FD9\u4E2A\u9879\u76EE\u672A\u542F\u7528";
1751
1755
  readonly "panels.choose": "\u9009\u62E9\u6A21\u5757";
1756
+ readonly "panels.buildModule": "\u9020\u4E00\u4E2A\u6A21\u5757";
1752
1757
  readonly "panels.failed": "\u6539\u914D\u7F6E\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
1753
1758
  readonly "panels.hintEffect": "\u505C\u7528 = agent \u62FF\u4E0D\u5230\u76F8\u5173\u6570\u636E";
1754
1759
  readonly "panels.dragHint": "\u62D6\u52A8\u8C03\u6574\u987A\u5E8F";
@@ -2012,7 +2017,7 @@ export declare const kit: {
2012
2017
  readonly "panel.conversation": "\u5BF9\u8BDD";
2013
2018
  readonly "panels.label": "\u5168\u5C40\u9762\u677F";
2014
2019
  };
2015
- en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.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.search.label" | "project.search.placeholder" | "project.search.empty" | "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.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.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.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.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" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
2020
+ en: Record<"time.now" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.fix.update" | "blocker.market.open" | "env.unit.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.search.label" | "project.search.placeholder" | "project.search.empty" | "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.pinned" | "session.actions" | "status.idle" | "status.running" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "panels.title" | "panels.reset" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.hintEffect" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.dep.failed" | "panels.dep.missingPlugin" | "panels.dep.missingCommands" | "panels.dep.unchecked" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.outdated" | "panels.market.hasNew" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.uninstall" | "panels.market.uninstallLabel" | "panels.market.installing" | "panels.market.updating" | "panels.market.uninstalling" | "panels.market.confirmUninstallTitle" | "panels.market.confirmUninstallDetail" | "panels.market.confirmUninstallAck" | "panels.market.confirmYes" | "panels.market.confirmNo" | "panels.market.failed" | "panels.market.needEnv" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.installedSection" | "panels.market.moduleOutdated" | "panels.market.moduleRestartHint" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureGeneric" | "panels.market.add.approveTitle" | "panels.market.add.approveCaution" | "panels.market.add.approveRun" | "panels.market.add.restart" | "panels.market.add.tookEffect" | "panels.market.add.details" | "panels.market.add.open" | "panels.market.add.title" | "panels.market.add.intro" | "panels.market.add.specLabel" | "panels.market.add.specHint" | "panels.market.add.exampleTitle" | "panels.market.add.exampleFill" | "panels.market.add.registryLabel" | "panels.market.add.registryProfile" | "panels.market.add.registryPnpm" | "panels.market.add.check" | "panels.market.add.checking" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.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" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
2016
2021
  };
2017
2022
  mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
2018
2023
  mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
@@ -2062,6 +2067,7 @@ export declare const kit: {
2062
2067
  readonly "panels.enabled": "\u8FD9\u4E2A\u9879\u76EE\u5DF2\u542F\u7528";
2063
2068
  readonly "panels.disabled": "\u8FD9\u4E2A\u9879\u76EE\u672A\u542F\u7528";
2064
2069
  readonly "panels.choose": "\u9009\u62E9\u6A21\u5757";
2070
+ readonly "panels.buildModule": "\u9020\u4E00\u4E2A\u6A21\u5757";
2065
2071
  readonly "panels.failed": "\u6539\u914D\u7F6E\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002";
2066
2072
  readonly "panels.hintEffect": "\u505C\u7528 = agent \u62FF\u4E0D\u5230\u76F8\u5173\u6570\u636E";
2067
2073
  readonly "panels.dragHint": "\u62D6\u52A8\u8C03\u6574\u987A\u5E8F";
@@ -1,6 +1,7 @@
1
1
  import type { Translate } from '@dsh-workbench/shared';
2
- export declare function BoardEmpty({ t, onOpenModules, onOpenMarket, }: {
2
+ export declare function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket, }: {
3
3
  t: Translate;
4
+ onBuildModule: () => void;
4
5
  onOpenModules: () => void;
5
6
  onOpenMarket: () => void;
6
7
  }): JSX.Element;