@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.
- package/bin/dsh-workbench +23 -0
- package/client.js +80 -23
- package/cordis.patch.yml +11 -3
- package/dist/client/client.body.js +80 -23
- package/dist/client/index.js +80 -23
- package/dist/host/index.js +150 -178
- package/dist/types/app/client.d.ts +9 -3
- package/dist/types/app/layouts/rightbar/BoardEmpty.d.ts +2 -1
- package/dist/types/app/layouts/rightbar/Rightbar.d.ts +1 -0
- package/dist/types/modules/panels/__tests__/approval.test.d.ts +1 -0
- package/dist/types/modules/panels/model/approval.d.ts +2 -0
- package/dist/types/shared/api/diy.d.ts +3 -0
- package/dist/types/shared/api/diy.test.d.ts +1 -0
- package/dist/types/shared/api/host/diy.d.ts +3 -0
- package/dist/types/shared/api/host/diy.test.d.ts +1 -0
- package/package.json +13 -5
- package/preset/diy.patch.yml +156 -0
- package/scripts/seed-profile.sh +116 -0
- package/skills/workbench-module-diy/BUILD.md +179 -0
- package/skills/workbench-module-diy/DATASOURCE.md +54 -0
- package/skills/workbench-module-diy/DESIGN.md +82 -0
- package/skills/workbench-module-diy/LINKAGE.md +113 -0
- package/skills/workbench-module-diy/PANEL.md +124 -0
- package/skills/workbench-module-diy/REVIEW.md +31 -0
- package/skills/workbench-module-diy/SKILL.md +57 -0
- package/skills/workbench-module-diy/STEPS.md +93 -0
- package/skills/workbench-module-diy/TOOLS.md +112 -0
package/dist/host/index.js
CHANGED
|
@@ -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
|
|
896
|
-
|
|
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
|
|
903
|
-
|
|
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
|
-
|
|
908
|
-
|
|
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
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
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:
|
|
913
|
+
reason: `问"要不要审批"的时候套件的策略抛了错,已经停下:${messageOf(error)}`
|
|
1050
914
|
};
|
|
1051
915
|
}
|
|
1052
|
-
|
|
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: `拿不到"这次会发生什么",已经停下:${
|
|
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:
|
|
1069
|
-
displayReason: compose(facts,
|
|
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
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
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
|
-
|
|
4376
|
-
...
|
|
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
|
-
|
|
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;
|