@lesliechan721/aw 0.1.0-beta.64 → 0.1.0-beta.65

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 (302) hide show
  1. package/dist/authoring/assets/aw-runtime-config.mjs +3 -3
  2. package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -1
  3. package/dist/authoring/scripts/add-skill.mjs +3 -17
  4. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  5. package/dist/authoring/scripts/init-plugin.mjs +1 -0
  6. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  7. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  8. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +2 -0
  9. package/dist/authoring/scripts/lib/skill-scaffold.mjs +2 -0
  10. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  11. package/dist/authoring/scripts/validate-plugin.mjs +95 -698
  12. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  13. package/dist/scripts/aw-skill-eval-materializer.d.ts +2 -0
  14. package/dist/scripts/aw-skill-eval-materializer.js +74 -44
  15. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -1
  16. package/dist/scripts/bundle-plugins.js +10 -2
  17. package/dist/scripts/bundle-plugins.js.map +1 -1
  18. package/dist/scripts/plugin-staging.d.ts +1 -1
  19. package/dist/scripts/plugin-staging.js +1 -1
  20. package/dist/scripts/plugin-staging.js.map +1 -1
  21. package/dist/scripts/test-plugin-scripts.js +31 -31
  22. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  23. package/dist/src/commands/aw-capabilities.d.ts +1 -1
  24. package/dist/src/commands/aw-capabilities.js +2 -0
  25. package/dist/src/commands/aw-capabilities.js.map +1 -1
  26. package/dist/src/commands/console.js +4 -3
  27. package/dist/src/commands/console.js.map +1 -1
  28. package/dist/src/commands/intent-command.d.ts +30 -0
  29. package/dist/src/commands/intent-command.js +164 -0
  30. package/dist/src/commands/intent-command.js.map +1 -0
  31. package/dist/src/commands/operation-plan.d.ts +2 -0
  32. package/dist/src/commands/operation-plan.js +2 -1
  33. package/dist/src/commands/operation-plan.js.map +1 -1
  34. package/dist/src/commands/options.d.ts +3 -11
  35. package/dist/src/commands/options.js +11 -17
  36. package/dist/src/commands/options.js.map +1 -1
  37. package/dist/src/commands/plugin-capabilities.js +27 -33
  38. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  39. package/dist/src/commands/rebuild-command.d.ts +108 -6
  40. package/dist/src/commands/rebuild-command.js +617 -1549
  41. package/dist/src/commands/rebuild-command.js.map +1 -1
  42. package/dist/src/commands/rebuild-integration.d.ts +19 -3
  43. package/dist/src/commands/rebuild-integration.js +500 -459
  44. package/dist/src/commands/rebuild-integration.js.map +1 -1
  45. package/dist/src/commands/rebuild-operations.js +1 -2
  46. package/dist/src/commands/rebuild-operations.js.map +1 -1
  47. package/dist/src/commands/review-inspection.d.ts +2 -2
  48. package/dist/src/commands/review-inspection.js +30 -86
  49. package/dist/src/commands/review-inspection.js.map +1 -1
  50. package/dist/src/commands/review-preparation.js +16 -7
  51. package/dist/src/commands/review-preparation.js.map +1 -1
  52. package/dist/src/commands/skill-eval.d.ts +2 -0
  53. package/dist/src/commands/skill-eval.js +15 -9
  54. package/dist/src/commands/skill-eval.js.map +1 -1
  55. package/dist/src/commands/status-v6.d.ts +38 -5
  56. package/dist/src/commands/status-v6.js +269 -102
  57. package/dist/src/commands/status-v6.js.map +1 -1
  58. package/dist/src/commands/targets-command.d.ts +27 -0
  59. package/dist/src/commands/targets-command.js +77 -0
  60. package/dist/src/commands/targets-command.js.map +1 -0
  61. package/dist/src/commands/write-commands.js +5 -5
  62. package/dist/src/commands/write-commands.js.map +1 -1
  63. package/dist/src/eval/manifest-v1.d.ts +2 -0
  64. package/dist/src/eval/manifest-v1.js +7 -2
  65. package/dist/src/eval/manifest-v1.js.map +1 -1
  66. package/dist/src/generators/local-plugin.d.ts +2 -1
  67. package/dist/src/generators/local-plugin.js +111 -108
  68. package/dist/src/generators/local-plugin.js.map +1 -1
  69. package/dist/src/index.d.ts +10 -17
  70. package/dist/src/index.js +585 -1349
  71. package/dist/src/index.js.map +1 -1
  72. package/dist/src/intent/deployment-preferences.d.ts +63 -0
  73. package/dist/src/intent/deployment-preferences.js +170 -0
  74. package/dist/src/intent/deployment-preferences.js.map +1 -0
  75. package/dist/src/intent/diagnostics.d.ts +11 -0
  76. package/dist/src/intent/diagnostics.js +14 -0
  77. package/dist/src/intent/diagnostics.js.map +1 -0
  78. package/dist/src/intent/intent-codec.d.ts +19 -0
  79. package/dist/src/intent/intent-codec.js +117 -0
  80. package/dist/src/intent/intent-codec.js.map +1 -0
  81. package/dist/src/intent/intent-store.d.ts +43 -0
  82. package/dist/src/intent/intent-store.js +118 -0
  83. package/dist/src/intent/intent-store.js.map +1 -0
  84. package/dist/src/intent/scope-context.d.ts +33 -0
  85. package/dist/src/intent/scope-context.js +145 -0
  86. package/dist/src/intent/scope-context.js.map +1 -0
  87. package/dist/src/intent/work-context.d.ts +13 -0
  88. package/dist/src/intent/work-context.js +22 -0
  89. package/dist/src/intent/work-context.js.map +1 -0
  90. package/dist/src/output/command-receipt.js +16 -9
  91. package/dist/src/output/command-receipt.js.map +1 -1
  92. package/dist/src/portable/commands.d.ts +18 -8
  93. package/dist/src/portable/commands.js +46 -562
  94. package/dist/src/portable/commands.js.map +1 -1
  95. package/dist/src/portable/historical-materialization.d.ts +22 -0
  96. package/dist/src/portable/historical-materialization.js +124 -0
  97. package/dist/src/portable/historical-materialization.js.map +1 -0
  98. package/dist/src/portable/materializer.d.ts +8 -0
  99. package/dist/src/portable/materializer.js +75 -44
  100. package/dist/src/portable/materializer.js.map +1 -1
  101. package/dist/src/portable/recovery-layout.d.ts +17 -0
  102. package/dist/src/portable/recovery-layout.js +55 -0
  103. package/dist/src/portable/recovery-layout.js.map +1 -0
  104. package/dist/src/portable/recovery.d.ts +143 -0
  105. package/dist/src/portable/recovery.js +339 -0
  106. package/dist/src/portable/recovery.js.map +1 -0
  107. package/dist/src/portable/writer.d.ts +64 -0
  108. package/dist/src/portable/writer.js +316 -0
  109. package/dist/src/portable/writer.js.map +1 -0
  110. package/dist/src/recovery/coordinator.d.ts +137 -0
  111. package/dist/src/recovery/coordinator.js +1198 -0
  112. package/dist/src/recovery/coordinator.js.map +1 -0
  113. package/dist/src/recovery/demand.d.ts +44 -0
  114. package/dist/src/recovery/demand.js +178 -0
  115. package/dist/src/recovery/demand.js.map +1 -0
  116. package/dist/src/recovery/joint-coordinator.d.ts +24 -0
  117. package/dist/src/recovery/joint-coordinator.js +770 -0
  118. package/dist/src/recovery/joint-coordinator.js.map +1 -0
  119. package/dist/src/recovery/joint-demand.d.ts +68 -0
  120. package/dist/src/recovery/joint-demand.js +166 -0
  121. package/dist/src/recovery/joint-demand.js.map +1 -0
  122. package/dist/src/recovery/receipt.d.ts +81 -0
  123. package/dist/src/recovery/receipt.js +2 -0
  124. package/dist/src/recovery/receipt.js.map +1 -0
  125. package/dist/src/recovery/retirement.d.ts +45 -0
  126. package/dist/src/recovery/retirement.js +366 -0
  127. package/dist/src/recovery/retirement.js.map +1 -0
  128. package/dist/src/recovery/status.d.ts +108 -0
  129. package/dist/src/recovery/status.js +417 -0
  130. package/dist/src/recovery/status.js.map +1 -0
  131. package/dist/src/recovery/types.d.ts +86 -0
  132. package/dist/src/recovery/types.js +2 -0
  133. package/dist/src/recovery/types.js.map +1 -0
  134. package/dist/src/review/review-profile.d.ts +2 -1
  135. package/dist/src/review/review-profile.js +15 -15
  136. package/dist/src/review/review-profile.js.map +1 -1
  137. package/dist/src/review/review-selection.d.ts +1 -2
  138. package/dist/src/review/review-selection.js +40 -114
  139. package/dist/src/review/review-selection.js.map +1 -1
  140. package/dist/src/review/review-types.d.ts +4 -4
  141. package/dist/src/review/review-types.js.map +1 -1
  142. package/dist/src/review/skill-materialization.js +15 -6
  143. package/dist/src/review/skill-materialization.js.map +1 -1
  144. package/dist/src/review/source-binding.d.ts +14 -4
  145. package/dist/src/review/source-binding.js +62 -117
  146. package/dist/src/review/source-binding.js.map +1 -1
  147. package/dist/src/tui/agent-management.d.ts +23 -0
  148. package/dist/src/tui/agent-management.js +217 -0
  149. package/dist/src/tui/agent-management.js.map +1 -0
  150. package/dist/src/tui/agent-settings.d.ts +44 -0
  151. package/dist/src/tui/agent-settings.js +98 -0
  152. package/dist/src/tui/agent-settings.js.map +1 -0
  153. package/dist/src/tui/components.d.ts +3 -0
  154. package/dist/src/tui/components.js +10 -1
  155. package/dist/src/tui/components.js.map +1 -1
  156. package/dist/src/tui/config-references.d.ts +6 -3
  157. package/dist/src/tui/config-references.js +17 -12
  158. package/dist/src/tui/config-references.js.map +1 -1
  159. package/dist/src/tui/console-app-v4.d.ts +1 -2
  160. package/dist/src/tui/console-app-v4.js +1533 -1047
  161. package/dist/src/tui/console-app-v4.js.map +1 -1
  162. package/dist/src/tui/controller-runtime.d.ts +2 -1
  163. package/dist/src/tui/controller-runtime.js +405 -1626
  164. package/dist/src/tui/controller-runtime.js.map +1 -1
  165. package/dist/src/tui/controller.d.ts +131 -81
  166. package/dist/src/tui/controller.js +307 -227
  167. package/dist/src/tui/controller.js.map +1 -1
  168. package/dist/src/tui/entity-cards.d.ts +2 -2
  169. package/dist/src/tui/entity-cards.js +98 -20
  170. package/dist/src/tui/entity-cards.js.map +1 -1
  171. package/dist/src/tui/glossary.d.ts +2 -0
  172. package/dist/src/tui/glossary.js +20 -0
  173. package/dist/src/tui/glossary.js.map +1 -1
  174. package/dist/src/tui/model.d.ts +28 -10
  175. package/dist/src/tui/model.js +41 -41
  176. package/dist/src/tui/model.js.map +1 -1
  177. package/dist/src/tui/operation-review-planner.d.ts +2 -0
  178. package/dist/src/tui/operation-review-planner.js +58 -122
  179. package/dist/src/tui/operation-review-planner.js.map +1 -1
  180. package/dist/src/tui/plugin-content.js +7 -4
  181. package/dist/src/tui/plugin-content.js.map +1 -1
  182. package/dist/src/tui/plugin-detail.d.ts +22 -3
  183. package/dist/src/tui/plugin-detail.js +113 -26
  184. package/dist/src/tui/plugin-detail.js.map +1 -1
  185. package/dist/src/tui/reader.d.ts +1 -0
  186. package/dist/src/tui/reader.js +3 -1
  187. package/dist/src/tui/reader.js.map +1 -1
  188. package/dist/src/tui/router.d.ts +23 -33
  189. package/dist/src/tui/router.js.map +1 -1
  190. package/dist/src/tui/scoped-flow.d.ts +45 -0
  191. package/dist/src/tui/scoped-flow.js +96 -0
  192. package/dist/src/tui/scoped-flow.js.map +1 -0
  193. package/dist/src/tui/scoped-inventory.d.ts +122 -0
  194. package/dist/src/tui/scoped-inventory.js +225 -0
  195. package/dist/src/tui/scoped-inventory.js.map +1 -0
  196. package/dist/src/tui/screen-registry.d.ts +25 -25
  197. package/dist/src/tui/screen-registry.js +3 -7
  198. package/dist/src/tui/screen-registry.js.map +1 -1
  199. package/dist/src/tui/session-console-app.js +1 -1
  200. package/dist/src/tui/session-console-app.js.map +1 -1
  201. package/dist/src/tui/session-host.js +12 -2
  202. package/dist/src/tui/session-host.js.map +1 -1
  203. package/dist/src/types.d.ts +15 -12
  204. package/dist/src/types.js.map +1 -1
  205. package/dist/src/utils/agent-version.js +2 -0
  206. package/dist/src/utils/agent-version.js.map +1 -1
  207. package/dist/src/utils/artifact-plan.js +13 -6
  208. package/dist/src/utils/artifact-plan.js.map +1 -1
  209. package/dist/src/utils/artifact-renderer.d.ts +6 -3
  210. package/dist/src/utils/artifact-renderer.js +27 -32
  211. package/dist/src/utils/artifact-renderer.js.map +1 -1
  212. package/dist/src/utils/artifact-request.d.ts +1 -0
  213. package/dist/src/utils/artifact-request.js +22 -12
  214. package/dist/src/utils/artifact-request.js.map +1 -1
  215. package/dist/src/utils/artifact-sources.d.ts +2 -2
  216. package/dist/src/utils/bundle-layout.js +18 -16
  217. package/dist/src/utils/bundle-layout.js.map +1 -1
  218. package/dist/src/utils/catalog-digests.js +2 -0
  219. package/dist/src/utils/catalog-digests.js.map +1 -1
  220. package/dist/src/utils/catalog-runtime-projection.d.ts +4 -3
  221. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  222. package/dist/src/utils/catalog-source-references.d.ts +5 -0
  223. package/dist/src/utils/catalog-source-references.js +42 -57
  224. package/dist/src/utils/catalog-source-references.js.map +1 -1
  225. package/dist/src/utils/claude-native-render-receipt.d.ts +14 -0
  226. package/dist/src/utils/claude-native-render-receipt.js +26 -0
  227. package/dist/src/utils/claude-native-render-receipt.js.map +1 -0
  228. package/dist/src/utils/claude-skills-root.js +14 -3
  229. package/dist/src/utils/claude-skills-root.js.map +1 -1
  230. package/dist/src/utils/codex-manager.js +6 -12
  231. package/dist/src/utils/codex-manager.js.map +1 -1
  232. package/dist/src/utils/codex-native-observation.js +29 -13
  233. package/dist/src/utils/codex-native-observation.js.map +1 -1
  234. package/dist/src/utils/codex-reconciler.d.ts +2 -5
  235. package/dist/src/utils/codex-reconciler.js +25 -1
  236. package/dist/src/utils/codex-reconciler.js.map +1 -1
  237. package/dist/src/utils/codex-surface-analysis.js +5 -3
  238. package/dist/src/utils/codex-surface-analysis.js.map +1 -1
  239. package/dist/src/utils/local-marketplace.d.ts +14 -2
  240. package/dist/src/utils/local-marketplace.js +209 -42
  241. package/dist/src/utils/local-marketplace.js.map +1 -1
  242. package/dist/src/utils/managed-command-evidence.js +1 -1
  243. package/dist/src/utils/managed-command-evidence.js.map +1 -1
  244. package/dist/src/utils/managed-command-materialization.d.ts +4 -0
  245. package/dist/src/utils/managed-command-materialization.js +15 -6
  246. package/dist/src/utils/managed-command-materialization.js.map +1 -1
  247. package/dist/src/utils/managed-command-store.d.ts +15 -0
  248. package/dist/src/utils/managed-command-store.js +73 -8
  249. package/dist/src/utils/managed-command-store.js.map +1 -1
  250. package/dist/src/utils/native-cli.d.ts +2 -0
  251. package/dist/src/utils/native-cli.js +22 -0
  252. package/dist/src/utils/native-cli.js.map +1 -1
  253. package/dist/src/utils/native-demand.d.ts +10 -0
  254. package/dist/src/utils/native-demand.js +4 -0
  255. package/dist/src/utils/native-demand.js.map +1 -0
  256. package/dist/src/utils/ownership.js +2 -0
  257. package/dist/src/utils/ownership.js.map +1 -1
  258. package/dist/src/utils/paths.js +1 -1
  259. package/dist/src/utils/paths.js.map +1 -1
  260. package/dist/src/utils/platform-support.d.ts +1 -1
  261. package/dist/src/utils/platform-support.js +1 -1
  262. package/dist/src/utils/platform-support.js.map +1 -1
  263. package/dist/src/utils/plugin-config-impact.d.ts +3 -0
  264. package/dist/src/utils/plugin-config-impact.js +115 -273
  265. package/dist/src/utils/plugin-config-impact.js.map +1 -1
  266. package/dist/src/utils/plugin-config-references.d.ts +9 -2
  267. package/dist/src/utils/plugin-config-references.js +75 -85
  268. package/dist/src/utils/plugin-config-references.js.map +1 -1
  269. package/dist/src/utils/plugin-config-write.d.ts +58 -1
  270. package/dist/src/utils/plugin-config-write.js +756 -809
  271. package/dist/src/utils/plugin-config-write.js.map +1 -1
  272. package/dist/src/utils/plugin-config.d.ts +47 -46
  273. package/dist/src/utils/plugin-config.js +292 -833
  274. package/dist/src/utils/plugin-config.js.map +1 -1
  275. package/dist/src/utils/plugin-scripts.d.ts +11 -6
  276. package/dist/src/utils/plugin-scripts.js +52 -35
  277. package/dist/src/utils/plugin-scripts.js.map +1 -1
  278. package/dist/src/utils/runtime-config.js +5 -4
  279. package/dist/src/utils/runtime-config.js.map +1 -1
  280. package/dist/src/utils/runtime-skill-closure.d.ts +2 -2
  281. package/dist/src/utils/runtime-skill-closure.js.map +1 -1
  282. package/dist/src/utils/state-paths.d.ts +8 -3
  283. package/dist/src/utils/state-paths.js +53 -16
  284. package/dist/src/utils/state-paths.js.map +1 -1
  285. package/dist/src/utils/windows-npm-shim.d.ts +2 -0
  286. package/dist/src/utils/windows-npm-shim.js +5 -7
  287. package/dist/src/utils/windows-npm-shim.js.map +1 -1
  288. package/dist/vitest.config.js +1 -0
  289. package/dist/vitest.config.js.map +1 -1
  290. package/package.json +3 -3
  291. package/dist/src/commands/sync-command.d.ts +0 -40
  292. package/dist/src/commands/sync-command.js +0 -254
  293. package/dist/src/commands/sync-command.js.map +0 -1
  294. package/dist/src/portable/skills-cli.d.ts +0 -51
  295. package/dist/src/portable/skills-cli.js +0 -202
  296. package/dist/src/portable/skills-cli.js.map +0 -1
  297. package/dist/src/tui/project-inventory.d.ts +0 -68
  298. package/dist/src/tui/project-inventory.js +0 -203
  299. package/dist/src/tui/project-inventory.js.map +0 -1
  300. package/dist/src/utils/plugin-intent-state.d.ts +0 -49
  301. package/dist/src/utils/plugin-intent-state.js +0 -320
  302. package/dist/src/utils/plugin-intent-state.js.map +0 -1
