@dsh-workbench/shared 1.1.8 → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/api/blocker-table.d.ts +1 -0
  2. package/dist/api/blocker-table.js +1 -1
  3. package/dist/components/SelectField.css +0 -6
  4. package/dist/components/SelectField.d.ts +2 -3
  5. package/dist/components/SelectField.js +9 -30
  6. package/dist/components/SelectFieldNodes.d.ts +3 -1
  7. package/dist/components/SelectFieldNodes.js +2 -1
  8. package/dist/components/SelectFieldWheel.d.ts +9 -0
  9. package/dist/components/SelectFieldWheel.js +35 -0
  10. package/dist/config/constants.d.ts +4 -4
  11. package/dist/config/constants.js +4 -4
  12. package/dist/contract/capabilities.d.ts +29 -0
  13. package/dist/contract/capabilities.js +1 -0
  14. package/dist/contract/needs.d.ts +3 -3
  15. package/dist/contract/needs.js +1 -1
  16. package/dist/contract/plugin-source.d.ts +19 -0
  17. package/dist/contract/protocol/bundle-install.d.ts +3 -1
  18. package/dist/contract/protocol/bundle-install.js +3 -0
  19. package/dist/contract/protocol/market-index.d.ts +1 -1
  20. package/dist/contract/protocol/platform.d.ts +1 -1
  21. package/dist/contract/runner.d.ts +6 -0
  22. package/dist/contract/runner.js +1 -0
  23. package/dist/contract/unit.d.ts +4 -4
  24. package/dist/host/adapter-contract.d.ts +3 -0
  25. package/dist/host/adapter-contract.js +93 -0
  26. package/dist/host/adapter-set.js +6 -4
  27. package/dist/host/adapter-types.d.ts +1 -1
  28. package/dist/host/bundle-manager.d.ts +3 -0
  29. package/dist/host/bundle-manager.js +181 -0
  30. package/dist/host/cli.js +3 -1
  31. package/dist/host/config-sync.d.ts +48 -0
  32. package/dist/host/config-sync.js +342 -0
  33. package/dist/host/dsh-plugins.d.ts +5 -0
  34. package/dist/host/dsh-plugins.js +51 -0
  35. package/dist/host/extension.js +1 -1
  36. package/dist/host/flow/check.d.ts +9 -0
  37. package/dist/host/flow/check.js +179 -0
  38. package/dist/host/flow/expr.d.ts +30 -0
  39. package/dist/host/flow/expr.js +99 -0
  40. package/dist/host/flow/kit.d.ts +14 -0
  41. package/dist/host/flow/kit.js +13 -0
  42. package/dist/host/flow/run.d.ts +13 -0
  43. package/dist/host/flow/run.js +287 -0
  44. package/dist/host/flow/types.d.ts +188 -0
  45. package/dist/host/flow/types.js +1 -0
  46. package/dist/host/host-actions.d.ts +2 -0
  47. package/dist/host/host-actions.js +5 -0
  48. package/dist/host/host-kit.d.ts +19 -0
  49. package/dist/host/host-kit.js +14 -0
  50. package/dist/host/http.d.ts +2 -6
  51. package/dist/host/http.js +2 -2
  52. package/dist/host/installed-module.d.ts +23 -0
  53. package/dist/host/installed-module.js +264 -0
  54. package/dist/host/lib-install.d.ts +7 -9
  55. package/dist/host/lib-install.js +9 -12
  56. package/dist/host/lib-runners.d.ts +3 -5
  57. package/dist/host/lib-runners.js +2 -2
  58. package/dist/host/local-declaration.d.ts +7 -0
  59. package/dist/host/local-declaration.js +33 -0
  60. package/dist/host/module-root.d.ts +1 -0
  61. package/dist/host/module-root.js +5 -0
  62. package/dist/host/npm-registry.d.ts +10 -0
  63. package/dist/host/npm-registry.js +16 -0
  64. package/dist/host/opencli-runner.d.ts +2 -1
  65. package/dist/host/package-content.d.ts +7 -0
  66. package/dist/host/package-content.js +69 -0
  67. package/dist/host/package-kind.d.ts +13 -0
  68. package/dist/host/package-kind.js +51 -0
  69. package/dist/host/package-route.d.ts +31 -0
  70. package/dist/host/package-route.js +57 -0
  71. package/dist/host/paths.d.ts +11 -19
  72. package/dist/host/paths.js +16 -43
  73. package/dist/host/platform.js +1 -1
  74. package/dist/host/plugin-ledger.d.ts +8 -8
  75. package/dist/host/plugin-ledger.js +23 -16
  76. package/dist/host/plugin.d.ts +1 -2
  77. package/dist/host/plugin.js +4 -5
  78. package/dist/host/port-types.d.ts +42 -9
  79. package/dist/host/preflight.d.ts +3 -2
  80. package/dist/host/profile-create.d.ts +18 -0
  81. package/dist/host/profile-create.js +118 -0
  82. package/dist/host/profile-registries.d.ts +10 -0
  83. package/dist/host/profile-registries.js +150 -0
  84. package/dist/host/registry-declaration.d.ts +21 -0
  85. package/dist/host/registry-declaration.js +33 -0
  86. package/dist/host/release-probe.d.ts +34 -0
  87. package/dist/host/release-probe.js +88 -0
  88. package/dist/host/runner.d.ts +26 -0
  89. package/dist/host/runner.js +50 -0
  90. package/dist/host/shell.d.ts +0 -2
  91. package/dist/host/shell.js +0 -7
  92. package/dist/host/spec.js +1 -1
  93. package/dist/host/supply-index.d.ts +1 -0
  94. package/dist/host/supply-index.js +8 -7
  95. package/dist/host/supply-port.js +13 -3
  96. package/dist/host/unit-face.d.ts +2 -1
  97. package/dist/host/version.js +11 -6
  98. package/dist/host.d.ts +24 -6
  99. package/dist/host.js +23 -6
  100. package/dist/i18n/en.js +23 -24
  101. package/dist/i18n/index.d.ts +23 -24
  102. package/dist/i18n/runtime-terms.d.ts +15 -0
  103. package/dist/i18n/runtime-terms.js +22 -0
  104. package/dist/i18n/zh.d.ts +22 -23
  105. package/dist/i18n/zh.js +22 -23
  106. package/dist/index.d.ts +4 -0
  107. package/dist/index.js +4 -0
  108. package/dist/testing/fake-adapter-set.d.ts +5 -0
  109. package/dist/testing/fake-adapter-set.js +150 -0
  110. package/dist/testing/needs.js +1 -1
  111. package/dist/testing.d.ts +1 -0
  112. package/dist/testing.js +1 -0
  113. package/package.json +1 -1
  114. package/src/api/__tests__/blocker-table.test.ts +25 -0
  115. package/src/api/{workbench-client.test.ts → __tests__/workbench-client.test.ts} +2 -2
  116. package/src/api/blocker-table.ts +6 -2
  117. package/src/components/SelectField.css +0 -6
  118. package/src/components/SelectField.tsx +7 -36
  119. package/src/components/SelectFieldNodes.tsx +4 -1
  120. package/src/components/{Card.test.tsx → __tests__/Card.test.tsx} +2 -2
  121. package/src/components/{CardAnchor.test.tsx → __tests__/CardAnchor.test.tsx} +3 -3
  122. package/src/components/{CardHead.test.tsx → __tests__/CardHead.test.tsx} +1 -1
  123. package/src/components/{ChoiceGroup.test.tsx → __tests__/ChoiceGroup.test.tsx} +2 -2
  124. package/src/components/{ConfirmBar.test.tsx → __tests__/ConfirmBar.test.tsx} +5 -5
  125. package/src/components/{Field.test.tsx → __tests__/Field.test.tsx} +1 -1
  126. package/src/components/{Form.test.tsx → __tests__/Form.test.tsx} +5 -5
  127. package/src/components/{FormActions.test.tsx → __tests__/FormActions.test.tsx} +3 -3
  128. package/src/components/{FormRows.test.tsx → __tests__/FormRows.test.tsx} +2 -2
  129. package/src/components/{FormTypes.test.ts → __tests__/FormTypes.test.ts} +1 -1
  130. package/src/components/{FormWiring.test.tsx → __tests__/FormWiring.test.tsx} +4 -4
  131. package/src/components/{Link.test.tsx → __tests__/Link.test.tsx} +1 -1
  132. package/src/components/{Rows.test.tsx → __tests__/Rows.test.tsx} +2 -2
  133. package/src/components/{SelectField.test.tsx → __tests__/SelectField.test.tsx} +7 -37
  134. package/src/components/{Spinner.test.tsx → __tests__/Spinner.test.tsx} +4 -4
  135. package/src/config/{constants.test.ts → __tests__/constants.test.ts} +1 -1
  136. package/src/config/{storage.test.ts → __tests__/storage.test.ts} +1 -1
  137. package/src/config/constants.ts +4 -4
  138. package/src/contract/capabilities.ts +30 -0
  139. package/src/contract/needs.ts +4 -4
  140. package/src/contract/plugin-source.ts +24 -0
  141. package/src/contract/protocol/bundle-install.ts +7 -1
  142. package/src/contract/protocol/market-index.ts +1 -0
  143. package/src/contract/protocol/platform.ts +1 -1
  144. package/src/contract/runner.ts +6 -0
  145. package/src/contract/unit.ts +4 -4
  146. package/src/host/{extension.test.ts → __tests__/extension.test.ts} +4 -4
  147. package/src/host/{install-failure.test.ts → __tests__/install-failure.test.ts} +1 -1
  148. package/src/host/{installed-sources.test.ts → __tests__/installed-sources.test.ts} +1 -1
  149. package/src/host/__tests__/lib-runners.test.ts +11 -2
  150. package/src/host/__tests__/plugin-ledger.test.ts +19 -6
  151. package/src/host/{recipe.test.ts → __tests__/recipe.test.ts} +3 -3
  152. package/src/host/__tests__/runtime-layout.test.ts +14 -0
  153. package/src/host/__tests__/supply-index.test.ts +2 -2
  154. package/src/host/__tests__/supply-port.test.ts +32 -0
  155. package/src/host/adapter-contract.ts +93 -0
  156. package/src/host/adapter-set.ts +6 -4
  157. package/src/host/adapter-types.ts +1 -1
  158. package/src/host/bundle-manager.ts +195 -0
  159. package/src/host/cli.ts +3 -1
  160. package/src/host/config-sync.ts +386 -0
  161. package/src/host/dsh-plugins.ts +60 -0
  162. package/src/host/extension.ts +1 -1
  163. package/src/host/flow/__tests__/advanced.test.ts +302 -0
  164. package/src/host/flow/__tests__/check.test.ts +169 -0
  165. package/src/host/flow/__tests__/run.test.ts +301 -0
  166. package/src/host/flow/check.ts +216 -0
  167. package/src/host/flow/expr.ts +94 -0
  168. package/src/host/flow/kit.ts +30 -0
  169. package/src/host/flow/run.ts +325 -0
  170. package/src/host/flow/types.ts +199 -0
  171. package/src/host/host-actions.ts +7 -0
  172. package/src/host/host-kit.ts +26 -0
  173. package/src/host/http.ts +6 -8
  174. package/src/host/installed-module.ts +272 -0
  175. package/src/host/lib-install.ts +14 -12
  176. package/src/host/lib-runners.ts +6 -8
  177. package/src/host/local-declaration.ts +37 -0
  178. package/src/host/module-root.ts +6 -0
  179. package/src/host/npm-registry.ts +21 -0
  180. package/src/host/package-content.ts +76 -0
  181. package/src/host/package-kind.ts +63 -0
  182. package/src/host/package-route.ts +93 -0
  183. package/src/host/paths.ts +27 -52
  184. package/src/host/platform.ts +1 -1
  185. package/src/host/plugin-ledger.ts +25 -18
  186. package/src/host/plugin.ts +4 -5
  187. package/src/host/port-types.ts +43 -9
  188. package/src/host/preflight.ts +3 -2
  189. package/src/host/profile-create.ts +133 -0
  190. package/src/host/profile-registries.ts +145 -0
  191. package/src/host/registry-declaration.ts +70 -0
  192. package/src/host/release-probe.ts +202 -0
  193. package/src/host/shell.ts +0 -9
  194. package/src/host/spec.ts +1 -1
  195. package/src/host/supply-index.ts +9 -7
  196. package/src/host/supply-port.ts +13 -3
  197. package/src/host/unit-face.ts +2 -1
  198. package/src/host/version.ts +12 -7
  199. package/src/host.ts +34 -6
  200. package/src/i18n/{index.test.ts → __tests__/index.test.ts} +3 -3
  201. package/src/i18n/{merge.test.ts → __tests__/merge.test.ts} +1 -1
  202. package/src/i18n/{zh.test.ts → __tests__/zh.test.ts} +2 -2
  203. package/src/i18n/en.ts +23 -25
  204. package/src/i18n/runtime-terms.ts +26 -0
  205. package/src/i18n/zh.ts +22 -24
  206. package/src/index.ts +4 -0
  207. package/src/lib/{board-fact.test.ts → __tests__/board-fact.test.ts} +1 -1
  208. package/src/lib/{busy.test.ts → __tests__/busy.test.ts} +1 -1
  209. package/src/lib/{form-problem.test.ts → __tests__/form-problem.test.ts} +1 -1
  210. package/src/lib/{git-address.test.ts → __tests__/git-address.test.ts} +1 -1
  211. package/src/lib/{react.test.ts → __tests__/react.test.ts} +1 -1
  212. package/src/lib/{text.test.ts → __tests__/text.test.ts} +1 -1
  213. package/src/lib/{ui.test.ts → __tests__/ui.test.ts} +1 -1
  214. package/src/testing/__tests__/fake-adapter-set.test.ts +28 -0
  215. package/src/testing/fake-adapter-set.ts +173 -0
  216. package/src/testing/needs.ts +1 -1
  217. package/src/testing.ts +1 -0
  218. package/src/host/__tests__/command-name.test.ts +0 -16
  219. package/src/host/__tests__/opencli-runner.test.ts +0 -120
  220. package/src/host/channel-plugin.ts +0 -55
  221. package/src/host/command-name.ts +0 -15
  222. package/src/host/opencli-runner.ts +0 -76
  223. package/src/host/paths.test.ts +0 -26
  224. package/src/host/plugin-source.ts +0 -137
  225. package/src/host/runtime-links.test.ts +0 -31
  226. package/src/host/runtime-links.ts +0 -23
