dsh-ptc-plus 0.5.2 → 0.5.4

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 (72) hide show
  1. package/README.en.md +4 -2
  2. package/README.md +4 -2
  3. package/client.cjs +3392 -2811
  4. package/compiler-core.cjs +127 -127
  5. package/compiler-core.cjs.map +2 -2
  6. package/docs/README.md +1 -0
  7. package/docs/adr/0017-track-the-latest-dsh-public-surface.md +4 -2
  8. package/docs/adr/0019-plugin-settings-and-kill-switch.md +2 -2
  9. package/docs/adr/0023-global-user-bindings.md +12 -0
  10. package/docs/adr/0028-attach-to-the-host-ptc-execution-seam.md +1 -1
  11. package/docs/adr/0030-serve-both-typert-codec-generations-from-one-codec.md +2 -2
  12. package/docs/adr/0044-coexist-with-the-official-persistent-repl.md +4 -4
  13. package/docs/adr/0046-gate-the-commit-with-the-semantic-evidence-tier.md +1 -1
  14. package/docs/adr/0048-supersede-a-rewritten-cell.md +48 -0
  15. package/docs/adr/0049-prove-a-settlement-against-its-published-record.md +53 -0
  16. package/docs/adr/0050-read-host-surfaces-through-their-published-contract.md +48 -0
  17. package/docs/adr/README.md +7 -1
  18. package/docs/architecture.md +1 -1
  19. package/docs/capability-planning-components.md +6 -6
  20. package/docs/capability-projection.md +1 -1
  21. package/docs/capability-surface.md +133 -0
  22. package/docs/client-ui.md +17 -15
  23. package/docs/client-visual-contract.md +7 -7
  24. package/docs/durability-design.md +9 -2
  25. package/docs/installation.md +17 -10
  26. package/docs/panel-concept.md +171 -0
  27. package/docs/releases/v0.5.2.md +26 -14
  28. package/docs/releases/v0.5.3.md +77 -0
  29. package/docs/releases/v0.5.4.md +75 -0
  30. package/docs/runtime-reference.md +21 -1
  31. package/docs/user-bindings.en.md +15 -0
  32. package/docs/user-bindings.md +15 -0
  33. package/docs/v0.5.3-goals.md +117 -0
  34. package/docs/verification.md +4 -4
  35. package/index.js +176 -41
  36. package/internal/binding-adoption.js +228 -0
  37. package/internal/capability-command-receipt.js +106 -8
  38. package/internal/capability-environment.js +1109 -312
  39. package/internal/capability-plan.js +18 -2
  40. package/internal/capability-policy.js +13 -0
  41. package/internal/capability-selection.js +330 -0
  42. package/internal/config-spec.js +14 -5
  43. package/internal/cordis-tools-owner.js +2 -1
  44. package/internal/direct-surface-owner.js +44 -17
  45. package/internal/edit-transport-owner.js +6 -5
  46. package/internal/execution-provider-owner.js +6 -0
  47. package/internal/execution-seam-compat.js +25 -0
  48. package/internal/host-tool-sdk.js +308 -0
  49. package/internal/message-sources.js +21 -0
  50. package/internal/official-repl-priority.js +31 -10
  51. package/internal/program-bindings.js +25 -5
  52. package/internal/repl-memory-projection.js +21 -2
  53. package/internal/runtime-bridge-owner.js +118 -9
  54. package/internal/runtime-config.js +10 -0
  55. package/internal/runtime-messages.js +5 -0
  56. package/internal/session-journal-recovery.js +210 -32
  57. package/internal/session-journal-schema.js +3 -0
  58. package/internal/session-journal.js +46 -9
  59. package/internal/session-log-view.js +69 -7
  60. package/internal/session-runtime.js +106 -39
  61. package/internal/settings-compat.js +6 -0
  62. package/internal/user-bindings-owner.js +126 -6
  63. package/package.json +59 -37
  64. package/src/client-authoring-view.js +7 -8
  65. package/src/client-capabilities-view.js +874 -909
  66. package/src/client-capability-sort.js +22 -9
  67. package/src/client-copy.js +118 -272
  68. package/src/client-indicator-view.js +2 -1
  69. package/src/client-repl-view.js +35 -16
  70. package/src/client-settings-view.js +90 -33
  71. package/src/client-styles.js +67 -19
  72. package/src/client.js +49 -22