@@ -169,9 +169,10 @@ function isPureNativeCodexPlacement(placement) {
169
169
  function parsedScopedUninstallRecovery(recovery, expectedPlatform) {
170
170
  if (recovery.command !== 'uninstall' || !recovery.scope)
171
171
  return undefined;
172
- const match = /(?:^|\s)aw uninstall ([^\s]+) --platform (codex|claude) --scope (user|project)(?:,|,|\s|$)/u
172
+ const match = /(?:^|\s)aw plugin cleanup ([^\s]+) --target (codex|claude) --scope (user|project)(?:,|,|\s|$)/u
173
173
  .exec(recovery.description);
174
- if (!match || match[2] !== expectedPlatform || match[3] !== recovery.scope)
174
+ if (!match || match[2] !== expectedPlatform
175
+ || match[3] !== recovery.scope)
175
176
  return undefined;
176
177
  return { pluginId: match[1], scope: recovery.scope, description: recovery.description };
177
178
  }
@@ -1160,19 +1161,19 @@ function configIssues(pluginSummaries) {
1160
1161
  issueId: `config:${summary.pluginId}:unsupported-project-layer`,
1161
1162
  category: 'configLayerUnsupported',
1162
1163
  title: `${summary.displayName ?? summary.pluginName} · 项目设置包含旧值`,
1163
- explanation: '本项目旧值不再受支持;当前继承个人或插件默认。',
1164
- impact: ['旧值不会参与生成。可以进入项目设置删除旧值。'],
1164
+ explanation: '项目配置值不再受支持。请使用用户公共或平台配置。',
1165
+ impact: ['旧项目值不会参与生成。请在用户配置中重新设置所需值。'],
1165
1166
  entity: { kind: 'plugin', id: summary.pluginId },
1166
1167
  pluginId: summary.pluginId,
1167
1168
  sourceId,
1168
- configLayer: { scope: 'project' },
1169
+ configLayer: { profile: 'common', context: 'project' },
1169
1170
  actions: [
1170
- { id: 'openConfig', label: '删除旧值', description: '进入项目设置并恢复继承' },
1171
+ { id: 'openConfig', label: '打开用户配置', description: '在当前项目上下文中设置用户配置' },
1171
1172
  { id: 'viewTechnical', label: '查看字段详情' },
1172
1173
  ],
1173
1174
  technicalDetails: unsupported.map((entry) => ({
1174
1175
  code: entry.type,
1175
- message: `${entry.title} · project · 实际使用 user/default`,
1176
+ message: `${entry.title} · 旧项目配置层不再读取`,
1176
1177
  })),
1177
1178
  });