@@ -84,7 +84,11 @@ export declare const dictionaries: {
84
84
  readonly 'time.short.years': "{n}年";
85
85
  readonly 'panels.title': "面板模块";
86
86
  readonly 'panels.groupBoardless': "无看板模块";
87
- readonly 'panels.groupPlugins': "opencli 插件";
87
+ readonly 'panels.groupPlugins': "插件";
88
+ readonly 'runtime.plugin': "插件";
89
+ readonly 'runtime.pluginOf': "运行时提供的插件";
90
+ readonly 'runtime.pluginThing': "插件";
91
+ readonly 'runtime.pluginArea': "插件区";
88
92
  readonly 'panels.market.defaultHint': "打开后所有工作区默认开启,也可在工作区面板配置中单独关闭";
89
93
  readonly 'panels.market.defaultLabel': "全局默认开启";
90
94
  readonly 'panels.market.defaultLocked': "这份现在用不了,先更新或卸载";
@@ -162,9 +166,6 @@ export declare const dictionaries: {
162
166
  readonly 'panels.market.confirmNo': "取消";
163
167
  readonly 'panels.market.noMarketSource': "索引里没有这个模块的新版本(刷新一次索引再试)";
164
168
  readonly 'panels.market.failed': "没成功:{reason}";
165
- readonly 'panels.market.askAgent': "问 agent";
166
- readonly 'panels.market.askAgentCopied': "已复制";
167
- readonly 'panels.market.askAgentText': "工作台里「{name}」(单元 {unit})用不了:{reason}。帮我查清缺什么、怎么补,补完确认真能用。";
168
169
  readonly 'panels.market.failure.permission': "没装上:没有写入权限";
169
170
  readonly 'panels.market.failure.diskFull': "没装上:磁盘满了";
170
171
  readonly 'panels.market.failure.sandbox': "没装上:被系统拦住了";
@@ -204,7 +205,7 @@ export declare const dictionaries: {
204
205
  readonly 'panels.market.noSource': "这个模块没声明怎么装,只能自己动手";
205
206
  readonly 'panels.market.badSource': "安装方式没写全,只能自己动手";
206
207
  readonly 'panels.market.empty': "暂无可用模块";
207
- readonly 'panels.market.sectionPlugins': "已安装 opencli 插件";
208
+ readonly 'panels.market.sectionPlugins': "已安装的插件";
208
209
  readonly 'panels.market.moduleOutdated': "有新版";
209
210
  readonly 'panels.market.updateNeedsWorkbench': "新版本要先把工作台升级才能用";
210
211
  readonly 'panels.market.updateIncompatible': "新版本和当前的工作台不匹配,暂时不能更新";
@@ -242,7 +243,7 @@ export declare const dictionaries: {
242
243
  readonly 'panels.market.justNow': "刚刚";
243
244
  readonly 'panels.market.minutesAgo': "{n} 分钟前";
244
245
  readonly 'panels.market.hoursAgo': "{n} 小时前";
245
- readonly 'panels.market.add.description': "输入模块或 opencli 插件的包名、Git 仓库地址或本地目录路径。";
246
+ readonly 'panels.market.add.description': "输入模块或 {plugin}的包名、Git 仓库地址或本地目录路径。";
246
247
  readonly 'panels.market.add.specPlaceholder': "例如 @dsh-workbench/module-hello";
247
248
  readonly 'panels.market.add.guideToggle': "模块安装引导和示例";
248
249
  readonly 'panels.market.add.guideHide': "收起引导";
@@ -281,12 +282,12 @@ export declare const dictionaries: {
281
282
  readonly 'panels.market.add.problemInstalled': "这个模块已经装过了(要换版本请带上 @版本)";
282
283
  readonly 'panels.market.add.problemNotFound': "未找到相关模块";
283
284
  readonly 'panels.market.add.problemNotPackage': "该路径不存在或不是有效的模块包";
284
- readonly 'panels.market.add.problemNotBundle': "这个包装不进这里:{reason}。这个入口按包名认工作台模块和 opencli 插件,两种都能装;但 git 地址和 tarball 判断不出它是什么 —— 要是它其实是这两样之一,请改填包名或本地目录。";
285
+ readonly 'panels.market.add.problemNotBundle': "这个包装不进这里:{reason}。这个入口按包名认工作台模块和 {plugin},两种都能装;但 git 地址和 tarball 判断不出它是什么 —— 要是它其实是这两样之一,请改填包名或本地目录。";
285
286
  readonly 'panels.market.add.problemNotWorkbenchModule': "这个包跟现在的工作台对不上,装上也用不了。换一个版本,或者找这个模块的作者。";
286
- readonly 'panels.market.add.problemNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 opencli 的插件,装了也用不上。换一个版本,或者找这个包的作者。";
287
- readonly 'panels.market.add.failureNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 opencli 的插件,装了也用不上";
288
- readonly 'panels.market.add.installedPlugin': "装上了:opencli 插件 {name}";
289
- readonly 'panels.market.add.pluginPreview': "这是一份 opencli 插件:装进 opencli 的插件区,装完就能用,不用重启。";
287
+ readonly 'panels.market.add.problemNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 {pluginOf},装了也用不上。换一个版本,或者找这个包的作者。";
288
+ readonly 'panels.market.add.failureNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 {pluginOf},装了也用不上";
289
+ readonly 'panels.market.add.installedPlugin': "装上了:{plugin} {name}";
290
+ readonly 'panels.market.add.pluginPreview': "这是一份 {pluginThing}:装进 {pluginArea},装完就能用,不用重启。";
290
291
  readonly 'panels.market.add.pluginAlias': "插件名:{name}";
291
292
  readonly 'panels.market.add.problemNetwork': "无法连接模块源,请检查网络后重试";
292
293
  readonly 'panels.market.add.problemUnknown': "无法获取模块信息:{reason}";
@@ -376,6 +377,7 @@ export declare const dictionaries: {
376
377
  readonly 'panels.discover.noSourceHint': "添加一个模块市场索引(http 地址或 git 仓库),即可在这里浏览和安装其中的模块";
377
378
  readonly 'panels.discover.sourcesFailed': "无法读取索引源";
378
379
  readonly 'panels.discover.unreadable': "无法读取此索引";
380
+ readonly 'panels.discover.sandbox': "被系统拦住了:这个 profile 的可写根盖不住工作台的缓存目录";
379
381
  readonly 'panels.discover.sourceAuth': "这个索引源读不了:本机没有它的 git 凭据。配好凭据(或在源里改用 SSH 地址),再点右上角的刷新。";
380
382
  readonly 'panels.discover.invalid': "此索引的格式无效";
381
383
  readonly 'panels.discover.emptyRepo': "这个仓库还没有任何提交";
@@ -562,7 +564,7 @@ export declare const dictionaries: {
562
564
  readonly 'blocker.forbidden.hint': "账号已登录,但没有这个项目/仓库的权限;申请之后再试。";
563
565
  readonly 'blocker.forbidden.open': "打开权限页";
564
566
  readonly 'blocker.timeout.hint': "后台浏览器没起来,重试一次通常就好。";
565
- readonly 'blocker.exec.hint': "确认 opencli 已经装好、在终端里能直接运行(which opencli)。";
567
+ readonly 'blocker.exec.hint': "确认运行时已经装好、在终端里能直接跑起来。";
566
568
  readonly 'blocker.unknown.title': "出了点问题";
567
569
  readonly 'panels.reading': "正在读取面板配置…";
568
570
  readonly 'panels.cardBroken': "这个模块起不来:{unit}({reason})";
@@ -572,6 +574,7 @@ export declare const dictionaries: {
572
574
  readonly 'env.title': "准备工作台";
573
575
  readonly 'env.checking': "正在准备运行环境…";
574
576
  readonly 'env.installing': "正在安装后台工具,第一次会慢一点…";
577
+ readonly 'env.installingToolchain': "正在装工作台自己那份 npm / pnpm —— 第一次要下载,慢一点正常。";
575
578
  readonly 'env.failed': "还差一步就能用了";
576
579
  readonly 'env.elapsed': "已等待 {seconds} 秒";
577
580
  readonly 'env.stepFailed.install': "装不上";
@@ -579,16 +582,11 @@ export declare const dictionaries: {
579
582
  readonly 'env.stepFailed.shell': "连不上命令行";
580
583
  readonly 'env.toolchain.ok': "正常";
581
584
  readonly 'env.toolchain.warn': "还没完全准备好";
582
- readonly 'env.opencli.ok': "已就绪";
585
+ readonly 'env.runtime.ok': "已就绪";
583
586
  readonly 'env.bridge.ok': "已连接";
584
587
  readonly 'env.bridge.short': "还没连上";
585
588
  readonly 'env.bridge.why': "面板的数据要用你浏览器里的登录状态。这个连接没通,模块就取不到数据;不拦路:修好它,或者先进入工作台。";
586
589
  readonly 'env.bridge.hold': "浏览器还没连上 —— 按下面修好后点「重试」,也可以先进工作台。";
587
- readonly 'env.bridge.daemon': "后台服务没起来:正常它会自己起,先在终端跑下面这条命令。";
588
- readonly 'env.bridge.extension': "浏览器扩展没连上:确认浏览器开着、扩展已启用;没装就从商店装一次(装完回来点「重试」)。";
589
- readonly 'env.bridge.extensionLink': "去 Chrome 应用商店装扩展";
590
- readonly 'env.bridge.profile': "连上了多个浏览器账号,但没选默认的那个:先看有哪些(下面这条命令),再选一个。";
591
- readonly 'env.bridge.stale': "默认的浏览器账号已经失效(它记的是上一次的扩展实例):重新选一个。";
592
590
  readonly 'env.bridge.unknown': "没认出是哪种问题:展开原文,按里面的步骤处理。";
593
591
  readonly 'env.fix.title': "怎么解决";
594
592
  readonly 'env.fix.why': "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。";
@@ -617,11 +615,12 @@ export declare const dictionaries: {
617
615
  readonly 'env.diy.continue': "先进入工作台";
618
616
  readonly 'env.copyCommand': "复制命令";
619
617
  readonly 'env.copied': "已复制";
620
- readonly 'env.step.toolchain': "运行环境";
621
- readonly 'env.step.opencli': "后台工具";
622
- readonly 'env.step.bridge': "浏览器连接";
623
- readonly 'env.step.diy': "DIY 模式";
624
- readonly 'env.step.warm': "站点登录状态";
618
+ readonly 'env.step.toolchain': "检查运行环境";
619
+ readonly 'env.step.adapter': "检查运行时";
620
+ readonly 'env.step.runtime': "安装后台工具";
621
+ readonly 'env.step.bridge': "连接浏览器";
622
+ readonly 'env.step.diy': "检查 DIY 模式";
623
+ readonly 'env.step.warm': "连上站点";
625
624
  readonly 'env.warm.done': "已就绪({n} 个站点)";
626
625
  readonly 'env.warm.short': "这次没提前连上 —— 不影响用,第一次取数会自己补";
627
626
  readonly 'env.unit.failed': "这个模块起不来";
@@ -805,7 +804,7 @@ export declare const dictionaries: {
805
804
  readonly 'configSync.emptyProviders': "工作台还没有任何模型供应商 —— 去「配置同步」从某个 profile 把模型供应商那几行同步过来,或自己去「模型」里配。";
806
805
  readonly 'configSync.failed': "同步没成功,再试一次。";
807
806
  };
808
- en: Record<"time.now" | "time.ago" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.market.open" | "env.unit.failed" | "env.unit.failedHint" | "env.unit.unsupported" | "env.unit.unsupportedHint" | "env.unit.degraded" | "env.unit.degradedHint" | "env.unit.unchecked" | "env.unit.uncheckedHint" | "profileCreate.nav" | "profileCreate.lead" | "profileCreate.name" | "profileCreate.nameHint" | "profileCreate.source" | "profileCreate.current" | "profileCreate.copy" | "profileCreate.settings" | "profileCreate.create" | "profileCreate.creating" | "profileCreate.created" | "profileCreate.command" | "profileCreate.readFailed" | "profileCreate.retry" | "profileCreate.reading" | "profileCreate.noProfiles" | "profileCreate.failed" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedUnverified" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed" | "env.need.bin.missing" | "env.need.bin.hint" | "env.need.extension.missing" | "env.need.extension.outdated" | "env.need.extension.hint" | "env.need.lib.missing" | "env.need.lib.outdated" | "env.need.lib.unsatisfied" | "env.need.lib.hint" | "env.need.env.missing" | "env.need.env.hint" | "brand.name" | "toggle.open" | "toggle.collapse" | "project.label" | "workspace.section" | "project.none" | "project.empty" | "project.add" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.longTask" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "project.attention.warning.one" | "project.attention.warning.other" | "project.attention.running.one" | "project.attention.running.other" | "project.attention.longTask.one" | "project.attention.longTask.other" | "project.attention.done.one" | "project.attention.done.other" | "project.attention.state.warning" | "project.attention.state.running" | "project.attention.state.done" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.hintJoin" | "panels.dep.failed" | "panels.dep.unchecked" | "panels.dep.missing" | "panels.dep.outdated" | "panels.dep.degraded" | "panels.dep.unsupported" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.notActive" | "panels.market.notUsable" | "panels.market.broken" | "panels.market.hasNew" | "panels.market.hasProblem" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.uncheckedHint" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.swapSlow" | "panels.market.removeSlow" | "panels.market.updateNoChange" | "panels.market.updateUnknownVersion" | "panels.market.updateGone" | "panels.market.updateRestored" | "panels.market.updateBehind" | "panels.market.updateStuck.title" | "panels.market.updateStuck.factNoChange" | "panels.market.updateStuck.copiedHint" | "panels.market.selfUpdateFailed" | "panels.market.selfUpdateUnknown" | "panels.market.selfUpdateRolledBack" | "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.noMarketSource" | "panels.market.failed" | "panels.market.askAgent" | "panels.market.askAgentCopied" | "panels.market.askAgentText" | "panels.market.failure.permission" | "panels.market.failure.diskFull" | "panels.market.failure.sandbox" | "panels.market.failure.unknown" | "panels.market.failure.factOwner" | "panels.market.failure.factMode" | "panels.market.failure.factSpace" | "panels.market.failure.factStuck" | "panels.market.failure.nowhere" | "panels.market.failure.copyFix" | "panels.market.failure.copied" | "panels.market.failure.copiedHint" | "panels.market.failure.askAgent" | "panels.market.failure.askAgentText" | "panels.market.failure.askAgentHint" | "panels.market.failure.recheck" | "panels.market.failure.showOutput" | "panels.market.failure.hideOutput" | "panels.market.failure.term.commandLine" | "panels.market.failure.term.signal" | "panels.market.failure.term.exitCode" | "panels.market.failure.term.noExitCode" | "panels.market.failure.term.running" | "panels.market.failure.term.failed" | "panels.market.failure.term.done" | "panels.market.failure.term.copy" | "panels.market.failure.term.copied" | "panels.market.failure.term.noOutput" | "panels.market.failure.term.collapse" | "panels.market.failure.term.expandAria" | "panels.market.failure.term.expand" | "panels.market.needEnv" | "panels.market.needCommands" | "panels.market.needBinary" | "panels.market.needLib" | "panels.market.localMark" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.updateNeedsWorkbench" | "panels.market.updateIncompatible" | "panels.market.moduleRefused" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.pendingFollowUp" | "panels.market.migrationHint" | "panels.market.migrateAction" | "panels.market.migrating" | "panels.market.migrateConfirmTitle" | "panels.market.migrateConfirmDetail" | "panels.market.migrateConfirmAck" | "panels.market.migrateConfirmYes" | "panels.market.migrateDone" | "panels.market.dismissFollowUp" | "panels.market.dismissing" | "panels.market.dismissFollowUpTitle" | "panels.market.dismissFollowUpDetail" | "panels.market.dismissFollowUpAck" | "panels.market.dismissFollowUpYes" | "panels.market.dismissed" | "panels.market.workbenchName" | "panels.market.pluginBroken" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.checkUpdates" | "panels.market.checkAll" | "panels.market.checkingNow" | "panels.market.checkFailed" | "panels.market.checkedAt" | "panels.market.latestPartial" | "panels.market.latestNoRegistry" | "panels.market.latestProbeFailed" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureStopProfile" | "panels.market.add.failureCancelled" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureInstalled" | "panels.market.add.failureGeneric" | "panels.market.add.failureCredentials" | "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.tabInstalled" | "panels.market.tabs" | "panels.tab.discover" | "panels.discover.loading" | "panels.discover.slowHint" | "panels.discover.lead" | "panels.discover.addSource" | "panels.discover.addingSource" | "panels.discover.addFirstSource" | "panels.discover.removeSource" | "panels.discover.removeTitle" | "panels.discover.removeBody" | "panels.discover.sourceActions" | "panels.discover.sourceStateWritable" | "panels.discover.sourceStateReadOnly" | "panels.discover.sourceEnable" | "panels.discover.sourceDisable" | "panels.discover.sourceWorking" | "panels.discover.sourceEnabled" | "panels.discover.sourceReadOnly" | "panels.discover.refresh" | "panels.discover.search" | "panels.discover.clearSearch" | "panels.discover.all" | "panels.discover.sourceLabel" | "panels.discover.sourceKind" | "panels.discover.sourceKindHttp" | "panels.discover.sourceKindGit" | "panels.discover.sourceUrl" | "panels.discover.sourcePlaceholder" | "panels.discover.sourceRef" | "panels.discover.sourcePath" | "panels.discover.sourceLocal" | "panels.discover.sourceLocalHint" | "panels.discover.save" | "panels.discover.cancel" | "panels.discover.retry" | "panels.discover.noSource" | "panels.discover.noSourceHint" | "panels.discover.sourcesFailed" | "panels.discover.unreadable" | "panels.discover.sourceAuth" | "panels.discover.invalid" | "panels.discover.emptyRepo" | "panels.discover.missingIndex" | "panels.discover.initTitle" | "panels.discover.initCta" | "panels.discover.initWhat" | "panels.discover.initBranch" | "panels.discover.initBranchHint" | "panels.discover.initBranchBad" | "panels.discover.initOk" | "panels.discover.initBusy" | "panels.discover.initDone" | "panels.discover.stale" | "panels.discover.empty" | "panels.discover.noMatch" | "panels.discover.notInstalled" | "panels.discover.installed" | "panels.discover.installedVersion" | "panels.discover.update" | "panels.discover.badShell" | "panels.discover.badShellDetail" | "panels.discover.unverified" | "panels.discover.installing" | "panels.discover.installingNamed" | "panels.discover.cancelInstall" | "panels.discover.cancelling" | "panels.discover.installCancelled" | "panels.discover.installedDone" | "panels.discover.failed" | "panels.discover.transportTitle" | "panels.discover.transportSsh" | "panels.discover.transportHttps" | "panels.discover.transportOk" | "panels.discover.transportAuth" | "panels.discover.transportUnreachable" | "panels.discover.transportUnknown" | "panels.discover.transportChecking" | "panels.discover.transportTest" | "panels.discover.transportPlaceholder" | "panels.discover.transportNeedsAuth" | "panels.discover.transportChange" | "panels.discover.transportChangeHide" | "panels.discover.transportNone" | "panels.discover.expand" | "panels.discover.collapse" | "panels.discover.versionCount" | "panels.discover.sourceNpm" | "panels.discover.sourceNpmDefault" | "panels.discover.sourceGit" | "panels.discover.installVersion" | "panels.discover.confirmTitle" | "panels.discover.confirmDetail" | "panels.discover.confirmAck" | "panels.discover.confirmOk" | "panels.discover.confirmCancel" | "panels.discover.marketMenu" | "panels.discover.manageSources" | "panels.discover.sourcesTitle" | "panels.discover.sourcesIntro" | "panels.discover.sourcesLabel" | "panels.discover.sourceTrust" | "panels.discover.sourceDuplicate" | "panels.discover.sourceBadUrl" | "panels.discover.close" | "panels.discover.labelsMenu" | "panels.discover.labelsCount" | "panels.discover.tagsAll" | "panels.discover.sort" | "panels.discover.sortWith" | "panels.discover.sortRelevance" | "panels.discover.sortDefault" | "panels.discover.sortPublished" | "panels.discover.categoriesLabel" | "panels.discover.showMore" | "panels.discover.entryMeta" | "panels.discover.entryMetaAuthor" | "panels.discover.openEntry" | "panels.discover.cardInstall" | "panels.discover.cardInstalled" | "panels.discover.cardUpdate" | "panels.discover.cardBlocked" | "panels.discover.installTitle" | "panels.discover.installVersionTitle" | "panels.discover.openInstalled" | "panels.discover.noCompatibleVersion" | "panels.discover.detailBack" | "panels.discover.publishedAt" | "panels.discover.detailMarket" | "panels.discover.detailIncompatible" | "panels.discover.detailUnknown" | "panels.discover.detailSource" | "panels.discover.authorUnknown" | "panels.discover.tabOverview" | "panels.discover.tabReadme" | "panels.discover.tabChangelog" | "panels.discover.docReadme" | "panels.discover.docChangelog" | "panels.discover.docLoading" | "panels.discover.docMissing" | "panels.discover.docUnavailable" | "panels.discover.docUnknownReason" | "panels.discover.detailTabs" | "panels.discover.factPackage" | "panels.discover.factRegistry" | "panels.discover.factRepository" | "panels.discover.factCommit" | "panels.discover.factDirectory" | "panels.discover.factPublished" | "panels.discover.factAuthor" | "panels.discover.factHomepage" | "panels.discover.factCategory" | "panels.discover.factLabels" | "panels.discover.factMarket" | "panels.discover.detailVersions" | "panels.discover.versionsLabel" | "panels.discover.tagRecommended" | "panels.discover.tagPrerelease" | "panels.discover.tagInstalled" | "panels.discover.tagIncompatible" | "panels.discover.tagUnknown" | "panels.discover.selected" | "panels.discover.done" | "panels.discover.installTrust" | "panels.discover.progress" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.update" | "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.toolchain.ok" | "env.toolchain.warn" | "env.opencli.ok" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.hold" | "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.wake" | "env.wake.opening" | "env.wake.browserOpen" | "env.wake.noBrowser" | "env.wake.failed" | "env.bridge.continue" | "env.diy.ok" | "env.diy.short" | "env.diy.hold" | "env.diy.why" | "env.diy.rows" | "env.diy.noRow" | "env.diy.step" | "env.diy.continue" | "env.copyCommand" | "env.copied" | "env.step.toolchain" | "env.step.opencli" | "env.step.bridge" | "env.step.diy" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "adapterSet.not-configured" | "adapterSet.no-profile" | "adapterSet.malformed" | "adapterSet.not-resolvable" | "adapterSet.import-failed" | "adapterSet.bad-export" | "adapterSet.factory-failed" | "adapterSet.incompatible-version" | "adapterSet.missing-member" | "env.unit.hint" | "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" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "adapterSet.title" | "adapterSet.lead" | "adapterSet.active" | "adapterSet.defaults" | "adapterSet.failed" | "adapterSet.healthUnreadable" | "workbenchSettings.nav" | "workbenchSettings.lead" | "sidebarEdition.nav" | "sidebarEdition.lead" | "sidebarEdition.official" | "sidebarEdition.officialHint" | "sidebarEdition.custom" | "sidebarEdition.customHint" | "sidebarEdition.saving" | "sidebarEdition.reloadRequired" | "sidebarEdition.reload" | "sidebarEdition.failed" | "debug.workspace" | "debug.status" | "debug.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.recording.shots" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch" | "approval.longTask.what" | "approval.longTask.signal" | "approval.plugin.name" | "approval.plugin.command" | "approval.plugin.note" | "approval.publish.module" | "approval.publish.target" | "approval.publish.version" | "approval.publish.author" | "approval.publish.authorMissing" | "approval.publish.labels" | "approval.publish.labelsMissing" | "approval.publish.owner" | "approval.publish.ownerUnowned" | "approval.publish.ownerTaken" | "approval.publish.unit" | "approval.publish.unitTaken" | "approval.publish.path" | "approval.publish.pathTaken" | "approval.publish.registry" | "approval.publish.repo" | "approval.publish.branch" | "approval.publish.defaultBranch" | "approval.publish.artifacts" | "approval.publish.index" | "approval.publish.commits" | "approval.publish.twoCommits" | "approval.publish.reading" | "approval.publish.changelog" | "approval.publish.changelogPending" | "approval.publish.changelogMissing" | "approval.publish.targetAuto" | "approval.publish.targetTeam" | "approval.publish.targetPublic" | "approval.publish.targetTarball" | "approval.publish.targetGit" | "approval.publish.targetMarket" | "approval.publish.targetLocal" | "approval.market.source" | "approval.market.url" | "approval.market.action" | "approval.market.policy" | "approval.market.enable" | "approval.market.disable" | "approval.market.writable" | "approval.market.readOnly" | "approval.market.reading" | "markdown.copy" | "markdown.copied" | "markdown.footnotes", string>;
807
+ en: Record<"time.now" | "time.ago" | "time.minutes" | "time.hours" | "time.days" | "blocker.retry" | "blocker.copy" | "blocker.unknown.title" | "blocker.login.go" | "blocker.login.titleGeneric" | "blocker.login.title" | "blocker.login.manual" | "blocker.login.hint" | "blocker.forbidden.open" | "blocker.forbidden.titleGeneric" | "blocker.forbidden.title" | "blocker.forbidden.hint" | "blocker.timeout.hint" | "blocker.exec.hint" | "blocker.fix.install" | "blocker.market.open" | "env.unit.failed" | "env.unit.failedHint" | "env.unit.unsupported" | "env.unit.unsupportedHint" | "env.unit.degraded" | "env.unit.degradedHint" | "env.unit.unchecked" | "env.unit.uncheckedHint" | "profileCreate.nav" | "profileCreate.lead" | "profileCreate.name" | "profileCreate.nameHint" | "profileCreate.source" | "profileCreate.current" | "profileCreate.copy" | "profileCreate.settings" | "profileCreate.create" | "profileCreate.creating" | "profileCreate.created" | "profileCreate.command" | "profileCreate.readFailed" | "profileCreate.retry" | "profileCreate.reading" | "profileCreate.noProfiles" | "profileCreate.failed" | "configSync.nav" | "configSync.lead" | "configSync.source" | "configSync.sourceBroken" | "configSync.sourceRows" | "configSync.sourceDead" | "configSync.refresh" | "configSync.loading" | "configSync.readHint" | "configSync.tag.new" | "configSync.tag.differs" | "configSync.conflictNote" | "configSync.code.lang" | "configSync.code.copy" | "configSync.code.copied" | "configSync.code.wrap" | "configSync.code.unwrap" | "configSync.code.collapse" | "configSync.code.collapseAria" | "configSync.code.expandAria" | "configSync.code.expand" | "configSync.missing" | "configSync.apply" | "configSync.applyNone" | "configSync.applying" | "configSync.applied" | "configSync.appliedUnverified" | "configSync.appliedIds" | "configSync.skippedIds" | "configSync.nothing" | "configSync.unreadable" | "configSync.noSource" | "configSync.emptyProviders" | "configSync.failed" | "env.need.bin.missing" | "env.need.bin.hint" | "env.need.extension.missing" | "env.need.extension.outdated" | "env.need.extension.hint" | "env.need.lib.missing" | "env.need.lib.outdated" | "env.need.lib.unsatisfied" | "env.need.lib.hint" | "env.need.env.missing" | "env.need.env.hint" | "brand.name" | "toggle.open" | "toggle.collapse" | "project.label" | "workspace.section" | "project.none" | "project.empty" | "project.add" | "project.add.busy" | "project.add.failed" | "project.search.label" | "project.search.placeholder" | "project.search.empty" | "project.group.workspaces" | "project.group.defaultWorkspace" | "project.group.workshop" | "project.rename.row" | "project.rename.current" | "project.rename.title" | "project.rename.description" | "project.rename.field" | "project.rename.placeholder" | "project.rename.hint" | "project.rename.save" | "project.rename.saving" | "project.rename.cancel" | "project.rename.failed" | "session.new" | "session.new.label" | "session.empty" | "session.noProject" | "session.list.label" | "session.copy" | "session.pinned" | "session.actions" | "status.idle" | "status.running" | "status.longTask" | "status.waitingApproval" | "status.planReview" | "status.waitingAnswer" | "status.compact.approval" | "status.compact.planReview" | "status.compact.answer" | "status.completed" | "status.subagentsRunning.one" | "status.subagentsRunning.other" | "project.attention.warning.one" | "project.attention.warning.other" | "project.attention.running.one" | "project.attention.running.other" | "project.attention.longTask.one" | "project.attention.longTask.other" | "project.attention.done.one" | "project.attention.done.other" | "project.attention.state.warning" | "project.attention.state.running" | "project.attention.state.done" | "hover.copied" | "time.short.minutes" | "time.short.hours" | "time.short.days" | "time.short.months" | "time.short.years" | "panels.title" | "panels.groupBoardless" | "panels.groupPlugins" | "runtime.plugin" | "runtime.pluginOf" | "runtime.pluginThing" | "runtime.pluginArea" | "panels.market.defaultHint" | "panels.market.defaultLabel" | "panels.market.defaultLocked" | "panels.followAll" | "panels.followAllConfirmTitle" | "panels.followAllConfirmDetail" | "panels.followAllConfirmAck" | "panels.followAllConfirmYes" | "panels.followAllConfirmNo" | "panels.enabled" | "panels.disabled" | "panels.choose" | "panels.buildModule" | "panels.failed" | "panels.dragHint" | "panels.unknownStep" | "panels.labelWithHint" | "panels.hintJoin" | "panels.dep.failed" | "panels.dep.unchecked" | "panels.dep.missing" | "panels.dep.outdated" | "panels.dep.degraded" | "panels.dep.unsupported" | "panels.tab.modules" | "panels.tab.market" | "panels.browseMarket" | "panels.noneInstalled" | "panels.noneInstalledHint" | "panels.market.installed" | "panels.market.notActive" | "panels.market.notUsable" | "panels.market.broken" | "panels.market.hasNew" | "panels.market.hasProblem" | "panels.market.missing" | "panels.market.unchecked" | "panels.market.uncheckedHint" | "panels.market.checking" | "panels.market.sectionInstalled" | "panels.market.sectionPending" | "panels.market.sectionShared" | "panels.market.sharedUsedBy" | "panels.market.listSeparator" | "panels.market.sharedMissing" | "panels.market.sharedOutdated" | "panels.market.sharedUnsatisfied" | "panels.market.sharedOk" | "panels.market.versionArrow" | "panels.market.lead" | "panels.market.install" | "panels.market.update" | "panels.market.swapSlow" | "panels.market.removeSlow" | "panels.market.updateNoChange" | "panels.market.updateUnknownVersion" | "panels.market.updateGone" | "panels.market.updateRestored" | "panels.market.updateBehind" | "panels.market.updateStuck.title" | "panels.market.updateStuck.factNoChange" | "panels.market.updateStuck.copiedHint" | "panels.market.selfUpdateFailed" | "panels.market.selfUpdateUnknown" | "panels.market.selfUpdateRolledBack" | "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.noMarketSource" | "panels.market.failed" | "panels.market.failure.permission" | "panels.market.failure.diskFull" | "panels.market.failure.sandbox" | "panels.market.failure.unknown" | "panels.market.failure.factOwner" | "panels.market.failure.factMode" | "panels.market.failure.factSpace" | "panels.market.failure.factStuck" | "panels.market.failure.nowhere" | "panels.market.failure.copyFix" | "panels.market.failure.copied" | "panels.market.failure.copiedHint" | "panels.market.failure.askAgent" | "panels.market.failure.askAgentText" | "panels.market.failure.askAgentHint" | "panels.market.failure.recheck" | "panels.market.failure.showOutput" | "panels.market.failure.hideOutput" | "panels.market.failure.term.commandLine" | "panels.market.failure.term.signal" | "panels.market.failure.term.exitCode" | "panels.market.failure.term.noExitCode" | "panels.market.failure.term.running" | "panels.market.failure.term.failed" | "panels.market.failure.term.done" | "panels.market.failure.term.copy" | "panels.market.failure.term.copied" | "panels.market.failure.term.noOutput" | "panels.market.failure.term.collapse" | "panels.market.failure.term.expandAria" | "panels.market.failure.term.expand" | "panels.market.needEnv" | "panels.market.needCommands" | "panels.market.needBinary" | "panels.market.needLib" | "panels.market.localMark" | "panels.market.noSource" | "panels.market.badSource" | "panels.market.empty" | "panels.market.sectionPlugins" | "panels.market.moduleOutdated" | "panels.market.updateNeedsWorkbench" | "panels.market.updateIncompatible" | "panels.market.moduleRefused" | "panels.market.moduleRestartHint" | "panels.market.pendingRestart" | "panels.market.pendingFollowUp" | "panels.market.migrationHint" | "panels.market.migrateAction" | "panels.market.migrating" | "panels.market.migrateConfirmTitle" | "panels.market.migrateConfirmDetail" | "panels.market.migrateConfirmAck" | "panels.market.migrateConfirmYes" | "panels.market.migrateDone" | "panels.market.dismissFollowUp" | "panels.market.dismissing" | "panels.market.dismissFollowUpTitle" | "panels.market.dismissFollowUpDetail" | "panels.market.dismissFollowUpAck" | "panels.market.dismissFollowUpYes" | "panels.market.dismissed" | "panels.market.workbenchName" | "panels.market.pluginBroken" | "panels.market.restartNeeded" | "panels.market.foot" | "panels.market.checkUpdates" | "panels.market.checkAll" | "panels.market.checkingNow" | "panels.market.checkFailed" | "panels.market.checkedAt" | "panels.market.latestPartial" | "panels.market.latestNoRegistry" | "panels.market.latestProbeFailed" | "panels.market.justNow" | "panels.market.minutesAgo" | "panels.market.hoursAgo" | "panels.market.add.description" | "panels.market.add.specPlaceholder" | "panels.market.add.guideToggle" | "panels.market.add.guideHide" | "panels.market.add.guideIdTitle" | "panels.market.add.guideIdExample" | "panels.market.add.guideIdHint" | "panels.market.add.guideGitTitle" | "panels.market.add.guideGitExample" | "panels.market.add.guideGitHint" | "panels.market.add.guidePathTitle" | "panels.market.add.guidePathExample" | "panels.market.add.guidePathHint" | "panels.market.add.guideExampleLabel" | "panels.market.add.guideFill" | "panels.market.add.guideSafety" | "panels.market.add.registryLegend" | "panels.market.add.registryOfficial" | "panels.market.add.registryMirror" | "panels.market.add.registryWithHost" | "panels.market.add.registryToggle" | "panels.market.add.installVersion" | "panels.market.add.registryDefault" | "panels.market.add.registryCustom" | "panels.market.add.registryCustomPlaceholder" | "panels.market.add.registryCustomHint" | "panels.market.add.registryCustomInvalid" | "panels.market.add.run" | "panels.market.add.edit" | "panels.market.add.changeRegistry" | "panels.market.add.installingTitle" | "panels.market.add.installedTitle" | "panels.market.add.failedTitle" | "panels.market.add.cancelledTitle" | "panels.market.add.failureNetworkHost" | "panels.market.add.problemInvalid" | "panels.market.add.problemInstalled" | "panels.market.add.problemNotFound" | "panels.market.add.problemNotPackage" | "panels.market.add.problemNotBundle" | "panels.market.add.problemNotWorkbenchModule" | "panels.market.add.problemNotModuleOrPlugin" | "panels.market.add.failureNotModuleOrPlugin" | "panels.market.add.installedPlugin" | "panels.market.add.pluginPreview" | "panels.market.add.pluginAlias" | "panels.market.add.problemNetwork" | "panels.market.add.problemUnknown" | "panels.market.add.failureNetwork" | "panels.market.add.failureNotFound" | "panels.market.add.failureNoMatchingVersion" | "panels.market.add.failureDiskFull" | "panels.market.add.failurePermission" | "panels.market.add.failureBuildBlocked" | "panels.market.add.failureIntegrity" | "panels.market.add.failureStopProfile" | "panels.market.add.failureCancelled" | "panels.market.add.failureTimeout" | "panels.market.add.failurePnpmMissing" | "panels.market.add.failureInstalled" | "panels.market.add.failureGeneric" | "panels.market.add.failureCredentials" | "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.tabInstalled" | "panels.market.tabs" | "panels.tab.discover" | "panels.discover.loading" | "panels.discover.slowHint" | "panels.discover.lead" | "panels.discover.addSource" | "panels.discover.addingSource" | "panels.discover.addFirstSource" | "panels.discover.removeSource" | "panels.discover.removeTitle" | "panels.discover.removeBody" | "panels.discover.sourceActions" | "panels.discover.sourceStateWritable" | "panels.discover.sourceStateReadOnly" | "panels.discover.sourceEnable" | "panels.discover.sourceDisable" | "panels.discover.sourceWorking" | "panels.discover.sourceEnabled" | "panels.discover.sourceReadOnly" | "panels.discover.refresh" | "panels.discover.search" | "panels.discover.clearSearch" | "panels.discover.all" | "panels.discover.sourceLabel" | "panels.discover.sourceKind" | "panels.discover.sourceKindHttp" | "panels.discover.sourceKindGit" | "panels.discover.sourceUrl" | "panels.discover.sourcePlaceholder" | "panels.discover.sourceRef" | "panels.discover.sourcePath" | "panels.discover.sourceLocal" | "panels.discover.sourceLocalHint" | "panels.discover.save" | "panels.discover.cancel" | "panels.discover.retry" | "panels.discover.noSource" | "panels.discover.noSourceHint" | "panels.discover.sourcesFailed" | "panels.discover.unreadable" | "panels.discover.sandbox" | "panels.discover.sourceAuth" | "panels.discover.invalid" | "panels.discover.emptyRepo" | "panels.discover.missingIndex" | "panels.discover.initTitle" | "panels.discover.initCta" | "panels.discover.initWhat" | "panels.discover.initBranch" | "panels.discover.initBranchHint" | "panels.discover.initBranchBad" | "panels.discover.initOk" | "panels.discover.initBusy" | "panels.discover.initDone" | "panels.discover.stale" | "panels.discover.empty" | "panels.discover.noMatch" | "panels.discover.notInstalled" | "panels.discover.installed" | "panels.discover.installedVersion" | "panels.discover.update" | "panels.discover.badShell" | "panels.discover.badShellDetail" | "panels.discover.unverified" | "panels.discover.installing" | "panels.discover.installingNamed" | "panels.discover.cancelInstall" | "panels.discover.cancelling" | "panels.discover.installCancelled" | "panels.discover.installedDone" | "panels.discover.failed" | "panels.discover.transportTitle" | "panels.discover.transportSsh" | "panels.discover.transportHttps" | "panels.discover.transportOk" | "panels.discover.transportAuth" | "panels.discover.transportUnreachable" | "panels.discover.transportUnknown" | "panels.discover.transportChecking" | "panels.discover.transportTest" | "panels.discover.transportPlaceholder" | "panels.discover.transportNeedsAuth" | "panels.discover.transportChange" | "panels.discover.transportChangeHide" | "panels.discover.transportNone" | "panels.discover.expand" | "panels.discover.collapse" | "panels.discover.versionCount" | "panels.discover.sourceNpm" | "panels.discover.sourceNpmDefault" | "panels.discover.sourceGit" | "panels.discover.installVersion" | "panels.discover.confirmTitle" | "panels.discover.confirmDetail" | "panels.discover.confirmAck" | "panels.discover.confirmOk" | "panels.discover.confirmCancel" | "panels.discover.marketMenu" | "panels.discover.manageSources" | "panels.discover.sourcesTitle" | "panels.discover.sourcesIntro" | "panels.discover.sourcesLabel" | "panels.discover.sourceTrust" | "panels.discover.sourceDuplicate" | "panels.discover.sourceBadUrl" | "panels.discover.close" | "panels.discover.labelsMenu" | "panels.discover.labelsCount" | "panels.discover.tagsAll" | "panels.discover.sort" | "panels.discover.sortWith" | "panels.discover.sortRelevance" | "panels.discover.sortDefault" | "panels.discover.sortPublished" | "panels.discover.categoriesLabel" | "panels.discover.showMore" | "panels.discover.entryMeta" | "panels.discover.entryMetaAuthor" | "panels.discover.openEntry" | "panels.discover.cardInstall" | "panels.discover.cardInstalled" | "panels.discover.cardUpdate" | "panels.discover.cardBlocked" | "panels.discover.installTitle" | "panels.discover.installVersionTitle" | "panels.discover.openInstalled" | "panels.discover.noCompatibleVersion" | "panels.discover.detailBack" | "panels.discover.publishedAt" | "panels.discover.detailMarket" | "panels.discover.detailIncompatible" | "panels.discover.detailUnknown" | "panels.discover.detailSource" | "panels.discover.authorUnknown" | "panels.discover.tabOverview" | "panels.discover.tabReadme" | "panels.discover.tabChangelog" | "panels.discover.docReadme" | "panels.discover.docChangelog" | "panels.discover.docLoading" | "panels.discover.docMissing" | "panels.discover.docUnavailable" | "panels.discover.docUnknownReason" | "panels.discover.detailTabs" | "panels.discover.factPackage" | "panels.discover.factRegistry" | "panels.discover.factRepository" | "panels.discover.factCommit" | "panels.discover.factDirectory" | "panels.discover.factPublished" | "panels.discover.factAuthor" | "panels.discover.factHomepage" | "panels.discover.factCategory" | "panels.discover.factLabels" | "panels.discover.factMarket" | "panels.discover.detailVersions" | "panels.discover.versionsLabel" | "panels.discover.tagRecommended" | "panels.discover.tagPrerelease" | "panels.discover.tagInstalled" | "panels.discover.tagIncompatible" | "panels.discover.tagUnknown" | "panels.discover.selected" | "panels.discover.done" | "panels.discover.installTrust" | "panels.discover.progress" | "panels.market.add.approveBuilds" | "panels.market.add.approveHint" | "panels.market.add.doneApplied" | "panels.market.add.doneRestart" | "panels.market.add.restartWhy" | "panels.market.add.restartWhy.no-hmr" | "panels.market.add.restartWhy.package-moved" | "panels.market.add.restartWhy.host-module" | "panels.market.add.restartWhy.unmanaged-plugin" | "panels.market.add.restartWhy.module-comparison" | "panels.market.add.cancelled" | "panels.market.add.failed" | "panels.market.add.removed" | "panels.market.add.supplyPending" | "panels.market.add.supplyFailed" | "panels.market.add.notModule" | "panels.market.add.removedRestart" | "panels.market.add.remove" | "panels.market.add.problem.invalidSpec" | "panels.market.add.problem.alreadyInstalled" | "panels.market.add.problem.notFound" | "panels.market.add.problem.notAPackage" | "panels.market.add.problem.notABundle" | "panels.market.add.problem.network" | "panels.market.add.problem.unknown" | "panels.market.add.reason.invalidSpec" | "panels.market.add.reason.incompatible" | "panels.market.add.reason.notBundle" | "panels.market.add.reason.notRemovable" | "panels.market.add.reason.bundleInUse" | "panels.market.add.reason.stopProfile" | "panels.market.add.reason.staleApproval" | "panels.market.add.reason.operationError" | "panels.market.add.reason.buildBlocked" | "panels.market.add.reason.pnpmMissing" | "panels.market.add.reason.noMatchingVersion" | "panels.market.add.reason.diskFull" | "panels.market.add.reason.permission" | "panels.market.add.reason.integrity" | "panels.market.add.reason.timeout" | "panels.market.add.reason.network" | "panels.market.add.reason.notFound" | "panels.market.add.reason.unknown" | "blocker.fix.update" | "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.installingToolchain" | "env.failed" | "env.elapsed" | "env.stepFailed.install" | "env.stepFailed.path" | "env.stepFailed.shell" | "env.toolchain.ok" | "env.toolchain.warn" | "env.runtime.ok" | "env.bridge.ok" | "env.bridge.short" | "env.bridge.why" | "env.bridge.hold" | "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.wake" | "env.wake.opening" | "env.wake.browserOpen" | "env.wake.noBrowser" | "env.wake.failed" | "env.bridge.continue" | "env.diy.ok" | "env.diy.short" | "env.diy.hold" | "env.diy.why" | "env.diy.rows" | "env.diy.noRow" | "env.diy.step" | "env.diy.continue" | "env.copyCommand" | "env.copied" | "env.step.toolchain" | "env.step.adapter" | "env.step.runtime" | "env.step.bridge" | "env.step.diy" | "env.step.warm" | "env.warm.done" | "env.warm.short" | "adapterSet.not-configured" | "adapterSet.no-profile" | "adapterSet.malformed" | "adapterSet.not-resolvable" | "adapterSet.import-failed" | "adapterSet.bad-export" | "adapterSet.factory-failed" | "adapterSet.incompatible-version" | "adapterSet.missing-member" | "env.unit.hint" | "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" | "error.unknown" | "board.title" | "panel.conversation" | "panels.label" | "adapterSet.title" | "adapterSet.lead" | "adapterSet.active" | "adapterSet.defaults" | "adapterSet.failed" | "adapterSet.healthUnreadable" | "workbenchSettings.nav" | "workbenchSettings.lead" | "sidebarEdition.nav" | "sidebarEdition.lead" | "sidebarEdition.official" | "sidebarEdition.officialHint" | "sidebarEdition.custom" | "sidebarEdition.customHint" | "sidebarEdition.saving" | "sidebarEdition.reloadRequired" | "sidebarEdition.reload" | "sidebarEdition.failed" | "debug.workspace" | "debug.status" | "debug.status.trouble" | "debug.stalled" | "debug.act.pause" | "debug.act.resume" | "debug.act.stop" | "debug.act.stop.ask" | "debug.card.here.title" | "debug.card.here.note" | "debug.card.away.note" | "debug.card.paused.note" | "debug.card.hidden.note" | "record.waiting" | "record.waiting.note" | "record.recording" | "record.recording.note" | "record.recording.shots" | "record.finished" | "record.finished.note" | "record.act.cancel" | "record.act.halt" | "approval.record.site" | "approval.record.what" | "approval.record.lands" | "approval.record.noUrl" | "approval.record.oneAction" | "approval.record.noSwitch" | "approval.longTask.what" | "approval.longTask.signal" | "approval.plugin.name" | "approval.plugin.command" | "approval.plugin.note" | "approval.publish.module" | "approval.publish.target" | "approval.publish.version" | "approval.publish.author" | "approval.publish.authorMissing" | "approval.publish.labels" | "approval.publish.labelsMissing" | "approval.publish.owner" | "approval.publish.ownerUnowned" | "approval.publish.ownerTaken" | "approval.publish.unit" | "approval.publish.unitTaken" | "approval.publish.path" | "approval.publish.pathTaken" | "approval.publish.registry" | "approval.publish.repo" | "approval.publish.branch" | "approval.publish.defaultBranch" | "approval.publish.artifacts" | "approval.publish.index" | "approval.publish.commits" | "approval.publish.twoCommits" | "approval.publish.reading" | "approval.publish.changelog" | "approval.publish.changelogPending" | "approval.publish.changelogMissing" | "approval.publish.targetAuto" | "approval.publish.targetTeam" | "approval.publish.targetPublic" | "approval.publish.targetTarball" | "approval.publish.targetGit" | "approval.publish.targetMarket" | "approval.publish.targetLocal" | "approval.market.source" | "approval.market.url" | "approval.market.action" | "approval.market.policy" | "approval.market.enable" | "approval.market.disable" | "approval.market.writable" | "approval.market.readOnly" | "approval.market.reading" | "markdown.copy" | "markdown.copied" | "markdown.footnotes", string>;
809
808
  };
810
809
  /** 中文词表的键类型(从 `zh.ts` 转出):`en` 与模块词表都得覆盖同一批键。 */
811
810
  export type { WorkbenchMessages };
@@ -0,0 +1,15 @@
1
+ import type { Translate } from '../lib/dsh-client.js';
2
+ import type { RuntimeText } from '../contract/capabilities.js';
3
+ /**
4
+ * 把适配器给的 zh / en 两份文案落到当前语言。
5
+ * @param text 适配器档案里的那段话。
6
+ * @param resolve dsh 的语言解析器;没有就取中文那份。
7
+ * @returns 当前语言的那一段。
8
+ */
9
+ export declare function resolveRuntimeText(text: RuntimeText, resolve?: (text: RuntimeText) => string): string;
10
+ /**
11
+ * 取当前语言的运行时术语(没给档案时的兜底)。
12
+ * @param t 文案函数。
13
+ * @returns `plugin` / `pluginOf` / `pluginThing` / `pluginArea` 四个名词短语。
14
+ */
15
+ export declare function runtimeTermsOf(t: Translate): Readonly<Record<string, string>>;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 把适配器给的 zh / en 两份文案落到当前语言。
3
+ * @param text 适配器档案里的那段话。
4
+ * @param resolve dsh 的语言解析器;没有就取中文那份。
5
+ * @returns 当前语言的那一段。
6
+ */
7
+ export function resolveRuntimeText(text, resolve) {
8
+ return resolve === undefined ? text.zh : resolve(text);
9
+ }
10
+ /**
11
+ * 取当前语言的运行时术语(没给档案时的兜底)。
12
+ * @param t 文案函数。
13
+ * @returns `plugin` / `pluginOf` / `pluginThing` / `pluginArea` 四个名词短语。
14
+ */
15
+ export function runtimeTermsOf(t) {
16
+ return {
17
+ plugin: t('runtime.plugin'),
18
+ pluginOf: t('runtime.pluginOf'),
19
+ pluginThing: t('runtime.pluginThing'),
20
+ pluginArea: t('runtime.pluginArea'),
21
+ };
22
+ }
package/dist/i18n/zh.d.ts CHANGED
@@ -82,7 +82,11 @@ export declare const zh: {
82
82
  readonly 'time.short.years': "{n}年";
83
83
  readonly 'panels.title': "面板模块";
84
84
  readonly 'panels.groupBoardless': "无看板模块";
85
- readonly 'panels.groupPlugins': "opencli 插件";
85
+ readonly 'panels.groupPlugins': "插件";
86
+ readonly 'runtime.plugin': "插件";
87
+ readonly 'runtime.pluginOf': "运行时提供的插件";
88
+ readonly 'runtime.pluginThing': "插件";
89
+ readonly 'runtime.pluginArea': "插件区";
86
90
  readonly 'panels.market.defaultHint': "打开后所有工作区默认开启,也可在工作区面板配置中单独关闭";
87
91
  readonly 'panels.market.defaultLabel': "全局默认开启";
88
92
  readonly 'panels.market.defaultLocked': "这份现在用不了,先更新或卸载";
@@ -160,9 +164,6 @@ export declare const zh: {
160
164
  readonly 'panels.market.confirmNo': "取消";
161
165
  readonly 'panels.market.noMarketSource': "索引里没有这个模块的新版本(刷新一次索引再试)";
162
166
  readonly 'panels.market.failed': "没成功:{reason}";
163
- readonly 'panels.market.askAgent': "问 agent";
164
- readonly 'panels.market.askAgentCopied': "已复制";
165
- readonly 'panels.market.askAgentText': "工作台里「{name}」(单元 {unit})用不了:{reason}。帮我查清缺什么、怎么补,补完确认真能用。";
166
167
  readonly 'panels.market.failure.permission': "没装上:没有写入权限";
167
168
  readonly 'panels.market.failure.diskFull': "没装上:磁盘满了";
168
169
  readonly 'panels.market.failure.sandbox': "没装上:被系统拦住了";
@@ -202,7 +203,7 @@ export declare const zh: {
202
203
  readonly 'panels.market.noSource': "这个模块没声明怎么装,只能自己动手";
203
204
  readonly 'panels.market.badSource': "安装方式没写全,只能自己动手";
204
205
  readonly 'panels.market.empty': "暂无可用模块";
205
- readonly 'panels.market.sectionPlugins': "已安装 opencli 插件";
206
+ readonly 'panels.market.sectionPlugins': "已安装的插件";
206
207
  readonly 'panels.market.moduleOutdated': "有新版";
207
208
  readonly 'panels.market.updateNeedsWorkbench': "新版本要先把工作台升级才能用";
208
209
  readonly 'panels.market.updateIncompatible': "新版本和当前的工作台不匹配,暂时不能更新";
@@ -240,7 +241,7 @@ export declare const zh: {
240
241
  readonly 'panels.market.justNow': "刚刚";
241
242
  readonly 'panels.market.minutesAgo': "{n} 分钟前";
242
243
  readonly 'panels.market.hoursAgo': "{n} 小时前";
243
- readonly 'panels.market.add.description': "输入模块或 opencli 插件的包名、Git 仓库地址或本地目录路径。";
244
+ readonly 'panels.market.add.description': "输入模块或 {plugin}的包名、Git 仓库地址或本地目录路径。";
244
245
  readonly 'panels.market.add.specPlaceholder': "例如 @dsh-workbench/module-hello";
245
246
  readonly 'panels.market.add.guideToggle': "模块安装引导和示例";
246
247
  readonly 'panels.market.add.guideHide': "收起引导";
@@ -279,12 +280,12 @@ export declare const zh: {
279
280
  readonly 'panels.market.add.problemInstalled': "这个模块已经装过了(要换版本请带上 @版本)";
280
281
  readonly 'panels.market.add.problemNotFound': "未找到相关模块";
281
282
  readonly 'panels.market.add.problemNotPackage': "该路径不存在或不是有效的模块包";
282
- readonly 'panels.market.add.problemNotBundle': "这个包装不进这里:{reason}。这个入口按包名认工作台模块和 opencli 插件,两种都能装;但 git 地址和 tarball 判断不出它是什么 —— 要是它其实是这两样之一,请改填包名或本地目录。";
283
+ readonly 'panels.market.add.problemNotBundle': "这个包装不进这里:{reason}。这个入口按包名认工作台模块和 {plugin},两种都能装;但 git 地址和 tarball 判断不出它是什么 —— 要是它其实是这两样之一,请改填包名或本地目录。";
283
284
  readonly 'panels.market.add.problemNotWorkbenchModule': "这个包跟现在的工作台对不上,装上也用不了。换一个版本,或者找这个模块的作者。";
284
- readonly 'panels.market.add.problemNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 opencli 的插件,装了也用不上。换一个版本,或者找这个包的作者。";
285
- readonly 'panels.market.add.failureNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 opencli 的插件,装了也用不上";
286
- readonly 'panels.market.add.installedPlugin': "装上了:opencli 插件 {name}";
287
- readonly 'panels.market.add.pluginPreview': "这是一份 opencli 插件:装进 opencli 的插件区,装完就能用,不用重启。";
285
+ readonly 'panels.market.add.problemNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 {pluginOf},装了也用不上。换一个版本,或者找这个包的作者。";
286
+ readonly 'panels.market.add.failureNotModuleOrPlugin': "这个包既不是工作台的模块,也不是 {pluginOf},装了也用不上";
287
+ readonly 'panels.market.add.installedPlugin': "装上了:{plugin} {name}";
288
+ readonly 'panels.market.add.pluginPreview': "这是一份 {pluginThing}:装进 {pluginArea},装完就能用,不用重启。";
288
289
  readonly 'panels.market.add.pluginAlias': "插件名:{name}";
289
290
  readonly 'panels.market.add.problemNetwork': "无法连接模块源,请检查网络后重试";
290
291
  readonly 'panels.market.add.problemUnknown': "无法获取模块信息:{reason}";
@@ -374,6 +375,7 @@ export declare const zh: {
374
375
  readonly 'panels.discover.noSourceHint': "添加一个模块市场索引(http 地址或 git 仓库),即可在这里浏览和安装其中的模块";
375
376
  readonly 'panels.discover.sourcesFailed': "无法读取索引源";
376
377
  readonly 'panels.discover.unreadable': "无法读取此索引";
378
+ readonly 'panels.discover.sandbox': "被系统拦住了:这个 profile 的可写根盖不住工作台的缓存目录";
377
379
  readonly 'panels.discover.sourceAuth': "这个索引源读不了:本机没有它的 git 凭据。配好凭据(或在源里改用 SSH 地址),再点右上角的刷新。";
378
380
  readonly 'panels.discover.invalid': "此索引的格式无效";
379
381
  readonly 'panels.discover.emptyRepo': "这个仓库还没有任何提交";
@@ -560,7 +562,7 @@ export declare const zh: {
560
562
  readonly 'blocker.forbidden.hint': "账号已登录,但没有这个项目/仓库的权限;申请之后再试。";
561
563
  readonly 'blocker.forbidden.open': "打开权限页";
562
564
  readonly 'blocker.timeout.hint': "后台浏览器没起来,重试一次通常就好。";
563
- readonly 'blocker.exec.hint': "确认 opencli 已经装好、在终端里能直接运行(which opencli)。";
565
+ readonly 'blocker.exec.hint': "确认运行时已经装好、在终端里能直接跑起来。";
564
566
  readonly 'blocker.unknown.title': "出了点问题";
565
567
  readonly 'panels.reading': "正在读取面板配置…";
566
568
  readonly 'panels.cardBroken': "这个模块起不来:{unit}({reason})";
@@ -570,6 +572,7 @@ export declare const zh: {
570
572
  readonly 'env.title': "准备工作台";
571
573
  readonly 'env.checking': "正在准备运行环境…";
572
574
  readonly 'env.installing': "正在安装后台工具,第一次会慢一点…";
575
+ readonly 'env.installingToolchain': "正在装工作台自己那份 npm / pnpm —— 第一次要下载,慢一点正常。";
573
576
  readonly 'env.failed': "还差一步就能用了";
574
577
  readonly 'env.elapsed': "已等待 {seconds} 秒";
575
578
  readonly 'env.stepFailed.install': "装不上";
@@ -577,16 +580,11 @@ export declare const zh: {
577
580
  readonly 'env.stepFailed.shell': "连不上命令行";
578
581
  readonly 'env.toolchain.ok': "正常";
579
582
  readonly 'env.toolchain.warn': "还没完全准备好";
580
- readonly 'env.opencli.ok': "已就绪";
583
+ readonly 'env.runtime.ok': "已就绪";
581
584
  readonly 'env.bridge.ok': "已连接";
582
585
  readonly 'env.bridge.short': "还没连上";
583
586
  readonly 'env.bridge.why': "面板的数据要用你浏览器里的登录状态。这个连接没通,模块就取不到数据;不拦路:修好它,或者先进入工作台。";
584
587
  readonly 'env.bridge.hold': "浏览器还没连上 —— 按下面修好后点「重试」,也可以先进工作台。";
585
- readonly 'env.bridge.daemon': "后台服务没起来:正常它会自己起,先在终端跑下面这条命令。";
586
- readonly 'env.bridge.extension': "浏览器扩展没连上:确认浏览器开着、扩展已启用;没装就从商店装一次(装完回来点「重试」)。";
587
- readonly 'env.bridge.extensionLink': "去 Chrome 应用商店装扩展";
588
- readonly 'env.bridge.profile': "连上了多个浏览器账号,但没选默认的那个:先看有哪些(下面这条命令),再选一个。";
589
- readonly 'env.bridge.stale': "默认的浏览器账号已经失效(它记的是上一次的扩展实例):重新选一个。";
590
588
  readonly 'env.bridge.unknown': "没认出是哪种问题:展开原文,按里面的步骤处理。";
591
589
  readonly 'env.fix.title': "怎么解决";
592
590
  readonly 'env.fix.why': "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。";
@@ -615,11 +613,12 @@ export declare const zh: {
615
613
  readonly 'env.diy.continue': "先进入工作台";
616
614
  readonly 'env.copyCommand': "复制命令";
617
615
  readonly 'env.copied': "已复制";
618
- readonly 'env.step.toolchain': "运行环境";
619
- readonly 'env.step.opencli': "后台工具";
620
- readonly 'env.step.bridge': "浏览器连接";
621
- readonly 'env.step.diy': "DIY 模式";
622
- readonly 'env.step.warm': "站点登录状态";
616
+ readonly 'env.step.toolchain': "检查运行环境";
617
+ readonly 'env.step.adapter': "检查运行时";
618
+ readonly 'env.step.runtime': "安装后台工具";
619
+ readonly 'env.step.bridge': "连接浏览器";
620
+ readonly 'env.step.diy': "检查 DIY 模式";
621
+ readonly 'env.step.warm': "连上站点";
623
622
  readonly 'env.warm.done': "已就绪({n} 个站点)";
624
623
  readonly 'env.warm.short': "这次没提前连上 —— 不影响用,第一次取数会自己补";
625
624
  readonly 'env.unit.failed': "这个模块起不来";
package/dist/i18n/zh.js CHANGED
@@ -74,7 +74,11 @@ export const zh = {
74
74
  'time.short.years': '{n}年',
75
75
  'panels.title': '面板模块',
76
76
  'panels.groupBoardless': '无看板模块',
77
- 'panels.groupPlugins': 'opencli 插件',
77
+ 'panels.groupPlugins': '插件',
78
+ 'runtime.plugin': '插件',
79
+ 'runtime.pluginOf': '运行时提供的插件',
80
+ 'runtime.pluginThing': '插件',
81
+ 'runtime.pluginArea': '插件区',
78
82
  'panels.market.defaultHint': '打开后所有工作区默认开启,也可在工作区面板配置中单独关闭',
79
83
  'panels.market.defaultLabel': '全局默认开启',
80
84
  'panels.market.defaultLocked': '这份现在用不了,先更新或卸载',
@@ -152,9 +156,6 @@ export const zh = {
152
156
  'panels.market.confirmNo': '取消',
153
157
  'panels.market.noMarketSource': '索引里没有这个模块的新版本(刷新一次索引再试)',
154
158
  'panels.market.failed': '没成功:{reason}',
155
- 'panels.market.askAgent': '问 agent',
156
- 'panels.market.askAgentCopied': '已复制',
157
- 'panels.market.askAgentText': '工作台里「{name}」(单元 {unit})用不了:{reason}。帮我查清缺什么、怎么补,补完确认真能用。',
158
159
  'panels.market.failure.permission': '没装上:没有写入权限',
159
160
  'panels.market.failure.diskFull': '没装上:磁盘满了',
160
161
  'panels.market.failure.sandbox': '没装上:被系统拦住了',
@@ -194,7 +195,7 @@ export const zh = {
194
195
  'panels.market.noSource': '这个模块没声明怎么装,只能自己动手',
195
196
  'panels.market.badSource': '安装方式没写全,只能自己动手',
196
197
  'panels.market.empty': '暂无可用模块',
197
- 'panels.market.sectionPlugins': '已安装 opencli 插件',
198
+ 'panels.market.sectionPlugins': '已安装的插件',
198
199
  'panels.market.moduleOutdated': '有新版',
199
200
  'panels.market.updateNeedsWorkbench': '新版本要先把工作台升级才能用',
200
201
  'panels.market.updateIncompatible': '新版本和当前的工作台不匹配,暂时不能更新',
@@ -232,7 +233,7 @@ export const zh = {
232
233
  'panels.market.justNow': '刚刚',
233
234
  'panels.market.minutesAgo': '{n} 分钟前',
234
235
  'panels.market.hoursAgo': '{n} 小时前',
235
- 'panels.market.add.description': '输入模块或 opencli 插件的包名、Git 仓库地址或本地目录路径。',
236
+ 'panels.market.add.description': '输入模块或 {plugin}的包名、Git 仓库地址或本地目录路径。',
236
237
  'panels.market.add.specPlaceholder': '例如 @dsh-workbench/module-hello',
237
238
  'panels.market.add.guideToggle': '模块安装引导和示例',
238
239
  'panels.market.add.guideHide': '收起引导',
@@ -271,12 +272,12 @@ export const zh = {
271
272
  'panels.market.add.problemInstalled': '这个模块已经装过了(要换版本请带上 @版本)',
272
273
  'panels.market.add.problemNotFound': '未找到相关模块',
273
274
  'panels.market.add.problemNotPackage': '该路径不存在或不是有效的模块包',
274
- 'panels.market.add.problemNotBundle': '这个包装不进这里:{reason}。这个入口按包名认工作台模块和 opencli 插件,两种都能装;但 git 地址和 tarball 判断不出它是什么 —— 要是它其实是这两样之一,请改填包名或本地目录。',
275
+ 'panels.market.add.problemNotBundle': '这个包装不进这里:{reason}。这个入口按包名认工作台模块和 {plugin},两种都能装;但 git 地址和 tarball 判断不出它是什么 —— 要是它其实是这两样之一,请改填包名或本地目录。',
275
276
  'panels.market.add.problemNotWorkbenchModule': '这个包跟现在的工作台对不上,装上也用不了。换一个版本,或者找这个模块的作者。',
276
- 'panels.market.add.problemNotModuleOrPlugin': '这个包既不是工作台的模块,也不是 opencli 的插件,装了也用不上。换一个版本,或者找这个包的作者。',
277
- 'panels.market.add.failureNotModuleOrPlugin': '这个包既不是工作台的模块,也不是 opencli 的插件,装了也用不上',
278
- 'panels.market.add.installedPlugin': '装上了:opencli 插件 {name}',
279
- 'panels.market.add.pluginPreview': '这是一份 opencli 插件:装进 opencli 的插件区,装完就能用,不用重启。',
277
+ 'panels.market.add.problemNotModuleOrPlugin': '这个包既不是工作台的模块,也不是 {pluginOf},装了也用不上。换一个版本,或者找这个包的作者。',
278
+ 'panels.market.add.failureNotModuleOrPlugin': '这个包既不是工作台的模块,也不是 {pluginOf},装了也用不上',
279
+ 'panels.market.add.installedPlugin': '装上了:{plugin} {name}',
280
+ 'panels.market.add.pluginPreview': '这是一份 {pluginThing}:装进 {pluginArea},装完就能用,不用重启。',
280
281
  'panels.market.add.pluginAlias': '插件名:{name}',
281
282
  'panels.market.add.problemNetwork': '无法连接模块源,请检查网络后重试',
282
283
  'panels.market.add.problemUnknown': '无法获取模块信息:{reason}',
@@ -366,6 +367,7 @@ export const zh = {
366
367
  'panels.discover.noSourceHint': '添加一个模块市场索引(http 地址或 git 仓库),即可在这里浏览和安装其中的模块',
367
368
  'panels.discover.sourcesFailed': '无法读取索引源',
368
369
  'panels.discover.unreadable': '无法读取此索引',
370
+ 'panels.discover.sandbox': '被系统拦住了:这个 profile 的可写根盖不住工作台的缓存目录',
369
371
  'panels.discover.sourceAuth': '这个索引源读不了:本机没有它的 git 凭据。配好凭据(或在源里改用 SSH 地址),再点右上角的刷新。',
370
372
  'panels.discover.invalid': '此索引的格式无效',
371
373
  'panels.discover.emptyRepo': '这个仓库还没有任何提交',
@@ -552,7 +554,7 @@ export const zh = {
552
554
  'blocker.forbidden.hint': '账号已登录,但没有这个项目/仓库的权限;申请之后再试。',
553
555
  'blocker.forbidden.open': '打开权限页',
554
556
  'blocker.timeout.hint': '后台浏览器没起来,重试一次通常就好。',
555
- 'blocker.exec.hint': '确认 opencli 已经装好、在终端里能直接运行(which opencli)。',
557
+ 'blocker.exec.hint': '确认运行时已经装好、在终端里能直接跑起来。',
556
558
  'blocker.unknown.title': '出了点问题',
557
559
  'panels.reading': '正在读取面板配置…',
558
560
  'panels.cardBroken': '这个模块起不来:{unit}({reason})',
@@ -562,6 +564,7 @@ export const zh = {
562
564
  'env.title': '准备工作台',
563
565
  'env.checking': '正在准备运行环境…',
564
566
  'env.installing': '正在安装后台工具,第一次会慢一点…',
567
+ 'env.installingToolchain': '正在装工作台自己那份 npm / pnpm —— 第一次要下载,慢一点正常。',
565
568
  'env.failed': '还差一步就能用了',
566
569
  'env.elapsed': '已等待 {seconds} 秒',
567
570
  'env.stepFailed.install': '装不上',
@@ -569,16 +572,11 @@ export const zh = {
569
572
  'env.stepFailed.shell': '连不上命令行',
570
573
  'env.toolchain.ok': '正常',
571
574
  'env.toolchain.warn': '还没完全准备好',
572
- 'env.opencli.ok': '已就绪',
575
+ 'env.runtime.ok': '已就绪',
573
576
  'env.bridge.ok': '已连接',
574
577
  'env.bridge.short': '还没连上',
575
578
  'env.bridge.why': '面板的数据要用你浏览器里的登录状态。这个连接没通,模块就取不到数据;不拦路:修好它,或者先进入工作台。',
576
579
  'env.bridge.hold': '浏览器还没连上 —— 按下面修好后点「重试」,也可以先进工作台。',
577
- 'env.bridge.daemon': '后台服务没起来:正常它会自己起,先在终端跑下面这条命令。',
578
- 'env.bridge.extension': '浏览器扩展没连上:确认浏览器开着、扩展已启用;没装就从商店装一次(装完回来点「重试」)。',
579
- 'env.bridge.extensionLink': '去 Chrome 应用商店装扩展',
580
- 'env.bridge.profile': '连上了多个浏览器账号,但没选默认的那个:先看有哪些(下面这条命令),再选一个。',
581
- 'env.bridge.stale': '默认的浏览器账号已经失效(它记的是上一次的扩展实例):重新选一个。',
582
580
  'env.bridge.unknown': '没认出是哪种问题:展开原文,按里面的步骤处理。',
583
581
  'env.fix.title': '怎么解决',
584
582
  'env.fix.why': '工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。',
@@ -607,11 +605,12 @@ export const zh = {
607
605
  'env.diy.continue': '先进入工作台',
608
606
  'env.copyCommand': '复制命令',
609
607
  'env.copied': '已复制',
610
- 'env.step.toolchain': '运行环境',
611
- 'env.step.opencli': '后台工具',
612
- 'env.step.bridge': '浏览器连接',
613
- 'env.step.diy': 'DIY 模式',
614
- 'env.step.warm': '站点登录状态',
608
+ 'env.step.toolchain': '检查运行环境',
609
+ 'env.step.adapter': '检查运行时',
610
+ 'env.step.runtime': '安装后台工具',
611
+ 'env.step.bridge': '连接浏览器',
612
+ 'env.step.diy': '检查 DIY 模式',
613
+ 'env.step.warm': '连上站点',
615
614
  'env.warm.done': '已就绪({n} 个站点)',
616
615
  'env.warm.short': '这次没提前连上 —— 不影响用,第一次取数会自己补',
617
616
  'env.unit.failed': '这个模块起不来',
package/dist/index.d.ts CHANGED
@@ -42,6 +42,8 @@ export * from './contract/extension.js';
42
42
  export * from './contract/lib.js';
43
43
  export * from './contract/git.js';
44
44
  export * from './contract/command.js';
45
+ export * from './contract/runner.js';
46
+ export * from './contract/plugin-source.js';
45
47
  export * from './contract/facts.js';
46
48
  export * from './contract/long-task.js';
47
49
  export * from './contract/protocol/bundle-install.js';
@@ -57,12 +59,14 @@ export * from './contract/protocol/unit-manifests.js';
57
59
  export * from './contract/unit-board.js';
58
60
  export * from './contract/unit-declaration.js';
59
61
  export * from './contract/unit.js';
62
+ export * from './contract/capabilities.js';
60
63
  export * from './contract/needs.js';
61
64
  export * from './contract/unit-capability.js';
62
65
  export * from './contract/workbench-contract.js';
63
66
  export * from './i18n/en.js';
64
67
  export * from './i18n/index.js';
65
68
  export * from './i18n/merge.js';
69
+ export * from './i18n/runtime-terms.js';
66
70
  export * from './i18n/settings.js';
67
71
  export * from './i18n/zh.js';
68
72
  export * from './lib/blocker-action.js';
package/dist/index.js CHANGED
@@ -42,6 +42,8 @@ export * from './contract/extension.js';
42
42
  export * from './contract/lib.js';
43
43
  export * from './contract/git.js';
44
44
  export * from './contract/command.js';
45
+ export * from './contract/runner.js';
46
+ export * from './contract/plugin-source.js';
45
47
  export * from './contract/facts.js';
46
48
  export * from './contract/long-task.js';
47
49
  export * from './contract/protocol/bundle-install.js';
@@ -57,12 +59,14 @@ export * from './contract/protocol/unit-manifests.js';
57
59
  export * from './contract/unit-board.js';
58
60
  export * from './contract/unit-declaration.js';
59
61
  export * from './contract/unit.js';
62
+ export * from './contract/capabilities.js';
60
63
  export * from './contract/needs.js';
61
64
  export * from './contract/unit-capability.js';
62
65
  export * from './contract/workbench-contract.js';
63
66
  export * from './i18n/en.js';
64
67
  export * from './i18n/index.js';
65
68
  export * from './i18n/merge.js';
69
+ export * from './i18n/runtime-terms.js';
66
70
  export * from './i18n/settings.js';
67
71
  export * from './i18n/zh.js';
68
72
  export * from './lib/blocker-action.js';