@@ -62,44 +62,35 @@ const CHROME_COPY = Object.freeze({
62
62
  "capabilities.effect.collectionOff": "停止采集新记录,历史统计仍保留并可选作分配依据。",
63
63
  "capabilities.effect.statisticsIndependent": "采集与分配独立;是否使用统计在“提示设置 → 初始提示”中选择。",
64
64
  'capabilities.sourceRules': '来源规则',
65
- 'capabilities.filterAction': '筛选',
66
65
  'capabilities.batchSettings': '批量设置',
67
66
  'capabilities.batch.cancel': '取消',
68
67
  'capabilities.inheritedRules': '继承规则',
69
68
  'capabilities.inheritedRulesHelp': '设置默认、类别和 MCP 来源的持续规则,更改即保存。规则独立于当前筛选,单项设置按维度覆盖;MCP 来源停用优先。',
70
- 'capabilities.batch.targets': '一次性修改 {count} 项真实能力',
71
- 'capabilities.batch.excluded': '已排除 {count} 项当前不可用或未确认的条目。',
72
69
  'capabilities.batch.targetList': '本次批量目标',
73
- 'capabilities.batch.empty': '当前筛选中没有可批量修改的真实能力。',
74
- 'capabilities.batch.availability': '批量设置是否启用',
75
- 'capabilities.batch.disclosure': '批量设置上下文',
76
70
  'capabilities.batch.keep': '不更改',
77
- 'capabilities.batch.effect': '确认后一次保存这些单项设置,未修改的维度保持不变;新会话采用,已有会话需明确刷新。',
78
- 'capabilities.batch.sourceClosure': 'MCP 来源已停用时,单项启用不会重新开启来源。',
79
- 'capabilities.batch.changedTargets': '{count} 项目标已不在最新完整目录中或可用性未确认;请取消并重新检查目标。',
80
- 'capabilities.batch.failed': '保存未成功,目标和选择已保留,可再次确认重试。',
81
- 'capabilities.batch.confirm': '确认修改 {count} 项',
82
- 'capabilities.batch.all': '当前完整能力目录',
71
+ 'capabilities.batch.address.saved': "保存",
72
+ 'capabilities.batch.address.session': "本会话",
73
+ 'capabilities.surface.settingsTitle': "能力面 · 新会话默认",
74
+ 'capabilities.surface.addresses.session': "地址集:新会话默认(保存)· 本会话记录({session})",
75
+ 'capabilities.surface.addresses.settings': "地址集:新会话默认(保存)",
76
+ 'capabilities.control.savedEnabled': "保存·启用:{name}",
77
+ 'capabilities.control.savedDisclosure': "保存·披露:{name}",
78
+ 'capabilities.control.sessionEnabled': "本会话·启用:{name}",
79
+ 'capabilities.control.sessionDisclosure': "本会话·披露:{name}",
80
+ 'capabilities.batch.effectSession': '写入的是本会话记录:本会话的下一次获准步骤读取它,其他会话不受影响。',
81
+ 'capabilities.batch.effect': '确认后逐个写入这些单项设置,未修改的维度保持不变;新会话采用,已有会话需明确刷新。',
83
82
  'capabilities.batch.selected': '已选择 {count} 项能力',
84
- 'capabilities.batch.stage': '暂存修改({count} 项)',
85
- 'capabilities.batch.sessionStage': '确认后写入待应用更改;由底部按钮决定应用到会话或保存为全局默认。',
86
- 'capabilities.batch.sessionInherit': '不改动(清除本会话修改)',
87
83
  'capabilities.selectForBatch': '选择 {name}',
88
- 'capabilities.selectAllVisible': '选择当前筛选结果',
89
- 'capabilities.selectionCount': '已选 {count} 项',
84
+ 'capabilities.column.object': "对象",
90
85
  'capabilities.typesColumn': '类型',
91
86
  'capabilities.sourceColumn': '来源',
92
- 'capabilities.enabledColumn': '是否启用',
93
- 'capabilities.contextColumn': '上下文',
94
- 'capabilities.rowState.unknown': '未确认',
95
- 'capabilities.rowState.unavailable': '当前不可用',
96
- 'capabilities.rowState.source-closed': '来源已停用',
97
- 'capabilities.rowState.unapplied': '未应用',
98
- 'capabilities.rowState.enabled': '已启用',
99
- 'capabilities.rowState.closed': '已停用',
100
- 'capabilities.editContextFor': '编辑上下文设置:{name}',
101
- 'capabilities.closeDetails': '收起详情',
102
- 'capabilities.contextHelp': '启停和上下文分别保存;更改说明不会改变能力是否可用。',
87
+ 'capabilities.column.savedEnabled': "保存·启用",
88
+ 'capabilities.column.savedDisclosure': "保存·披露",
89
+ 'capabilities.column.sessionEnabled': "本会话·启用",
90
+ 'capabilities.column.sessionDisclosure': "本会话·披露",
91
+ 'capabilities.column.receipt': "回执",
92
+ 'capabilities.sortCycle': '切换排序:升序、降序、原顺序',
93
+ 'capabilities.sortColumn': '按{column}排序',
103
94
  'capabilities.coverageScope': '统计范围',
104
95
  'capabilities.scope.workspace': '当前工作区',
105
96
  'capabilities.scope.global': '所有工作区',
@@ -131,7 +122,7 @@ const CHROME_COPY = Object.freeze({
131
122
  'capabilities.previewHelp': '限制模型上下文中结果与日志的长度,省略内容仍可读取;完整结果和执行状态不变。',
132
123
  'capabilities.previewEnabled': '输出节选',
133
124
  'capabilities.estimatedTokens': '约 {count} token',
134
- 'capabilities.descriptionDependency': '初始提示采用能力配置中的说明规则;常用集在能力配置中编辑。提示恢复、输出节选和使用统计可独立选用。',
125
+ 'capabilities.descriptionDependency': '初始提示采用能力配置中的说明规则;常用集由配置文档陈述,本页只读。提示恢复、输出节选和使用统计可独立选用。',
135
126
  'capabilities.descriptionHelp': '设置新会话的初始能力提示:完整说明、按需目录或按依据分配;单项设置优先。',
136
127
  'capabilities.defaultDisclosure': '默认提供方式',
137
128
  'capabilities.savedForNew': '已保存 · 新会话采用',
@@ -154,82 +145,53 @@ const CHROME_COPY = Object.freeze({
154
145
  'capabilities.configurationUnavailable': "配置当前不可写,未保存更改。",
155
146
  'capabilities.observedUsage': "实际使用统计",
156
147
  'capabilities.budgetPreview': "当前能力分配预览",
157
- 'capabilities.observationUnavailable': "无法读取能力预览,请重新读取。",
148
+ 'capabilities.observationNotRead': "尚未读取到能力预览,请重新读取。",
158
149
  'capabilities.selectObservation': "选择一个活跃 PTC 会话作为观察锚点;统计和预算预览都按它的能力清单展示,统计范围可切换当前工作区或全部工作区。",
159
150
  'capabilities.quick.title': '会话能力控制',
160
151
  'capabilities.quick.modalTitle': '管理会话能力',
161
- 'capabilities.quick.sessionIdentity': '当前会话:{session}',
162
- 'capabilities.quick.state': '当前状态',
163
- 'capabilities.quick.allStates': '全部状态',
164
- 'capabilities.quick.changed': '待应用的更改',
165
- 'capabilities.quick.effective': '当前生效',
166
152
  'capabilities.quick.temporary': '临时覆盖',
167
153
  'capabilities.quick.globalSaved': '全局设置',
168
- 'capabilities.quick.sessionSource': '会话继承',
169
- 'capabilities.quick.unknown': '未确认',
170
- 'capabilities.quick.choice': '选择策略',
154
+ 'capabilities.quick.unknown': '旧版取值',
171
155
  'capabilities.quick.members': '能力清单',
172
156
  'capabilities.quick.catalogError': '能力清单读取失败:{error}',
173
- 'capabilities.quick.changes': '{count} 项待应用',
174
- 'capabilities.quick.applySession': '应用到会话',
175
- 'capabilities.quick.applyGlobal': '应用到全局',
157
+ 'capabilities.quick.supplyEmpty': '宿主没有声明任何能力条目。',
158
+ 'capabilities.quick.writeError': '写入被拒绝:{error}',
159
+ 'capabilities.word.enabled': "启用",
160
+ 'capabilities.word.closed': "关闭",
161
+ 'capabilities.word.automatic': '自动',
162
+ 'capabilities.word.inherit': '继承',
163
+ 'capabilities.word.perMember': "各成员自定",
164
+ 'capabilities.word.unwritten': "未写下",
165
+ 'capabilities.word.sessionRecord': "本会话记录",
166
+ 'capabilities.word.bindingRecord': "绑定采纳记录",
167
+ 'capabilities.word.host': "人机·原文·首轮",
168
+ 'capabilities.word.full': "人机·全文·首轮",
169
+ 'capabilities.word.on-demand': "仅模型·目录·首轮",
170
+ 'capabilities.word.adaptive': "仅模型·分配·不重读",
171
+ 'capabilities.word.use': '使用',
172
+ 'capabilities.word.skip': '不使用',
173
+ 'capabilities.word.damaged': '记录损坏',
174
+ 'capabilities.source.bindings': '全局绑定',
175
+ 'capabilities.batch.record': '写入 {count} 项',
176
+ 'capabilities.batch.kept': '本次批量保持当前设置,写入 0 条记录。',
176
177
  'capabilities.quick.noOverride': '无覆盖',
177
- 'capabilities.quick.inheritSessionOnly': '撤销临时修改只适用于本会话。请用“应用到会话”提交。',
178
- 'capabilities.quick.discard': '放弃更改',
179
- 'capabilities.quick.applying': '正在应用…',
180
- 'capabilities.quick.applied': '{count} 项会话能力已更新。',
181
- 'capabilities.quick.pendingApplied': '{count} 项已提交;部分将在首次接受的模型步骤生效。',
182
- 'capabilities.quick.partial': '已更新 {count} 项;剩余未应用。{error}',
183
- 'capabilities.quick.savedOnly': '已更新 {count} 项;全局选择已保存,但本会话更新失败。请重试。{error}',
184
- 'capabilities.quick.confirmationUnavailable': '无法确认当前目录,请重新读取后重试。',
185
- 'capabilities.quick.unknownReceipt': '无法确认命令结果,请读取当前状态后重试。',
186
- 'capabilities.quick.otherScopeChanges': '另一范围待应用:{count}',
187
- 'capabilities.quick.serverTools': '关联能力',
188
- 'capabilities.quick.backToList': '返回能力清单',
189
- 'capabilities.quick.disabledByServer': 'MCP 服务 {server} 已关闭;子项选择仍保留。',
190
- 'capabilities.quick.pendingServerClose': 'MCP 服务 {server} 有待生效的关闭选择;子项选择仍保留。',
191
178
  'capabilities.quick.enabled': '已启用',
192
179
  'capabilities.quick.pending': '待生效',
193
- 'capabilities.quick.temporaryState': '{state}(临时)',
194
- 'capabilities.quick.sessionPaused': '本会话的能力与上下文已暂停;清单显示宿主默认,需在设置中重新开启并刷新后才会应用新的更改。',
195
- 'capabilities.quick.sessionManagementOff': '本会话未启用能力管理;能力沿用宿主配置。在设置的“能力与上下文”中开启能力管理并刷新后可修改本会话选择。',
196
- 'capabilities.quick.savedPaused': '能力与上下文已在设置中关闭;重新开启并刷新后可修改本会话选择。',
197
- 'capabilities.quick.savedManagementOff': '能力管理已在设置中关闭;重新开启并刷新后可修改本会话选择。',
198
- 'capabilities.quick.scope': '生效范围',
199
- 'capabilities.quick.session': '仅本会话',
200
- 'capabilities.quick.global': '全局保存并更新本会话',
201
- 'capabilities.quick.sessionHint': '临时覆盖仅属于此会话;普通刷新保留这些选择。',
202
- 'capabilities.quick.globalHint': '保存为新会话的默认选择,并立即更新本会话;其他已有会话保持原方案。',
203
180
  'capabilities.quick.kind': '能力类别',
204
181
  'capabilities.quick.all': '全部能力',
205
182
  'capabilities.quick.skills': 'Skills',
206
183
  'capabilities.quick.tools': '基础工具',
207
184
  'capabilities.quick.mcp': 'MCP 服务与资源',
208
185
  'capabilities.quick.mcp_tools': 'MCP Tools',
209
- 'capabilities.quick.noChange': '不改动(当前:{state})',
210
- 'capabilities.quick.undoTemp': '撤销本会话修改(恢复为:{state})',
211
- 'capabilities.quick.keepUnchanged': '不改动',
212
- 'capabilities.quick.undoChange': '撤销本会话修改',
213
- 'capabilities.quick.upperRule': '由上一级规则决定',
214
- 'capabilities.quick.impact': '本会话生效:{state} · 来源:{source}',
215
- 'capabilities.quick.impactPending': '本会话生效:{state} · 来源:{source} · 待应用',
216
- 'capabilities.quick.impactUpper': '本会话生效:按上一级规则决定',
217
- 'capabilities.quick.impactUpperPending': '本会话生效:按上一级规则决定 · 待应用',
218
- 'capabilities.quick.originPlan': '会话方案',
219
- 'capabilities.quick.originSession': '本会话临时修改',
220
- 'capabilities.action.enable': '启用',
221
- 'capabilities.action.close': '关闭',
222
- 'capabilities.quick.states': '已保存:{saved} · 临时:{temporary} · 生效:{effective}',
223
- 'capabilities.quick.apply': '提交并生效',
224
- 'capabilities.quick.prefill': '填入命令草稿',
225
186
  'capabilities.card.recorded': '会话能力已更新。',
226
187
  'capabilities.card.paused': '能力与上下文已关闭;本会话沿用宿主能力。',
227
188
  'capabilities.card.off': '能力管理已关闭;本会话沿用宿主能力。',
228
189
  'capabilities.card.saved-only': '全局设置已保存,会话更新失败。{error}',
229
- 'capabilities.card.unavailable': '会话不可用,未应用更改。',
190
+ 'capabilities.card.no-session': '未找到活跃的 PTC 会话,未应用更改。',
230
191
  'capabilities.card.usage': '命令未执行,请检查参数。',
231
192
  'capabilities.card.catalogCount': '{count} 项能力',
232
193
  'capabilities.card.details': '会话能力详情',
194
+ 'capabilities.card.writes': '记录了 {count} 项能力变更',
233
195
  'capabilities.card.browse': '查看能力列表',
234
196
  'capabilities.card.source': '查看原始结果',
235
197
  'capabilities.card.running': '执行中',
@@ -242,8 +204,10 @@ const CHROME_COPY = Object.freeze({
242
204
  'capabilities.receipt.pending': '会话 {session} 的能力已准备,将在首次接受的模型步骤生效。',
243
205
  'capabilities.receipt.paused': '能力与上下文已关闭;会话 {session} 沿用宿主能力。',
244
206
  'capabilities.receipt.off': '能力管理已关闭;会话 {session} 沿用宿主能力。',
245
- 'capabilities.receipt.unavailable': '请选择仍活跃的 PTC 会话。',
246
207
  'capabilities.receipt.usage': '使用 /capabilities 查看,或 /capabilities refresh 同步已保存设置。',
208
+ 'capabilities.receipt.layer': '经 {layer}',
209
+ 'capabilities.receipt.record': '会话 {session} 已记录 {record}。',
210
+ 'capabilities.receipt.record.global': '全局设置已记录 {record}。',
247
211
  'bindings.toggleEnabled': '已保存“{name}”的启用选择;模型目录在下一次获准步骤更新,程序值尚未证明初始化。',
248
212
  'bindings.toggleDisabled': '已保存“{name}”的停用选择;模型目录在下一次获准步骤撤销,不撤销已经发生的效果。',
249
213
  'capabilities.observationGroup': '只读会话观察',
@@ -262,7 +226,7 @@ const CHROME_COPY = Object.freeze({
262
226
  'capabilities.globalCoverage': "全局 使用 / 样本",
263
227
  'capabilities.contractSize': "接口正文大小",
264
228
  'capabilities.directoryUsage': "导航说明:{bytes} / {budget} UTF-8 bytes",
265
- 'capabilities.statStatus.unavailable': "统计不可用",
229
+ 'capabilities.statStatus.not-reported': "统计样本未报告",
266
230
  'capabilities.statStatus.no-samples': '暂无样本',
267
231
  'capabilities.statStatus.pending-settlement': '已有记录待结算',
268
232
  'capabilities.statStatus.incomplete-window': "窗口证据不完整",
@@ -292,7 +256,6 @@ const CHROME_COPY = Object.freeze({
292
256
  'capabilities.frozenHint': "以下是该会话正在生效的冻结结果,不是可切换的命名配置。",
293
257
 
294
258
  'capabilities.reason.manual-override': '手动选择',
295
- 'capabilities.serverHint': 'MCP 可按整台 server 关闭,也可单独配置其工具;关闭 server 会覆盖子项,重新开启后保留子项设置。',
296
259
  'capabilities.serverToggle': '启用 MCP server {name}',
297
260
  'capabilities.serverOff': '已关闭',
298
261
  'capabilities.serverOn': '已启用',
@@ -306,31 +269,27 @@ const CHROME_COPY = Object.freeze({
306
269
  'capabilities.reason.management-disabled': '沿用宿主能力配置',
307
270
  'capabilities.reason.statistics-disabled': '使用统计已关闭',
308
271
  'capabilities.reason.statistics-settings-invalid': '统计设置无效',
309
- 'capabilities.reason.statistics-data-invalid': '统计数据不可用',
310
- 'capabilities.reason.statistics-unavailable': '统计样本不足或不可用',
272
+ 'capabilities.reason.statistics-data-invalid': '统计数据无效',
273
+ 'capabilities.reason.statistics-unavailable': '统计样本不足',
311
274
  'capabilities.reason.workspace': '工作区统计',
312
275
  'capabilities.reason.global': '全局统计参考',
313
- 'capabilities.host': '沿用 DSH',
314
- 'capabilities.policy.inheritRule': '不单独设置',
315
276
  'capabilities.policy.availabilityFilter': '已保存的可用性',
316
277
  'capabilities.policy.disclosureFilter': '已保存的说明方式',
317
- 'capabilities.policy.frozenSource': '冻结来源的规则结果',
318
- 'capabilities.policy.effectiveDimensions': '已生效的维度与来源',
319
278
  'capabilities.sort.availabilityRule': '可用性规则',
320
279
  'capabilities.sort.disclosureRule': '说明规则',
321
- "capabilities.adaptive": "按依据分配",
322
280
  "capabilities.policy.rules": "可用性与说明规则",
323
281
  "capabilities.policy.precedence": "默认 → 类别 → MCP 来源 → 单项,分别决定启停和说明;MCP 来源停用优先,保留子项偏好。",
282
+ "capabilities.policy.layerAbove": "由上一层",
324
283
  "capabilities.policy.default": "默认规则",
325
284
  "capabilities.policy.categories": "类别规则",
326
285
  "capabilities.policy.availability": "可用性",
327
286
  "capabilities.policy.disclosure": "说明方式",
328
- "capabilities.policy.availabilityFor": "{name} 的可用性",
287
+ "capabilities.dimension.availability": "启用",
288
+ "capabilities.dimension.disclosure": "披露",
329
289
  "capabilities.policy.allocate.baseline": "使用常用集分配说明",
330
290
  "capabilities.policy.allocate.statistics": "使用统计分配说明",
331
291
  "capabilities.policy.allocate.budget": "用预算约束按依据分配的说明",
332
292
  "capabilities.policy.adaptiveHint": "仅「按依据分配」使用上述依据。采集统计独立设置;完整说明不会被预算降级,停用不会丢失说明偏好。",
333
- "capabilities.policy.resolved": "规则结果:{availability} · {disclosure}({source})",
334
293
  "capabilities.policy.category.tool": "Tools",
335
294
  "capabilities.policy.category.skill": "Skills",
336
295
  "capabilities.policy.category.resource": "MCP 资源与模板",
@@ -339,48 +298,36 @@ const CHROME_COPY = Object.freeze({
339
298
  "capabilities.reason.host-disclosure": "沿用宿主说明",
340
299
  "capabilities.reason.availability-rule": "可用性规则",
341
300
  "capabilities.reason.disclosure-rule": "说明规则",
342
- 'capabilities.previousSource': '先前来源(当前未列出)',
343
301
  'capabilities.management': '能力配置',
344
302
  'capabilities.foundation': '基础执行环境',
345
303
  'capabilities.foundationHint': '不受能力管理控制',
346
304
  'capabilities.types': '能力类型',
347
- 'capabilities.type.all': '全部',
348
305
  'capabilities.type.tool': 'Tools',
349
306
  'capabilities.type.skill': 'Skills',
350
307
  'capabilities.type.resource': 'MCP',
351
308
  'capabilities.type.server': 'MCP 来源',
352
- 'capabilities.type.other': '其它 / 待确认',
353
- 'capabilities.sort': '排序',
309
+ 'capabilities.type.binding': '绑定',
354
310
  'capabilities.sort.name': '名称',
355
311
  'capabilities.sort.id': '精确 ID',
356
312
  'capabilities.sort.strategy': '手动策略',
357
313
  'capabilities.sort.common': '常用优先',
358
- 'capabilities.sortCycle': '依次按升序、降序排列,再恢复默认顺序',
359
314
  'capabilities.ascending': '升序排列',
360
315
  'capabilities.descending': '降序排列',
361
316
  'capabilities.filters': '筛选({count})',
362
317
  'capabilities.sourceFilter': '能力来源',
363
318
  'capabilities.strategyFilter': '手动策略',
364
319
  'capabilities.allSources': '全部来源',
365
- 'capabilities.allStrategies': '全部策略',
366
- 'capabilities.onlyCommon': '仅常用',
367
- 'capabilities.availabilityFilter': '可用状态',
368
- 'capabilities.availability.all': '全部状态',
369
- 'capabilities.availability.available': '当前可用',
370
- 'capabilities.availability.unavailable': '当前不可用',
371
- 'capabilities.availability.unknown': '尚未确认',
372
- 'capabilities.clear': '清除筛选',
373
- 'capabilities.results': '显示 {count} / {total} 项',
374
320
  'capabilities.reloadCatalog': '重新读取清单',
375
321
  'capabilities.group.tool': '基础工具 · DSH 工具表面',
376
322
  'capabilities.group.mcp-tool': '扩展工具 · MCP',
377
323
  'capabilities.group.skill': 'Skills · 指令技能',
378
324
  'capabilities.group.resource': 'MCP 资源与模板',
379
325
  'capabilities.group.other': '其它能力 / 类型待确认',
380
- 'capabilities.group.unavailable': '当前不可用 · 保留配置',
381
326
  'capabilities.source.host': 'DSH 工具',
382
327
  'capabilities.source.mcp': 'MCP',
383
- 'capabilities.source.unknown': '来源未确认',
328
+ 'capabilities.source.skill': '技能',
329
+ 'capabilities.source.multiple-servers': '多个服务器',
330
+ 'capabilities.source.separator': '、',
384
331
  'capabilities.source.project-dsh': '项目技能(.dsh)',
385
332
  'capabilities.source.project-agents': '项目技能(.agents)',
386
333
  'capabilities.source.user-dsh': '用户技能(.dsh)',
@@ -391,22 +338,9 @@ const CHROME_COPY = Object.freeze({
391
338
  'capabilities.source.other-skill': '其它技能来源',
392
339
  'capabilities.commonBaseline': '常用基线',
393
340
  'capabilities.details': '能力详情',
394
- 'capabilities.inBaseline': '已加入',
395
- 'capabilities.notInBaseline': '未加入',
396
341
  'capabilities.savedStrategy': '已保存策略',
397
- 'capabilities.restoreAutomatic': '恢复自动',
398
342
  'capabilities.closedBaseline': '关闭选择优先;保留的常用基线暂不参与分配。',
399
- 'capabilities.skillDisclosure': 'Skill 的完整说明仅提供目录描述,正文在实际使用时加载。',
400
- 'capabilities.invocation.both': '模型可以加载正文,用户也可以通过 /{name} 调用。',
401
- 'capabilities.invocation.model': '仅允许模型加载正文;此 Skill 不提供用户斜杠调用。',
402
- 'capabilities.invocation.user': '仅允许用户通过 /{name} 调用;模型不能使用 tools.skill 加载它。',
403
- 'capabilities.invocation.varies': '此 Skill 的调用资格随会话而异;请在目标会话中确认模型加载和用户斜杠调用是否可用。',
404
- 'capabilities.catalogDescription': '能力说明',
405
- 'capabilities.removeSaved': '移除已保存配置',
406
- 'capabilities.currentSession': '所选会话方案',
407
- 'capabilities.sessionSelector': '查看会话',
408
- 'capabilities.notInSession': '该会话方案未包含此能力',
409
- 'capabilities.baselineHint': '统计不可用时,常用基线优先提供完整说明;单项手动选择始终优先。',
343
+ 'capabilities.baselineHint': '统计样本不足时,常用基线优先提供完整说明;单项手动选择始终优先。',
410
344
  'capabilities.managementOff': '能力管理已关闭;手动配置可继续整理,已有会话可主动刷新以同步关闭配置。',
411
345
  'capabilities.applyGroup': '应用会话能力设置',
412
346
  'settings.toolsMenu': 'PTC Plus 工具',
@@ -417,7 +351,6 @@ const CHROME_COPY = Object.freeze({
417
351
  'capabilities.cancelRefresh': '取消刷新',
418
352
  'capabilities.refreshCancelled': '已取消等待;请重新读取方案确认实际状态。',
419
353
  'capabilities.refreshFailed': '刷新失败:{error}',
420
- 'capabilities.refreshUnavailable': '当前会话的刷新命令不可用。',
421
354
  'capabilities.refreshAcknowledged': 'DSH 已确认刷新操作。',
422
355
  'capabilities.settingsTabs': '能力设置页签',
423
356
  'capabilities.tab.manual': '能力配置',
@@ -507,18 +440,10 @@ const CHROME_COPY = Object.freeze({
507
440
  'capabilities.tab.budgets': '提示设置',
508
441
  'capabilities.tab.plans': '配置方案',
509
442
  'capabilities.savedStatisticsInvalid': '已保存的统计设置不可用。下方显示建议值;修改后保存,手动能力选择仍有效。',
510
- 'capabilities.catalogUnavailable': '能力清单读取失败:{error}。已保存的选择仍可编辑。',
511
443
  'capabilities.search': '搜索能力(名称、ID 或来源)',
512
- 'capabilities.catalogEmpty': '尚无可用能力清单。打开一个 PTC 会话后重新读取。',
513
444
  'capabilities.noMatches': '没有匹配的能力',
514
445
  'capabilities.notAvailable': '当前清单未列出,保留已保存选择',
515
446
  'capabilities.common': '常用',
516
- 'capabilities.baselineFor': '设为常用:{name}',
517
- 'capabilities.disclosureFor': '披露方式:{name}',
518
- 'capabilities.automatic': '跟随自动',
519
- 'capabilities.full': '完整提供',
520
- 'capabilities.on-demand': '按需提供',
521
- 'capabilities.closed': '关闭能力',
522
447
  'capabilities.statisticsEnabled': '使用统计',
523
448
  'capabilities.windowSize': '样本窗口(会话家族)',
524
449
  'capabilities.minimumSamples': '最低样本数',
@@ -529,8 +454,6 @@ const CHROME_COPY = Object.freeze({
529
454
  'capabilities.refreshHint': '能力设置供新会话使用;已有会话执行 /capabilities refresh 后同步。',
530
455
  'capabilities.unavailable': '方案读取失败:{error}',
531
456
  'capabilities.empty': '尚无已准备的会话方案',
532
- 'capabilities.pending': '保存配置待刷新',
533
- 'capabilities.current': '使用已冻结方案',
534
457
  'capabilities.budget': '完整说明 {bytes} 字节,显式超额 {overage} 字节',
535
458
  'capabilities.member': '能力',
536
459
  'capabilities.selection': '披露',
@@ -663,7 +586,6 @@ const CHROME_COPY = Object.freeze({
663
586
  'bindings.reviewAttention': '有待查看的操作状态',
664
587
  'bindings.reviewUnconfirmed': '操作结果尚未确认,请刷新状态后查看。',
665
588
  'bindings.reviewReadOnly': '只读草稿,当前没有可确认的操作资格',
666
- 'bindings.reviewUnavailable': '草稿审阅面板暂不可用',
667
589
  'bindings.reviewRetry': '刷新操作状态',
668
590
  'bindings.commandAccepted': '请求已受理,编写结果未知',
669
591
  'bindings.commandAdmitting': '正在处理编写请求…',
@@ -684,6 +606,7 @@ const CHROME_COPY = Object.freeze({
684
606
  'memory.globalCount': '{count} 个全局条目',
685
607
  'memory.empty': '当前没有可复用绑定',
686
608
  'memory.unavailable': '当前绑定状态尚不可确认',
609
+ 'memory.previousRuntime': '这份清单来自上一个运行期,不再代表当前环境;执行一格即可重新观察',
687
610
  'memory.more': '另有 {count} 个绑定未显示',
688
611
  'memory.reuseCount': '复用 {count} 次',
689
612
  'memory.reuseTotal': '共复用 {count} 次',
@@ -776,44 +699,35 @@ const CHROME_COPY = Object.freeze({
776
699
  "capabilities.effect.collectionOff": "Stop collecting new records; retained statistics remain available as allocation evidence.",
777
700
  "capabilities.effect.statisticsIndependent": "Collection and allocation are independent. Select statistics use under Prompt settings → Initial prompt.",
778
701
  'capabilities.sourceRules': 'Source rules',
779
- 'capabilities.filterAction': 'Filter',
780
702
  'capabilities.batchSettings': 'Batch settings',
781
703
  'capabilities.batch.cancel': 'Cancel',
782
704
  'capabilities.inheritedRules': 'Inherited rules',
783
705
  'capabilities.inheritedRulesHelp': 'Set persistent defaults, category and MCP source rules. Changes save immediately and are independent of current filters. Item preferences override each dimension; MCP source closure takes precedence.',
784
- 'capabilities.batch.targets': 'One-time change to {count} catalog capabilities',
785
- 'capabilities.batch.excluded': 'Excluded {count} unavailable or unconfirmed entries.',
786
706
  'capabilities.batch.targetList': 'Targets for this batch',
787
- 'capabilities.batch.empty': 'There are no confirmed catalog capabilities in the current filters.',
788
- 'capabilities.batch.availability': 'Batch availability',
789
- 'capabilities.batch.disclosure': 'Batch disclosure',
790
707
  'capabilities.batch.keep': 'Keep unchanged',
791
- 'capabilities.batch.effect': 'Confirm saves these item preferences once, preserving unchanged dimensions. New sessions use them; existing sessions require explicit refresh.',
792
- 'capabilities.batch.sourceClosure': 'Enabling an item does not reopen a disabled MCP source.',
793
- 'capabilities.batch.changedTargets': '{count} targets are absent from the latest complete catalog or unconfirmed. Cancel and review the targets again.',
794
- 'capabilities.batch.failed': 'Save was not confirmed. Targets and choices are retained; confirm again to retry.',
795
- 'capabilities.batch.confirm': 'Confirm {count} changes',
796
- 'capabilities.batch.all': 'Current complete capability catalog',
708
+ 'capabilities.batch.address.saved': "Saved",
709
+ 'capabilities.batch.address.session': "This session",
710
+ 'capabilities.surface.settingsTitle': "Capability surface · new-session default",
711
+ 'capabilities.surface.addresses.session': "Addresses: new-session default (saved) · this session's record ({session})",
712
+ 'capabilities.surface.addresses.settings': "Addresses: new-session default (saved)",
713
+ 'capabilities.control.savedEnabled': "Saved · on: {name}",
714
+ 'capabilities.control.savedDisclosure': "Saved · disclosure: {name}",
715
+ 'capabilities.control.sessionEnabled': "This session · on: {name}",
716
+ 'capabilities.control.sessionDisclosure': "This session · disclosure: {name}",
717
+ 'capabilities.batch.effectSession': 'This writes this session\'s record: its next accepted step reads it, and other sessions are unaffected.',
718
+ 'capabilities.batch.effect': 'Confirm writes each of these item preferences in turn, preserving unchanged dimensions. New sessions use them; existing sessions require explicit refresh.',
797
719
  'capabilities.batch.selected': 'Selected {count} capabilities',
798
- 'capabilities.batch.stage': 'Stage changes ({count})',
799
- 'capabilities.batch.sessionStage': 'Confirm stages these changes; the footer decides whether they apply to this session or become global defaults.',
800
- 'capabilities.batch.sessionInherit': 'No change (clears this session’s change)',
801
720
  'capabilities.selectForBatch': 'Select {name}',
802
- 'capabilities.selectAllVisible': 'Select all visible results',
803
- 'capabilities.selectionCount': '{count} selected',
721
+ 'capabilities.column.object': "Object",
804
722
  'capabilities.typesColumn': 'Type',
805
723
  'capabilities.sourceColumn': 'Source',
806
- 'capabilities.enabledColumn': 'Enabled',
807
- 'capabilities.contextColumn': 'Context',
808
- 'capabilities.rowState.unknown': 'Unconfirmed',
809
- 'capabilities.rowState.unavailable': 'Unavailable',
810
- 'capabilities.rowState.source-closed': 'Source disabled',
811
- 'capabilities.rowState.unapplied': 'Not applied',
812
- 'capabilities.rowState.enabled': 'Enabled',
813
- 'capabilities.rowState.closed': 'Disabled',
814
- 'capabilities.editContextFor': 'Edit context settings: {name}',
815
- 'capabilities.closeDetails': 'Close details',
816
- 'capabilities.contextHelp': 'Availability and context are saved separately. Changing disclosure does not enable or disable a capability.',
724
+ 'capabilities.column.savedEnabled': "Saved · on",
725
+ 'capabilities.column.savedDisclosure': "Saved · disclosure",
726
+ 'capabilities.column.sessionEnabled': "This session · on",
727
+ 'capabilities.column.sessionDisclosure': "This session · disclosure",
728
+ 'capabilities.column.receipt': "Receipt",
729
+ 'capabilities.sortCycle': 'Cycle order: ascending, descending, the order it arrived in',
730
+ 'capabilities.sortColumn': 'Sort by {column}',
817
731
  'capabilities.coverageScope': 'Statistics scope',
818
732
  'capabilities.scope.workspace': 'Current workspace',
819
733
  'capabilities.scope.global': 'All workspaces',
@@ -845,7 +759,7 @@ const CHROME_COPY = Object.freeze({
845
759
  'capabilities.previewHelp': 'Limit result and log length in model context. Omitted content remains readable; complete results and execution status are preserved.',
846
760
  'capabilities.previewEnabled': 'Output excerpts',
847
761
  'capabilities.estimatedTokens': '{count} estimated tokens',
848
- 'capabilities.descriptionDependency': 'Initial prompts use the description rules in Capability configuration, where the common set is edited. Prompt recovery, output excerpts and usage statistics are independent choices.',
762
+ 'capabilities.descriptionDependency': 'Initial prompts use the description rules in Capability configuration; the common set is stated from the configuration and is read-only here. Prompt recovery, output excerpts and usage statistics are independent choices.',
849
763
  'capabilities.descriptionHelp': 'Choose first-turn capability prompts for new sessions: full descriptions, an on-demand directory, or allocation from evidence. Individual settings take precedence.',
850
764
  'capabilities.defaultDisclosure': 'Default disclosure',
851
765
  'capabilities.savedForNew': 'Saved · used by new sessions',
@@ -868,82 +782,53 @@ const CHROME_COPY = Object.freeze({
868
782
  'capabilities.configurationUnavailable': "Configuration is not writable; changes were not saved.",
869
783
  'capabilities.observedUsage': "Observed usage",
870
784
  'capabilities.budgetPreview': "Current allocation preview",
871
- 'capabilities.observationUnavailable': "Capability preview is unavailable; reload the observation.",
785
+ 'capabilities.observationNotRead': "No capability preview has been read; reload it.",
872
786
  'capabilities.selectObservation': "Select an active PTC session as the observation anchor; statistics and budget preview follow its capability inventory, and the scope switches between its workspace and all workspaces.",
873
787
  'capabilities.quick.title': 'Session capability controls',
874
788
  'capabilities.quick.modalTitle': 'Manage session capabilities',
875
- 'capabilities.quick.sessionIdentity': 'Current session: {session}',
876
- 'capabilities.quick.state': 'Current state',
877
- 'capabilities.quick.allStates': 'All states',
878
- 'capabilities.quick.changed': 'Pending changes',
879
- 'capabilities.quick.effective': 'Effective now',
880
789
  'capabilities.quick.temporary': 'Temporary override',
881
790
  'capabilities.quick.globalSaved': 'Global settings',
882
- 'capabilities.quick.sessionSource': 'Session inheritance',
883
- 'capabilities.quick.unknown': 'Unknown',
884
- 'capabilities.quick.choice': 'Selection strategy',
791
+ 'capabilities.quick.unknown': 'Legacy value',
885
792
  'capabilities.quick.members': 'Capabilities',
886
793
  'capabilities.quick.catalogError': 'Could not read capabilities: {error}',
887
- 'capabilities.quick.changes': '{count} pending changes',
888
- 'capabilities.quick.applySession': 'Apply to session',
889
- 'capabilities.quick.applyGlobal': 'Apply to global',
794
+ 'capabilities.quick.supplyEmpty': 'The Host declares no capability entries.',
795
+ 'capabilities.quick.writeError': 'Write refused: {error}',
796
+ 'capabilities.word.enabled': "On",
797
+ 'capabilities.word.closed': "Off",
798
+ 'capabilities.word.automatic': 'Automatic',
799
+ 'capabilities.word.inherit': 'Inherit',
800
+ 'capabilities.word.perMember': "Per member",
801
+ 'capabilities.word.unwritten': "Not written",
802
+ 'capabilities.word.sessionRecord': "This session's record",
803
+ 'capabilities.word.bindingRecord': "Binding adoption record",
804
+ 'capabilities.word.host': "both·source·turn1",
805
+ 'capabilities.word.full': "both·full·turn1",
806
+ 'capabilities.word.on-demand': "model·listing·turn1",
807
+ 'capabilities.word.adaptive': "model·share·no-reread",
808
+ 'capabilities.word.use': 'Use',
809
+ 'capabilities.word.skip': 'Do not use',
810
+ 'capabilities.word.damaged': 'Record damaged',
811
+ 'capabilities.source.bindings': 'Global bindings',
812
+ 'capabilities.batch.record': 'Record {count} entries',
813
+ 'capabilities.batch.kept': 'This batch keeps the current settings and writes 0 records.',
890
814
  'capabilities.quick.noOverride': 'None',
891
- 'capabilities.quick.inheritSessionOnly': 'Clearing a temporary change applies only to this session. Use Apply to session.',
892
- 'capabilities.quick.discard': 'Discard changes',
893
- 'capabilities.quick.applying': 'Applying…',
894
- 'capabilities.quick.applied': '{count} session capabilities updated.',
895
- 'capabilities.quick.pendingApplied': '{count} submitted; some take effect at the first accepted model step.',
896
- 'capabilities.quick.partial': '{count} updated; remaining changes were not applied. {error}',
897
- 'capabilities.quick.savedOnly': '{count} updated; the global choice was saved, but this session was not updated. Retry this choice. {error}',
898
- 'capabilities.quick.confirmationUnavailable': 'Could not confirm the current catalog. Reload it and retry.',
899
- 'capabilities.quick.unknownReceipt': 'Could not confirm the command outcome. Inspect the current state before retrying.',
900
- 'capabilities.quick.otherScopeChanges': 'Pending in other scope: {count}',
901
- 'capabilities.quick.serverTools': 'Related capabilities',
902
- 'capabilities.quick.backToList': 'Back to capabilities',
903
- 'capabilities.quick.disabledByServer': 'MCP server {server} is closed; child choices are retained.',
904
- 'capabilities.quick.pendingServerClose': 'MCP server {server} has a close choice awaiting effect; child choices are retained.',
905
815
  'capabilities.quick.enabled': 'Enabled',
906
816
  'capabilities.quick.pending': 'Pending',
907
- 'capabilities.quick.temporaryState': '{state} (temporary)',
908
- 'capabilities.quick.sessionPaused': 'Capabilities and context are paused for this session; the list shows Host defaults. Re-enable them in settings and refresh before changes can apply.',
909
- 'capabilities.quick.sessionManagementOff': 'Capability management is off for this session; capabilities stay with the Host. Enable it under Capabilities & Context in settings and refresh before changing this session\'s choices.',
910
- 'capabilities.quick.savedPaused': 'Capabilities and context are off in settings; re-enable them and refresh before changing this session\'s choices.',
911
- 'capabilities.quick.savedManagementOff': 'Capability management is off in settings; re-enable it and refresh before changing this session\'s choices.',
912
- 'capabilities.quick.scope': 'Apply to',
913
- 'capabilities.quick.session': 'This session only',
914
- 'capabilities.quick.global': 'Save globally and update this session',
915
- 'capabilities.quick.sessionHint': 'Temporary choices belong to this session; ordinary refresh preserves them.',
916
- 'capabilities.quick.globalHint': 'Save defaults for new sessions and update this one immediately. Other existing sessions retain their plans.',
917
817
  'capabilities.quick.kind': 'Capability category',
918
818
  'capabilities.quick.all': 'All capabilities',
919
819
  'capabilities.quick.skills': 'Skills',
920
820
  'capabilities.quick.tools': 'Ordinary tools',
921
821
  'capabilities.quick.mcp': 'MCP servers and resources',
922
822
  'capabilities.quick.mcp_tools': 'MCP tools',
923
- 'capabilities.quick.noChange': 'No change (currently: {state})',
924
- 'capabilities.quick.undoTemp': 'Undo this session’s change (restores {state})',
925
- 'capabilities.quick.keepUnchanged': 'No change',
926
- 'capabilities.quick.undoChange': 'Undo this session’s change',
927
- 'capabilities.quick.upperRule': 'Let the level above decide',
928
- 'capabilities.quick.impact': 'Effective in this session: {state} · From: {source}',
929
- 'capabilities.quick.impactPending': 'Effective in this session: {state} · From: {source} · Pending apply',
930
- 'capabilities.quick.impactUpper': 'Effective in this session: decided by the level above',
931
- 'capabilities.quick.impactUpperPending': 'Effective in this session: decided by the level above · Pending apply',
932
- 'capabilities.quick.originPlan': 'the session plan',
933
- 'capabilities.quick.originSession': 'this session’s change',
934
- 'capabilities.action.enable': 'Enable',
935
- 'capabilities.action.close': 'Close',
936
- 'capabilities.quick.states': 'Saved: {saved} · Temporary: {temporary} · Effective: {effective}',
937
- 'capabilities.quick.apply': 'Submit and apply',
938
- 'capabilities.quick.prefill': 'Fill command draft',
939
823
  'capabilities.card.recorded': 'Session capabilities updated.',
940
824
  'capabilities.card.paused': 'Capabilities and context are off; this session stays with the Host capabilities.',
941
825
  'capabilities.card.off': 'Capability management is off; this session stays with the Host capabilities.',
942
826
  'capabilities.card.saved-only': 'Global settings saved; session update failed. {error}',
943
- 'capabilities.card.unavailable': 'Session unavailable; changes were not applied.',
827
+ 'capabilities.card.no-session': 'No active PTC session was found; changes were not applied.',
944
828
  'capabilities.card.usage': 'Command not executed; check its arguments.',
945
829
  'capabilities.card.catalogCount': '{count} capabilities',
946
830
  'capabilities.card.details': 'Session capability details',
831
+ 'capabilities.card.writes': 'Recorded {count} capability change(s)',
947
832
  'capabilities.card.browse': 'Browse capabilities',
948
833
  'capabilities.card.source': 'View original result',
949
834
  'capabilities.card.running': 'Running',
@@ -956,8 +841,10 @@ const CHROME_COPY = Object.freeze({
956
841
  'capabilities.receipt.pending': 'Capabilities prepared for session {session}; they take effect at its first accepted model step.',
957
842
  'capabilities.receipt.paused': 'Capabilities and context are off; session {session} stays with the Host capabilities.',
958
843
  'capabilities.receipt.off': 'Capability management is off; session {session} stays with the Host capabilities.',
959
- 'capabilities.receipt.unavailable': 'Select an active PTC session.',
960
844
  'capabilities.receipt.usage': 'Use /capabilities to inspect or /capabilities refresh to apply saved settings.',
845
+ 'capabilities.receipt.layer': 'via {layer}',
846
+ 'capabilities.receipt.record': 'Session {session} recorded {record}.',
847
+ 'capabilities.receipt.record.global': 'Global settings recorded {record}.',
961
848
  'bindings.toggleEnabled': 'Enabled “{name}” in saved configuration. The model catalog updates at the next accepted step; worker initialization is not yet established.',
962
849
  'bindings.toggleDisabled': 'Disabled “{name}” in saved configuration. The model catalog withdraws it at the next accepted step; earlier effects are unchanged.',
963
850
  'capabilities.observationGroup': 'Read-only session observation',
@@ -976,7 +863,7 @@ const CHROME_COPY = Object.freeze({
976
863
  'capabilities.globalCoverage': "Global uses / samples",
977
864
  'capabilities.contractSize': "Contract body size",
978
865
  'capabilities.directoryUsage': "Navigation: {bytes} / {budget} UTF-8 bytes",
979
- 'capabilities.statStatus.unavailable': "Statistics unavailable",
866
+ 'capabilities.statStatus.not-reported': "Statistics samples not reported",
980
867
  'capabilities.statStatus.no-samples': 'No samples yet',
981
868
  'capabilities.statStatus.pending-settlement': 'Recorded, awaiting settlement',
982
869
  'capabilities.statStatus.incomplete-window': "Incomplete window evidence",
@@ -1006,7 +893,6 @@ const CHROME_COPY = Object.freeze({
1006
893
  'capabilities.frozenHint': "These are the session’s effective frozen results, separate from named configurations.",
1007
894
 
1008
895
  'capabilities.reason.manual-override': 'Manual selection',
1009
- 'capabilities.serverHint': 'Disable an entire MCP server or configure its individual tools. Server closure takes precedence; tool preferences are retained when re-enabled.',
1010
896
  'capabilities.serverToggle': 'Enable MCP server {name}',
1011
897
  'capabilities.serverOff': 'Disabled',
1012
898
  'capabilities.serverOn': 'Enabled',
@@ -1020,31 +906,27 @@ const CHROME_COPY = Object.freeze({
1020
906
  'capabilities.reason.management-disabled': 'Host capability defaults',
1021
907
  'capabilities.reason.statistics-disabled': 'Usage statistics disabled',
1022
908
  'capabilities.reason.statistics-settings-invalid': 'Invalid statistics settings',
1023
- 'capabilities.reason.statistics-data-invalid': 'Statistics data unavailable',
1024
- 'capabilities.reason.statistics-unavailable': 'Insufficient or unavailable statistics',
909
+ 'capabilities.reason.statistics-data-invalid': 'Invalid statistics data',
910
+ 'capabilities.reason.statistics-unavailable': 'Insufficient statistics samples',
1025
911
  'capabilities.reason.workspace': 'Workspace statistics',
1026
912
  'capabilities.reason.global': 'Global statistics fallback',
1027
- 'capabilities.host': 'Host defaults',
1028
- 'capabilities.policy.inheritRule': 'Not set here',
1029
913
  'capabilities.policy.availabilityFilter': 'Saved availability',
1030
914
  'capabilities.policy.disclosureFilter': 'Saved disclosure',
1031
- 'capabilities.policy.frozenSource': 'Frozen source rule result',
1032
- 'capabilities.policy.effectiveDimensions': 'Effective dimensions and sources',
1033
915
  'capabilities.sort.availabilityRule': 'Availability rule',
1034
916
  'capabilities.sort.disclosureRule': 'Disclosure rule',
1035
- "capabilities.adaptive": "Allocate from evidence",
1036
917
  "capabilities.policy.rules": "Availability and disclosure rules",
1037
918
  "capabilities.policy.precedence": "Default → category → MCP source → item, independently for each dimension. MCP source closure wins and preserves child preferences.",
919
+ "capabilities.policy.layerAbove": "Layer above",
1038
920
  "capabilities.policy.default": "Default rule",
1039
921
  "capabilities.policy.categories": "Category rules",
1040
922
  "capabilities.policy.availability": "Availability",
1041
923
  "capabilities.policy.disclosure": "Disclosure",
1042
- "capabilities.policy.availabilityFor": "Availability for {name}",
924
+ "capabilities.dimension.availability": "On",
925
+ "capabilities.dimension.disclosure": "Disclosure",
1043
926
  "capabilities.policy.allocate.baseline": "Allocate descriptions from the common set",
1044
927
  "capabilities.policy.allocate.statistics": "Allocate descriptions from usage evidence",
1045
928
  "capabilities.policy.allocate.budget": "Bound evidence-based allocation by the contract budget",
1046
929
  "capabilities.policy.adaptiveHint": "Only evidence-based choices consume these inputs. Collection is separate; budgets never demote full contracts, and closing preserves disclosure preferences.",
1047
- "capabilities.policy.resolved": "Rule result: {availability} · {disclosure} ({source})",
1048
930
  "capabilities.policy.category.tool": "Tools",
1049
931
  "capabilities.policy.category.skill": "Skills",
1050
932
  "capabilities.policy.category.resource": "MCP resources and templates",
@@ -1053,48 +935,36 @@ const CHROME_COPY = Object.freeze({
1053
935
  "capabilities.reason.host-disclosure": "Host disclosure",
1054
936
  "capabilities.reason.availability-rule": "Availability rule",
1055
937
  "capabilities.reason.disclosure-rule": "Disclosure rule",
1056
- 'capabilities.previousSource': 'Previous source (not currently listed)',
1057
938
  'capabilities.management': 'Capability configuration',
1058
939
  'capabilities.foundation': 'Core execution environment',
1059
940
  'capabilities.foundationHint': 'Outside capability management',
1060
941
  'capabilities.types': 'Capability types',
1061
- 'capabilities.type.all': 'All',
1062
942
  'capabilities.type.tool': 'Tools',
1063
943
  'capabilities.type.skill': 'Skills',
1064
944
  'capabilities.type.resource': 'MCP',
1065
945
  'capabilities.type.server': 'MCP source',
1066
- 'capabilities.type.other': 'Other / Unconfirmed',
1067
- 'capabilities.sort': 'Sort by',
946
+ 'capabilities.type.binding': 'Binding',
1068
947
  'capabilities.sort.name': 'Name',
1069
948
  'capabilities.sort.id': 'Exact ID',
1070
949
  'capabilities.sort.strategy': 'Manual strategy',
1071
950
  'capabilities.sort.common': 'Common first',
1072
- 'capabilities.sortCycle': 'Sort ascending, descending, then restore the default order',
1073
951
  'capabilities.ascending': 'Sort ascending',
1074
952
  'capabilities.descending': 'Sort descending',
1075
953
  'capabilities.filters': 'Filters ({count})',
1076
954
  'capabilities.sourceFilter': 'Capability source',
1077
955
  'capabilities.strategyFilter': 'Manual strategy',
1078
956
  'capabilities.allSources': 'All sources',
1079
- 'capabilities.allStrategies': 'All strategies',
1080
- 'capabilities.onlyCommon': 'Common only',
1081
- 'capabilities.availabilityFilter': 'Availability',
1082
- 'capabilities.availability.all': 'All states',
1083
- 'capabilities.availability.available': 'Currently available',
1084
- 'capabilities.availability.unavailable': 'Currently unavailable',
1085
- 'capabilities.availability.unknown': 'Unconfirmed',
1086
- 'capabilities.clear': 'Clear filters',
1087
- 'capabilities.results': 'Showing {count} / {total}',
1088
957
  'capabilities.reloadCatalog': 'Reload catalog',
1089
958
  'capabilities.group.tool': 'Base tools · DSH tool surface',
1090
959
  'capabilities.group.mcp-tool': 'Extension tools · MCP',
1091
960
  'capabilities.group.skill': 'Skills · Instructions',
1092
961
  'capabilities.group.resource': 'MCP resources and templates',
1093
962
  'capabilities.group.other': 'Other capabilities / Unconfirmed type',
1094
- 'capabilities.group.unavailable': 'Currently unavailable · Saved preferences',
1095
963
  'capabilities.source.host': 'DSH tools',
1096
964
  'capabilities.source.mcp': 'MCP',
1097
- 'capabilities.source.unknown': 'Unconfirmed source',
965
+ 'capabilities.source.skill': 'Skill',
966
+ 'capabilities.source.multiple-servers': 'Multiple servers',
967
+ 'capabilities.source.separator': ', ',
1098
968
  'capabilities.source.project-dsh': 'Project skill (.dsh)',
1099
969
  'capabilities.source.project-agents': 'Project skill (.agents)',
1100
970
  'capabilities.source.user-dsh': 'User skill (.dsh)',
@@ -1105,22 +975,9 @@ const CHROME_COPY = Object.freeze({
1105
975
  'capabilities.source.other-skill': 'Other skill source',
1106
976
  'capabilities.commonBaseline': 'Common baseline',
1107
977
  'capabilities.details': 'Capability details',
1108
- 'capabilities.inBaseline': 'Included',
1109
- 'capabilities.notInBaseline': 'Not included',
1110
978
  'capabilities.savedStrategy': 'Saved strategy',
1111
- 'capabilities.restoreAutomatic': 'Restore automatic',
1112
979
  'capabilities.closedBaseline': 'Closed selection takes priority; the retained common preference does not participate.',
1113
- 'capabilities.skillDisclosure': 'Full Skill disclosure supplies its catalog description; the body loads only when used.',
1114
- 'capabilities.invocation.both': 'The model can load the body; users can also invoke /{name}.',
1115
- 'capabilities.invocation.model': 'Only the model can load the body; this Skill has no user slash invocation.',
1116
- 'capabilities.invocation.user': 'Only users can invoke /{name}; the model cannot load it with tools.skill.',
1117
- 'capabilities.invocation.varies': 'Invocation eligibility varies by session. Check model loading and user slash invocation in the target session.',
1118
- 'capabilities.catalogDescription': 'Capability description',
1119
- 'capabilities.removeSaved': 'Remove saved preferences',
1120
- 'capabilities.currentSession': 'Selected session plan',
1121
- 'capabilities.sessionSelector': 'Inspect session',
1122
- 'capabilities.notInSession': 'Not included in this session plan',
1123
- 'capabilities.baselineHint': 'When statistics are unavailable, common preferences favor full disclosure; explicit manual selections always take priority.',
980
+ 'capabilities.baselineHint': 'When statistics lack samples, common preferences favor full disclosure; explicit manual selections always take priority.',
1124
981
  'capabilities.managementOff': 'Capability management is off. Manual preferences remain editable; refresh existing sessions to apply the disabled configuration.',
1125
982
  'capabilities.applyGroup': 'Apply session capability settings',
1126
983
  'settings.toolsMenu': 'PTC Plus tools',
@@ -1131,7 +988,6 @@ const CHROME_COPY = Object.freeze({
1131
988
  'capabilities.cancelRefresh': 'Cancel refresh',
1132
989
  'capabilities.refreshCancelled': 'Stopped waiting; reload the plan to confirm its actual state.',
1133
990
  'capabilities.refreshFailed': 'Refresh failed: {error}',
1134
- 'capabilities.refreshUnavailable': 'The refresh command is unavailable in this session.',
1135
991
  'capabilities.refreshAcknowledged': 'DSH acknowledged the refresh operation.',
1136
992
  'capabilities.settingsTabs': 'Capability settings tabs',
1137
993
  'capabilities.tab.manual': 'Capability configuration',
@@ -1218,18 +1074,10 @@ const CHROME_COPY = Object.freeze({
1218
1074
  'capabilities.tab.budgets': 'Prompt settings',
1219
1075
  'capabilities.tab.plans': 'Configurations',
1220
1076
  'capabilities.savedStatisticsInvalid': 'Saved statistics are unusable. Suggested values are shown; edit to save them. Manual capability choices remain effective.',
1221
- 'capabilities.catalogUnavailable': 'Capability catalog unavailable: {error}. Saved choices remain editable.',
1222
1077
  'capabilities.search': 'Search name, purpose or source',
1223
- 'capabilities.catalogEmpty': 'No capability catalog is available yet. Open a PTC session, then reload.',
1224
1078
  'capabilities.noMatches': 'No matching capabilities',
1225
1079
  'capabilities.notAvailable': 'Not in the current catalog; saved selection retained',
1226
1080
  'capabilities.common': 'Common',
1227
- 'capabilities.baselineFor': 'Include {name} in common baseline',
1228
- 'capabilities.disclosureFor': 'Disclosure for {name}',
1229
- 'capabilities.automatic': 'Follow automatic',
1230
- 'capabilities.full': 'Full contract',
1231
- 'capabilities.on-demand': 'On demand',
1232
- 'capabilities.closed': 'Closed',
1233
1081
  'capabilities.statisticsEnabled': 'Usage statistics',
1234
1082
  'capabilities.windowSize': 'Sample window (session families)',
1235
1083
  'capabilities.minimumSamples': 'Minimum samples',
@@ -1240,8 +1088,6 @@ const CHROME_COPY = Object.freeze({
1240
1088
  'capabilities.refreshHint': 'Capability settings apply to new sessions; run /capabilities refresh to update an existing session.',
1241
1089
  'capabilities.unavailable': 'Cannot read plans: {error}',
1242
1090
  'capabilities.empty': 'No prepared session plans',
1243
- 'capabilities.pending': 'Saved settings await refresh',
1244
- 'capabilities.current': 'Using frozen plan',
1245
1091
  'capabilities.budget': 'Full contracts: {bytes} bytes; explicit overage: {overage} bytes',
1246
1092
  'capabilities.member': 'Capability',
1247
1093
  'capabilities.selection': 'Disclosure',
@@ -1374,7 +1220,6 @@ const CHROME_COPY = Object.freeze({
1374
1220
  'bindings.reviewAttention': 'Action status needs attention',
1375
1221
  'bindings.reviewUnconfirmed': 'The action result is unconfirmed. Refresh its status to check.',
1376
1222
  'bindings.reviewReadOnly': 'Read-only draft; current action eligibility is unconfirmed',
1377
- 'bindings.reviewUnavailable': 'Draft review panel is temporarily unavailable',
1378
1223
  'bindings.reviewRetry': 'Refresh action status',
1379
1224
  'bindings.commandAccepted': 'Request admitted; authoring result unknown',
1380
1225
  'bindings.commandAdmitting': 'Processing authoring request…',
@@ -1395,6 +1240,7 @@ const CHROME_COPY = Object.freeze({
1395
1240
  'memory.globalCount': '{count} global entries',
1396
1241
  'memory.empty': 'No reusable bindings',
1397
1242
  'memory.unavailable': 'Current binding state cannot be confirmed',
1243
+ 'memory.previousRuntime': 'This inventory came from a previous runtime and no longer describes the current environment; run a cell to observe it again',
1398
1244
  'memory.more': '{count} more bindings not shown',
1399
1245
  // Number-neutral so a single reuse stays grammatical without a plural rule.
1400
1246
  'memory.reuseCount': 'reused {count}\u00d7',