1178
1179
  }
@@ -1183,11 +1184,11 @@ function configIssues(pluginSummaries) {
1183
1184
  const invalid = types.has('invalid-config') || types.has('sharedCompositeContainsLocalPath');
1184
1185
  const sources = new Set(blockingIssues.map((issue) => issue.source));
1185
1186
  const onlySource = sources.size === 1 ? [...sources][0] : undefined;
1186
- const configLayer = onlySource === 'user'
1187
- ? { scope: 'user' }
1188
- : onlySource === 'project'
1189
- ? { scope: 'project' }
1190
- : undefined;
1187
+ const context = blockingIssues.some((issue) => issue.scope === 'project') ? 'project' : 'user';
1188
+ const platforms = new Set(blockingIssues.flatMap((issue) => issue.platform ? [issue.platform] : []));
1189
+ const onlyPlatform = platforms.size === 1 ? [...platforms][0] : undefined;
1190
+ const configLayer = onlySource === 'common' ? { profile: 'common', context }
1191
+ : onlyPlatform ? { profile: onlyPlatform, context } : undefined;
1191
1192
  issues.push({
1192
1193
  issueId: `config:${summary.pluginId}:${invalid ? 'invalid' : 'required'}`,
1193
1194
  category: 'requiredConfigMissing',
@@ -1199,12 +1200,12 @@ function configIssues(pluginSummaries) {
1199
1200
  entity: { kind: 'plugin', id: summary.pluginId },
1200
1201
  pluginId: summary.pluginId,
1201
1202
  sourceId,
1202
- requiredFields: blockingIssues.map(({ key, title, type, source, scope }) => ({
1203
- key, title, type, source, scope,
1203
+ requiredFields: blockingIssues.map(({ key, title, type, source, scope, platform }) => ({
1204
+ key, title, type, source, scope, platform,
1204
1205
  })),
1205
1206
  ...(configLayer ? { configLayer } : {}),
1206
1207
  actions: [
1207
- { id: 'openConfig', label: invalid ? '修正设置' : '完成设置', description: configLayer ? '进入建议的设置层' : '选择个人或项目设置层' },
1208
+ { id: 'openConfig', label: invalid ? '修正设置' : '完成设置', description: configLayer ? '进入相关用户配置' : '选择公共或平台配置' },
1208
1209
  { id: 'viewTechnical', label: '查看字段详情' },
1209
1210
  ],
1210
1211
  technicalDetails: blockingIssues.map((entry) => ({
@@ -1273,7 +1274,8 @@ function issueDiagnostic(issue, sourceDetails) {
1273
1274
  })),
1274
1275
  { state: 'preserved', message: preserved },
1275
1276
  ];
1276
- const primaryAction = issue.actions.find((action) => action.id !== 'viewTechnical');
1277
+ const primaryAction = issue.actions.find((action) => action.id !== 'viewTechnical'
1278
+ && action.id !== 'keepProjectScope' && action.id !== 'keepUserScope');
1277
1279
  const nextStep = primaryAction
1278
1280
  ? `${primaryAction.label},然后重新检查当前状态。`
1279
1281
  : '打开技术详情,记录安全错误代码后重新检查。';
@@ -1304,7 +1306,7 @@ function issueDiagnostic(issue, sourceDetails) {
1304
1306
  const checks = issue.category === 'legacyState'
1305
1307
  ? [
1306
1308
  '不自动迁移旧版状态。',
1307
- '运行 aw status --json,记录公开错误 code。',
1309
+ '运行 aw plugin status --json,记录公开错误 code。',
1308
1310
  '备份相关 AW 配置。',
1309
1311
  '按技术详情使用受支持命令或人工处理。',
1310
1312
  '再次运行状态检查。',
@@ -1699,8 +1701,8 @@ function configSourceLabel(source) {
1699
1701
  return '未设置';
1700
1702
  return {
1701
1703
  default: '默认值',
1702
- user: '个人默认',
1703
- project: '当前项目',
1704
+ common: '公共配置',
1705
+ platform: '平台配置',
1704
1706
  }[source];
1705
1707
  }
1706
1708
  function configEditorDefinition(field) {
@@ -1752,7 +1754,7 @@ export function buildConfigGroups(options) {
1752
1754
  const entryByKey = new Map(options.read.fields.map((field) => [field.key, field]));
1753
1755
  const effectiveEntryByKey = new Map((options.effectiveRead ?? options.read).fields.map((field) => [field.key, field]));
1754
1756
  const effectivePage = options.read.scope === 'effective';
1755
- const layerEntry = (layer, key) => options.layerReads?.[layer]?.fields.find((field) => field.key === key);
1757
+ const selectedSource = options.read.platform ? 'platform' : 'common';
1756
1758
  const fieldModel = (key) => {
1757
1759
  const schema = options.schema.fields[key];
1758
1760
  const entry = entryByKey.get(key);
@@ -1772,7 +1774,7 @@ export function buildConfigGroups(options) {
1772
1774
  const summaries = presentation && 'summaries' in presentation ? presentation.summaries : undefined;
1773
1775
  const summary = fieldView?.summary ? summaries?.[fieldView.summary] : undefined;
1774
1776
  const itemSummary = fieldView?.itemSummary ? summaries?.[fieldView.itemSummary] : undefined;
1775
- const privateValue = schema.sensitive === true;
1777
+ const privateValue = schema.sensitive === true || configObjectHasSensitiveChild(schema);
1776
1778
  const choices = schema.choices;
1777
1779
  const selectedValue = effectivePage ? entry?.effectiveValue : entry?.storedValue;
1778
1780
  const selectedRawValue = effectivePage
@@ -1782,29 +1784,26 @@ export function buildConfigGroups(options) {
1782
1784
  && entry?.storedSourceLayer !== undefined
1783
1785
  && entry.storedValue === undefined;
1784
1786
  const invalidOverrideSourceCandidate = selectedStoredInvalid
1785
- ? (effectivePage ? entry?.invalidOverride?.sourceLayer : options.read.scope)
1787
+ ? selectedSource
1786
1788
  : entry?.invalidOverride?.sourceLayer;
1787
- const invalidOverrideSource = invalidOverrideSourceCandidate === 'user'
1788
- || invalidOverrideSourceCandidate === 'project'
1789
+ const invalidOverrideSource = invalidOverrideSourceCandidate === 'common'
1790
+ || invalidOverrideSourceCandidate === 'platform'
1789
1791
  ? invalidOverrideSourceCandidate
1790
1792
  : undefined;
1791
1793
  const invalidOverride = invalidOverrideSource !== undefined;
1792
1794
  const invalidOverrideOwnedByLayer = !effectivePage
1793
- && invalidOverrideSource === options.read.scope;
1795
+ && invalidOverrideSource === selectedSource;
1794
1796
  const effectiveConfigured = effectiveEntry?.sourceLayer !== undefined
1795
1797
  && effectiveEntry.sourceLayer !== null
1796
1798
  && effectiveEntry.effectiveValue !== undefined
1797
1799
  && effectiveEntry.effectiveValue !== null
1798
1800
  && (effectiveEntry.valueState === 'configured' || effectiveEntry.valueState === 'default');
1799
- const omittedLayer = options.read.scope === 'user'
1800
- ? 'user'
1801
- : 'project';
1802
- const fallback = options.read.scope === 'user'
1803
- ? undefined
1804
- : ['project', 'user']
1805
- .filter((layer) => layer !== omittedLayer)
1806
- .map((layer) => ({ layer, entry: layerEntry(layer, key) }))
1807
- .find((candidate) => candidate.entry?.storedSourceLayer !== undefined);
1801
+ const commonEntry = options.read.platform
1802
+ ? options.layerReads?.common?.fields.find((field) => field.key === key)
1803
+ : undefined;
1804
+ const fallback = commonEntry?.storedSourceLayer !== undefined
1805
+ ? { layer: 'common', entry: commonEntry }
1806
+ : undefined;
1808
1807
  const projectedFallback = entry?.fallback;
1809
1808
  const fallbackInvalid = projectedFallback?.state === 'invalid';
1810
1809
  const fallbackValue = projectedFallback?.state === 'valid'
@@ -1813,8 +1812,8 @@ export function buildConfigGroups(options) {
1813
1812
  ? undefined
1814
1813
  : fallback?.entry?.storedValue ?? schema.default;
1815
1814
  const fallbackRawValue = projectedFallback?.state === 'valid'
1816
- ? projectedFallback.sourceLayer === 'user'
1817
- ? options.rawLayerValues?.user?.[key] ?? fallbackValue
1815
+ ? projectedFallback.sourceLayer === 'common'
1816
+ ? options.rawLayerValues?.common?.[key] ?? fallbackValue
1818
1817
  : fallbackValue
1819
1818
  : projectedFallback
1820
1819
  ? undefined
@@ -1849,10 +1848,8 @@ export function buildConfigGroups(options) {
1849
1848
  }),
1850
1849
  required: schema.required === true,
1851
1850
  sensitive: schema.sensitive === true,
1852
- writable: (entry?.writable ?? effectivePage)
1853
- && !(options.read.scope === 'project' && privateValue),
1854
- canSet: (entry?.canSet ?? effectivePage)
1855
- && !(options.read.scope === 'project' && privateValue),
1851
+ writable: entry?.writable ?? effectivePage,
1852
+ canSet: entry?.canSet ?? effectivePage,
1856
1853
  canUnset: entry?.canUnset ?? false,
1857
1854
  dirty: options.dirtyKeys?.has(key) === true,
1858
1855
  inherited,
@@ -1987,7 +1984,10 @@ export function buildConfigGroups(options) {
1987
1984
  export function buildConfigPage(options) {
1988
1985
  return {
1989
1986
  pluginId: options.pluginId,
1990
- layer: { scope: options.read.scope },
1987
+ profile: options.read.platform ?? 'common',
1988
+ context: options.context ?? 'user',
1989
+ layer: { profile: options.read.platform ?? 'common', context: options.context ?? 'user',
1990
+ view: options.read.scope === 'effective' ? 'effective' : 'stored' },
1991
1991
  groups: buildConfigGroups(options),
1992
1992
  presets: [],
1993
1993
  storedCount: options.read.fields.filter((field) => field.storedSourceLayer !== undefined).length,