@dsh-workbench/core 0.1.17 → 0.1.18
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/client.js +43 -37
- package/dist/board.css +31 -0
- package/dist/client/client.body.js +43 -37
- package/dist/client/index.js +43 -37
- package/dist/host/index.js +13 -1
- package/dist/types/app/client.d.ts +15 -33
- package/dist/types/app/layouts/rightbar/market-freshness.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/market-mock.d.ts +1 -1
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +1 -1
- package/package.json +2 -2
- package/skills/workbench-module-diy/REVIEW.md +2 -2
- package/skills/workbench-module-diy/TOOLS.md +4 -1
package/client.js
CHANGED
|
@@ -443,7 +443,12 @@ window.__ModuleLoader__.load({
|
|
|
443
443
|
"host"
|
|
444
444
|
];
|
|
445
445
|
var CARD_KEYS = ["titleKey", "order"];
|
|
446
|
-
var TOOL_KEYS = [
|
|
446
|
+
var TOOL_KEYS = [
|
|
447
|
+
"name",
|
|
448
|
+
"writes",
|
|
449
|
+
"key"
|
|
450
|
+
];
|
|
451
|
+
var TOOL_KEY_SHAPE = /^[a-z][a-zA-Z0-9]*$/;
|
|
447
452
|
var HOST_KEYS = ["inject", "optional"];
|
|
448
453
|
function text(value) {
|
|
449
454
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -485,6 +490,7 @@ window.__ModuleLoader__.load({
|
|
|
485
490
|
if (!Array.isArray(tools)) problems.push(`${subject}: dsh.workbench.tools 要是一串声明,现在是 ${JSON.stringify(tools)}`);
|
|
486
491
|
else {
|
|
487
492
|
const seen = /* @__PURE__ */ new Set();
|
|
493
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
488
494
|
tools.forEach((tool, index) => {
|
|
489
495
|
const at = `dsh.workbench.tools[${index}]`;
|
|
490
496
|
if (!isRecord(tool)) {
|
|
@@ -498,6 +504,12 @@ window.__ModuleLoader__.load({
|
|
|
498
504
|
else if (seen.has(name)) problems.push(`${subject}: ${at}.name「${name}」与前面那条撞了 —— 工具名会进 dsh 的工具表,不许重`);
|
|
499
505
|
else seen.add(name);
|
|
500
506
|
if (typeof tool.writes !== "boolean") problems.push(`${subject}: ${at}.writes 要是 true / false(它是"这会写"的唯一声明,缺了审批无从认领)`);
|
|
507
|
+
if (tool.key !== void 0) {
|
|
508
|
+
const key = text(tool.key);
|
|
509
|
+
if (!TOOL_KEY_SHAPE.test(key)) problems.push(`${subject}: ${at}.key 要是 lowerCamelCase 的标识符(如 \`sync\` / \`podLogs\`),现在是 ${JSON.stringify(tool.key)} —— 它会变成生成物里的键名,所以不引号、不许带点或横线`);
|
|
510
|
+
else if (seenKeys.has(key)) problems.push(`${subject}: ${at}.key「${key}」与前面那条撞了 —— 生成物里的键只能有一个`);
|
|
511
|
+
else seenKeys.add(key);
|
|
512
|
+
}
|
|
501
513
|
});
|
|
502
514
|
}
|
|
503
515
|
}
|
|
@@ -1229,11 +1241,10 @@ window.__ModuleLoader__.load({
|
|
|
1229
1241
|
"panels.market.missing": "not installed",
|
|
1230
1242
|
"panels.market.unchecked": "unknown",
|
|
1231
1243
|
"panels.market.checking": "checking",
|
|
1232
|
-
"panels.market.sectionInstalled": "Installed",
|
|
1244
|
+
"panels.market.sectionInstalled": "Installed modules",
|
|
1233
1245
|
"panels.market.sectionPending": "Not installed",
|
|
1234
1246
|
"panels.market.sectionShared": "Shared dependencies",
|
|
1235
1247
|
"panels.market.sharedUsedBy": "Used by {modules}",
|
|
1236
|
-
"panels.market.sharedFoot": "These cannot be uninstalled here: they come with modules, and would be reinstalled anyway. To stop using one, turn off the modules that use it.",
|
|
1237
1248
|
"panels.market.listSeparator": ", ",
|
|
1238
1249
|
"panels.market.sharedMissing": "not installed",
|
|
1239
1250
|
"panels.market.sharedOutdated": "update available",
|
|
@@ -1258,15 +1269,13 @@ window.__ModuleLoader__.load({
|
|
|
1258
1269
|
"panels.market.noSource": "This module declares no install method — install it yourself",
|
|
1259
1270
|
"panels.market.badSource": "The install method is incomplete — install it yourself",
|
|
1260
1271
|
"panels.market.empty": "No modules available",
|
|
1261
|
-
"panels.market.
|
|
1262
|
-
"panels.market.sectionLocal": "Linked locally",
|
|
1272
|
+
"panels.market.sectionLocal": "Local modules",
|
|
1263
1273
|
"panels.market.sectionUnlisted": "Not from the market",
|
|
1264
1274
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
1265
1275
|
"panels.market.moduleOutdated": "update available",
|
|
1266
1276
|
"panels.market.moduleRefused": "This module was built for an older version of the workbench, so it does not work here. Update it, or uninstall.",
|
|
1267
1277
|
"panels.market.moduleRefusedDetail": "Why it cannot be used: {reason}",
|
|
1268
1278
|
"panels.market.moduleRestartHint": "installed but not active — restart dsh once to bring it up",
|
|
1269
|
-
"panels.market.pluginLocalNoUpdate": "Installed from a local folder, so there is nowhere to check for a newer version — uninstall only",
|
|
1270
1279
|
"panels.market.pluginKeptInUse": "Files kept for now: {names} still uses it.",
|
|
1271
1280
|
"panels.market.pluginKeptUnsure": "Files kept for now: some modules on this machine do not say what they use, so it is unclear who needs it.",
|
|
1272
1281
|
"panels.market.pluginKeptHeld": "Files kept: this one is yours, and a module letting go will not remove it.",
|
|
@@ -1560,11 +1569,10 @@ window.__ModuleLoader__.load({
|
|
|
1560
1569
|
"panels.market.missing": "未装",
|
|
1561
1570
|
"panels.market.unchecked": "状态未知",
|
|
1562
1571
|
"panels.market.checking": "检测中",
|
|
1563
|
-
"panels.market.sectionInstalled": "
|
|
1572
|
+
"panels.market.sectionInstalled": "已安装模块",
|
|
1564
1573
|
"panels.market.sectionPending": "未安装",
|
|
1565
1574
|
"panels.market.sectionShared": "共用依赖",
|
|
1566
1575
|
"panels.market.sharedUsedBy": "供 {modules} 使用",
|
|
1567
|
-
"panels.market.sharedFoot": "这一段不给卸载:它们跟着模块来,卸掉也会被装回来。要停用一份,就去关掉正在用它的那些模块。",
|
|
1568
1576
|
"panels.market.listSeparator": "、",
|
|
1569
1577
|
"panels.market.sharedMissing": "未装",
|
|
1570
1578
|
"panels.market.sharedOutdated": "有新版",
|
|
@@ -1589,15 +1597,13 @@ window.__ModuleLoader__.load({
|
|
|
1589
1597
|
"panels.market.noSource": "这个模块没声明怎么装,只能自己动手",
|
|
1590
1598
|
"panels.market.badSource": "安装方式没写全,只能自己动手",
|
|
1591
1599
|
"panels.market.empty": "暂无可用模块",
|
|
1592
|
-
"panels.market.
|
|
1593
|
-
"panels.market.sectionLocal": "本地装的",
|
|
1600
|
+
"panels.market.sectionLocal": "本地模块",
|
|
1594
1601
|
"panels.market.sectionUnlisted": "不是从市场装的",
|
|
1595
1602
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
1596
1603
|
"panels.market.moduleOutdated": "有新版",
|
|
1597
1604
|
"panels.market.moduleRefused": "这个模块是给旧版本的工作台写的,现在用不了。更新它,或者卸载。",
|
|
1598
1605
|
"panels.market.moduleRefusedDetail": "装不上的原因:{reason}",
|
|
1599
1606
|
"panels.market.moduleRestartHint": "装好了但还没生效 —— 重启一次 dsh 就会出来",
|
|
1600
|
-
"panels.market.pluginLocalNoUpdate": "本地装的,没地方查新版,所以只给卸载",
|
|
1601
1607
|
"panels.market.pluginKeptInUse": "文件先留着:{names} 还要用它。",
|
|
1602
1608
|
"panels.market.pluginKeptUnsure": "文件先留着:这台机器上还有模块看不出用了什么,说不准谁在用它。",
|
|
1603
1609
|
"panels.market.pluginKeptHeld": "文件留着:你自己装的那一份,模块放手不动它。",
|
|
@@ -2399,6 +2405,9 @@ window.__ModuleLoader__.load({
|
|
|
2399
2405
|
//#endregion
|
|
2400
2406
|
//#region src/app/layouts/rightbar/market-freshness.ts
|
|
2401
2407
|
var MARKET_STALE_MS = VERSION_CHECK_TTL_MS;
|
|
2408
|
+
function marketSettled(freshness, installedRead) {
|
|
2409
|
+
return freshness.loaded && installedRead !== false;
|
|
2410
|
+
}
|
|
2402
2411
|
function shouldProbeOnEnter(input) {
|
|
2403
2412
|
if (input.checkedAt === null) return true;
|
|
2404
2413
|
return input.now - input.checkedAt >= input.staleMs;
|
|
@@ -2885,7 +2894,7 @@ window.__ModuleLoader__.load({
|
|
|
2885
2894
|
},
|
|
2886
2895
|
{
|
|
2887
2896
|
id: "plugin-local",
|
|
2888
|
-
label: "本地目录装的 opencli
|
|
2897
|
+
label: "本地目录装的 opencli 插件:没有版本源,只给卸载",
|
|
2889
2898
|
manifests: [],
|
|
2890
2899
|
capabilities: {},
|
|
2891
2900
|
plugins: [{
|
|
@@ -2897,8 +2906,7 @@ window.__ModuleLoader__.load({
|
|
|
2897
2906
|
rows: 0,
|
|
2898
2907
|
plugins: 1,
|
|
2899
2908
|
pluginActions: ["uninstall-plugin"],
|
|
2900
|
-
pluginNote:
|
|
2901
|
-
pluginNoteKey: "panels.market.pluginLocalNoUpdate"
|
|
2909
|
+
pluginNote: false
|
|
2902
2910
|
}
|
|
2903
2911
|
},
|
|
2904
2912
|
{
|
|
@@ -3595,10 +3603,7 @@ window.__ModuleLoader__.load({
|
|
|
3595
3603
|
key: "panels.market.pluginBroken",
|
|
3596
3604
|
params: {}
|
|
3597
3605
|
};
|
|
3598
|
-
if (plugin.local === true) return
|
|
3599
|
-
key: "panels.market.pluginLocalNoUpdate",
|
|
3600
|
-
params: {}
|
|
3601
|
-
};
|
|
3606
|
+
if (plugin.local === true) return void 0;
|
|
3602
3607
|
if (plugin.name !== void 0 && plugin.name !== plugin.pkg) return {
|
|
3603
3608
|
key: "panels.market.pluginAlsoKnownAs",
|
|
3604
3609
|
params: { pkg: plugin.pkg }
|
|
@@ -3861,16 +3866,6 @@ window.__ModuleLoader__.load({
|
|
|
3861
3866
|
function MarketEmpty({ t }) {
|
|
3862
3867
|
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
|
|
3863
3868
|
}
|
|
3864
|
-
var PanelFoot_module_default = {
|
|
3865
|
-
foot: "_foot_1us83_1",
|
|
3866
|
-
footText: "_footText_1us83_12",
|
|
3867
|
-
footTextMd: "_footTextMd_1us83_17"
|
|
3868
|
-
};
|
|
3869
|
-
//#endregion
|
|
3870
|
-
//#region src/shared/components/PanelFoot.tsx
|
|
3871
|
-
function PanelFoot({ text, size = "sm", children }) {
|
|
3872
|
-
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3873
|
-
}
|
|
3874
3869
|
//#endregion
|
|
3875
3870
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
3876
3871
|
var PROGRESS_KEY = {
|
|
@@ -3939,10 +3934,17 @@ window.__ModuleLoader__.load({
|
|
|
3939
3934
|
pending,
|
|
3940
3935
|
failure: failureOf(row.id),
|
|
3941
3936
|
onAct: (action) => void act(row.id, action)
|
|
3942
|
-
})))
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3937
|
+
}))));
|
|
3938
|
+
}
|
|
3939
|
+
var PanelFoot_module_default = {
|
|
3940
|
+
foot: "_foot_1us83_1",
|
|
3941
|
+
footText: "_footText_1us83_12",
|
|
3942
|
+
footTextMd: "_footTextMd_1us83_17"
|
|
3943
|
+
};
|
|
3944
|
+
//#endregion
|
|
3945
|
+
//#region src/shared/components/PanelFoot.tsx
|
|
3946
|
+
function PanelFoot({ text, size = "sm", children }) {
|
|
3947
|
+
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3946
3948
|
}
|
|
3947
3949
|
//#endregion
|
|
3948
3950
|
//#region src/app/layouts/rightbar/MarketView.tsx
|
|
@@ -4145,7 +4147,7 @@ window.__ModuleLoader__.load({
|
|
|
4145
4147
|
message: t("panels.market.failed", { reason })
|
|
4146
4148
|
});
|
|
4147
4149
|
};
|
|
4148
|
-
const settled = freshness
|
|
4150
|
+
const settled = marketSettled(freshness, installedRead);
|
|
4149
4151
|
const nothing = shown.length === 0 && installedList.length === 0 && pluginList.length === 0;
|
|
4150
4152
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketChecking, { t });
|
|
4151
4153
|
if (nothing) return /* @__PURE__ */ h(MarketEmpty, { t });
|
|
@@ -5201,11 +5203,14 @@ window.__ModuleLoader__.load({
|
|
|
5201
5203
|
});
|
|
5202
5204
|
const mock = fixturePick.enabled ? fixturePick.current : void 0;
|
|
5203
5205
|
const mockNonce = fixturePick.nonce;
|
|
5206
|
+
const shownFreshness = mock === void 0 ? freshness : mock.loaded === false ? pendingFreshness : MOCK_FRESHNESS;
|
|
5207
|
+
const shownRead = mock === void 0 ? installedRead : mock.installedRead ?? true;
|
|
5208
|
+
const busy = !marketSettled(shownFreshness, shownRead) || shownFreshness.checking;
|
|
5204
5209
|
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketPage }, /* @__PURE__ */ h("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ h("div", null, /* @__PURE__ */ h("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ h("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketPageTools }, /* @__PURE__ */ h(Tip, { label: t("panels.market.recheck") }, /* @__PURE__ */ h("button", {
|
|
5205
5210
|
type: "button",
|
|
5206
|
-
className: `${MarketPage_module_default.marketIconButton}${checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
|
|
5211
|
+
className: `${MarketPage_module_default.marketIconButton}${shownFreshness.checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
|
|
5207
5212
|
"aria-label": t("panels.market.checkUpdates"),
|
|
5208
|
-
disabled:
|
|
5213
|
+
disabled: busy,
|
|
5209
5214
|
onClick: () => {
|
|
5210
5215
|
forceProbe();
|
|
5211
5216
|
reloadVersions({ force: true });
|
|
@@ -5218,6 +5223,7 @@ window.__ModuleLoader__.load({
|
|
|
5218
5223
|
size: "sm",
|
|
5219
5224
|
className: MarketPage_module_default.marketAddButton,
|
|
5220
5225
|
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
|
|
5226
|
+
disabled: busy,
|
|
5221
5227
|
onClick: () => setAdding(true)
|
|
5222
5228
|
}, t("panels.market.add.open")))), fixturePick.enabled ? /* @__PURE__ */ h(MockStrip, {
|
|
5223
5229
|
mocks: marketMocks,
|
|
@@ -5228,11 +5234,11 @@ window.__ModuleLoader__.load({
|
|
|
5228
5234
|
t,
|
|
5229
5235
|
manifests,
|
|
5230
5236
|
capabilities,
|
|
5231
|
-
freshness:
|
|
5237
|
+
freshness: shownFreshness,
|
|
5232
5238
|
onChanged: reload,
|
|
5233
5239
|
updates,
|
|
5234
5240
|
installed,
|
|
5235
|
-
installedRead:
|
|
5241
|
+
installedRead: shownRead,
|
|
5236
5242
|
plugins,
|
|
5237
5243
|
settling: mock === void 0 ? settling : void 0,
|
|
5238
5244
|
mock
|
package/dist/board.css
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[data-wb-dot] {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
gap: var(--wb-len-6);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.wb-iconButton:hover {
|
|
8
|
+
color: var(--dsw-alias-label-primary);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.wb-iconButton:focus-visible {
|
|
12
|
+
outline: var(--dsw-focus-ring-width) solid
|
|
13
|
+
var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
|
|
14
|
+
outline-offset: -2px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.wb-spinning svg {
|
|
18
|
+
animation: wb-spin var(--wb-dur-0-9) linear infinite;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@keyframes wb-dash {
|
|
22
|
+
0% {
|
|
23
|
+
stroke-dasharray: 12 150;
|
|
24
|
+
stroke-dashoffset: 0;
|
|
25
|
+
}50% {
|
|
26
|
+
stroke-dasharray: 24 150;
|
|
27
|
+
stroke-dashoffset: -6;
|
|
28
|
+
}to {
|
|
29
|
+
stroke-dasharray: 12 150;
|
|
30
|
+
stroke-dashoffset: 0;
|
|
31
|
+
}}
|
|
@@ -436,7 +436,12 @@ var DECLARATION_REQUIRED_KEYS = [
|
|
|
436
436
|
"host"
|
|
437
437
|
];
|
|
438
438
|
var CARD_KEYS = ["titleKey", "order"];
|
|
439
|
-
var TOOL_KEYS = [
|
|
439
|
+
var TOOL_KEYS = [
|
|
440
|
+
"name",
|
|
441
|
+
"writes",
|
|
442
|
+
"key"
|
|
443
|
+
];
|
|
444
|
+
var TOOL_KEY_SHAPE = /^[a-z][a-zA-Z0-9]*$/;
|
|
440
445
|
var HOST_KEYS = ["inject", "optional"];
|
|
441
446
|
function text(value) {
|
|
442
447
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -478,6 +483,7 @@ function declarationProblemsOf(subject, raw) {
|
|
|
478
483
|
if (!Array.isArray(tools)) problems.push(`${subject}: dsh.workbench.tools 要是一串声明,现在是 ${JSON.stringify(tools)}`);
|
|
479
484
|
else {
|
|
480
485
|
const seen = /* @__PURE__ */ new Set();
|
|
486
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
481
487
|
tools.forEach((tool, index) => {
|
|
482
488
|
const at = `dsh.workbench.tools[${index}]`;
|
|
483
489
|
if (!isRecord(tool)) {
|
|
@@ -491,6 +497,12 @@ function declarationProblemsOf(subject, raw) {
|
|
|
491
497
|
else if (seen.has(name)) problems.push(`${subject}: ${at}.name「${name}」与前面那条撞了 —— 工具名会进 dsh 的工具表,不许重`);
|
|
492
498
|
else seen.add(name);
|
|
493
499
|
if (typeof tool.writes !== "boolean") problems.push(`${subject}: ${at}.writes 要是 true / false(它是"这会写"的唯一声明,缺了审批无从认领)`);
|
|
500
|
+
if (tool.key !== void 0) {
|
|
501
|
+
const key = text(tool.key);
|
|
502
|
+
if (!TOOL_KEY_SHAPE.test(key)) problems.push(`${subject}: ${at}.key 要是 lowerCamelCase 的标识符(如 \`sync\` / \`podLogs\`),现在是 ${JSON.stringify(tool.key)} —— 它会变成生成物里的键名,所以不引号、不许带点或横线`);
|
|
503
|
+
else if (seenKeys.has(key)) problems.push(`${subject}: ${at}.key「${key}」与前面那条撞了 —— 生成物里的键只能有一个`);
|
|
504
|
+
else seenKeys.add(key);
|
|
505
|
+
}
|
|
494
506
|
});
|
|
495
507
|
}
|
|
496
508
|
}
|
|
@@ -1222,11 +1234,10 @@ var en = {
|
|
|
1222
1234
|
"panels.market.missing": "not installed",
|
|
1223
1235
|
"panels.market.unchecked": "unknown",
|
|
1224
1236
|
"panels.market.checking": "checking",
|
|
1225
|
-
"panels.market.sectionInstalled": "Installed",
|
|
1237
|
+
"panels.market.sectionInstalled": "Installed modules",
|
|
1226
1238
|
"panels.market.sectionPending": "Not installed",
|
|
1227
1239
|
"panels.market.sectionShared": "Shared dependencies",
|
|
1228
1240
|
"panels.market.sharedUsedBy": "Used by {modules}",
|
|
1229
|
-
"panels.market.sharedFoot": "These cannot be uninstalled here: they come with modules, and would be reinstalled anyway. To stop using one, turn off the modules that use it.",
|
|
1230
1241
|
"panels.market.listSeparator": ", ",
|
|
1231
1242
|
"panels.market.sharedMissing": "not installed",
|
|
1232
1243
|
"panels.market.sharedOutdated": "update available",
|
|
@@ -1251,15 +1262,13 @@ var en = {
|
|
|
1251
1262
|
"panels.market.noSource": "This module declares no install method — install it yourself",
|
|
1252
1263
|
"panels.market.badSource": "The install method is incomplete — install it yourself",
|
|
1253
1264
|
"panels.market.empty": "No modules available",
|
|
1254
|
-
"panels.market.
|
|
1255
|
-
"panels.market.sectionLocal": "Linked locally",
|
|
1265
|
+
"panels.market.sectionLocal": "Local modules",
|
|
1256
1266
|
"panels.market.sectionUnlisted": "Not from the market",
|
|
1257
1267
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
1258
1268
|
"panels.market.moduleOutdated": "update available",
|
|
1259
1269
|
"panels.market.moduleRefused": "This module was built for an older version of the workbench, so it does not work here. Update it, or uninstall.",
|
|
1260
1270
|
"panels.market.moduleRefusedDetail": "Why it cannot be used: {reason}",
|
|
1261
1271
|
"panels.market.moduleRestartHint": "installed but not active — restart dsh once to bring it up",
|
|
1262
|
-
"panels.market.pluginLocalNoUpdate": "Installed from a local folder, so there is nowhere to check for a newer version — uninstall only",
|
|
1263
1272
|
"panels.market.pluginKeptInUse": "Files kept for now: {names} still uses it.",
|
|
1264
1273
|
"panels.market.pluginKeptUnsure": "Files kept for now: some modules on this machine do not say what they use, so it is unclear who needs it.",
|
|
1265
1274
|
"panels.market.pluginKeptHeld": "Files kept: this one is yours, and a module letting go will not remove it.",
|
|
@@ -1553,11 +1562,10 @@ var zh = {
|
|
|
1553
1562
|
"panels.market.missing": "未装",
|
|
1554
1563
|
"panels.market.unchecked": "状态未知",
|
|
1555
1564
|
"panels.market.checking": "检测中",
|
|
1556
|
-
"panels.market.sectionInstalled": "
|
|
1565
|
+
"panels.market.sectionInstalled": "已安装模块",
|
|
1557
1566
|
"panels.market.sectionPending": "未安装",
|
|
1558
1567
|
"panels.market.sectionShared": "共用依赖",
|
|
1559
1568
|
"panels.market.sharedUsedBy": "供 {modules} 使用",
|
|
1560
|
-
"panels.market.sharedFoot": "这一段不给卸载:它们跟着模块来,卸掉也会被装回来。要停用一份,就去关掉正在用它的那些模块。",
|
|
1561
1569
|
"panels.market.listSeparator": "、",
|
|
1562
1570
|
"panels.market.sharedMissing": "未装",
|
|
1563
1571
|
"panels.market.sharedOutdated": "有新版",
|
|
@@ -1582,15 +1590,13 @@ var zh = {
|
|
|
1582
1590
|
"panels.market.noSource": "这个模块没声明怎么装,只能自己动手",
|
|
1583
1591
|
"panels.market.badSource": "安装方式没写全,只能自己动手",
|
|
1584
1592
|
"panels.market.empty": "暂无可用模块",
|
|
1585
|
-
"panels.market.
|
|
1586
|
-
"panels.market.sectionLocal": "本地装的",
|
|
1593
|
+
"panels.market.sectionLocal": "本地模块",
|
|
1587
1594
|
"panels.market.sectionUnlisted": "不是从市场装的",
|
|
1588
1595
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
1589
1596
|
"panels.market.moduleOutdated": "有新版",
|
|
1590
1597
|
"panels.market.moduleRefused": "这个模块是给旧版本的工作台写的,现在用不了。更新它,或者卸载。",
|
|
1591
1598
|
"panels.market.moduleRefusedDetail": "装不上的原因:{reason}",
|
|
1592
1599
|
"panels.market.moduleRestartHint": "装好了但还没生效 —— 重启一次 dsh 就会出来",
|
|
1593
|
-
"panels.market.pluginLocalNoUpdate": "本地装的,没地方查新版,所以只给卸载",
|
|
1594
1600
|
"panels.market.pluginKeptInUse": "文件先留着:{names} 还要用它。",
|
|
1595
1601
|
"panels.market.pluginKeptUnsure": "文件先留着:这台机器上还有模块看不出用了什么,说不准谁在用它。",
|
|
1596
1602
|
"panels.market.pluginKeptHeld": "文件留着:你自己装的那一份,模块放手不动它。",
|
|
@@ -2392,6 +2398,9 @@ function panelRowName(label, hint, t) {
|
|
|
2392
2398
|
//#endregion
|
|
2393
2399
|
//#region src/app/layouts/rightbar/market-freshness.ts
|
|
2394
2400
|
var MARKET_STALE_MS = VERSION_CHECK_TTL_MS;
|
|
2401
|
+
function marketSettled(freshness, installedRead) {
|
|
2402
|
+
return freshness.loaded && installedRead !== false;
|
|
2403
|
+
}
|
|
2395
2404
|
function shouldProbeOnEnter(input) {
|
|
2396
2405
|
if (input.checkedAt === null) return true;
|
|
2397
2406
|
return input.now - input.checkedAt >= input.staleMs;
|
|
@@ -2878,7 +2887,7 @@ function buildMarketMocks(roster) {
|
|
|
2878
2887
|
},
|
|
2879
2888
|
{
|
|
2880
2889
|
id: "plugin-local",
|
|
2881
|
-
label: "本地目录装的 opencli
|
|
2890
|
+
label: "本地目录装的 opencli 插件:没有版本源,只给卸载",
|
|
2882
2891
|
manifests: [],
|
|
2883
2892
|
capabilities: {},
|
|
2884
2893
|
plugins: [{
|
|
@@ -2890,8 +2899,7 @@ function buildMarketMocks(roster) {
|
|
|
2890
2899
|
rows: 0,
|
|
2891
2900
|
plugins: 1,
|
|
2892
2901
|
pluginActions: ["uninstall-plugin"],
|
|
2893
|
-
pluginNote:
|
|
2894
|
-
pluginNoteKey: "panels.market.pluginLocalNoUpdate"
|
|
2902
|
+
pluginNote: false
|
|
2895
2903
|
}
|
|
2896
2904
|
},
|
|
2897
2905
|
{
|
|
@@ -3588,10 +3596,7 @@ function noteOf(plugin) {
|
|
|
3588
3596
|
key: "panels.market.pluginBroken",
|
|
3589
3597
|
params: {}
|
|
3590
3598
|
};
|
|
3591
|
-
if (plugin.local === true) return
|
|
3592
|
-
key: "panels.market.pluginLocalNoUpdate",
|
|
3593
|
-
params: {}
|
|
3594
|
-
};
|
|
3599
|
+
if (plugin.local === true) return void 0;
|
|
3595
3600
|
if (plugin.name !== void 0 && plugin.name !== plugin.pkg) return {
|
|
3596
3601
|
key: "panels.market.pluginAlsoKnownAs",
|
|
3597
3602
|
params: { pkg: plugin.pkg }
|
|
@@ -3854,16 +3859,6 @@ function MarketChecking({ t }) {
|
|
|
3854
3859
|
function MarketEmpty({ t }) {
|
|
3855
3860
|
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
|
|
3856
3861
|
}
|
|
3857
|
-
var PanelFoot_module_default = {
|
|
3858
|
-
foot: "_foot_1us83_1",
|
|
3859
|
-
footText: "_footText_1us83_12",
|
|
3860
|
-
footTextMd: "_footTextMd_1us83_17"
|
|
3861
|
-
};
|
|
3862
|
-
//#endregion
|
|
3863
|
-
//#region src/shared/components/PanelFoot.tsx
|
|
3864
|
-
function PanelFoot({ text, size = "sm", children }) {
|
|
3865
|
-
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3866
|
-
}
|
|
3867
3862
|
//#endregion
|
|
3868
3863
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
3869
3864
|
var PROGRESS_KEY = {
|
|
@@ -3932,10 +3927,17 @@ function SharedSection({ t, rows, pending, failureOf, act }) {
|
|
|
3932
3927
|
pending,
|
|
3933
3928
|
failure: failureOf(row.id),
|
|
3934
3929
|
onAct: (action) => void act(row.id, action)
|
|
3935
|
-
})))
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3930
|
+
}))));
|
|
3931
|
+
}
|
|
3932
|
+
var PanelFoot_module_default = {
|
|
3933
|
+
foot: "_foot_1us83_1",
|
|
3934
|
+
footText: "_footText_1us83_12",
|
|
3935
|
+
footTextMd: "_footTextMd_1us83_17"
|
|
3936
|
+
};
|
|
3937
|
+
//#endregion
|
|
3938
|
+
//#region src/shared/components/PanelFoot.tsx
|
|
3939
|
+
function PanelFoot({ text, size = "sm", children }) {
|
|
3940
|
+
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3939
3941
|
}
|
|
3940
3942
|
//#endregion
|
|
3941
3943
|
//#region src/app/layouts/rightbar/MarketView.tsx
|
|
@@ -4138,7 +4140,7 @@ function MarketView({ t, manifests, capabilities, freshness, onChanged, updates,
|
|
|
4138
4140
|
message: t("panels.market.failed", { reason })
|
|
4139
4141
|
});
|
|
4140
4142
|
};
|
|
4141
|
-
const settled = freshness
|
|
4143
|
+
const settled = marketSettled(freshness, installedRead);
|
|
4142
4144
|
const nothing = shown.length === 0 && installedList.length === 0 && pluginList.length === 0;
|
|
4143
4145
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketChecking, { t });
|
|
4144
4146
|
if (nothing) return /* @__PURE__ */ h(MarketEmpty, { t });
|
|
@@ -5194,11 +5196,14 @@ function MarketPanel({ t, units }) {
|
|
|
5194
5196
|
});
|
|
5195
5197
|
const mock = fixturePick.enabled ? fixturePick.current : void 0;
|
|
5196
5198
|
const mockNonce = fixturePick.nonce;
|
|
5199
|
+
const shownFreshness = mock === void 0 ? freshness : mock.loaded === false ? pendingFreshness : MOCK_FRESHNESS;
|
|
5200
|
+
const shownRead = mock === void 0 ? installedRead : mock.installedRead ?? true;
|
|
5201
|
+
const busy = !marketSettled(shownFreshness, shownRead) || shownFreshness.checking;
|
|
5197
5202
|
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketPage }, /* @__PURE__ */ h("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ h("div", null, /* @__PURE__ */ h("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ h("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketPageTools }, /* @__PURE__ */ h(Tip, { label: t("panels.market.recheck") }, /* @__PURE__ */ h("button", {
|
|
5198
5203
|
type: "button",
|
|
5199
|
-
className: `${MarketPage_module_default.marketIconButton}${checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
|
|
5204
|
+
className: `${MarketPage_module_default.marketIconButton}${shownFreshness.checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
|
|
5200
5205
|
"aria-label": t("panels.market.checkUpdates"),
|
|
5201
|
-
disabled:
|
|
5206
|
+
disabled: busy,
|
|
5202
5207
|
onClick: () => {
|
|
5203
5208
|
forceProbe();
|
|
5204
5209
|
reloadVersions({ force: true });
|
|
@@ -5211,6 +5216,7 @@ function MarketPanel({ t, units }) {
|
|
|
5211
5216
|
size: "sm",
|
|
5212
5217
|
className: MarketPage_module_default.marketAddButton,
|
|
5213
5218
|
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
|
|
5219
|
+
disabled: busy,
|
|
5214
5220
|
onClick: () => setAdding(true)
|
|
5215
5221
|
}, t("panels.market.add.open")))), fixturePick.enabled ? /* @__PURE__ */ h(MockStrip, {
|
|
5216
5222
|
mocks: marketMocks,
|
|
@@ -5221,11 +5227,11 @@ function MarketPanel({ t, units }) {
|
|
|
5221
5227
|
t,
|
|
5222
5228
|
manifests,
|
|
5223
5229
|
capabilities,
|
|
5224
|
-
freshness:
|
|
5230
|
+
freshness: shownFreshness,
|
|
5225
5231
|
onChanged: reload,
|
|
5226
5232
|
updates,
|
|
5227
5233
|
installed,
|
|
5228
|
-
installedRead:
|
|
5234
|
+
installedRead: shownRead,
|
|
5229
5235
|
plugins,
|
|
5230
5236
|
settling: mock === void 0 ? settling : void 0,
|
|
5231
5237
|
mock
|
package/dist/client/index.js
CHANGED
|
@@ -439,7 +439,12 @@ var DECLARATION_REQUIRED_KEYS = [
|
|
|
439
439
|
"host"
|
|
440
440
|
];
|
|
441
441
|
var CARD_KEYS = ["titleKey", "order"];
|
|
442
|
-
var TOOL_KEYS = [
|
|
442
|
+
var TOOL_KEYS = [
|
|
443
|
+
"name",
|
|
444
|
+
"writes",
|
|
445
|
+
"key"
|
|
446
|
+
];
|
|
447
|
+
var TOOL_KEY_SHAPE = /^[a-z][a-zA-Z0-9]*$/;
|
|
443
448
|
var HOST_KEYS = ["inject", "optional"];
|
|
444
449
|
function text(value) {
|
|
445
450
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -481,6 +486,7 @@ function declarationProblemsOf(subject, raw) {
|
|
|
481
486
|
if (!Array.isArray(tools)) problems.push(`${subject}: dsh.workbench.tools 要是一串声明,现在是 ${JSON.stringify(tools)}`);
|
|
482
487
|
else {
|
|
483
488
|
const seen = /* @__PURE__ */ new Set();
|
|
489
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
484
490
|
tools.forEach((tool, index) => {
|
|
485
491
|
const at = `dsh.workbench.tools[${index}]`;
|
|
486
492
|
if (!isRecord(tool)) {
|
|
@@ -494,6 +500,12 @@ function declarationProblemsOf(subject, raw) {
|
|
|
494
500
|
else if (seen.has(name)) problems.push(`${subject}: ${at}.name「${name}」与前面那条撞了 —— 工具名会进 dsh 的工具表,不许重`);
|
|
495
501
|
else seen.add(name);
|
|
496
502
|
if (typeof tool.writes !== "boolean") problems.push(`${subject}: ${at}.writes 要是 true / false(它是"这会写"的唯一声明,缺了审批无从认领)`);
|
|
503
|
+
if (tool.key !== void 0) {
|
|
504
|
+
const key = text(tool.key);
|
|
505
|
+
if (!TOOL_KEY_SHAPE.test(key)) problems.push(`${subject}: ${at}.key 要是 lowerCamelCase 的标识符(如 \`sync\` / \`podLogs\`),现在是 ${JSON.stringify(tool.key)} —— 它会变成生成物里的键名,所以不引号、不许带点或横线`);
|
|
506
|
+
else if (seenKeys.has(key)) problems.push(`${subject}: ${at}.key「${key}」与前面那条撞了 —— 生成物里的键只能有一个`);
|
|
507
|
+
else seenKeys.add(key);
|
|
508
|
+
}
|
|
497
509
|
});
|
|
498
510
|
}
|
|
499
511
|
}
|
|
@@ -1225,11 +1237,10 @@ var en = {
|
|
|
1225
1237
|
"panels.market.missing": "not installed",
|
|
1226
1238
|
"panels.market.unchecked": "unknown",
|
|
1227
1239
|
"panels.market.checking": "checking",
|
|
1228
|
-
"panels.market.sectionInstalled": "Installed",
|
|
1240
|
+
"panels.market.sectionInstalled": "Installed modules",
|
|
1229
1241
|
"panels.market.sectionPending": "Not installed",
|
|
1230
1242
|
"panels.market.sectionShared": "Shared dependencies",
|
|
1231
1243
|
"panels.market.sharedUsedBy": "Used by {modules}",
|
|
1232
|
-
"panels.market.sharedFoot": "These cannot be uninstalled here: they come with modules, and would be reinstalled anyway. To stop using one, turn off the modules that use it.",
|
|
1233
1244
|
"panels.market.listSeparator": ", ",
|
|
1234
1245
|
"panels.market.sharedMissing": "not installed",
|
|
1235
1246
|
"panels.market.sharedOutdated": "update available",
|
|
@@ -1254,15 +1265,13 @@ var en = {
|
|
|
1254
1265
|
"panels.market.noSource": "This module declares no install method — install it yourself",
|
|
1255
1266
|
"panels.market.badSource": "The install method is incomplete — install it yourself",
|
|
1256
1267
|
"panels.market.empty": "No modules available",
|
|
1257
|
-
"panels.market.
|
|
1258
|
-
"panels.market.sectionLocal": "Linked locally",
|
|
1268
|
+
"panels.market.sectionLocal": "Local modules",
|
|
1259
1269
|
"panels.market.sectionUnlisted": "Not from the market",
|
|
1260
1270
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
1261
1271
|
"panels.market.moduleOutdated": "update available",
|
|
1262
1272
|
"panels.market.moduleRefused": "This module was built for an older version of the workbench, so it does not work here. Update it, or uninstall.",
|
|
1263
1273
|
"panels.market.moduleRefusedDetail": "Why it cannot be used: {reason}",
|
|
1264
1274
|
"panels.market.moduleRestartHint": "installed but not active — restart dsh once to bring it up",
|
|
1265
|
-
"panels.market.pluginLocalNoUpdate": "Installed from a local folder, so there is nowhere to check for a newer version — uninstall only",
|
|
1266
1275
|
"panels.market.pluginKeptInUse": "Files kept for now: {names} still uses it.",
|
|
1267
1276
|
"panels.market.pluginKeptUnsure": "Files kept for now: some modules on this machine do not say what they use, so it is unclear who needs it.",
|
|
1268
1277
|
"panels.market.pluginKeptHeld": "Files kept: this one is yours, and a module letting go will not remove it.",
|
|
@@ -1556,11 +1565,10 @@ var zh = {
|
|
|
1556
1565
|
"panels.market.missing": "未装",
|
|
1557
1566
|
"panels.market.unchecked": "状态未知",
|
|
1558
1567
|
"panels.market.checking": "检测中",
|
|
1559
|
-
"panels.market.sectionInstalled": "
|
|
1568
|
+
"panels.market.sectionInstalled": "已安装模块",
|
|
1560
1569
|
"panels.market.sectionPending": "未安装",
|
|
1561
1570
|
"panels.market.sectionShared": "共用依赖",
|
|
1562
1571
|
"panels.market.sharedUsedBy": "供 {modules} 使用",
|
|
1563
|
-
"panels.market.sharedFoot": "这一段不给卸载:它们跟着模块来,卸掉也会被装回来。要停用一份,就去关掉正在用它的那些模块。",
|
|
1564
1572
|
"panels.market.listSeparator": "、",
|
|
1565
1573
|
"panels.market.sharedMissing": "未装",
|
|
1566
1574
|
"panels.market.sharedOutdated": "有新版",
|
|
@@ -1585,15 +1593,13 @@ var zh = {
|
|
|
1585
1593
|
"panels.market.noSource": "这个模块没声明怎么装,只能自己动手",
|
|
1586
1594
|
"panels.market.badSource": "安装方式没写全,只能自己动手",
|
|
1587
1595
|
"panels.market.empty": "暂无可用模块",
|
|
1588
|
-
"panels.market.
|
|
1589
|
-
"panels.market.sectionLocal": "本地装的",
|
|
1596
|
+
"panels.market.sectionLocal": "本地模块",
|
|
1590
1597
|
"panels.market.sectionUnlisted": "不是从市场装的",
|
|
1591
1598
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
1592
1599
|
"panels.market.moduleOutdated": "有新版",
|
|
1593
1600
|
"panels.market.moduleRefused": "这个模块是给旧版本的工作台写的,现在用不了。更新它,或者卸载。",
|
|
1594
1601
|
"panels.market.moduleRefusedDetail": "装不上的原因:{reason}",
|
|
1595
1602
|
"panels.market.moduleRestartHint": "装好了但还没生效 —— 重启一次 dsh 就会出来",
|
|
1596
|
-
"panels.market.pluginLocalNoUpdate": "本地装的,没地方查新版,所以只给卸载",
|
|
1597
1603
|
"panels.market.pluginKeptInUse": "文件先留着:{names} 还要用它。",
|
|
1598
1604
|
"panels.market.pluginKeptUnsure": "文件先留着:这台机器上还有模块看不出用了什么,说不准谁在用它。",
|
|
1599
1605
|
"panels.market.pluginKeptHeld": "文件留着:你自己装的那一份,模块放手不动它。",
|
|
@@ -2395,6 +2401,9 @@ function panelRowName(label, hint, t) {
|
|
|
2395
2401
|
//#endregion
|
|
2396
2402
|
//#region src/app/layouts/rightbar/market-freshness.ts
|
|
2397
2403
|
var MARKET_STALE_MS = VERSION_CHECK_TTL_MS;
|
|
2404
|
+
function marketSettled(freshness, installedRead) {
|
|
2405
|
+
return freshness.loaded && installedRead !== false;
|
|
2406
|
+
}
|
|
2398
2407
|
function shouldProbeOnEnter(input) {
|
|
2399
2408
|
if (input.checkedAt === null) return true;
|
|
2400
2409
|
return input.now - input.checkedAt >= input.staleMs;
|
|
@@ -2881,7 +2890,7 @@ function buildMarketMocks(roster) {
|
|
|
2881
2890
|
},
|
|
2882
2891
|
{
|
|
2883
2892
|
id: "plugin-local",
|
|
2884
|
-
label: "本地目录装的 opencli
|
|
2893
|
+
label: "本地目录装的 opencli 插件:没有版本源,只给卸载",
|
|
2885
2894
|
manifests: [],
|
|
2886
2895
|
capabilities: {},
|
|
2887
2896
|
plugins: [{
|
|
@@ -2893,8 +2902,7 @@ function buildMarketMocks(roster) {
|
|
|
2893
2902
|
rows: 0,
|
|
2894
2903
|
plugins: 1,
|
|
2895
2904
|
pluginActions: ["uninstall-plugin"],
|
|
2896
|
-
pluginNote:
|
|
2897
|
-
pluginNoteKey: "panels.market.pluginLocalNoUpdate"
|
|
2905
|
+
pluginNote: false
|
|
2898
2906
|
}
|
|
2899
2907
|
},
|
|
2900
2908
|
{
|
|
@@ -3591,10 +3599,7 @@ function noteOf(plugin) {
|
|
|
3591
3599
|
key: "panels.market.pluginBroken",
|
|
3592
3600
|
params: {}
|
|
3593
3601
|
};
|
|
3594
|
-
if (plugin.local === true) return
|
|
3595
|
-
key: "panels.market.pluginLocalNoUpdate",
|
|
3596
|
-
params: {}
|
|
3597
|
-
};
|
|
3602
|
+
if (plugin.local === true) return void 0;
|
|
3598
3603
|
if (plugin.name !== void 0 && plugin.name !== plugin.pkg) return {
|
|
3599
3604
|
key: "panels.market.pluginAlsoKnownAs",
|
|
3600
3605
|
params: { pkg: plugin.pkg }
|
|
@@ -3857,16 +3862,6 @@ function MarketChecking({ t }) {
|
|
|
3857
3862
|
function MarketEmpty({ t }) {
|
|
3858
3863
|
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
|
|
3859
3864
|
}
|
|
3860
|
-
var PanelFoot_module_default = {
|
|
3861
|
-
foot: "_foot_1us83_1",
|
|
3862
|
-
footText: "_footText_1us83_12",
|
|
3863
|
-
footTextMd: "_footTextMd_1us83_17"
|
|
3864
|
-
};
|
|
3865
|
-
//#endregion
|
|
3866
|
-
//#region src/shared/components/PanelFoot.tsx
|
|
3867
|
-
function PanelFoot({ text, size = "sm", children }) {
|
|
3868
|
-
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3869
|
-
}
|
|
3870
3865
|
//#endregion
|
|
3871
3866
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
3872
3867
|
var PROGRESS_KEY = {
|
|
@@ -3935,10 +3930,17 @@ function SharedSection({ t, rows, pending, failureOf, act }) {
|
|
|
3935
3930
|
pending,
|
|
3936
3931
|
failure: failureOf(row.id),
|
|
3937
3932
|
onAct: (action) => void act(row.id, action)
|
|
3938
|
-
})))
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3933
|
+
}))));
|
|
3934
|
+
}
|
|
3935
|
+
var PanelFoot_module_default = {
|
|
3936
|
+
foot: "_foot_1us83_1",
|
|
3937
|
+
footText: "_footText_1us83_12",
|
|
3938
|
+
footTextMd: "_footTextMd_1us83_17"
|
|
3939
|
+
};
|
|
3940
|
+
//#endregion
|
|
3941
|
+
//#region src/shared/components/PanelFoot.tsx
|
|
3942
|
+
function PanelFoot({ text, size = "sm", children }) {
|
|
3943
|
+
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3942
3944
|
}
|
|
3943
3945
|
//#endregion
|
|
3944
3946
|
//#region src/app/layouts/rightbar/MarketView.tsx
|
|
@@ -4141,7 +4143,7 @@ function MarketView({ t, manifests, capabilities, freshness, onChanged, updates,
|
|
|
4141
4143
|
message: t("panels.market.failed", { reason })
|
|
4142
4144
|
});
|
|
4143
4145
|
};
|
|
4144
|
-
const settled = freshness
|
|
4146
|
+
const settled = marketSettled(freshness, installedRead);
|
|
4145
4147
|
const nothing = shown.length === 0 && installedList.length === 0 && pluginList.length === 0;
|
|
4146
4148
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketChecking, { t });
|
|
4147
4149
|
if (nothing) return /* @__PURE__ */ h(MarketEmpty, { t });
|
|
@@ -5197,11 +5199,14 @@ function MarketPanel({ t, units }) {
|
|
|
5197
5199
|
});
|
|
5198
5200
|
const mock = fixturePick.enabled ? fixturePick.current : void 0;
|
|
5199
5201
|
const mockNonce = fixturePick.nonce;
|
|
5202
|
+
const shownFreshness = mock === void 0 ? freshness : mock.loaded === false ? pendingFreshness : MOCK_FRESHNESS;
|
|
5203
|
+
const shownRead = mock === void 0 ? installedRead : mock.installedRead ?? true;
|
|
5204
|
+
const busy = !marketSettled(shownFreshness, shownRead) || shownFreshness.checking;
|
|
5200
5205
|
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketPage }, /* @__PURE__ */ h("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ h("div", null, /* @__PURE__ */ h("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ h("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketPageTools }, /* @__PURE__ */ h(Tip, { label: t("panels.market.recheck") }, /* @__PURE__ */ h("button", {
|
|
5201
5206
|
type: "button",
|
|
5202
|
-
className: `${MarketPage_module_default.marketIconButton}${checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
|
|
5207
|
+
className: `${MarketPage_module_default.marketIconButton}${shownFreshness.checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
|
|
5203
5208
|
"aria-label": t("panels.market.checkUpdates"),
|
|
5204
|
-
disabled:
|
|
5209
|
+
disabled: busy,
|
|
5205
5210
|
onClick: () => {
|
|
5206
5211
|
forceProbe();
|
|
5207
5212
|
reloadVersions({ force: true });
|
|
@@ -5214,6 +5219,7 @@ function MarketPanel({ t, units }) {
|
|
|
5214
5219
|
size: "sm",
|
|
5215
5220
|
className: MarketPage_module_default.marketAddButton,
|
|
5216
5221
|
icon: /* @__PURE__ */ h(IconPlusOutlineRegular, { size: 13 }),
|
|
5222
|
+
disabled: busy,
|
|
5217
5223
|
onClick: () => setAdding(true)
|
|
5218
5224
|
}, t("panels.market.add.open")))), fixturePick.enabled ? /* @__PURE__ */ h(MockStrip, {
|
|
5219
5225
|
mocks: marketMocks,
|
|
@@ -5224,11 +5230,11 @@ function MarketPanel({ t, units }) {
|
|
|
5224
5230
|
t,
|
|
5225
5231
|
manifests,
|
|
5226
5232
|
capabilities,
|
|
5227
|
-
freshness:
|
|
5233
|
+
freshness: shownFreshness,
|
|
5228
5234
|
onChanged: reload,
|
|
5229
5235
|
updates,
|
|
5230
5236
|
installed,
|
|
5231
|
-
installedRead:
|
|
5237
|
+
installedRead: shownRead,
|
|
5232
5238
|
plugins,
|
|
5233
5239
|
settling: mock === void 0 ? settling : void 0,
|
|
5234
5240
|
mock
|
package/dist/host/index.js
CHANGED
|
@@ -67,7 +67,12 @@ var DECLARATION_REQUIRED_KEYS = [
|
|
|
67
67
|
"host"
|
|
68
68
|
];
|
|
69
69
|
var CARD_KEYS = ["titleKey", "order"];
|
|
70
|
-
var TOOL_KEYS = [
|
|
70
|
+
var TOOL_KEYS = [
|
|
71
|
+
"name",
|
|
72
|
+
"writes",
|
|
73
|
+
"key"
|
|
74
|
+
];
|
|
75
|
+
var TOOL_KEY_SHAPE = /^[a-z][a-zA-Z0-9]*$/;
|
|
71
76
|
var HOST_KEYS = ["inject", "optional"];
|
|
72
77
|
function text$1(value) {
|
|
73
78
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -109,6 +114,7 @@ function declarationProblemsOf(subject, raw) {
|
|
|
109
114
|
if (!Array.isArray(tools)) problems.push(`${subject}: dsh.workbench.tools 要是一串声明,现在是 ${JSON.stringify(tools)}`);
|
|
110
115
|
else {
|
|
111
116
|
const seen = /* @__PURE__ */ new Set();
|
|
117
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
112
118
|
tools.forEach((tool, index) => {
|
|
113
119
|
const at = `dsh.workbench.tools[${index}]`;
|
|
114
120
|
if (!isRecord(tool)) {
|
|
@@ -122,6 +128,12 @@ function declarationProblemsOf(subject, raw) {
|
|
|
122
128
|
else if (seen.has(name)) problems.push(`${subject}: ${at}.name「${name}」与前面那条撞了 —— 工具名会进 dsh 的工具表,不许重`);
|
|
123
129
|
else seen.add(name);
|
|
124
130
|
if (typeof tool.writes !== "boolean") problems.push(`${subject}: ${at}.writes 要是 true / false(它是"这会写"的唯一声明,缺了审批无从认领)`);
|
|
131
|
+
if (tool.key !== void 0) {
|
|
132
|
+
const key = text$1(tool.key);
|
|
133
|
+
if (!TOOL_KEY_SHAPE.test(key)) problems.push(`${subject}: ${at}.key 要是 lowerCamelCase 的标识符(如 \`sync\` / \`podLogs\`),现在是 ${JSON.stringify(tool.key)} —— 它会变成生成物里的键名,所以不引号、不许带点或横线`);
|
|
134
|
+
else if (seenKeys.has(key)) problems.push(`${subject}: ${at}.key「${key}」与前面那条撞了 —— 生成物里的键只能有一个`);
|
|
135
|
+
else seenKeys.add(key);
|
|
136
|
+
}
|
|
125
137
|
});
|
|
126
138
|
}
|
|
127
139
|
}
|
|
@@ -250,11 +250,10 @@ export declare const kit: {
|
|
|
250
250
|
readonly "panels.market.missing": "\u672A\u88C5";
|
|
251
251
|
readonly "panels.market.unchecked": "\u72B6\u6001\u672A\u77E5";
|
|
252
252
|
readonly "panels.market.checking": "\u68C0\u6D4B\u4E2D";
|
|
253
|
-
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5";
|
|
253
|
+
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5\u6A21\u5757";
|
|
254
254
|
readonly "panels.market.sectionPending": "\u672A\u5B89\u88C5";
|
|
255
255
|
readonly "panels.market.sectionShared": "\u5171\u7528\u4F9D\u8D56";
|
|
256
256
|
readonly "panels.market.sharedUsedBy": "\u4F9B {modules} \u4F7F\u7528";
|
|
257
|
-
readonly "panels.market.sharedFoot": "\u8FD9\u4E00\u6BB5\u4E0D\u7ED9\u5378\u8F7D\uFF1A\u5B83\u4EEC\u8DDF\u7740\u6A21\u5757\u6765\uFF0C\u5378\u6389\u4E5F\u4F1A\u88AB\u88C5\u56DE\u6765\u3002\u8981\u505C\u7528\u4E00\u4EFD\uFF0C\u5C31\u53BB\u5173\u6389\u6B63\u5728\u7528\u5B83\u7684\u90A3\u4E9B\u6A21\u5757\u3002";
|
|
258
257
|
readonly "panels.market.listSeparator": "\u3001";
|
|
259
258
|
readonly "panels.market.sharedMissing": "\u672A\u88C5";
|
|
260
259
|
readonly "panels.market.sharedOutdated": "\u6709\u65B0\u7248";
|
|
@@ -279,15 +278,13 @@ export declare const kit: {
|
|
|
279
278
|
readonly "panels.market.noSource": "\u8FD9\u4E2A\u6A21\u5757\u6CA1\u58F0\u660E\u600E\u4E48\u88C5\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
280
279
|
readonly "panels.market.badSource": "\u5B89\u88C5\u65B9\u5F0F\u6CA1\u5199\u5168\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
281
280
|
readonly "panels.market.empty": "\u6682\u65E0\u53EF\u7528\u6A21\u5757";
|
|
282
|
-
readonly "panels.market.
|
|
283
|
-
readonly "panels.market.sectionLocal": "\u672C\u5730\u88C5\u7684";
|
|
281
|
+
readonly "panels.market.sectionLocal": "\u672C\u5730\u6A21\u5757";
|
|
284
282
|
readonly "panels.market.sectionUnlisted": "\u4E0D\u662F\u4ECE\u5E02\u573A\u88C5\u7684";
|
|
285
283
|
readonly "panels.market.sectionPlugins": "\u5DF2\u5B89\u88C5 opencli \u63D2\u4EF6";
|
|
286
284
|
readonly "panels.market.moduleOutdated": "\u6709\u65B0\u7248";
|
|
287
285
|
readonly "panels.market.moduleRefused": "\u8FD9\u4E2A\u6A21\u5757\u662F\u7ED9\u65E7\u7248\u672C\u7684\u5DE5\u4F5C\u53F0\u5199\u7684\uFF0C\u73B0\u5728\u7528\u4E0D\u4E86\u3002\u66F4\u65B0\u5B83\uFF0C\u6216\u8005\u5378\u8F7D\u3002";
|
|
288
286
|
readonly "panels.market.moduleRefusedDetail": "\u88C5\u4E0D\u4E0A\u7684\u539F\u56E0\uFF1A{reason}";
|
|
289
287
|
readonly "panels.market.moduleRestartHint": "\u88C5\u597D\u4E86\u4F46\u8FD8\u6CA1\u751F\u6548 \u2014\u2014 \u91CD\u542F\u4E00\u6B21 dsh \u5C31\u4F1A\u51FA\u6765";
|
|
290
|
-
readonly "panels.market.pluginLocalNoUpdate": "\u672C\u5730\u88C5\u7684\uFF0C\u6CA1\u5730\u65B9\u67E5\u65B0\u7248\uFF0C\u6240\u4EE5\u53EA\u7ED9\u5378\u8F7D";
|
|
291
288
|
readonly "panels.market.pluginKeptInUse": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A{names} \u8FD8\u8981\u7528\u5B83\u3002";
|
|
292
289
|
readonly "panels.market.pluginKeptUnsure": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A\u8FD9\u53F0\u673A\u5668\u4E0A\u8FD8\u6709\u6A21\u5757\u770B\u4E0D\u51FA\u7528\u4E86\u4EC0\u4E48\uFF0C\u8BF4\u4E0D\u51C6\u8C01\u5728\u7528\u5B83\u3002";
|
|
293
290
|
readonly "panels.market.pluginKeptHeld": "\u6587\u4EF6\u7559\u7740\uFF1A\u4F60\u81EA\u5DF1\u88C5\u7684\u90A3\u4E00\u4EFD\uFF0C\u6A21\u5757\u653E\u624B\u4E0D\u52A8\u5B83\u3002";
|
|
@@ -512,7 +509,7 @@ export declare const kit: {
|
|
|
512
509
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
513
510
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
514
511
|
};
|
|
515
|
-
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.
|
|
512
|
+
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.sectionLocal" | "panels.market.sectionUnlisted" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginAlsoKnownAs" | "panels.market.pluginBroken" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.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.classifying" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.cardBroken" | "panels.cardRetry" | "panels.empty" | "panels.emptyHint" | "env.title" | "env.checking" | "env.installing" | "env.failed" | "env.elapsed" | "env.stepFailed.install" | "env.stepFailed.path" | "env.stepFailed.shell" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.daemon" | "env.bridge.extension" | "env.bridge.extensionLink" | "env.bridge.profile" | "env.bridge.stale" | "env.bridge.unknown" | "env.fix.title" | "env.fix.why" | "env.fix.whyPath" | "env.fix.whyShell" | "env.fix.step" | "env.fix.stepPath" | "env.fix.stepShell" | "env.fix.permission" | "env.fix.network" | "env.fix.details" | "env.retry" | "env.copyCommand" | "env.copied" | "env.step.opencli" | "env.step.codingPlugin" | "env.step.bridge" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "rightbar.label" | "rightbar.expand" | "rightbar.collapse" | "rightbar.column.label" | "rightbar.column.workbench" | "rightbar.column.dsh" | "rightbar.refresh" | "rightbar.refreshing" | "rightbar.updatedAt" | "rightbar.noProject" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
|
|
516
513
|
};
|
|
517
514
|
mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
|
|
518
515
|
mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
|
|
@@ -583,11 +580,10 @@ export declare const kit: {
|
|
|
583
580
|
readonly "panels.market.missing": "\u672A\u88C5";
|
|
584
581
|
readonly "panels.market.unchecked": "\u72B6\u6001\u672A\u77E5";
|
|
585
582
|
readonly "panels.market.checking": "\u68C0\u6D4B\u4E2D";
|
|
586
|
-
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5";
|
|
583
|
+
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5\u6A21\u5757";
|
|
587
584
|
readonly "panels.market.sectionPending": "\u672A\u5B89\u88C5";
|
|
588
585
|
readonly "panels.market.sectionShared": "\u5171\u7528\u4F9D\u8D56";
|
|
589
586
|
readonly "panels.market.sharedUsedBy": "\u4F9B {modules} \u4F7F\u7528";
|
|
590
|
-
readonly "panels.market.sharedFoot": "\u8FD9\u4E00\u6BB5\u4E0D\u7ED9\u5378\u8F7D\uFF1A\u5B83\u4EEC\u8DDF\u7740\u6A21\u5757\u6765\uFF0C\u5378\u6389\u4E5F\u4F1A\u88AB\u88C5\u56DE\u6765\u3002\u8981\u505C\u7528\u4E00\u4EFD\uFF0C\u5C31\u53BB\u5173\u6389\u6B63\u5728\u7528\u5B83\u7684\u90A3\u4E9B\u6A21\u5757\u3002";
|
|
591
587
|
readonly "panels.market.listSeparator": "\u3001";
|
|
592
588
|
readonly "panels.market.sharedMissing": "\u672A\u88C5";
|
|
593
589
|
readonly "panels.market.sharedOutdated": "\u6709\u65B0\u7248";
|
|
@@ -612,15 +608,13 @@ export declare const kit: {
|
|
|
612
608
|
readonly "panels.market.noSource": "\u8FD9\u4E2A\u6A21\u5757\u6CA1\u58F0\u660E\u600E\u4E48\u88C5\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
613
609
|
readonly "panels.market.badSource": "\u5B89\u88C5\u65B9\u5F0F\u6CA1\u5199\u5168\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
614
610
|
readonly "panels.market.empty": "\u6682\u65E0\u53EF\u7528\u6A21\u5757";
|
|
615
|
-
readonly "panels.market.
|
|
616
|
-
readonly "panels.market.sectionLocal": "\u672C\u5730\u88C5\u7684";
|
|
611
|
+
readonly "panels.market.sectionLocal": "\u672C\u5730\u6A21\u5757";
|
|
617
612
|
readonly "panels.market.sectionUnlisted": "\u4E0D\u662F\u4ECE\u5E02\u573A\u88C5\u7684";
|
|
618
613
|
readonly "panels.market.sectionPlugins": "\u5DF2\u5B89\u88C5 opencli \u63D2\u4EF6";
|
|
619
614
|
readonly "panels.market.moduleOutdated": "\u6709\u65B0\u7248";
|
|
620
615
|
readonly "panels.market.moduleRefused": "\u8FD9\u4E2A\u6A21\u5757\u662F\u7ED9\u65E7\u7248\u672C\u7684\u5DE5\u4F5C\u53F0\u5199\u7684\uFF0C\u73B0\u5728\u7528\u4E0D\u4E86\u3002\u66F4\u65B0\u5B83\uFF0C\u6216\u8005\u5378\u8F7D\u3002";
|
|
621
616
|
readonly "panels.market.moduleRefusedDetail": "\u88C5\u4E0D\u4E0A\u7684\u539F\u56E0\uFF1A{reason}";
|
|
622
617
|
readonly "panels.market.moduleRestartHint": "\u88C5\u597D\u4E86\u4F46\u8FD8\u6CA1\u751F\u6548 \u2014\u2014 \u91CD\u542F\u4E00\u6B21 dsh \u5C31\u4F1A\u51FA\u6765";
|
|
623
|
-
readonly "panels.market.pluginLocalNoUpdate": "\u672C\u5730\u88C5\u7684\uFF0C\u6CA1\u5730\u65B9\u67E5\u65B0\u7248\uFF0C\u6240\u4EE5\u53EA\u7ED9\u5378\u8F7D";
|
|
624
618
|
readonly "panels.market.pluginKeptInUse": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A{names} \u8FD8\u8981\u7528\u5B83\u3002";
|
|
625
619
|
readonly "panels.market.pluginKeptUnsure": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A\u8FD9\u53F0\u673A\u5668\u4E0A\u8FD8\u6709\u6A21\u5757\u770B\u4E0D\u51FA\u7528\u4E86\u4EC0\u4E48\uFF0C\u8BF4\u4E0D\u51C6\u8C01\u5728\u7528\u5B83\u3002";
|
|
626
620
|
readonly "panels.market.pluginKeptHeld": "\u6587\u4EF6\u7559\u7740\uFF1A\u4F60\u81EA\u5DF1\u88C5\u7684\u90A3\u4E00\u4EFD\uFF0C\u6A21\u5757\u653E\u624B\u4E0D\u52A8\u5B83\u3002";
|
|
@@ -1065,11 +1059,10 @@ export declare const kit: {
|
|
|
1065
1059
|
readonly "panels.market.missing": "\u672A\u88C5";
|
|
1066
1060
|
readonly "panels.market.unchecked": "\u72B6\u6001\u672A\u77E5";
|
|
1067
1061
|
readonly "panels.market.checking": "\u68C0\u6D4B\u4E2D";
|
|
1068
|
-
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5";
|
|
1062
|
+
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5\u6A21\u5757";
|
|
1069
1063
|
readonly "panels.market.sectionPending": "\u672A\u5B89\u88C5";
|
|
1070
1064
|
readonly "panels.market.sectionShared": "\u5171\u7528\u4F9D\u8D56";
|
|
1071
1065
|
readonly "panels.market.sharedUsedBy": "\u4F9B {modules} \u4F7F\u7528";
|
|
1072
|
-
readonly "panels.market.sharedFoot": "\u8FD9\u4E00\u6BB5\u4E0D\u7ED9\u5378\u8F7D\uFF1A\u5B83\u4EEC\u8DDF\u7740\u6A21\u5757\u6765\uFF0C\u5378\u6389\u4E5F\u4F1A\u88AB\u88C5\u56DE\u6765\u3002\u8981\u505C\u7528\u4E00\u4EFD\uFF0C\u5C31\u53BB\u5173\u6389\u6B63\u5728\u7528\u5B83\u7684\u90A3\u4E9B\u6A21\u5757\u3002";
|
|
1073
1066
|
readonly "panels.market.listSeparator": "\u3001";
|
|
1074
1067
|
readonly "panels.market.sharedMissing": "\u672A\u88C5";
|
|
1075
1068
|
readonly "panels.market.sharedOutdated": "\u6709\u65B0\u7248";
|
|
@@ -1094,15 +1087,13 @@ export declare const kit: {
|
|
|
1094
1087
|
readonly "panels.market.noSource": "\u8FD9\u4E2A\u6A21\u5757\u6CA1\u58F0\u660E\u600E\u4E48\u88C5\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
1095
1088
|
readonly "panels.market.badSource": "\u5B89\u88C5\u65B9\u5F0F\u6CA1\u5199\u5168\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
1096
1089
|
readonly "panels.market.empty": "\u6682\u65E0\u53EF\u7528\u6A21\u5757";
|
|
1097
|
-
readonly "panels.market.
|
|
1098
|
-
readonly "panels.market.sectionLocal": "\u672C\u5730\u88C5\u7684";
|
|
1090
|
+
readonly "panels.market.sectionLocal": "\u672C\u5730\u6A21\u5757";
|
|
1099
1091
|
readonly "panels.market.sectionUnlisted": "\u4E0D\u662F\u4ECE\u5E02\u573A\u88C5\u7684";
|
|
1100
1092
|
readonly "panels.market.sectionPlugins": "\u5DF2\u5B89\u88C5 opencli \u63D2\u4EF6";
|
|
1101
1093
|
readonly "panels.market.moduleOutdated": "\u6709\u65B0\u7248";
|
|
1102
1094
|
readonly "panels.market.moduleRefused": "\u8FD9\u4E2A\u6A21\u5757\u662F\u7ED9\u65E7\u7248\u672C\u7684\u5DE5\u4F5C\u53F0\u5199\u7684\uFF0C\u73B0\u5728\u7528\u4E0D\u4E86\u3002\u66F4\u65B0\u5B83\uFF0C\u6216\u8005\u5378\u8F7D\u3002";
|
|
1103
1095
|
readonly "panels.market.moduleRefusedDetail": "\u88C5\u4E0D\u4E0A\u7684\u539F\u56E0\uFF1A{reason}";
|
|
1104
1096
|
readonly "panels.market.moduleRestartHint": "\u88C5\u597D\u4E86\u4F46\u8FD8\u6CA1\u751F\u6548 \u2014\u2014 \u91CD\u542F\u4E00\u6B21 dsh \u5C31\u4F1A\u51FA\u6765";
|
|
1105
|
-
readonly "panels.market.pluginLocalNoUpdate": "\u672C\u5730\u88C5\u7684\uFF0C\u6CA1\u5730\u65B9\u67E5\u65B0\u7248\uFF0C\u6240\u4EE5\u53EA\u7ED9\u5378\u8F7D";
|
|
1106
1097
|
readonly "panels.market.pluginKeptInUse": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A{names} \u8FD8\u8981\u7528\u5B83\u3002";
|
|
1107
1098
|
readonly "panels.market.pluginKeptUnsure": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A\u8FD9\u53F0\u673A\u5668\u4E0A\u8FD8\u6709\u6A21\u5757\u770B\u4E0D\u51FA\u7528\u4E86\u4EC0\u4E48\uFF0C\u8BF4\u4E0D\u51C6\u8C01\u5728\u7528\u5B83\u3002";
|
|
1108
1099
|
readonly "panels.market.pluginKeptHeld": "\u6587\u4EF6\u7559\u7740\uFF1A\u4F60\u81EA\u5DF1\u88C5\u7684\u90A3\u4E00\u4EFD\uFF0C\u6A21\u5757\u653E\u624B\u4E0D\u52A8\u5B83\u3002";
|
|
@@ -1327,7 +1318,7 @@ export declare const kit: {
|
|
|
1327
1318
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
1328
1319
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
1329
1320
|
};
|
|
1330
|
-
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.
|
|
1321
|
+
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.sectionLocal" | "panels.market.sectionUnlisted" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginAlsoKnownAs" | "panels.market.pluginBroken" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.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.classifying" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.cardBroken" | "panels.cardRetry" | "panels.empty" | "panels.emptyHint" | "env.title" | "env.checking" | "env.installing" | "env.failed" | "env.elapsed" | "env.stepFailed.install" | "env.stepFailed.path" | "env.stepFailed.shell" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.daemon" | "env.bridge.extension" | "env.bridge.extensionLink" | "env.bridge.profile" | "env.bridge.stale" | "env.bridge.unknown" | "env.fix.title" | "env.fix.why" | "env.fix.whyPath" | "env.fix.whyShell" | "env.fix.step" | "env.fix.stepPath" | "env.fix.stepShell" | "env.fix.permission" | "env.fix.network" | "env.fix.details" | "env.retry" | "env.copyCommand" | "env.copied" | "env.step.opencli" | "env.step.codingPlugin" | "env.step.bridge" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "rightbar.label" | "rightbar.expand" | "rightbar.collapse" | "rightbar.column.label" | "rightbar.column.workbench" | "rightbar.column.dsh" | "rightbar.refresh" | "rightbar.refreshing" | "rightbar.updatedAt" | "rightbar.noProject" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
|
|
1331
1322
|
};
|
|
1332
1323
|
mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
|
|
1333
1324
|
mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
|
|
@@ -1398,11 +1389,10 @@ export declare const kit: {
|
|
|
1398
1389
|
readonly "panels.market.missing": "\u672A\u88C5";
|
|
1399
1390
|
readonly "panels.market.unchecked": "\u72B6\u6001\u672A\u77E5";
|
|
1400
1391
|
readonly "panels.market.checking": "\u68C0\u6D4B\u4E2D";
|
|
1401
|
-
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5";
|
|
1392
|
+
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5\u6A21\u5757";
|
|
1402
1393
|
readonly "panels.market.sectionPending": "\u672A\u5B89\u88C5";
|
|
1403
1394
|
readonly "panels.market.sectionShared": "\u5171\u7528\u4F9D\u8D56";
|
|
1404
1395
|
readonly "panels.market.sharedUsedBy": "\u4F9B {modules} \u4F7F\u7528";
|
|
1405
|
-
readonly "panels.market.sharedFoot": "\u8FD9\u4E00\u6BB5\u4E0D\u7ED9\u5378\u8F7D\uFF1A\u5B83\u4EEC\u8DDF\u7740\u6A21\u5757\u6765\uFF0C\u5378\u6389\u4E5F\u4F1A\u88AB\u88C5\u56DE\u6765\u3002\u8981\u505C\u7528\u4E00\u4EFD\uFF0C\u5C31\u53BB\u5173\u6389\u6B63\u5728\u7528\u5B83\u7684\u90A3\u4E9B\u6A21\u5757\u3002";
|
|
1406
1396
|
readonly "panels.market.listSeparator": "\u3001";
|
|
1407
1397
|
readonly "panels.market.sharedMissing": "\u672A\u88C5";
|
|
1408
1398
|
readonly "panels.market.sharedOutdated": "\u6709\u65B0\u7248";
|
|
@@ -1427,15 +1417,13 @@ export declare const kit: {
|
|
|
1427
1417
|
readonly "panels.market.noSource": "\u8FD9\u4E2A\u6A21\u5757\u6CA1\u58F0\u660E\u600E\u4E48\u88C5\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
1428
1418
|
readonly "panels.market.badSource": "\u5B89\u88C5\u65B9\u5F0F\u6CA1\u5199\u5168\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
1429
1419
|
readonly "panels.market.empty": "\u6682\u65E0\u53EF\u7528\u6A21\u5757";
|
|
1430
|
-
readonly "panels.market.
|
|
1431
|
-
readonly "panels.market.sectionLocal": "\u672C\u5730\u88C5\u7684";
|
|
1420
|
+
readonly "panels.market.sectionLocal": "\u672C\u5730\u6A21\u5757";
|
|
1432
1421
|
readonly "panels.market.sectionUnlisted": "\u4E0D\u662F\u4ECE\u5E02\u573A\u88C5\u7684";
|
|
1433
1422
|
readonly "panels.market.sectionPlugins": "\u5DF2\u5B89\u88C5 opencli \u63D2\u4EF6";
|
|
1434
1423
|
readonly "panels.market.moduleOutdated": "\u6709\u65B0\u7248";
|
|
1435
1424
|
readonly "panels.market.moduleRefused": "\u8FD9\u4E2A\u6A21\u5757\u662F\u7ED9\u65E7\u7248\u672C\u7684\u5DE5\u4F5C\u53F0\u5199\u7684\uFF0C\u73B0\u5728\u7528\u4E0D\u4E86\u3002\u66F4\u65B0\u5B83\uFF0C\u6216\u8005\u5378\u8F7D\u3002";
|
|
1436
1425
|
readonly "panels.market.moduleRefusedDetail": "\u88C5\u4E0D\u4E0A\u7684\u539F\u56E0\uFF1A{reason}";
|
|
1437
1426
|
readonly "panels.market.moduleRestartHint": "\u88C5\u597D\u4E86\u4F46\u8FD8\u6CA1\u751F\u6548 \u2014\u2014 \u91CD\u542F\u4E00\u6B21 dsh \u5C31\u4F1A\u51FA\u6765";
|
|
1438
|
-
readonly "panels.market.pluginLocalNoUpdate": "\u672C\u5730\u88C5\u7684\uFF0C\u6CA1\u5730\u65B9\u67E5\u65B0\u7248\uFF0C\u6240\u4EE5\u53EA\u7ED9\u5378\u8F7D";
|
|
1439
1427
|
readonly "panels.market.pluginKeptInUse": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A{names} \u8FD8\u8981\u7528\u5B83\u3002";
|
|
1440
1428
|
readonly "panels.market.pluginKeptUnsure": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A\u8FD9\u53F0\u673A\u5668\u4E0A\u8FD8\u6709\u6A21\u5757\u770B\u4E0D\u51FA\u7528\u4E86\u4EC0\u4E48\uFF0C\u8BF4\u4E0D\u51C6\u8C01\u5728\u7528\u5B83\u3002";
|
|
1441
1429
|
readonly "panels.market.pluginKeptHeld": "\u6587\u4EF6\u7559\u7740\uFF1A\u4F60\u81EA\u5DF1\u88C5\u7684\u90A3\u4E00\u4EFD\uFF0C\u6A21\u5757\u653E\u624B\u4E0D\u52A8\u5B83\u3002";
|
|
@@ -1875,11 +1863,10 @@ export declare const kit: {
|
|
|
1875
1863
|
readonly "panels.market.missing": "\u672A\u88C5";
|
|
1876
1864
|
readonly "panels.market.unchecked": "\u72B6\u6001\u672A\u77E5";
|
|
1877
1865
|
readonly "panels.market.checking": "\u68C0\u6D4B\u4E2D";
|
|
1878
|
-
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5";
|
|
1866
|
+
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5\u6A21\u5757";
|
|
1879
1867
|
readonly "panels.market.sectionPending": "\u672A\u5B89\u88C5";
|
|
1880
1868
|
readonly "panels.market.sectionShared": "\u5171\u7528\u4F9D\u8D56";
|
|
1881
1869
|
readonly "panels.market.sharedUsedBy": "\u4F9B {modules} \u4F7F\u7528";
|
|
1882
|
-
readonly "panels.market.sharedFoot": "\u8FD9\u4E00\u6BB5\u4E0D\u7ED9\u5378\u8F7D\uFF1A\u5B83\u4EEC\u8DDF\u7740\u6A21\u5757\u6765\uFF0C\u5378\u6389\u4E5F\u4F1A\u88AB\u88C5\u56DE\u6765\u3002\u8981\u505C\u7528\u4E00\u4EFD\uFF0C\u5C31\u53BB\u5173\u6389\u6B63\u5728\u7528\u5B83\u7684\u90A3\u4E9B\u6A21\u5757\u3002";
|
|
1883
1870
|
readonly "panels.market.listSeparator": "\u3001";
|
|
1884
1871
|
readonly "panels.market.sharedMissing": "\u672A\u88C5";
|
|
1885
1872
|
readonly "panels.market.sharedOutdated": "\u6709\u65B0\u7248";
|
|
@@ -1904,15 +1891,13 @@ export declare const kit: {
|
|
|
1904
1891
|
readonly "panels.market.noSource": "\u8FD9\u4E2A\u6A21\u5757\u6CA1\u58F0\u660E\u600E\u4E48\u88C5\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
1905
1892
|
readonly "panels.market.badSource": "\u5B89\u88C5\u65B9\u5F0F\u6CA1\u5199\u5168\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
1906
1893
|
readonly "panels.market.empty": "\u6682\u65E0\u53EF\u7528\u6A21\u5757";
|
|
1907
|
-
readonly "panels.market.
|
|
1908
|
-
readonly "panels.market.sectionLocal": "\u672C\u5730\u88C5\u7684";
|
|
1894
|
+
readonly "panels.market.sectionLocal": "\u672C\u5730\u6A21\u5757";
|
|
1909
1895
|
readonly "panels.market.sectionUnlisted": "\u4E0D\u662F\u4ECE\u5E02\u573A\u88C5\u7684";
|
|
1910
1896
|
readonly "panels.market.sectionPlugins": "\u5DF2\u5B89\u88C5 opencli \u63D2\u4EF6";
|
|
1911
1897
|
readonly "panels.market.moduleOutdated": "\u6709\u65B0\u7248";
|
|
1912
1898
|
readonly "panels.market.moduleRefused": "\u8FD9\u4E2A\u6A21\u5757\u662F\u7ED9\u65E7\u7248\u672C\u7684\u5DE5\u4F5C\u53F0\u5199\u7684\uFF0C\u73B0\u5728\u7528\u4E0D\u4E86\u3002\u66F4\u65B0\u5B83\uFF0C\u6216\u8005\u5378\u8F7D\u3002";
|
|
1913
1899
|
readonly "panels.market.moduleRefusedDetail": "\u88C5\u4E0D\u4E0A\u7684\u539F\u56E0\uFF1A{reason}";
|
|
1914
1900
|
readonly "panels.market.moduleRestartHint": "\u88C5\u597D\u4E86\u4F46\u8FD8\u6CA1\u751F\u6548 \u2014\u2014 \u91CD\u542F\u4E00\u6B21 dsh \u5C31\u4F1A\u51FA\u6765";
|
|
1915
|
-
readonly "panels.market.pluginLocalNoUpdate": "\u672C\u5730\u88C5\u7684\uFF0C\u6CA1\u5730\u65B9\u67E5\u65B0\u7248\uFF0C\u6240\u4EE5\u53EA\u7ED9\u5378\u8F7D";
|
|
1916
1901
|
readonly "panels.market.pluginKeptInUse": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A{names} \u8FD8\u8981\u7528\u5B83\u3002";
|
|
1917
1902
|
readonly "panels.market.pluginKeptUnsure": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A\u8FD9\u53F0\u673A\u5668\u4E0A\u8FD8\u6709\u6A21\u5757\u770B\u4E0D\u51FA\u7528\u4E86\u4EC0\u4E48\uFF0C\u8BF4\u4E0D\u51C6\u8C01\u5728\u7528\u5B83\u3002";
|
|
1918
1903
|
readonly "panels.market.pluginKeptHeld": "\u6587\u4EF6\u7559\u7740\uFF1A\u4F60\u81EA\u5DF1\u88C5\u7684\u90A3\u4E00\u4EFD\uFF0C\u6A21\u5757\u653E\u624B\u4E0D\u52A8\u5B83\u3002";
|
|
@@ -2137,7 +2122,7 @@ export declare const kit: {
|
|
|
2137
2122
|
readonly "panel.conversation": "\u5BF9\u8BDD";
|
|
2138
2123
|
readonly "panels.label": "\u5168\u5C40\u9762\u677F";
|
|
2139
2124
|
};
|
|
2140
|
-
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.
|
|
2125
|
+
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.sectionLocal" | "panels.market.sectionUnlisted" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.moduleRefused" | "panels.market.moduleRefusedDetail" | "panels.market.moduleRestartHint" | "panels.market.pluginKeptInUse" | "panels.market.pluginKeptUnsure" | "panels.market.pluginKeptHeld" | "panels.market.pluginKeptUnnamed" | "panels.market.pluginAlsoKnownAs" | "panels.market.pluginBroken" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.recheck" | "panels.market.checkUpdates" | "panels.market.checkedAt" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.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.classifying" | "panels.market.add.change" | "panels.market.add.previewTitle" | "panels.market.add.fieldName" | "panels.market.add.fieldVersion" | "panels.market.add.fieldDescription" | "panels.market.add.fieldSource" | "panels.market.add.install" | "panels.market.add.installing" | "panels.market.add.cancel" | "panels.market.add.close" | "panels.market.add.retry" | "panels.market.add.changeSource" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.running" | "blocker.fix.failed" | "blocker.retry.running" | "panels.reading" | "panels.cardBroken" | "panels.cardRetry" | "panels.empty" | "panels.emptyHint" | "env.title" | "env.checking" | "env.installing" | "env.failed" | "env.elapsed" | "env.stepFailed.install" | "env.stepFailed.path" | "env.stepFailed.shell" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.daemon" | "env.bridge.extension" | "env.bridge.extensionLink" | "env.bridge.profile" | "env.bridge.stale" | "env.bridge.unknown" | "env.fix.title" | "env.fix.why" | "env.fix.whyPath" | "env.fix.whyShell" | "env.fix.step" | "env.fix.stepPath" | "env.fix.stepShell" | "env.fix.permission" | "env.fix.network" | "env.fix.details" | "env.retry" | "env.copyCommand" | "env.copied" | "env.step.opencli" | "env.step.codingPlugin" | "env.step.bridge" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "rightbar.label" | "rightbar.expand" | "rightbar.collapse" | "rightbar.column.label" | "rightbar.column.workbench" | "rightbar.column.dsh" | "rightbar.refresh" | "rightbar.refreshing" | "rightbar.updatedAt" | "rightbar.noProject" | "rightbar.openPlatform" | "coding.notARepo.title" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label", string>;
|
|
2141
2126
|
};
|
|
2142
2127
|
mergeMessages(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.Dictionaries;
|
|
2143
2128
|
mergeMessagesSkipping(base: apiModule.Dictionaries, contributions: readonly MessagesContribution[]): apiModule.MessagesMerge;
|
|
@@ -2208,11 +2193,10 @@ export declare const kit: {
|
|
|
2208
2193
|
readonly "panels.market.missing": "\u672A\u88C5";
|
|
2209
2194
|
readonly "panels.market.unchecked": "\u72B6\u6001\u672A\u77E5";
|
|
2210
2195
|
readonly "panels.market.checking": "\u68C0\u6D4B\u4E2D";
|
|
2211
|
-
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5";
|
|
2196
|
+
readonly "panels.market.sectionInstalled": "\u5DF2\u5B89\u88C5\u6A21\u5757";
|
|
2212
2197
|
readonly "panels.market.sectionPending": "\u672A\u5B89\u88C5";
|
|
2213
2198
|
readonly "panels.market.sectionShared": "\u5171\u7528\u4F9D\u8D56";
|
|
2214
2199
|
readonly "panels.market.sharedUsedBy": "\u4F9B {modules} \u4F7F\u7528";
|
|
2215
|
-
readonly "panels.market.sharedFoot": "\u8FD9\u4E00\u6BB5\u4E0D\u7ED9\u5378\u8F7D\uFF1A\u5B83\u4EEC\u8DDF\u7740\u6A21\u5757\u6765\uFF0C\u5378\u6389\u4E5F\u4F1A\u88AB\u88C5\u56DE\u6765\u3002\u8981\u505C\u7528\u4E00\u4EFD\uFF0C\u5C31\u53BB\u5173\u6389\u6B63\u5728\u7528\u5B83\u7684\u90A3\u4E9B\u6A21\u5757\u3002";
|
|
2216
2200
|
readonly "panels.market.listSeparator": "\u3001";
|
|
2217
2201
|
readonly "panels.market.sharedMissing": "\u672A\u88C5";
|
|
2218
2202
|
readonly "panels.market.sharedOutdated": "\u6709\u65B0\u7248";
|
|
@@ -2237,15 +2221,13 @@ export declare const kit: {
|
|
|
2237
2221
|
readonly "panels.market.noSource": "\u8FD9\u4E2A\u6A21\u5757\u6CA1\u58F0\u660E\u600E\u4E48\u88C5\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
2238
2222
|
readonly "panels.market.badSource": "\u5B89\u88C5\u65B9\u5F0F\u6CA1\u5199\u5168\uFF0C\u53EA\u80FD\u81EA\u5DF1\u52A8\u624B";
|
|
2239
2223
|
readonly "panels.market.empty": "\u6682\u65E0\u53EF\u7528\u6A21\u5757";
|
|
2240
|
-
readonly "panels.market.
|
|
2241
|
-
readonly "panels.market.sectionLocal": "\u672C\u5730\u88C5\u7684";
|
|
2224
|
+
readonly "panels.market.sectionLocal": "\u672C\u5730\u6A21\u5757";
|
|
2242
2225
|
readonly "panels.market.sectionUnlisted": "\u4E0D\u662F\u4ECE\u5E02\u573A\u88C5\u7684";
|
|
2243
2226
|
readonly "panels.market.sectionPlugins": "\u5DF2\u5B89\u88C5 opencli \u63D2\u4EF6";
|
|
2244
2227
|
readonly "panels.market.moduleOutdated": "\u6709\u65B0\u7248";
|
|
2245
2228
|
readonly "panels.market.moduleRefused": "\u8FD9\u4E2A\u6A21\u5757\u662F\u7ED9\u65E7\u7248\u672C\u7684\u5DE5\u4F5C\u53F0\u5199\u7684\uFF0C\u73B0\u5728\u7528\u4E0D\u4E86\u3002\u66F4\u65B0\u5B83\uFF0C\u6216\u8005\u5378\u8F7D\u3002";
|
|
2246
2229
|
readonly "panels.market.moduleRefusedDetail": "\u88C5\u4E0D\u4E0A\u7684\u539F\u56E0\uFF1A{reason}";
|
|
2247
2230
|
readonly "panels.market.moduleRestartHint": "\u88C5\u597D\u4E86\u4F46\u8FD8\u6CA1\u751F\u6548 \u2014\u2014 \u91CD\u542F\u4E00\u6B21 dsh \u5C31\u4F1A\u51FA\u6765";
|
|
2248
|
-
readonly "panels.market.pluginLocalNoUpdate": "\u672C\u5730\u88C5\u7684\uFF0C\u6CA1\u5730\u65B9\u67E5\u65B0\u7248\uFF0C\u6240\u4EE5\u53EA\u7ED9\u5378\u8F7D";
|
|
2249
2231
|
readonly "panels.market.pluginKeptInUse": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A{names} \u8FD8\u8981\u7528\u5B83\u3002";
|
|
2250
2232
|
readonly "panels.market.pluginKeptUnsure": "\u6587\u4EF6\u5148\u7559\u7740\uFF1A\u8FD9\u53F0\u673A\u5668\u4E0A\u8FD8\u6709\u6A21\u5757\u770B\u4E0D\u51FA\u7528\u4E86\u4EC0\u4E48\uFF0C\u8BF4\u4E0D\u51C6\u8C01\u5728\u7528\u5B83\u3002";
|
|
2251
2233
|
readonly "panels.market.pluginKeptHeld": "\u6587\u4EF6\u7559\u7740\uFF1A\u4F60\u81EA\u5DF1\u88C5\u7684\u90A3\u4E00\u4EFD\uFF0C\u6A21\u5757\u653E\u624B\u4E0D\u52A8\u5B83\u3002";
|
|
@@ -6,6 +6,7 @@ export interface MarketFreshness {
|
|
|
6
6
|
readonly checking: boolean;
|
|
7
7
|
readonly checkedAt: number | null;
|
|
8
8
|
}
|
|
9
|
+
export declare function marketSettled(freshness: MarketFreshness, installedRead: boolean | undefined): boolean;
|
|
9
10
|
export declare function shouldProbeOnEnter(input: {
|
|
10
11
|
readonly checkedAt: number | null;
|
|
11
12
|
readonly now: number;
|
|
@@ -17,7 +17,7 @@ export interface MarketMockExpect {
|
|
|
17
17
|
readonly plugins?: number;
|
|
18
18
|
readonly pluginActions?: readonly MarketRowAction[];
|
|
19
19
|
readonly pluginNote?: boolean;
|
|
20
|
-
readonly pluginNoteKey?: 'panels.market.
|
|
20
|
+
readonly pluginNoteKey?: 'panels.market.pluginAlsoKnownAs' | 'panels.market.pluginBroken';
|
|
21
21
|
readonly notice?: boolean;
|
|
22
22
|
}
|
|
23
23
|
export interface MarketMock {
|
|
@@ -6,7 +6,7 @@ export type MarketState = 'checking' | 'installed' | 'outdated' | 'missing' | 'u
|
|
|
6
6
|
export declare const MARKET_STATE_KEY: Readonly<Record<MarketState, string>>;
|
|
7
7
|
export declare const MARKET_DOT: Readonly<Record<MarketState, 'ongoing' | 'done' | 'warning' | 'idle'>>;
|
|
8
8
|
export interface MarketNote {
|
|
9
|
-
readonly key: 'panels.market.needEnv' | 'panels.market.noSource' | 'panels.market.badSource' | 'panels.market.moduleRefused' | 'panels.market.moduleRestartHint' | 'panels.market.
|
|
9
|
+
readonly key: 'panels.market.needEnv' | 'panels.market.noSource' | 'panels.market.badSource' | 'panels.market.moduleRefused' | 'panels.market.moduleRestartHint' | 'panels.market.pluginAlsoKnownAs' | 'panels.market.pluginBroken';
|
|
10
10
|
readonly params: Readonly<Record<string, string>>;
|
|
11
11
|
}
|
|
12
12
|
export type MarketHintKey = 'panels.market.moduleRestartHint';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-workbench/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"description": "个人工作台:Agent 工作台外壳(左栏 + 常驻对话 + 自研右侧数据面板)。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"icon": "./icon.svg",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"access": "public"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
|
-
"@dsh-workbench/shared": "0.1.
|
|
90
|
+
"@dsh-workbench/shared": "0.1.18"
|
|
91
91
|
},
|
|
92
92
|
"scripts": {
|
|
93
93
|
"build": "node scripts/build.mjs && node scripts/build-types.mjs",
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
| 判据 | 它防的事故 | 红了的典型说法 | 怎么修 |
|
|
7
7
|
|---|---|---|---|
|
|
8
|
-
| `contracts` | dsh 组合阶段**不校验**你 `package.json` 里的声明 —— 错的 `external` 要到浏览器 `require` 那一刻才炸;清单与代码、底稿与清单之间漂了也没人拦 | `单元 id "x" 与 … 撞了` / `dsh.workbenchFaces.client 指的文件不存在` / `dsh.workbenchFaces.host 没声明` / `没有对 @dsh-workbench/core 的 peer 依赖` / `没有 typecheck 脚本` / `它不是 private,却既没声明 publishConfig.access=public…` / `dsh.workbench 声明的能力与代码真正注册的对不上` / `design.json 的能力行里有「x」,清单的 tools[] 里却没有它` | 按报的那一条改 `package.json
|
|
8
|
+
| `contracts` | dsh 组合阶段**不校验**你 `package.json` 里的声明 —— 错的 `external` 要到浏览器 `require` 那一刻才炸;清单与代码、底稿与清单之间漂了也没人拦 | `单元 id "x" 与 … 撞了` / `dsh.workbenchFaces.client 指的文件不存在` / `dsh.workbenchFaces.host 没声明` / `没有对 @dsh-workbench/core 的 peer 依赖` / `没有 typecheck 脚本` / `它不是 private,却既没声明 publishConfig.access=public…` / `src/declared-tools.ts 与清单对不上(生成物过期…)` / `工具名的字面量又写回了源码` / `…没有 key` / `dsh.workbench 声明的能力与代码真正注册的对不上` / `design.json 的能力行里有「x」,清单的 tools[] 里却没有它` | 按报的那一条改 `package.json`(生成物对不上就跑 `dsh-wb-module sync`;工具名的字面量只许留在清单里);`unit` 换个不撞的名字;`dsh.workbenchFaces` 补上两个**源码**入口;四个脚本补全;私有不发就保持 `private: true`。**工具只声明在清单里**(`dsh.workbench.tools`)且必须与 `mount()` 里 `registerTools()` 真正注册的**不重不漏**;写了 `design.json` 的话,它的 `capabilities[].name` 与清单的 `tools[].name` 也要不重不漏(U1c 的**键集合对账**,只对名字 —— 内容各写一处);`gate.deniedTools` 是可选的运行期收窄,门禁不再对它做声明对账(协议里的 `scope` 已删 —— 哪些工作区出现由用户的板决定) |
|
|
9
9
|
| `protocol` | `dsh.workbench` 是外壳读你得懂的那份声明:缺版本、形状不对、**多一个键**、枚举值不认都要在装机前拦下来。多出来的键最阴 —— 外壳会**静默忽略**它(拼错一个键 = 那句话白写) | `没有 apiVersion` / `apiVersion 是 99,这份只认 1` / `声明了 apiVersion 就要把静态半写全 —— 缺 dsh.workbench.tools` / `dsh.workbench 里有协议 v1 不认识的键 "faces"` / `card 里有不认的键 "enabledByDefault"`(这个键连外壳里都没有了 —— A-3 删的,见 [ADR-0038](../../../../docs/adr/0038-module-declaration-protocol.md) §6.7) / `tools[0] 里有协议不认的键 "scopes"` / `tools[0] 里有不认的键 "scope"`(`scope` 自本轮更正起**不在协议里**:能力在哪些工作区出现由用户的板决定,见 [ADR-0038 §2.4 / §6.16](../../../../docs/adr/0038-module-declaration-protocol.md)) | 补 `"apiVersion": 1`;把 `unit` / `card` / `tools` / `host` 四个键写全(没卡片写 `"card": null`、没工具写 `"tools": []`、一个服务都不要写 `"host": { "inject": [] }`);删掉协议外的键(`faces` 自 A-2 起搬到 `dsh.workbenchFaces`,写回 `dsh.workbench` 里就是生字段);`scope` **不要写**(协议不认它,写了就是生字段)。字段清单见 `dsh-wb-module` 的 README「协议」那一节 |
|
|
10
10
|
| `bundles` | 两个运行时互串:浏览器产物里带 node 内置、宿主产物里带 DOM / react | `浏览器产物里出现了 node 内置 …` / `宿主产物里出现了 react` | 宿主面别 import 浏览器侧的东西;浏览器面别 import `node:*`。两侧只通过服务名相接 |
|
|
11
11
|
| `source` | 非种子词的 `@deepseek-ai/*`、宿主侧碰 dsh 的浏览器包、`@/` 指到工作台源码 | `…在宿主侧可达` / `不是平台种子词` | 宿主侧只用 Node 侧的东西;dsh 原语一律走 `kit`;`@/` 只指自己的 `src/` |
|
|
12
12
|
| `primitives` | 声明了 `external` 却没有产物物证 ⇒ dsh 原语被**内联**成第二份实例 | `…用了却没声明 external` / `宿主产物里出现了` | 在 `dsh.client.external` 里显式声明它;确认产物里是 `require(...)` 而不是被打包进来 |
|
|
13
13
|
| `kit` | 用了 peer 下限那份外壳**还没有**的 kit 成员 ⇒ 卡片首帧 `Element type is invalid`,整块面板被 React 卸掉 | `kit.components.X 在这份外壳里没有` / `peer 下限比 devDependency 还旧` | 只用 peer 范围里真有的成员;把 `peerDependencies` 的下限提到你实际用的那档 |
|
|
14
|
-
| `cards` | 卡片拿**空数据**就抛 ⇒ 用户看到"卡片一直不出来 / 点一下白屏" | `空数据下卡片抛了` / `卡片只画出一个节点` / `卡片没套外壳的卡壳` | 让卡片在没数据时也画得出来(已有的加载 / 空 / 阻断态);外面套 `kit.components.Card` |
|
|
14
|
+
| `cards` | 卡片拿**空数据**就抛 ⇒ 用户看到"卡片一直不出来 / 点一下白屏" | `空数据下卡片抛了` / `卡片只画出一个节点` / `卡片没套外壳的卡壳` / `清单的 card.titleKey「x」在模块字典的 en 里没有` / `…没有落点` | 让卡片在没数据时也画得出来(已有的加载 / 空 / 阻断态);外面套 `kit.components.Card`;清单写了 `titleKey`,`registerUnit` 交的 `messages` 里 `zh` / `en` 都得有那一条(漏了面板上显示的是原始键名) |
|
|
15
15
|
| `standalone` | "只有工作台源码在场才编得过" ⇒ 发布出去就散架 | `build 在外壳源码不在场时失败` / `typecheck 在外壳源码不在场时失败` | 别引用工作台源码;`tsconfig` 里 `paths` 的值必须是**相对路径**(`"./src/*"`,不是 `"src/*"`) |
|
|
16
16
|
| `markers` | 内网域名 / 企业内部名泄进要公开发布的包 | `命中内网 npm 源` / `命中内网域名` | 那些值不该写进包里;要配就落到模块自己的配置面,或走用户自己声明的来源 |
|
|
17
17
|
| `alias` | `@/` 伸进工作台源码 ⇒ 装的人手上没有那份源码 | `…指向外壳源码` | `@/` 只许指自己的 `src/`;跨包的东西走包名 |
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
### 6.1 写法(清单 + 两个函数;缺一个门禁就红)
|
|
80
80
|
|
|
81
81
|
```ts
|
|
82
|
-
tools: [{ name: 'workbench_demo_rebuild', writes: true }],
|
|
82
|
+
tools: [{ name: 'workbench_demo_rebuild', writes: true, key: 'rebuild' }],
|
|
83
83
|
|
|
84
84
|
needsApproval: (call) => ({
|
|
85
85
|
kind: 'ask',
|
|
@@ -91,6 +91,9 @@ needsApproval: (call) => ({
|
|
|
91
91
|
approvalDetail: async (call) => ({ zh: '会覆盖这 3 个模块的产物,不碰源码', en: '…' }),
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
+
* `key` 是代码里那个短名(lowerCamelCase)。给了它就 `dsh-wb-module sync` 一次,生成
|
|
95
|
+
`src/declared-tools.ts`,代码写 `DECLARED_TOOLS.rebuild.name` —— 工具名的字面量只剩清单这一处
|
|
96
|
+
(键写错是编译错;生成物过期、半写 key、源码里又写字面量,门禁都红)。一个 key 都不写也行(不适用那一档)。
|
|
94
97
|
* `needsApproval` 回 `{ kind: 'read' }` = 这件不用问;回 `{ kind: 'ask', … }` = 要问;
|
|
95
98
|
**清单写着 `writes: true` 却不认领,外壳当场 deny**("在套件的 needsApproval 里补一条审批")——
|
|
96
99
|
但那条错误只有真跑一次才看得见,所以 `check --only contracts` 会替用户先看一遍:缺 `needsApproval`、
|