@xiaoso/dsh-workflow-lite 0.0.0-stage → 0.1.0

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 (156) hide show
  1. package/LICENSE +24 -0
  2. package/README.en.md +84 -0
  3. package/README.md +83 -2
  4. package/THIRD_PARTY_NOTICES.md +762 -0
  5. package/assets/icon-full.webp +0 -0
  6. package/assets/icon.webp +0 -0
  7. package/assets/wordmark.png +0 -0
  8. package/cordis.patch.yml +3 -0
  9. package/lib/client.js +127442 -0
  10. package/lib/index.mjs +9613 -0
  11. package/lib/types/client/app/addStep.d.ts +25 -0
  12. package/lib/types/client/app/desktop.d.ts +52 -0
  13. package/lib/types/client/app/host.d.ts +29 -0
  14. package/lib/types/client/app/sessions.d.ts +117 -0
  15. package/lib/types/client/app/theme.d.ts +27 -0
  16. package/lib/types/client/app/usePluginConfig.d.ts +59 -0
  17. package/lib/types/client/app/useRunFile.d.ts +24 -0
  18. package/lib/types/client/app/useRunGraph.d.ts +51 -0
  19. package/lib/types/client/app/useRunHistory.d.ts +21 -0
  20. package/lib/types/client/app/useRuns.d.ts +84 -0
  21. package/lib/types/client/app/useVersions.d.ts +50 -0
  22. package/lib/types/client/app/useWorkflow.d.ts +67 -0
  23. package/lib/types/client/app/viewport.d.ts +14 -0
  24. package/lib/types/client/i18n.d.ts +930 -0
  25. package/lib/types/client/index.d.ts +18 -0
  26. package/lib/types/client/model/connect.d.ts +44 -0
  27. package/lib/types/client/model/editor.d.ts +252 -0
  28. package/lib/types/client/model/fileKind.d.ts +15 -0
  29. package/lib/types/client/model/hostPath.d.ts +15 -0
  30. package/lib/types/client/model/htmlPreview.d.ts +24 -0
  31. package/lib/types/client/model/hubRuns.d.ts +45 -0
  32. package/lib/types/client/model/layout.d.ts +83 -0
  33. package/lib/types/client/model/library.d.ts +109 -0
  34. package/lib/types/client/model/nudge.d.ts +43 -0
  35. package/lib/types/client/model/pathSample.d.ts +26 -0
  36. package/lib/types/client/model/route.d.ts +121 -0
  37. package/lib/types/client/model/runDraft.d.ts +68 -0
  38. package/lib/types/client/model/runGraph.d.ts +15 -0
  39. package/lib/types/client/model/runHistory.d.ts +40 -0
  40. package/lib/types/client/model/themes.d.ts +87 -0
  41. package/lib/types/client/model/time.d.ts +7 -0
  42. package/lib/types/client/rpc.d.ts +42 -0
  43. package/lib/types/client/ui/AppearancePicker.d.ts +23 -0
  44. package/lib/types/client/ui/Canvas.d.ts +76 -0
  45. package/lib/types/client/ui/Confirm.d.ts +42 -0
  46. package/lib/types/client/ui/DocViewer.d.ts +67 -0
  47. package/lib/types/client/ui/Dock.d.ts +13 -0
  48. package/lib/types/client/ui/FileTag.d.ts +9 -0
  49. package/lib/types/client/ui/FileViewer.d.ts +30 -0
  50. package/lib/types/client/ui/FlowStreaks.d.ts +40 -0
  51. package/lib/types/client/ui/Handoff.d.ts +30 -0
  52. package/lib/types/client/ui/HostPicker.d.ts +31 -0
  53. package/lib/types/client/ui/HubDialog.d.ts +38 -0
  54. package/lib/types/client/ui/HubRunRow.d.ts +22 -0
  55. package/lib/types/client/ui/HubRuns.d.ts +19 -0
  56. package/lib/types/client/ui/HubSettings.d.ts +20 -0
  57. package/lib/types/client/ui/HubStorage.d.ts +18 -0
  58. package/lib/types/client/ui/HubWorkflowList.d.ts +21 -0
  59. package/lib/types/client/ui/HubWorkflowRow.d.ts +33 -0
  60. package/lib/types/client/ui/HubWorkflows.d.ts +26 -0
  61. package/lib/types/client/ui/HubWorkspacePicker.d.ts +16 -0
  62. package/lib/types/client/ui/Icon.d.ts +83 -0
  63. package/lib/types/client/ui/InputPanel.d.ts +37 -0
  64. package/lib/types/client/ui/InputsDialog.d.ts +22 -0
  65. package/lib/types/client/ui/Inspector.d.ts +51 -0
  66. package/lib/types/client/ui/Issues.d.ts +15 -0
  67. package/lib/types/client/ui/Launch.d.ts +30 -0
  68. package/lib/types/client/ui/Library.d.ts +23 -0
  69. package/lib/types/client/ui/LinkRow.d.ts +31 -0
  70. package/lib/types/client/ui/Markdown.d.ts +21 -0
  71. package/lib/types/client/ui/NodeHeads.d.ts +47 -0
  72. package/lib/types/client/ui/NoteDrawer.d.ts +21 -0
  73. package/lib/types/client/ui/OpenWith.d.ts +21 -0
  74. package/lib/types/client/ui/Outputs.d.ts +61 -0
  75. package/lib/types/client/ui/PanelHead.d.ts +21 -0
  76. package/lib/types/client/ui/PlanDialog.d.ts +18 -0
  77. package/lib/types/client/ui/PreviewCard.d.ts +38 -0
  78. package/lib/types/client/ui/QuickAdd.d.ts +30 -0
  79. package/lib/types/client/ui/ResourceItemDialog.d.ts +33 -0
  80. package/lib/types/client/ui/ResourceItems.d.ts +30 -0
  81. package/lib/types/client/ui/ResourcePanel.d.ts +26 -0
  82. package/lib/types/client/ui/Resources.d.ts +43 -0
  83. package/lib/types/client/ui/RunDraftBar.d.ts +35 -0
  84. package/lib/types/client/ui/RunEdge.d.ts +29 -0
  85. package/lib/types/client/ui/RunFiles.d.ts +24 -0
  86. package/lib/types/client/ui/RunInput.d.ts +26 -0
  87. package/lib/types/client/ui/RunItemDialog.d.ts +43 -0
  88. package/lib/types/client/ui/RunModeSwitch.d.ts +14 -0
  89. package/lib/types/client/ui/RunNav.d.ts +22 -0
  90. package/lib/types/client/ui/RunNodeState.d.ts +42 -0
  91. package/lib/types/client/ui/RunOverview.d.ts +27 -0
  92. package/lib/types/client/ui/RunPosition.d.ts +24 -0
  93. package/lib/types/client/ui/RunResource.d.ts +40 -0
  94. package/lib/types/client/ui/RunStatusMenu.d.ts +28 -0
  95. package/lib/types/client/ui/RunStep.d.ts +45 -0
  96. package/lib/types/client/ui/RunTopBar.d.ts +42 -0
  97. package/lib/types/client/ui/RunView.d.ts +43 -0
  98. package/lib/types/client/ui/SettingsDialog.d.ts +25 -0
  99. package/lib/types/client/ui/SettingsFields.d.ts +37 -0
  100. package/lib/types/client/ui/SkillPicker.d.ts +25 -0
  101. package/lib/types/client/ui/SkillPreview.d.ts +27 -0
  102. package/lib/types/client/ui/StepMark.d.ts +16 -0
  103. package/lib/types/client/ui/StepPanel.d.ts +26 -0
  104. package/lib/types/client/ui/ThemePicker.d.ts +13 -0
  105. package/lib/types/client/ui/TipLayer.d.ts +17 -0
  106. package/lib/types/client/ui/TopBar.d.ts +32 -0
  107. package/lib/types/client/ui/VersionList.d.ts +19 -0
  108. package/lib/types/client/ui/VersionRow.d.ts +19 -0
  109. package/lib/types/client/ui/VersionsDialog.d.ts +18 -0
  110. package/lib/types/client/ui/WorkflowRow.d.ts +32 -0
  111. package/lib/types/client/ui/WorkflowSwitcher.d.ts +20 -0
  112. package/lib/types/client/ui/WorkflowView.d.ts +27 -0
  113. package/lib/types/client/ui/lines.d.ts +13 -0
  114. package/lib/types/client/ui/primitives.d.ts +119 -0
  115. package/lib/types/client/ui/resourceUi.d.ts +49 -0
  116. package/lib/types/client/ui/stepIcons.d.ts +10 -0
  117. package/lib/types/host/authoringSkill.d.ts +17 -0
  118. package/lib/types/host/config.d.ts +54 -0
  119. package/lib/types/host/hostFs.d.ts +69 -0
  120. package/lib/types/host/plan.d.ts +68 -0
  121. package/lib/types/host/pluginConfig.d.ts +57 -0
  122. package/lib/types/host/rpc.d.ts +45 -0
  123. package/lib/types/host/runs/files.d.ts +37 -0
  124. package/lib/types/host/runs/notice.d.ts +21 -0
  125. package/lib/types/host/runs/service.d.ts +258 -0
  126. package/lib/types/host/runs/skill.d.ts +16 -0
  127. package/lib/types/host/runs/storage.d.ts +16 -0
  128. package/lib/types/host/runs/store.d.ts +56 -0
  129. package/lib/types/host/skillView.d.ts +22 -0
  130. package/lib/types/host/store/atomic.d.ts +34 -0
  131. package/lib/types/host/store/materialize.d.ts +19 -0
  132. package/lib/types/host/store/merge.d.ts +25 -0
  133. package/lib/types/host/store/paths.d.ts +86 -0
  134. package/lib/types/host/store/repository.d.ts +217 -0
  135. package/lib/types/host/store/versions.d.ts +38 -0
  136. package/lib/types/host/tool/tool.d.ts +432 -0
  137. package/lib/types/index.d.ts +35 -0
  138. package/lib/types/shared/appearance.d.ts +49 -0
  139. package/lib/types/shared/compile.d.ts +71 -0
  140. package/lib/types/shared/graph.d.ts +54 -0
  141. package/lib/types/shared/graphDiff.d.ts +29 -0
  142. package/lib/types/shared/inputs.d.ts +46 -0
  143. package/lib/types/shared/limits.d.ts +77 -0
  144. package/lib/types/shared/model.d.ts +122 -0
  145. package/lib/types/shared/naming.d.ts +59 -0
  146. package/lib/types/shared/outputPaths.d.ts +49 -0
  147. package/lib/types/shared/resources.d.ts +98 -0
  148. package/lib/types/shared/runCursor.d.ts +54 -0
  149. package/lib/types/shared/runState.d.ts +221 -0
  150. package/lib/types/shared/runSync.d.ts +24 -0
  151. package/lib/types/shared/types.d.ts +488 -0
  152. package/lib/types/shared/validate.d.ts +54 -0
  153. package/lib/types/shared/wire.d.ts +600 -0
  154. package/locale/en.json +6 -0
  155. package/locale/zh.json +6 -0
  156. package/package.json +144 -4
@@ -0,0 +1,930 @@
1
+ /**
2
+ * dsh-workflow-lite — 画布的 UI 文案。
3
+ *
4
+ * **客户端文案一律走 locale 词典**,命名空间与设置命名空间同一个串:`workflow-lite`。
5
+ * 内置步骤的提示词正文也在这里:它会被插进文档、用户看得见也会改,属于用户可见字符串。
6
+ *
7
+ * 措辞口径:界面上不出现「节点 / 边 / 图」这些实现词,统一叫「步骤 / 连线 / 工作流」。
8
+ *
9
+ * @module @xiaoso/dsh-workflow-lite/client/i18n
10
+ */
11
+ export declare const NS: "workflow-lite";
12
+ /** 中文(默认)。键名即契约,`en` 必须与之同构。 */
13
+ export declare const zh: {
14
+ readonly 'tab.label': "工作流";
15
+ readonly 'common.cancel': "取消";
16
+ readonly 'common.close': "关闭";
17
+ readonly 'common.copy': "复制";
18
+ readonly 'common.copied': "已复制";
19
+ readonly 'common.delete': "删除";
20
+ readonly 'common.retry': "重试";
21
+ readonly 'wf.pick': "选择工作流";
22
+ readonly 'wf.search': "搜索工作流";
23
+ readonly 'wf.none': "没有匹配的工作流";
24
+ readonly 'wf.new': "新建空白工作流";
25
+ readonly 'wf.defaultName': "新工作流";
26
+ readonly 'wf.rename': "重命名";
27
+ readonly 'wf.renameHint': "回车确认,Esc 取消";
28
+ readonly 'wf.delete': "删除工作流";
29
+ readonly 'wf.deleteConfirm': "删除后不可恢复";
30
+ readonly 'wf.deleteVersions': "它的 {n} 个版本一起删掉,不可恢复";
31
+ readonly 'wf.deleteOpen': "编辑页正开着它,删掉后编辑页会空出来。";
32
+ readonly 'wf.deleteTitle': "删除工作流「{name}」?";
33
+ readonly 'wf.reload': "从磁盘重新加载";
34
+ readonly 'ver.title': "版本";
35
+ readonly 'ver.notePlaceholder': "这一版改了什么(可选)";
36
+ readonly 'ver.save': "存为版本";
37
+ readonly 'ver.sameAs': "现在的内容就是 v{n}";
38
+ readonly 'ver.unsaved': "现在的内容还没存成版本";
39
+ readonly 'ver.empty': "还没有版本";
40
+ readonly 'ver.emptyText': "把满意的样子存一版,之后改坏了能切回来。";
41
+ readonly 'ver.current': "当前";
42
+ readonly 'ver.noNote': "没写说明";
43
+ readonly 'ver.autoNote': "切到 v{n} 前自动存的";
44
+ readonly 'ver.steps': "{n} 个步骤";
45
+ readonly 'ver.restore': "切换到这一版";
46
+ readonly 'ver.restoreTitle': "切换到 v{n}?";
47
+ readonly 'ver.restoreSafe': "现在的内容已存为 v{n},随时能切回来。";
48
+ readonly 'ver.restoreAuto': "现在的内容还没存成版本,切换前会自动存一份。";
49
+ readonly 'ver.restoreConfirm': "切换";
50
+ readonly 'ver.editNote': "编辑说明";
51
+ readonly 'ver.noteHint': "回车保存,Esc 取消";
52
+ readonly 'ver.delete': "删除";
53
+ readonly 'ver.deleteTitle': "删除 v{n}?";
54
+ readonly 'ver.saved': "已存为 v{n}";
55
+ readonly 'ver.restored': "已切换到 v{n}";
56
+ readonly 'ver.restoredAuto': "已切换到 v{n},原来的内容存为 v{m}";
57
+ readonly 'ver.deleted': "已删除 v{n}";
58
+ readonly 'ver.diffTitle': "切到这一版会";
59
+ readonly 'ver.diffNone': "和现在的内容一样";
60
+ readonly 'ver.diffSettings': "工作流设置不同";
61
+ readonly 'ver.diffLoading': "正在比对…";
62
+ readonly 'ver.invalid': "文件坏了,读不出来";
63
+ readonly 'ver.count': "{n} 个版本";
64
+ readonly 'ver.flushFailed': "还有改动没存下去,先处理顶栏的保存问题";
65
+ readonly 'wf.steps': "个步骤";
66
+ readonly 'wf.broken': "文件有问题";
67
+ readonly 'status.loading': "加载中";
68
+ readonly 'status.saving': "保存中";
69
+ readonly 'status.saved': "已保存";
70
+ readonly 'status.dirty': "待保存";
71
+ readonly 'status.error': "保存失败";
72
+ readonly 'tool.undo': "撤销";
73
+ readonly 'tool.redo': "重做";
74
+ readonly 'tool.tidy': "整理布局";
75
+ readonly 'tool.fit': "看全图";
76
+ readonly 'tool.zoomIn': "放大";
77
+ readonly 'tool.zoomOut': "缩小";
78
+ readonly 'tool.keys': "快捷键";
79
+ readonly 'tool.preview': "预览计划";
80
+ readonly 'launch.run': "执行";
81
+ readonly 'launch.runHere': "在本会话执行";
82
+ readonly 'launch.runNew': "新建会话执行";
83
+ readonly 'launch.where': "在哪里执行";
84
+ readonly 'launch.newSession': "新建会话";
85
+ readonly 'launch.default': "默认";
86
+ readonly 'launch.pick': "选一个会话执行";
87
+ readonly 'launch.search': "搜索本工作区的会话";
88
+ readonly 'launch.none': "本工作区没有别的会话";
89
+ readonly 'launch.here': "本会话";
90
+ readonly 'launch.running': "运行中";
91
+ readonly 'launch.hint': "会用这张图现在的样子建一个实例,往选中的会话(或在本工作区新建的会话)发一句话,模型拿到计划后开始执行,并跳到那个会话。";
92
+ readonly 'launch.noBridge': "这里连不上会话,执行不了";
93
+ readonly 'launch.noSession': "先打开一个会话再执行";
94
+ readonly 'launch.conflict': "先处理顶部的冲突再执行";
95
+ readonly 'launch.fixFirst': "先修好检查里的错误再执行";
96
+ readonly 'launch.unsaved': "图还没存好";
97
+ readonly 'launch.sent': "已在「{title}」开始执行";
98
+ readonly 'launch.failed': "没能执行";
99
+ readonly 'tool.library': "步骤库";
100
+ readonly 'tool.settings': "工作流设置";
101
+ readonly 'settings.title': "工作流设置";
102
+ readonly 'settings.root': "产出根目录";
103
+ readonly 'settings.rootPlaceholder': "留空 = 用默认目录;. = 工作区根目录";
104
+ readonly 'settings.rootTipJoin': "每个步骤的产出文件都拼在这个目录下,组成最终写入的路径。";
105
+ readonly 'settings.rootTipKinds': "相对路径以工作区为起点;也可以写绝对路径,例如 D:/artifacts。";
106
+ readonly 'settings.rootTipNormalize': "保存时自动标准化:分隔符统一成 /,去掉多余的 //、./ 和末尾的 /。不支持 ~。";
107
+ readonly 'settings.rootTipEmpty': "默认放在 .workflow-lite/runs/{instance}/out:和状态文件在一起,每个实例一份,不进版本库。";
108
+ readonly 'settings.rootTipToken': "{instance} 执行时换成实例 id;写 . 就直接写在工作区根目录。";
109
+ readonly 'settings.rootRelative': "相对工作区";
110
+ readonly 'settings.rootAbsolute': "绝对路径";
111
+ readonly 'settings.rootDefault': "默认";
112
+ readonly 'settings.rootWorkspace': "工作区根目录";
113
+ readonly 'settings.rootReset': "恢复默认";
114
+ readonly 'settings.preview': "例如";
115
+ readonly 'settings.mode': "执行方式";
116
+ readonly 'settings.mode.auto': "自动";
117
+ readonly 'settings.mode.autoDesc': "不做规定,由主 agent 自己决定怎么执行。";
118
+ readonly 'settings.mode.serial': "串行";
119
+ readonly 'settings.mode.serialDesc': "主 agent 本人按顺序一步一步做,不派子代理。";
120
+ readonly 'settings.mode.subagent': "主 agent + 子代理";
121
+ readonly 'settings.mode.subagentDesc': "主 agent 当 leader,每个步骤派一个子代理去做。";
122
+ readonly 'settings.mode.team': "Agent 团队";
123
+ readonly 'settings.mode.teamDesc': "主 agent 当 Team Lead,给步骤建队员,队员之间能互相发消息。";
124
+ readonly 'settings.leaderNote': "后两种方式里,主 agent 只负责派发、选分支、推进循环和最后汇报。";
125
+ readonly 'settings.modeTipPlan': "执行方式会写进派发计划的开头,告诉主 agent 怎么组织这次执行。";
126
+ readonly 'settings.modeTipTools': "子代理与 Agent 团队依赖 DSH 的对应工具;工具不可用时,计划会让主 agent 说明后改成自己逐个执行。";
127
+ readonly 'settings.conflict': "工作流设置";
128
+ readonly 'settings.reuse': "复用执行者";
129
+ readonly 'settings.reuse.auto': "自动";
130
+ readonly 'settings.reuse.autoDesc': "由主 agent 决定沿不沿用之前的子代理或队员。";
131
+ readonly 'settings.reuse.reuse': "复用";
132
+ readonly 'settings.reuse.reuseDesc': "同一步骤再次执行时交回上次那个,接着之前的上下文。";
133
+ readonly 'settings.reuse.fresh': "新建";
134
+ readonly 'settings.reuse.freshDesc': "每次都派新的,上下文干净,只靠交接和产出传递。";
135
+ readonly 'settings.reuseSerial': "串行由主 agent 本人做,用不上。";
136
+ readonly 'settings.reuseTipWhen': "「再次执行」指循环的下一轮、失败后重试、中断后继续。";
137
+ readonly 'settings.reuseTipScope': "只在同一个步骤之间复用;不同步骤各有各的执行者。";
138
+ readonly 'settings.reuseTipPick': "复用省得重读材料,还记得上一轮试过什么;新建不受上一轮影响,适合独立审查。";
139
+ readonly 'settings.reuseTipTools': "复用靠 send_message 继续对话;工具不支持时,计划会让主 agent 改成新建。";
140
+ readonly 'settings.goal': "设定目标";
141
+ readonly 'settings.goalDesc': "开始前设为会话目标,没做完会接着做。";
142
+ readonly 'settings.goalTipPlan': "写进派发计划的开头:主 agent 开始前用 create_goal 把这次执行设成会话目标,全部做完后标记完成。";
143
+ readonly 'settings.goalTipWhy': "有目标时,主 agent 没做完就停下,DSH 会让它接着做,长流程不会停在一半。";
144
+ readonly 'settings.goalTipSkip': "会话里已有进行中的目标时不再新建;没有目标工具就跳过。";
145
+ readonly 'settings.during': "执行时";
146
+ readonly 'issues.title': "检查";
147
+ readonly 'issues.none': "没有问题";
148
+ readonly 'issues.noneBody': "这条工作流可以直接交给模型执行。";
149
+ readonly 'issues.noneBodyRun': "和模板用同一套规则检查过了,改完可以直接保存。";
150
+ readonly 'issues.unit': "个问题";
151
+ readonly 'issues.level.save': "错误";
152
+ readonly 'issues.level.compile': "需修复";
153
+ readonly 'issues.level.warning': "警告";
154
+ readonly 'issues.level.hint': "建议";
155
+ readonly 'lib.title': "步骤库";
156
+ readonly 'lib.hint': "拖到画布上使用";
157
+ readonly 'lib.builtin': "常用步骤";
158
+ readonly 'lib.custom': "我的步骤";
159
+ readonly 'lib.newCustom': "新建我的步骤";
160
+ readonly 'lib.customEmpty': "点上面的「+」新建一个,或选中画布上的步骤,点「存为我的步骤」。";
161
+ readonly 'lib.broken': "模板文件有问题";
162
+ readonly 'lib.noDescription': "还没写描述";
163
+ readonly 'lib.blank': "空白步骤";
164
+ readonly 'lib.blankDesc': "从零写提示词";
165
+ readonly 'lib.collapse': "收起步骤库";
166
+ readonly 'preset.scan.label': "侦察";
167
+ readonly 'preset.scan.desc': "读代码,摸清现状";
168
+ readonly 'preset.scan.prompt': "先把现状摸清楚:读相关代码/文档,把事实与假设分开列出来。\n不要修改任何文件。";
169
+ readonly 'preset.scan.rule': "一份现状说明:关键文件路径、现状行为、可疑点;事实与假设分开写。";
170
+ readonly 'preset.implement.label': "实现";
171
+ readonly 'preset.implement.desc': "按计划动手改";
172
+ readonly 'preset.implement.prompt': "按上游的计划实现。\n改完自己跑一遍验证命令并把结果贴出来。";
173
+ readonly 'preset.implement.rule': "改动说明:改了哪些文件、为什么这么改、如何验证,附上验证命令的输出。";
174
+ readonly 'preset.review.label': "审查";
175
+ readonly 'preset.review.desc': "独立检查,给出通过与否";
176
+ readonly 'preset.review.prompt': "独立审查上游的产出:不要信任作者的自我评价,直接看代码与运行结果。\n最后一行必须写 `VERDICT: pass` 或 `VERDICT: fail`。";
177
+ readonly 'preset.review.rule': "问题清单(每条给出位置与理由)+ 明确结论。";
178
+ readonly 'preset.fix.label': "修复";
179
+ readonly 'preset.fix.desc': "按审查结论逐条修";
180
+ readonly 'preset.fix.prompt': "按上游的审查结论逐条修复。\n不要顺手做审查里没提的重构。";
181
+ readonly 'preset.fix.rule': "修复说明:逐条对应审查清单,写清改法与验证结果。";
182
+ readonly 'starter.fixNote': "按 review.md 的问题清单逐条修复:修好的条目在原文件里打钩 [x],修不了的在条目下写明原因;改法与验证结果写进 fix-notes.md。";
183
+ readonly 'starter.recheckNote': "重新审查时对照 review.md 里的勾选与 fix-notes.md,逐条确认真的修好了。";
184
+ readonly 'starter.askGoal': "这次要做什么?";
185
+ readonly 'starter.askGoalHint': "一两句话说清目标和范围,侦察和实现都照着它来。";
186
+ readonly 'starter.askGoalPlaceholder': "比如:给导出功能加上 CSV 格式";
187
+ readonly 'starter.askStrict': "审查要多严格?";
188
+ readonly 'starter.askStrictHint': "严格 = 小问题也记成未通过。";
189
+ readonly 'starter.strict.loose': "宽松";
190
+ readonly 'starter.strict.normal': "标准";
191
+ readonly 'starter.strict.strict': "严格";
192
+ readonly 'starter.rulesLabel': "团队约定";
193
+ readonly 'starter.rulesDesc': "没连线:交给每一步";
194
+ readonly 'starter.rulesText': "- 文档和说明用中文写\n- 改代码前先读懂相关测试,改完跑一遍\n- 不改公共接口;非改不可时在计划里写明原因";
195
+ readonly 'starter.contextLabel': "项目资料";
196
+ readonly 'starter.contextDesc': "侦察和实现时参考";
197
+ readonly 'starter.contextSrc': "主要代码在这里,先看目录结构";
198
+ readonly 'starter.contextReadme': "项目是做什么的、怎么跑起来";
199
+ readonly 'starter.contextUrl': "提交信息按这个规范写";
200
+ readonly 'preset.report.label': "汇总";
201
+ readonly 'preset.report.desc': "写给人看的结论";
202
+ readonly 'preset.report.prompt': "汇总本次的全部产出,给出人读的结论。\n产出:一段结论 + 关键证据;说清哪些已验、哪些未验、哪些是环境所限。";
203
+ readonly 'welcome.title': "用步骤搭一条工作流";
204
+ readonly 'welcome.body': "每个步骤是一段交给 AI 执行的提示词,连线决定先后、分支与循环。";
205
+ readonly 'canvas.emptyTitle': "从第一个步骤开始";
206
+ readonly 'canvas.emptyBody': "把左侧的步骤拖进来,或者双击空白处。";
207
+ readonly 'canvas.starter': "插入示例流程";
208
+ readonly 'canvas.drop': "松手放在这里";
209
+ readonly 'quick.title': "添加步骤";
210
+ readonly 'node.noPrompt': "还没写提示词";
211
+ readonly 'node.noFile': "不产出文件";
212
+ readonly 'node.add': "添加下一步";
213
+ readonly 'node.duplicate': "复制";
214
+ readonly 'node.delete': "删除步骤";
215
+ readonly 'node.saveTemplate': "存为我的步骤";
216
+ readonly 'ins.name': "名称";
217
+ readonly 'ins.prompt': "提示词";
218
+ readonly 'ins.promptPlaceholder': "告诉执行者这一步要做什么、产出什么…";
219
+ readonly 'ins.promptHint': "这段文字会逐字交给执行者。";
220
+ readonly 'ins.chars': "字";
221
+ readonly 'ins.output': "产出文件";
222
+ readonly 'ins.output.unset': "不声明";
223
+ readonly 'ins.output.file': "写入文件";
224
+ readonly 'ins.output.none': "不产出";
225
+ readonly 'ins.outputPlaceholder': "例如 plan.md";
226
+ readonly 'ins.outputInvalid': "要写相对路径,不能是绝对路径或含 ..";
227
+ readonly 'ins.output.add': "添加产出文件";
228
+ readonly 'ins.output.rule': "生成规则";
229
+ readonly 'ins.output.rulePlaceholder': "这份产出怎么写:格式、必须包含什么、给谁看…";
230
+ readonly 'ins.output.empty': "文件名不能为空";
231
+ readonly 'ins.output.duplicate': "这个文件已经在上面声明过了";
232
+ readonly 'ins.description': "描述";
233
+ readonly 'ins.descriptionPlaceholder': "一句话说明这一步做什么(给人看,不进计划)";
234
+ readonly 'ins.links': "连接";
235
+ readonly 'ins.from': "上游";
236
+ readonly 'ins.to': "下游";
237
+ readonly 'ins.noLinks': "还没有连接。从步骤右侧的圆点拖出一条线。";
238
+ readonly 'ins.copyId': "复制步骤 ID";
239
+ readonly 'tpl.name': "ID";
240
+ readonly 'tpl.placeholder': "例如 my-check";
241
+ readonly 'tpl.save': "保存";
242
+ readonly 'tpl.saved': "已存为我的步骤";
243
+ readonly 'step.builtin': "内置";
244
+ readonly 'step.mine': "我的步骤";
245
+ readonly 'step.readonlyNote': "内置步骤不能修改。拖到画布上之后,那一份可以随意改;想要自己的版本,就复制成「我的步骤」。";
246
+ readonly 'step.addToCanvas': "添加到画布";
247
+ readonly 'step.copyToMine': "复制为我的步骤";
248
+ readonly 'step.save': "保存";
249
+ readonly 'step.saving': "保存中…";
250
+ readonly 'step.unsaved': "未保存";
251
+ readonly 'step.saved': "已保存";
252
+ readonly 'step.created': "已创建";
253
+ readonly 'step.deleted': "已删除";
254
+ readonly 'step.delete': "删除这个步骤";
255
+ readonly 'step.deleteConfirm': "删除后不可恢复";
256
+ readonly 'step.deleteTitle': "删除「{name}」这个我的步骤?";
257
+ readonly 'step.id': "ID";
258
+ readonly 'step.idHint': "拖到画布上时就是这个步骤的 ID,也是文件名:templates/nodes/<ID>.json。";
259
+ readonly 'step.labelPlaceholder': "步骤名称";
260
+ readonly 'step.loading': "读取中…";
261
+ readonly 'step.newTitle': "新建我的步骤";
262
+ readonly 'step.noFile': "不产出文件";
263
+ readonly 'step.noOutput': "未声明产出";
264
+ readonly 'out.files': "个文件";
265
+ readonly 'out.remove': "删除这个产出";
266
+ readonly 'out.noneHint': "这一步只做事、不留文件(比如直接改代码)。";
267
+ readonly 'out.unsetHint': "没说产出什么。下游需要读它的结果时,改成「写入文件」。";
268
+ readonly 'out.addRuleCta': "还没写生成规则,点这里补上";
269
+ readonly 'out.noRule': "没有生成规则";
270
+ readonly 'out.newTitle': "添加产出文件";
271
+ readonly 'out.editTitle': "编辑产出文件";
272
+ readonly 'out.viewTitle': "产出文件";
273
+ readonly 'out.path': "文件路径";
274
+ readonly 'out.pathHint': "相对于工作目录的路径;下游步骤从这里读取它。";
275
+ readonly 'out.optional': "可选";
276
+ readonly 'out.ruleHint': "会写进计划的「产出要求」,派发这一步时连同提示词一起交给执行者。";
277
+ readonly 'out.submitKeys': "Ctrl+Enter 完成";
278
+ readonly 'out.done': "完成";
279
+ readonly 'out.peekTitle': "产出";
280
+ readonly 'out.peekHint': "点文件查看或编辑";
281
+ readonly 'out.finalPath': "最终写入";
282
+ readonly 'edge.title': "连线";
283
+ readonly 'edge.when': "流转条件";
284
+ readonly 'edge.always': "总是";
285
+ readonly 'edge.pass': "通过";
286
+ readonly 'edge.fail': "未通过";
287
+ readonly 'edge.custom': "自定义";
288
+ readonly 'edge.customPlaceholder': "写下走这条线的条件,例如:测试全部通过,且没有新增警告";
289
+ readonly 'edge.hintAlways': "上游完成后就执行下游。";
290
+ readonly 'edge.hintVerdict': "上游的最后一行是下面这句时,走这条线:";
291
+ readonly 'edge.hintJudge': "执行者会读上游的产出,自己判断这句话是否成立,成立就走这条线。";
292
+ readonly 'edge.loop': "这条线回到前面的步骤,形成循环。";
293
+ readonly 'edge.remove': "删除连线";
294
+ readonly 'hand.title': "交接";
295
+ readonly 'hand.result': "把上游的执行结果交给下游";
296
+ readonly 'hand.resultHint': "回复里的结论与要点(不是全文)。文件不走这里——连到资源卡上。";
297
+ readonly 'hand.resultShort': "执行结果";
298
+ readonly 'hand.resultOf': " 的执行结果";
299
+ readonly 'hand.flowOnly': "只管先后";
300
+ readonly 'hand.flowOnlyHint': "下游等上游做完才开始,但不拿上游的执行结果。";
301
+ readonly 'hand.note': "交接说明";
302
+ readonly 'hand.notePlaceholder': "例如:按 review.md 逐条修复;修好的在对应条目前打钩 [x],修不了的写明原因。";
303
+ readonly 'hand.noteHint': "写进派发计划,下游拿到执行结果时一起看到。";
304
+ readonly 'hand.editHint': "点击编辑交接";
305
+ readonly 'hand.tipWhat': "执行结果是上游这一次运行的回复(结论与要点),沿步骤之间的线交给下游;缺省就交。";
306
+ readonly 'hand.tipFiles': "资源是独立的卡片:步骤连到资源 = 写它,资源连到步骤 = 读它。几个步骤连同一个资源,它就是共用的一份。";
307
+ readonly 'node.fileHandle': "拖到资源卡上 = 写入;拖到空白处 = 新建一个产出文件";
308
+ readonly 'file.produce': "产出";
309
+ readonly 'file.produceLong': "整份写出";
310
+ readonly 'file.update': "更新";
311
+ readonly 'file.updateLong': "在原文件上更新";
312
+ readonly 'file.read': "读取";
313
+ readonly 'edge.write': "写入资源";
314
+ readonly 'edge.read': "读取资源";
315
+ readonly 'role.producer': "产出";
316
+ readonly 'role.updater': "更新";
317
+ readonly 'role.reader': "读取";
318
+ readonly 'settings.runState': "运行状态";
319
+ readonly 'settings.runStateOn': "记录运行状态";
320
+ readonly 'settings.runStateDesc': "每次执行建一个实例,画布上能看进度、改状态。";
321
+ readonly 'settings.runStateTipInstance': "打开后,模型每编译一次这张图,就建一个工作流实例:拍一份图的快照,在会话工作区的 .workflow-lite/runs/ 下建好一份 YAML 状态文件。";
322
+ readonly 'settings.runStateTipWriter': "执行期间只有主 agent 改它(子代理、队员不碰);计划末尾会多一段「运行状态」,写明什么时候改、怎么校验。";
323
+ readonly 'settings.runStateTipView': "在画布上可以切到实例,按状态看那张图;也能改状态,改完确认后会通知模型。";
324
+ readonly 'hub.title': "工作流中心";
325
+ readonly 'hub.sub': "所有会话的实例、全部工作流的版本与本机数据";
326
+ readonly 'hub.runs': "运行实例";
327
+ readonly 'hub.storage': "存储";
328
+ readonly 'hub.settings': "设置";
329
+ readonly 'theme.group': "外观";
330
+ readonly 'theme.lead': "亮色、暗色各选一套,画布跟着 DSH 的亮暗模式自动切换。只在这台设备上生效。";
331
+ readonly 'theme.light': "亮色主题";
332
+ readonly 'theme.dark': "暗色主题";
333
+ readonly 'theme.inUse': "正在用";
334
+ readonly 'theme.default': "默认";
335
+ readonly 'theme.paper': "米色";
336
+ readonly 'theme.paperDesc': "暖灰画布、米白卡面,看久了不刺眼";
337
+ readonly 'theme.white': "晴白";
338
+ readonly 'theme.whiteDesc': "浅灰画布、纯白卡面,对比最清楚";
339
+ readonly 'theme.mist': "雾蓝";
340
+ readonly 'theme.mistDesc': "冷白底,蓝色落在描边、悬停和按钮上";
341
+ readonly 'theme.sage': "林间";
342
+ readonly 'theme.sageDesc': "暖白底,绿色落在描边、悬停和按钮上";
343
+ readonly 'theme.slate': "石板";
344
+ readonly 'theme.slateDesc': "冷调的深石板灰";
345
+ readonly 'theme.ink': "墨黑";
346
+ readonly 'theme.inkDesc': "纯黑底、更鲜亮的颜色,OLED 屏更省电";
347
+ readonly 'theme.ocean': "深海";
348
+ readonly 'theme.oceanDesc': "带一点蓝的深色底,配长春花蓝";
349
+ readonly 'theme.umber': "暖夜";
350
+ readonly 'theme.umberDesc': "带一点暖褐的深色底、琥珀橙强调色";
351
+ readonly 'cfg.groupStorage': "存储";
352
+ readonly 'cfg.groupCanvas': "画布";
353
+ readonly 'cfg.groupModel': "模型";
354
+ readonly 'cfg.dataDir': "数据目录";
355
+ readonly 'cfg.dataDirDesc': "工作流、版本和实例记录都存在这里。原来目录里的东西不会自动搬过去。";
356
+ readonly 'cfg.maxNodes': "单张工作流最多步骤";
357
+ readonly 'cfg.maxNodesDesc': "超出后画布不再自动整理,也不能执行。";
358
+ readonly 'cfg.saveDebounce': "自动保存等待";
359
+ readonly 'cfg.saveDebounceDesc': "在画布上停手多久后写盘。";
360
+ readonly 'cfg.maxResult': "模型单次读取上限";
361
+ readonly 'cfg.maxResultDesc': "模型读一张工作流、一份运行状态最多拿这么多;很大的工作流读不出来时调大。";
362
+ readonly 'cfg.skill': "给模型的使用指南";
363
+ readonly 'cfg.skillDesc': "注册两份模型按需读的指南:怎么设计工作流、怎么记录运行状态。";
364
+ readonly 'cfg.ms': "毫秒";
365
+ readonly 'cfg.steps': "步";
366
+ readonly 'cfg.kb': "KB";
367
+ readonly 'cfg.restart': "重启后生效";
368
+ readonly 'cfg.reset': "恢复默认({v})";
369
+ readonly 'cfg.dirty': "有 {n} 处改动还没保存";
370
+ readonly 'cfg.discard': "放弃";
371
+ readonly 'cfg.save': "保存";
372
+ readonly 'cfg.saved': "已保存,马上生效";
373
+ readonly 'cfg.savedRestart': "已保存。{keys}要重启 DSH 才生效";
374
+ readonly 'cfg.unavailable': "这个 DSH 没有设置服务,这里只能看。要改请编辑 profile 配置文件。";
375
+ readonly 'cfg.readonly': "当前 profile 不允许在这里改设置。";
376
+ readonly 'cfg.int': "要填整数";
377
+ readonly 'cfg.min': "不能小于 {n}";
378
+ readonly 'cfg.required': "不能为空";
379
+ readonly 'hub.wfPage': "工作流";
380
+ readonly 'hub.wfOpen': "打开";
381
+ readonly 'hub.wfOpenTip': "在编辑页打开这个工作流";
382
+ readonly 'hub.wfEditing': "正在编辑";
383
+ readonly 'hub.wfEmpty': "还没有工作流";
384
+ readonly 'hub.scope': "范围";
385
+ readonly 'hub.mine': "本会话";
386
+ readonly 'hub.all': "全部";
387
+ readonly 'hub.search': "搜索工作流、会话、目标";
388
+ readonly 'hub.clearSearch': "清空搜索";
389
+ readonly 'hub.allWorkspaces': "全部工作区";
390
+ readonly 'hub.pickWorkspace': "选择工作区";
391
+ readonly 'hub.noWorkspace': "未记录工作区";
392
+ readonly 'hub.here': "本工作区";
393
+ readonly 'hub.loading': "正在读取…";
394
+ readonly 'hub.noRunsTitle': "还没有工作流实例";
395
+ readonly 'hub.noRuns': "在画布上点「执行」就会建一个;开了「记录运行状态」的工作流,模型编译时也会建。";
396
+ readonly 'hub.noMatch': "没有符合条件的实例";
397
+ readonly 'hub.resetFilter': "清除筛选";
398
+ readonly 'hub.thisSession': "本会话";
399
+ readonly 'hub.otherSession': "其他会话";
400
+ readonly 'hub.sessionGone': "会话已不在";
401
+ readonly 'hub.noSession': "不属于任何会话";
402
+ readonly 'hub.current': "当前";
403
+ readonly 'hub.view': "查看";
404
+ readonly 'hub.why': "点开看原因";
405
+ readonly 'hub.missingAt': "这个位置找不到状态文件:";
406
+ readonly 'hub.invalidHead': "状态文件里这些地方不对:";
407
+ readonly 'hub.invalidMore': "打开实例能看到全部问题";
408
+ readonly 'hub.move': "移到本会话";
409
+ readonly 'hub.moveHint': "一个实例只属于一个会话:移过来之后,原会话下就没有它了";
410
+ readonly 'hub.deleteConfirm': "删掉这条实例记录和它的图快照?";
411
+ readonly 'hub.deleteState': "连工作区里的状态文件一起删";
412
+ readonly 'hub.dataDir': "数据目录";
413
+ readonly 'hub.dataDirDesc': "工作流、我的步骤与实例记录都存在这里";
414
+ readonly 'hub.copyPath': "复制路径";
415
+ readonly 'hub.usage': "占用";
416
+ readonly 'hub.workflows': "工作流";
417
+ readonly 'hub.templates': "我的步骤";
418
+ readonly 'hub.versions': "工作流版本";
419
+ readonly 'hub.versionsDesc': "每个工作流存下的版本;删掉工作流时一起删。";
420
+ readonly 'hub.instances': "工作流实例";
421
+ readonly 'hub.instancesDesc': "实例记录与图快照;状态文件、任务描述和产出在各工作区的 .workflow-lite/ 里,不算在内";
422
+ readonly 'hub.count': "{n} 个";
423
+ readonly 'hub.files': "{n} 个文件";
424
+ readonly 'hub.finished': "其中 {n} 个已结束";
425
+ readonly 'hub.clearFinished': "清理已结束的";
426
+ readonly 'hub.clearFinishedConfirm': "清理 {n} 个";
427
+ readonly 'hub.clearFinishedTitle': "清理 {n} 个已结束的实例?";
428
+ readonly 'hub.clearFinishedHint': "删掉已完成、已取消的实例记录与快照;工作区里的状态文件不动";
429
+ readonly 'hub.legacy': "旧版本遗留文件";
430
+ readonly 'hub.legacyDesc': "早先版本编译时写在 .dispatch/ 里的任务描述,现在已经不用了,可以放心删除";
431
+ readonly 'hub.clearLegacy': "删除";
432
+ readonly 'hub.clearedFinished': "清理了 {n} 个已结束的实例";
433
+ readonly 'hub.clearedLegacy': "删除了 {n} 个旧版本遗留文件";
434
+ readonly 'run.kind': "实例";
435
+ readonly 'run.pick': "选择工作流实例";
436
+ readonly 'run.thisSession': "本会话的实例";
437
+ readonly 'run.workflows': "工作流";
438
+ readonly 'run.manage': "全部实例与管理…";
439
+ readonly 'run.current': "本会话当前的实例";
440
+ readonly 'run.setCurrent': "设为当前";
441
+ readonly 'run.openTemplate': "打开模板";
442
+ readonly 'run.templateGone': "模板已经改名或删除了";
443
+ readonly 'run.copyPath': "复制状态文件路径";
444
+ readonly 'run.panel': "运行状态";
445
+ readonly 'run.overview': "概览";
446
+ readonly 'run.panelToggle': "详情面板";
447
+ readonly 'run.loading': "正在读取…";
448
+ readonly 'run.noState': "状态文件现在读不出来,修好之后这里会自动更新。";
449
+ readonly 'run.noNode': "这个步骤不在状态文件里。";
450
+ readonly 'run.overall': "整体";
451
+ readonly 'run.overall.pending': "未开始";
452
+ readonly 'run.overall.running': "执行中";
453
+ readonly 'run.overall.waiting': "等待用户";
454
+ readonly 'run.overall.done': "完成";
455
+ readonly 'run.overall.failed': "失败";
456
+ readonly 'run.overall.cancelled': "已取消";
457
+ readonly 'run.status.pending': "待执行";
458
+ readonly 'run.status.running': "执行中";
459
+ readonly 'run.status.waiting': "等待用户";
460
+ readonly 'run.status.done': "完成";
461
+ readonly 'run.status.failed': "失败";
462
+ readonly 'run.status.skipped': "跳过";
463
+ readonly 'run.round': "第 {n} 轮";
464
+ readonly 'run.roundLabel': "轮次";
465
+ readonly 'run.roundUp': "加一轮";
466
+ readonly 'run.roundDown': "减一轮";
467
+ readonly 'run.note': "说明";
468
+ readonly 'run.notePlaceholder': "等什么、为什么停、卡在哪";
469
+ readonly 'run.goal': "目标";
470
+ readonly 'run.mode': "执行方式";
471
+ readonly 'run.started': "开始";
472
+ readonly 'run.steps': "步骤数";
473
+ readonly 'run.updated': "最后更新";
474
+ readonly 'run.stateFile': "状态文件";
475
+ readonly 'run.timeline': "时间线";
476
+ readonly 'run.noEvents': "还没有事件。";
477
+ readonly 'run.position': "执行位置";
478
+ readonly 'run.lastRun': "最后执行";
479
+ readonly 'run.nextUp': "下一步";
480
+ readonly 'run.nextFrom': "接 {step}";
481
+ readonly 'run.nextLoop': "由 {step} 循环回来";
482
+ readonly 'run.nextStart': "入口步骤";
483
+ readonly 'run.nextReset': "改回待执行,重做";
484
+ readonly 'run.nextPinned': "用户指定";
485
+ readonly 'run.pin': "设为下一步";
486
+ readonly 'run.unpin': "取消指定";
487
+ readonly 'run.pinPick': "指定";
488
+ readonly 'run.pinTitle': "指定下一步";
489
+ readonly 'run.pinHint': "勾选的步骤作为下一步,不再按流转推;模型开始做它后自动取消。";
490
+ readonly 'run.pinAuto': "恢复自动";
491
+ readonly 'run.positionNone': "还没有执行过的步骤。";
492
+ readonly 'run.positionEnd': "没有待执行的步骤。";
493
+ readonly 'run.byUser': "你";
494
+ readonly 'run.event.start': "开始";
495
+ readonly 'run.event.done': "完成";
496
+ readonly 'run.event.failed': "失败";
497
+ readonly 'run.event.waiting': "停下等待用户";
498
+ readonly 'run.event.skipped': "跳过";
499
+ readonly 'run.event.resume': "接着跑";
500
+ readonly 'run.event.transfer': "换了会话";
501
+ readonly 'run.event.edit': "改了状态";
502
+ readonly 'run.event.next': "指定下一步";
503
+ readonly 'run.event.note': "备注";
504
+ readonly 'run.nodeStatus': "状态";
505
+ readonly 'run.verdict': "判定";
506
+ readonly 'run.summary': "摘要";
507
+ readonly 'run.summaryPlaceholder': "一两句结论";
508
+ readonly 'run.error': "失败原因";
509
+ readonly 'run.by': "执行者";
510
+ readonly 'run.startedAt': "开始";
511
+ readonly 'run.finishedAt': "结束";
512
+ readonly 'run.outputs': "产出";
513
+ readonly 'run.inputs': "读取";
514
+ readonly 'run.outputsReported': "模型另外报告的产出";
515
+ readonly 'run.resSteps': "用到它的步骤";
516
+ readonly 'run.viewAll': "查看全部";
517
+ readonly 'run.copyPrompt': "复制提示词";
518
+ readonly 'run.copySummary': "复制摘要";
519
+ readonly 'run.copyError': "复制失败原因";
520
+ readonly 'run.errorPlaceholder': "为什么失败";
521
+ readonly 'run.navTip': "切换要看的东西";
522
+ readonly 'run.navTitle': "这次执行里的东西";
523
+ readonly 'run.navSearch': "搜步骤、资源、输入";
524
+ readonly 'run.navSteps': "步骤";
525
+ readonly 'run.navResources': "资源";
526
+ readonly 'run.navInputs': "输入";
527
+ readonly 'run.navNone': "没有对得上的";
528
+ readonly 'run.copyNote': "复制说明";
529
+ readonly 'run.noPrompt': "未填写提示词。";
530
+ readonly 'run.noLinks': "未连接其他步骤。";
531
+ readonly 'run.edgeStatus': "状态";
532
+ readonly 'run.edgeWhen': "条件";
533
+ readonly 'run.edgeWrite': "写入";
534
+ readonly 'run.edgeRead': "读取";
535
+ readonly 'run.edgeLoop': "循环";
536
+ readonly 'run.edgeTaken': "已流转";
537
+ readonly 'run.edgeNotTaken': "未流转";
538
+ readonly 'run.edgeWhyFlow': "依据:上游完成且下游已开始";
539
+ readonly 'run.edgeWhyStep': "依据:步骤已开始执行";
540
+ readonly 'run.edgeVerdict': "依据:{step} 判定为 {verdict}";
541
+ readonly 'run.edgeNoVerdict': "{step} 尚未给出判定";
542
+ readonly 'run.edgeVerdictRule': "上游输出末行为";
543
+ readonly 'run.handedSummary': "上游摘要";
544
+ readonly 'run.loopRound': "{step} 当前第 {n} 轮";
545
+ readonly 'run.loopBack': "回到前面的步骤";
546
+ readonly 'res.sharedRun': "没有连任何步骤:交给整个工作流,每个步骤都能用。";
547
+ readonly 'file.absent': "不存在";
548
+ readonly 'file.present': "存在";
549
+ readonly 'res.openLink': "在浏览器中打开";
550
+ readonly 'res.copyUrl': "复制网址";
551
+ readonly 'res.copyText': "复制内容";
552
+ readonly 'res.detail': "详情";
553
+ readonly 'res.folderEmpty': "文件夹是空的。";
554
+ readonly 'res.folderMissing': "这个文件夹不存在。";
555
+ readonly 'res.folderMore': "条目太多,只列出了一部分。";
556
+ readonly 'res.textChars': "{n} 字";
557
+ readonly 'run.noFiles': "这一步不读写文件。";
558
+ readonly 'run.hint.pending': "还没开始执行";
559
+ readonly 'run.hint.running': "模型正在执行";
560
+ readonly 'run.hint.waiting': "模型停下来,等你回复或确认后再接着跑";
561
+ readonly 'run.hint.done': "全部做完了";
562
+ readonly 'run.hint.failed': "执行出错,停下了";
563
+ readonly 'run.hint.cancelled': "叫停了,不再继续";
564
+ readonly 'run.hint.skipped': "这一步不执行";
565
+ readonly 'run.nodeHint.pending': "还没轮到这一步";
566
+ readonly 'run.nodeHint.running': "这一步正在做";
567
+ readonly 'run.nodeHint.waiting': "这一步停下来,等你回复或确认";
568
+ readonly 'run.nodeHint.done': "这一步做完了";
569
+ readonly 'run.nodeHint.failed': "这一步出错了";
570
+ readonly 'file.view': "查看";
571
+ readonly 'file.openWith': "用其他程序打开";
572
+ readonly 'file.openDefault': "{app}(默认)";
573
+ readonly 'file.reveal': "在文件管理器中显示";
574
+ readonly 'file.appsLoading': "正在查找能打开它的程序…";
575
+ readonly 'file.appsNone': "没找到能打开它的程序";
576
+ readonly 'file.openFailed': "没能打开这份文件";
577
+ readonly 'file.generated': "已生成";
578
+ readonly 'file.notGenerated': "还没生成";
579
+ readonly 'file.modified': "修改时间";
580
+ readonly 'file.modifiedAt': "修改于 {time}";
581
+ readonly 'file.previewMore': "查看全部";
582
+ readonly 'file.copyPath': "复制路径";
583
+ readonly 'file.rendered': "排版";
584
+ readonly 'file.page': "页面";
585
+ readonly 'file.source': "源码";
586
+ readonly 'file.text': "原文";
587
+ readonly 'file.edit': "编辑";
588
+ readonly 'file.loading': "正在读取…";
589
+ readonly 'file.tooLarge': "文件有 {size},超过 {limit},这里不显示。可以用其他程序打开。";
590
+ readonly 'file.binary': "这是二进制文件,这里看不了。可以用其他程序打开。";
591
+ readonly 'file.missing': "文件还没生成。";
592
+ readonly 'file.empty': "文件是空的。";
593
+ readonly 'run.rerun': "重跑这一步(连同下游)";
594
+ readonly 'run.pickVerdict': "这一步有条件出边,选一个判定:";
595
+ readonly 'run.fileMade': "已生成";
596
+ readonly 'run.stateMissing': "状态文件不在了";
597
+ readonly 'run.untracked': "不记进度";
598
+ readonly 'run.untrackedBanner': "这张图没开「记录运行状态」,这里只显示执行时的图,看不到进度。要记进度,到工作流设置里打开它,下次执行生效。";
599
+ readonly 'run.stateInvalid': "状态文件有误";
600
+ readonly 'run.stateInvalidLong': "状态文件格式有误,画布保留上一次合法的样子";
601
+ readonly 'run.loadError': "读不到这个实例";
602
+ readonly 'run.overwritten': "你的修改可能被模型覆盖了";
603
+ readonly 'run.changes': "改动";
604
+ readonly 'run.changed': "已改 {n} 处";
605
+ readonly 'run.empty': "(空)";
606
+ readonly 'run.conflict': "模型也改了";
607
+ readonly 'run.conflictMine': "你的";
608
+ readonly 'run.conflictDisk': "文件里";
609
+ readonly 'run.keepMine': "用我的";
610
+ readonly 'run.useDisk': "用文件里的";
611
+ readonly 'run.undoChange': "撤回这处改动";
612
+ readonly 'run.notePrompt': "给模型的说明(可选)";
613
+ readonly 'run.discard': "放弃";
614
+ readonly 'run.discardConfirm': "放弃这些改动?";
615
+ readonly 'run.discardDesc': "这次攒的改动全部撤回,不能恢复。";
616
+ readonly 'run.resolveFirst': "先处理冲突";
617
+ readonly 'run.save': "保存";
618
+ readonly 'run.notify': "通知模型";
619
+ readonly 'run.notifyTip': "开着:保存后把改动发给模型,让它按新的接着做。\n关掉:只保存,不打扰模型;它下次读状态文件或重新拿计划时才会看到。";
620
+ readonly 'run.savedSilent': "已保存,没有通知模型";
621
+ readonly 'run.savedNotified': "已保存,模型收到了这次改动";
622
+ readonly 'run.savedPending': "已保存;会话现在没在运行,模型下次活动时会收到这次改动";
623
+ readonly 'run.saveConflict': "有字段在你改的同时被模型改了,先处理冲突再保存";
624
+ readonly 'run.savedQuiet': "已保存(只改了布局或描述,不用告诉模型)";
625
+ readonly 'run.freshStep': "新加的步骤,保存之后开始记它的状态";
626
+ readonly 'run.lockedStep': "执行过的步骤不能删,不再做它就改成「跳过」";
627
+ readonly 'run.graphProblem': "图里有问题:{p}";
628
+ readonly 'run.stateMismatch': "改完的状态和图对不上:{p}";
629
+ readonly 'run.tab.label': "右栏内容";
630
+ readonly 'run.tab.run': "运行";
631
+ readonly 'run.tab.edit': "编辑";
632
+ readonly 'draft.layout': "布局";
633
+ readonly 'draft.moved': "挪动了 {n} 张卡片";
634
+ readonly 'draft.removed': "删掉了";
635
+ readonly 'draft.changedFields': "改了{fields}";
636
+ readonly 'draft.added.step': "新加的步骤";
637
+ readonly 'draft.added.resource': "新加的资源";
638
+ readonly 'draft.added.input': "新加的输入";
639
+ readonly 'draft.added.edge': "新加的连线";
640
+ readonly 'draft.field.label': "名称";
641
+ readonly 'draft.field.description': "描述";
642
+ readonly 'draft.field.look': "图标与颜色";
643
+ readonly 'draft.field.prompt': "提示词";
644
+ readonly 'draft.field.items': "内容";
645
+ readonly 'draft.field.question': "问题";
646
+ readonly 'draft.field.kind': "题型";
647
+ readonly 'draft.field.options': "选项";
648
+ readonly 'draft.field.default': "默认值";
649
+ readonly 'draft.field.placeholder': "占位";
650
+ readonly 'draft.field.hint': "说明";
651
+ readonly 'draft.field.required': "必填";
652
+ readonly 'draft.field.when': "条件";
653
+ readonly 'draft.field.handoff': "交接";
654
+ readonly 'draft.field.update': "写入方式";
655
+ readonly 'run.freshBanner': "模型刚在这个会话里开始执行一个工作流";
656
+ readonly 'run.freshOpen': "查看实例";
657
+ readonly 'legend.title': "线条图例";
658
+ readonly 'legend.short': "图例";
659
+ readonly 'legend.groupFlow': "步骤 → 步骤(按条件)";
660
+ readonly 'legend.groupFile': "步骤 ↔ 资源 / 输入";
661
+ readonly 'legend.portsTip': "连接点:空心圈是入口,线从这里进来;实心点是出口,从这里拖出去连线。";
662
+ readonly 'legend.flow': "流程";
663
+ readonly 'legend.alwaysTip': "上一步做完就走,默认把执行结果交给下一步";
664
+ readonly 'legend.passTip': "上一步判定通过才走";
665
+ readonly 'legend.failTip': "上一步判定未通过才走,常用来回去返工";
666
+ readonly 'legend.customTip': "满足你写的条件才走";
667
+ readonly 'legend.produceTip': "步骤整份写出资源里的文件(会覆盖原内容)";
668
+ readonly 'legend.updateTip': "步骤读了再在原文件上改,比如打钩";
669
+ readonly 'legend.readTip': "步骤执行时用这个资源(读文件、看网址、加载 Skill…)";
670
+ readonly 'legend.in': "入口";
671
+ readonly 'legend.inTip': "空心圈:线从这里进来";
672
+ readonly 'legend.out': "出口";
673
+ readonly 'legend.outTip': "实心点:从这里拖出去连线";
674
+ readonly 'link.hintFlow': "拖到步骤上:接成下一步";
675
+ readonly 'link.hintWrite': "拖到资源卡上写它;松在空白处新建产出文件";
676
+ readonly 'link.hintRead': "拖到步骤上:让它用这个资源";
677
+ readonly 'link.hintBack': "拖到上游步骤或资源卡上";
678
+ readonly 'link.hintWriteBack': "拖到步骤上:让它写这个资源";
679
+ readonly 'link.exists': "已经连着";
680
+ readonly 'link.hintReadBack': "拖到资源卡上:用这个资源";
681
+ readonly 'plan.title': "派发计划";
682
+ readonly 'plan.forModel': "给模型";
683
+ readonly 'plan.forHuman': "给人看";
684
+ readonly 'plan.forModelHint': "和执行时模型拿到的一样:提示词以任务描述路径引用,执行到哪一步才去读哪一份;{instance} 执行时换成新建实例的 id。";
685
+ readonly 'plan.forHumanHint': "提示词全部内联,适合通读、存档或贴给别人。";
686
+ readonly 'plan.download': "下载";
687
+ readonly 'plan.rendered': "排版";
688
+ readonly 'plan.source': "源码";
689
+ readonly 'plan.loading': "正在生成…";
690
+ readonly 'plan.blocked': "还有问题没修完,计划暂时生成不了。";
691
+ readonly 'banner.external': "这个文件在别处被改过。";
692
+ readonly 'banner.synced': "已同步磁盘上的更新";
693
+ readonly 'banner.reload': "重新加载";
694
+ readonly 'banner.conflict': "磁盘上的版本和你的改动有冲突";
695
+ readonly 'banner.keepMine': "保留我的";
696
+ readonly 'banner.useDisk': "用磁盘的";
697
+ readonly 'broken.title': "这个工作流文件打不开";
698
+ readonly 'broken.body': "文件里有格式问题,画布不会写入它。修好文件后重新加载。";
699
+ readonly 'keys.title': "快捷键";
700
+ readonly 'keys.add': "添加步骤";
701
+ readonly 'keys.addCombo': "双击空白处";
702
+ readonly 'keys.undo': "撤销";
703
+ readonly 'keys.redo': "重做";
704
+ readonly 'keys.duplicate': "复制选中的步骤";
705
+ readonly 'keys.delete': "删除选中项";
706
+ readonly 'keys.deselect': "取消选中";
707
+ readonly 'keys.fit': "看全图";
708
+ readonly 'keys.tidy': "整理布局";
709
+ readonly 'look.title': "图标与颜色";
710
+ readonly 'look.change': "换图标和颜色";
711
+ readonly 'look.reset': "恢复默认";
712
+ readonly 'look.color': "颜色";
713
+ readonly 'look.icon': "图标";
714
+ readonly 'look.c.blue': "蓝";
715
+ readonly 'look.c.green': "绿";
716
+ readonly 'look.c.amber': "琥珀";
717
+ readonly 'look.c.coral': "珊瑚";
718
+ readonly 'look.c.teal': "青";
719
+ readonly 'look.c.pink': "粉";
720
+ readonly 'look.c.olive': "橄榄";
721
+ readonly 'look.c.violet': "紫";
722
+ readonly 'look.c.slate': "石板灰";
723
+ readonly 'lib.input': "用户输入";
724
+ readonly 'lib.inputDesc': "执行前问用户一个问题,填空或选项";
725
+ readonly 'lib.resource': "资源";
726
+ readonly 'lib.resourceDesc': "文件、文件夹、网址、Skill 或一段自定义提示词,连到步骤上";
727
+ readonly 'quick.output': "产出文件";
728
+ readonly 'quick.outputDesc': "这一步写的文件,放在一张资源卡里";
729
+ readonly 'quick.resource': "资源";
730
+ readonly 'quick.resourceDesc': "一张空的资源卡:文件、网址、Skill…";
731
+ readonly 'res.title': "资源";
732
+ readonly 'res.name': "资源名字";
733
+ readonly 'res.items': "内容";
734
+ readonly 'res.itemCount': "{n} 项";
735
+ readonly 'res.moreItems': "还有 {n} 项";
736
+ readonly 'res.itemsEmpty': "还没有内容。点下面「添加内容」,放进文件、文件夹、网址、Skill 或一段自定义提示词。";
737
+ readonly 'res.add': "添加内容";
738
+ readonly 'res.addKindTitle': "添加{kind}";
739
+ readonly 'res.addDone': "添加";
740
+ readonly 'res.addHint.file': "在主机上选,可以一次选好几个";
741
+ readonly 'res.addHint.folder': "在主机上选一个或几个文件夹";
742
+ readonly 'res.addHint.url': "一个网页或接口地址";
743
+ readonly 'res.addHint.skill': "从 DSH 识别到的 skill 里挑";
744
+ readonly 'res.addHint.text': "自己写一段提示词,原样交给步骤";
745
+ readonly 'res.addManual': "手填文件路径(比如还没生成的产出)";
746
+ readonly 'res.valueFile': "文件路径";
747
+ readonly 'res.valueFolder': "文件夹路径";
748
+ readonly 'res.valueUrl': "网址";
749
+ readonly 'res.valueSkill': "Skill 名";
750
+ readonly 'res.valueText': "内容";
751
+ readonly 'res.duplicateHint': "这个资源里已经有一样的了";
752
+ readonly 'res.chooseSkill': "从清单选";
753
+ readonly 'res.openUrl': "打开";
754
+ readonly 'res.skillKnown': "DSH 认得这个 skill";
755
+ readonly 'res.skillUnknown': "DSH 在这个工作区没找到这个 skill,执行时可能加载不到。";
756
+ readonly 'res.absoluteHint': "绝对路径,原样使用。";
757
+ readonly 'res.pathHint': "也可以写相对路径:有步骤写这个资源时放在产出根目录下,只被读时相对工作区。";
758
+ readonly 'res.urlHint': "执行者会打开这个网址查看。";
759
+ readonly 'res.skillHint': "执行者会先用 skill 工具加载它,再按它的做法干活。";
760
+ readonly 'res.textHint': "比如约定、口径、注意事项。读它的步骤会原样收到这段话。";
761
+ readonly 'res.noteHint': "说明会进派发计划,告诉执行者这一项怎么用。";
762
+ readonly 'res.kind.file': "文件";
763
+ readonly 'res.kind.folder': "文件夹";
764
+ readonly 'res.kind.url': "网址";
765
+ readonly 'res.kind.skill': "Skill";
766
+ readonly 'res.kind.text': "自定义";
767
+ readonly 'res.browse': "浏览";
768
+ readonly 'res.note': "说明";
769
+ readonly 'res.notePlaceholder': "这一项怎么用、看什么(进计划,可不填)";
770
+ readonly 'res.notePlaceholderWrite': "这份文件该怎么写:格式、必须包含什么(进计划,可不填)";
771
+ readonly 'res.textPlaceholder': "写给执行者的一段提示词";
772
+ readonly 'res.urlPlaceholder': "https://…";
773
+ readonly 'res.skillPlaceholder': "skill 名,比如 pdf";
774
+ readonly 'res.filePlaceholder': "比如 D:/proj/docs/spec.md,或点「浏览」";
775
+ readonly 'res.folderPlaceholder': "比如 src/,或点「浏览」";
776
+ readonly 'res.removeItem': "移除这一项";
777
+ readonly 'res.duplicate': "重复了";
778
+ readonly 'res.full': "一个资源最多放 {n} 项";
779
+ readonly 'res.locatedOut': "写到";
780
+ readonly 'res.locatedWorkspace': "在工作区";
781
+ readonly 'res.writers': "写它的步骤";
782
+ readonly 'res.readers': "读它的步骤";
783
+ readonly 'res.users': "谁在用";
784
+ readonly 'res.noWriters': "还没有步骤写它。从步骤底边的圆点拖一条线到这张卡上。";
785
+ readonly 'res.noReaders': "还没有步骤读它。从这张卡右侧的圆点拖一条线到步骤上。";
786
+ readonly 'res.noWritersRun': "没有步骤写它。";
787
+ readonly 'res.noReadersRun': "没有步骤读它。";
788
+ readonly 'res.sharedHint': "没有连任何步骤:交给整个工作流,每个步骤都能用。只想给某几步用,就从右侧的圆点连过去。";
789
+ readonly 'res.sharedTip': "没有连步骤:交给整个工作流";
790
+ readonly 'res.connectHint': "从步骤底边的圆点拖线到资源卡 = 写入;从资源卡右侧的圆点拖到步骤 = 读取。";
791
+ readonly 'res.modeHint': "「更新」= 先读再在原文件上改(比如修完在问题清单里打钩),不会整份覆盖。";
792
+ readonly 'res.readHint': "执行这一步时,会把这个资源里的东西(路径、网址、Skill、自定义)交给它。";
793
+ readonly 'res.delete': "删除资源卡";
794
+ readonly 'res.unlink': "断开";
795
+ readonly 'res.none': "还没有连资源。可以新建一个产出文件,或关联图里已有的资源。";
796
+ readonly 'res.writes': "写入";
797
+ readonly 'res.reads': "读取";
798
+ readonly 'res.shared': "交给整个工作流";
799
+ readonly 'res.sharedTag': "全局";
800
+ readonly 'res.from': "来自";
801
+ readonly 'res.newOutput': "新建产出文件";
802
+ readonly 'res.newOutputTitle': "新建产出文件";
803
+ readonly 'res.link': "关联已有资源";
804
+ readonly 'res.linkEmpty': "图里还没有别的资源卡。";
805
+ readonly 'res.linkWrite': "写入";
806
+ readonly 'res.empty': "还没有内容";
807
+ readonly 'res.itemBlank': "(未填)";
808
+ readonly 'res.summaryMore': "{first} 等 {n} 项";
809
+ readonly 'res.cardEmpty': "空资源";
810
+ readonly 'res.cardEmptySub': "点开添加文件、网址、Skill…";
811
+ readonly 'pick.fileTitle': "选择文件";
812
+ readonly 'pick.folderTitle': "选择文件夹";
813
+ readonly 'pick.fileSub': "点文件选上,可以一次选好几个;双击一个文件直接添加";
814
+ readonly 'pick.folderSub': "点右边的圆圈选上文件夹,点文件夹进去;也可以进到里面点「选当前文件夹」";
815
+ readonly 'pick.up': "上一级";
816
+ readonly 'pick.address': "路径";
817
+ readonly 'pick.typePath': "直接输入路径";
818
+ readonly 'pick.upKeys': "Backspace / Alt+↑";
819
+ readonly 'pick.workspace': "工作区";
820
+ readonly 'pick.home': "主目录";
821
+ readonly 'pick.filter': "筛选当前文件夹";
822
+ readonly 'pick.hidden': "隐藏项";
823
+ readonly 'pick.emptyDir': "这个文件夹是空的。";
824
+ readonly 'pick.noMatch': "没有匹配的。";
825
+ readonly 'pick.truncated': "东西太多,只列出了一部分——在路径栏里直接输入更快。";
826
+ readonly 'pick.here': "选当前文件夹";
827
+ readonly 'pick.count': "已选 {n} 项";
828
+ readonly 'pick.add': "添加";
829
+ readonly 'pick.choose': "选定";
830
+ readonly 'skill.title': "选择 Skill";
831
+ readonly 'skill.sub': "会话里的 agent 能用的 skill(项目、用户目录、插件、内置);执行时步骤会先加载它";
832
+ readonly 'skill.filter': "按名字或说明筛选";
833
+ readonly 'skill.none': "没有找到 skill。";
834
+ readonly 'skill.unavailable': "没有接上 skill 服务,列不出来。";
835
+ readonly 'skill.added': "已添加";
836
+ readonly 'skill.manualLink': "手写一个名字";
837
+ readonly 'skill.count': "共 {n} 个";
838
+ readonly 'skill.preview': "查看 SKILL.md";
839
+ readonly 'skill.pick': "选上";
840
+ readonly 'skill.unpick': "取消选择";
841
+ readonly 'skill.use': "用这个";
842
+ readonly 'skill.whenToUse': "什么时候用";
843
+ readonly 'skill.virtual': "运行时注册,磁盘上没有对应文件";
844
+ readonly 'skill.src.project': "项目";
845
+ readonly 'skill.src.user': "用户";
846
+ readonly 'skill.src.runtime': "插件";
847
+ readonly 'skill.src.bundled': "内置";
848
+ readonly 'skill.src.custom': "自定义目录";
849
+ readonly 'skill.from.projectDsh': "项目的 .dsh/skills";
850
+ readonly 'skill.from.projectAgents': "项目的 .agents/skills";
851
+ readonly 'skill.from.userDsh': "用户的 ~/.dsh/skills";
852
+ readonly 'skill.from.userAgents': "用户的 ~/.agents/skills";
853
+ readonly 'skill.from.runtime': "插件运行时注册";
854
+ readonly 'skill.from.bundled': "DSH 内置";
855
+ readonly 'skill.from.custom': "配置里的自定义目录";
856
+ readonly 'quick.input': "用户输入";
857
+ readonly 'quick.inputDesc': "执行前问用户,回答交给这一步";
858
+ readonly 'quick.looseInput': "用户输入";
859
+ readonly 'quick.looseInputDesc': "执行前问用户一个问题";
860
+ readonly 'input.kind.text': "一句话";
861
+ readonly 'input.kind.textarea': "多行文字";
862
+ readonly 'input.kind.choice': "单选";
863
+ readonly 'input.kind.multi': "多选";
864
+ readonly 'input.seed.text': "这次要处理的是什么?";
865
+ readonly 'input.title': "用户输入";
866
+ readonly 'input.badge': "输入";
867
+ readonly 'input.question': "问题";
868
+ readonly 'input.questionPlaceholder': "执行前想问用户什么?";
869
+ readonly 'input.questionHint': "问题和用户的回答会原样写进计划,交给连着的步骤。";
870
+ readonly 'input.questionEmpty': "还没写问题";
871
+ readonly 'input.kindLabel': "怎么回答";
872
+ readonly 'input.options': "选项";
873
+ readonly 'input.addOption': "加一个选项";
874
+ readonly 'input.optionPlaceholder': "选项内容";
875
+ readonly 'input.removeOption': "删掉这个选项";
876
+ readonly 'input.optionDup': "和别的选项重复了,保存时只留一个";
877
+ readonly 'input.optionN': "选项 {n}";
878
+ readonly 'input.default': "默认值";
879
+ readonly 'input.defaultNone': "不预选";
880
+ readonly 'input.defaultTip': "点左边的圈设为默认";
881
+ readonly 'input.defaultPlaceholder': "预先填好的内容(用户可以改)";
882
+ readonly 'input.defaultHint': "用户没改就用它;必填的问题有了默认值,用户不填也能执行。";
883
+ readonly 'input.placeholder': "占位文字";
884
+ readonly 'input.placeholderPlaceholder': "输入框里的灰色提示";
885
+ readonly 'input.hint': "说明";
886
+ readonly 'input.hintPlaceholder': "填写时显示在问题下面,比如要写到多细";
887
+ readonly 'input.private': "占位文字和说明只给填写的人看,不进计划。";
888
+ readonly 'input.required': "必填";
889
+ readonly 'input.requiredDesc': "没有回答(也没有默认值)时不能执行";
890
+ readonly 'input.readers': "回答交给";
891
+ readonly 'input.readersAll': "还没连到步骤:回答交给整个工作流。";
892
+ readonly 'input.readersHint': "从输入卡右边的点拖到步骤上,就只交给那几步。";
893
+ readonly 'input.connectHint': "拖到步骤上:把回答交给它";
894
+ readonly 'input.optionsCount': "{n} 个选项";
895
+ readonly 'input.delete': "删除输入";
896
+ readonly 'input.answer': "用户的回答";
897
+ readonly 'input.noAnswer': "没有填写";
898
+ readonly 'ins.inputs': "用户输入";
899
+ readonly 'ins.inputsHint': "执行时把这些问题的回答交给这一步。";
900
+ readonly 'edge.ask': "交回答";
901
+ readonly 'edge.askTitle': "用户输入 → 步骤";
902
+ readonly 'edge.askHint': "执行时,用户对这个问题的回答会交给这一步。";
903
+ readonly 'file.ask': "回答";
904
+ readonly 'legend.askTip': "把用户执行前填的回答交给这一步";
905
+ readonly 'link.hintAsk': "拖到步骤上:把回答交给它";
906
+ readonly 'ask.title': "执行前填写";
907
+ readonly 'ask.sub': "{name} · {n} 个问题";
908
+ readonly 'ask.run': "执行";
909
+ readonly 'ask.requiredTag': "必填";
910
+ readonly 'ask.missing': "还有 {n} 个必填的没填";
911
+ readonly 'ask.keys': "Ctrl+Enter 执行";
912
+ readonly 'ask.pickOne': "选一项";
913
+ readonly 'ask.pickMany': "可以选多项";
914
+ readonly 'ask.defaultTag': "默认";
915
+ readonly 'ask.where': "执行位置:{where}";
916
+ readonly 'error.generic': "操作失败";
917
+ };
918
+ export type LocaleKey = keyof typeof zh;
919
+ /** 组件拿到的翻译函数(槽位注入的 `t` 收窄到本插件的键)。 */
920
+ export type T = (key: LocaleKey) => string;
921
+ /**
922
+ * 把本插件的命名空间声明进槽位的 locale 表(官方范式)。
923
+ * 少了这一段,`locale: NS` 与 `PropsLocale<typeof NS>` 都拿不到类型。
924
+ */
925
+ declare module '@deepseek-ai/dsh-client-ui-slots' {
926
+ interface LocaleNamespaceMap {
927
+ 'workflow-lite': LocaleKey;
928
+ }
929
+ }
930
+ export declare const en: Record<LocaleKey, string>;