@lesliechan721/aw 0.1.0-beta.31 → 0.1.0-beta.32

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 (45) hide show
  1. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  2. package/dist/authoring/scripts/validate-plugin.mjs +5 -2
  3. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  4. package/dist/src/commands/aw-capabilities.d.ts +1 -1
  5. package/dist/src/commands/aw-capabilities.js +2 -0
  6. package/dist/src/commands/aw-capabilities.js.map +1 -1
  7. package/dist/src/tui/catalog-sources/session.d.ts +5 -1
  8. package/dist/src/tui/catalog-sources/session.js +6 -1
  9. package/dist/src/tui/catalog-sources/session.js.map +1 -1
  10. package/dist/src/tui/catalog-sources/types.d.ts +1 -0
  11. package/dist/src/tui/components.d.ts +1 -11
  12. package/dist/src/tui/components.js +9 -41
  13. package/dist/src/tui/components.js.map +1 -1
  14. package/dist/src/tui/config-value-presentation.d.ts +19 -0
  15. package/dist/src/tui/config-value-presentation.js +77 -0
  16. package/dist/src/tui/config-value-presentation.js.map +1 -0
  17. package/dist/src/tui/console-app-v4.d.ts +1 -1
  18. package/dist/src/tui/console-app-v4.js +885 -1121
  19. package/dist/src/tui/console-app-v4.js.map +1 -1
  20. package/dist/src/tui/controller.d.ts +8 -0
  21. package/dist/src/tui/controller.js +85 -18
  22. package/dist/src/tui/controller.js.map +1 -1
  23. package/dist/src/tui/diagnostics.d.ts +2 -1
  24. package/dist/src/tui/diagnostics.js +8 -1
  25. package/dist/src/tui/diagnostics.js.map +1 -1
  26. package/dist/src/tui/input-display.d.ts +1 -0
  27. package/dist/src/tui/input-display.js +13 -0
  28. package/dist/src/tui/input-display.js.map +1 -1
  29. package/dist/src/tui/model.d.ts +3 -2
  30. package/dist/src/tui/model.js +17 -33
  31. package/dist/src/tui/model.js.map +1 -1
  32. package/dist/src/tui/operation-diagnostic-screens.d.ts +5 -3
  33. package/dist/src/tui/operation-diagnostic-screens.js +26 -9
  34. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -1
  35. package/dist/src/tui/operation-history.js +5 -4
  36. package/dist/src/tui/operation-history.js.map +1 -1
  37. package/dist/src/tui/router.d.ts +4 -6
  38. package/dist/src/tui/router.js.map +1 -1
  39. package/dist/src/tui/screen-registry.d.ts +10 -19
  40. package/dist/src/tui/screen-registry.js +3 -4
  41. package/dist/src/tui/screen-registry.js.map +1 -1
  42. package/dist/src/tui/viewport.d.ts +1 -0
  43. package/dist/src/tui/viewport.js +23 -0
  44. package/dist/src/tui/viewport.js.map +1 -1
  45. package/package.json +3 -3
@@ -3,7 +3,7 @@ export interface DiagnosticImpactEntryViewModel {
3
3
  state: DiagnosticImpactState;
4
4
  message: string;
5
5
  }
6
- export type DiagnosticContextKey = 'platform' | 'scope' | 'pluginId' | 'dependencyPluginId' | 'field' | 'storeEntry' | 'compatibility';
6
+ export type DiagnosticContextKey = 'platform' | 'scope' | 'pluginId' | 'dependencyPluginId' | 'field' | 'storeEntry' | 'compatibility' | 'sourcePolicy' | 'freshness' | 'candidate';
7
7
  export interface DiagnosticTechnicalViewModel {
8
8
  code: string;
9
9
  stage?: string;
@@ -27,4 +27,5 @@ export interface DiagnosticSummaryViewModel {
27
27
  }
28
28
  export declare function safeDiagnosticCode(value: unknown, fallback: string): string;
29
29
  export declare function sanitizeDiagnosticText(value: string, sensitiveRoots?: readonly string[], sensitiveValues?: readonly string[]): string;
30
+ export declare function sanitizeDiagnosticDetailText(value: string, sensitiveRoots?: readonly string[], sensitiveValues?: readonly string[]): string;
30
31
  export declare function sanitizeDiagnosticCause(value: string | undefined): string | undefined;
@@ -28,7 +28,7 @@ function replaceRoot(value, root) {
28
28
  export function safeDiagnosticCode(value, fallback) {
29
29
  return typeof value === 'string' && SAFE_CODE.test(value) ? value : fallback;
30
30
  }
31
- export function sanitizeDiagnosticText(value, sensitiveRoots = [], sensitiveValues = []) {
31
+ function sanitizeDiagnosticValue(value, sensitiveRoots = [], sensitiveValues = []) {
32
32
  let output = value;
33
33
  for (const representation of collectSensitiveTokenRepresentations(sensitiveValues)) {
34
34
  output = output.replace(new RegExp(escapeRegExp(representation), 'gu'), '[REDACTED]');
@@ -61,10 +61,17 @@ export function sanitizeDiagnosticText(value, sensitiveRoots = [], sensitiveValu
61
61
  .replace(/(^|[\s("'=])[A-Za-z]:\\(?:[^\\\s]+\\)+[^\s,;)]*/gu, '$1[private-path]')
62
62
  .replace(/\s{2,}/gu, ' ')
63
63
  .trim();
64
+ return output;
65
+ }
66
+ export function sanitizeDiagnosticText(value, sensitiveRoots = [], sensitiveValues = []) {
67
+ const output = sanitizeDiagnosticValue(value, sensitiveRoots, sensitiveValues);
64
68
  return output.length <= MAX_DIAGNOSTIC_TEXT_LENGTH
65
69
  ? output
66
70
  : `${output.slice(0, MAX_DIAGNOSTIC_TEXT_LENGTH - 1)}…`;
67
71
  }
72
+ export function sanitizeDiagnosticDetailText(value, sensitiveRoots = [], sensitiveValues = []) {
73
+ return sanitizeDiagnosticValue(value, sensitiveRoots, sensitiveValues);
74
+ }
68
75
  export function sanitizeDiagnosticCause(value) {
69
76
  if (!value || NATIVE_CAUSE.test(value))
70
77
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tui/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tui/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AAyCrF,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,SAAS,GAAG,iCAAiC,CAAC;AACpD,MAAM,WAAW,GAAG,6FAA6F,CAAC;AAClH,MAAM,sBAAsB,GAAG,yDAAyD,CAAC;AACzF,MAAM,eAAe,GAAG,6EAA6E,CAAC;AACtG,MAAM,YAAY,GAAG,uPAAuP,CAAC;AAE7Q,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,IAAY;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;QACvB,UAAU;QACV,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;QAChC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,QAAgB;IACjE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/E,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAa,EACb,iBAAoC,EAAE,EACtC,kBAAqC,EAAE;IAEvC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,cAAc,IAAI,oCAAoC,CAAC,eAAe,CAAC,EAAE,CAAC;QACnF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,GAAG,MAAM;SACZ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;SACnC,OAAO,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAChD,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;SAC1B,OAAO,CAAC,oDAAoD,EAAE,YAAY,CAAC;SAC3E,OAAO,CAAC,sCAAsC,EAAE,eAAe,CAAC;SAChE,OAAO,CAAC,mMAAmM,EAAE,cAAc,CAAC;SAC5N,OAAO,CAAC,+LAA+L,EAAE,YAAY,CAAC;SACtN,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC;SAC/C,OAAO,CAAC,wGAAwG,EAAE,YAAY,CAAC,CAAC;IACnI,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;QACpB,EAAE,CAAC,OAAO,EAAE;QACZ,OAAO,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,MAAM,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,MAAM;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG;QACf,GAAG,cAAc;KAClB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,GAAG,MAAM;SACZ,OAAO,CAAC,yCAAyC,EAAE,kBAAkB,CAAC;SACtE,OAAO,CAAC,mDAAmD,EAAE,kBAAkB,CAAC;SAChF,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACV,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,iBAAoC,EAAE,EACtC,kBAAqC,EAAE;IAEvC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IAC/E,OAAO,MAAM,CAAC,MAAM,IAAI,0BAA0B;QAChD,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,iBAAoC,EAAE,EACtC,kBAAqC,EAAE;IAEvC,OAAO,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC5F,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -4,5 +4,6 @@ export declare function InputDisplay(props: {
4
4
  value: string;
5
5
  columns: number;
6
6
  sensitive?: boolean;
7
+ cursor?: number;
7
8
  placeholder?: string;
8
9
  }): React.JSX.Element;
@@ -30,6 +30,19 @@ export function renderInputTail(value, columns) {
30
30
  }
31
31
  export function InputDisplay(props) {
32
32
  const value = props.sensitive ? '•'.repeat(graphemes(props.value).length) : props.value;
33
+ if (props.cursor !== undefined && value) {
34
+ const parts = graphemes(value);
35
+ const cursor = Math.min(parts.length, Math.max(0, props.cursor));
36
+ const before = renderInputTail(parts.slice(0, cursor).join(''), props.columns);
37
+ const remaining = Math.max(0, props.columns - stringWidth(before) - 1);
38
+ let after = '';
39
+ for (const part of parts.slice(cursor)) {
40
+ if (stringWidth(after + part) > remaining)
41
+ break;
42
+ after += part;
43
+ }
44
+ return _jsxs(Text, { children: [before, _jsx(Text, { color: tuiTheme.colors.accent, children: "\u258C" }), after] });
45
+ }
33
46
  const visible = renderInputTail(value || props.placeholder || '', props.columns);
34
47
  return _jsxs(Text, { children: [visible, _jsx(Text, { color: tuiTheme.colors.accent, children: "\u258C" })] });
35
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"input-display.js","sourceRoot":"","sources":["../../../src/tui/input-display.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAClF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,OAAe;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,CAAC;QAC7C,IAAI,IAAI,GAAG,KAAK,GAAG,WAAW;YAAE,MAAM;QACtC,IAAI,IAAI,KAAK,CAAC;QACd,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAK5B;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACxF,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjF,OAAO,MAAC,IAAI,eAAE,OAAO,EAAC,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,uBAAU,IAAO,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"input-display.js","sourceRoot":"","sources":["../../../src/tui/input-display.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { PlatformName, PluginConfigFieldType, PluginConfigPreset, PluginConfigSchemaField, PluginConfigSchema, PluginConfigValue, Scope } from '../types.js';
1
+ export { configObjectHasSensitiveChild } from './config-value-presentation.js';
2
+ import type { PlatformName, PluginConfigFieldType, PluginConfigPreset, PluginConfigSchemaField, PluginConfigJoinSummary, PluginConfigSchema, PluginConfigValue, Scope } from '../types.js';
2
3
  import type { StatusActivationProjection, StatusExtensionProjection, StatusIntentProjection, StatusSharedNativeProjection, StatusV8Payload, StatusV8PluginSummary, StatusScopedTarget, StatusV8Component, StatusTargetRevision, TargetRevisionState } from '../commands/status-v6.js';
3
4
  import type { PluginContentOverview } from './plugin-content.js';
4
5
  import type { DependencyAssignmentSource } from '../commands/dependency-operation-plan.js';
@@ -271,6 +272,7 @@ export interface ConfigFieldViewModel {
271
272
  description?: string;
272
273
  type: PluginConfigFieldType;
273
274
  definition: PluginConfigSchemaField;
275
+ summary?: PluginConfigJoinSummary;
274
276
  displayValue: string;
275
277
  required: boolean;
276
278
  sensitive: boolean;
@@ -330,7 +332,6 @@ export interface ConfigPageViewModel {
330
332
  presets: ConfigPresetViewModel[];
331
333
  storedCount: number;
332
334
  }
333
- export declare function configObjectHasSensitiveChild(field: PluginConfigSchemaField): boolean;
334
335
  export type UserIssueCategory = 'incompleteInstallation' | 'artifactCollision' | 'sourceUnavailable' | 'sourceMissing' | 'sourceIdentityChanged' | 'requiredConfigMissing' | 'configLayerUnsupported' | 'scopeConflict' | 'dependencyMissing' | 'dependencyNotReady' | 'dependencyTargetUnsupported' | 'dependencyStillRequired' | 'dependencyGraphInvalid' | 'legacyState' | 'diagnostic';
335
336
  export type UserIssueGroup = 'sourceRemoved' | 'artifactCollision' | 'sourceUnavailable' | 'dependency' | 'scope' | 'config' | 'installation' | 'diagnostic';
336
337
  export type UserIssueActionId = 'install' | 'sync' | 'refreshAndSync' | 'reinstall' | 'cleanup' | 'remove' | 'refreshSource' | 'editSource' | 'retryLater' | 'reAddSource' | 'viewSourceChange' | 'openConfig' | 'keepUserScope' | 'keepProjectScope' | 'viewTechnical' | 'manualMigration' | 'installDependency' | 'reinstallDependency' | 'viewDependencyIssue' | 'viewDependencies';
@@ -1,3 +1,5 @@
1
+ import { configObjectHasSensitiveChild, presentConfigValue } from './config-value-presentation.js';
2
+ export { configObjectHasSensitiveChild } from './config-value-presentation.js';
1
3
  import { matchPluginConfigPreset, stablePluginConfigStringify, } from '@lesliechan721/aw-plugin-core/manifest';
2
4
  import { flattenStatusTargets, statusTargetActivation, statusTargetExtensions, statusTargetIntent, statusTargetOwnershipState, statusTargetSharedNative, } from '../commands/status-v6.js';
3
5
  import { buildAllowedLifecycleActions } from '../commands/operation-planner.js';
@@ -126,12 +128,6 @@ export function buildPluginUpdateSummary(options) {
126
128
  targets,
127
129
  };
128
130
  }
129
- export function configObjectHasSensitiveChild(field) {
130
- if (field.type !== 'object')
131
- return false;
132
- return Object.values(field.properties ?? {}).some((property) => property.sensitive === true)
133
- || (field.additionalProperties !== false && field.additionalProperties?.sensitive === true);
134
- }
135
131
  function compareText(left, right) {
136
132
  return left.localeCompare(right, 'en');
137
133
  }
@@ -1681,31 +1677,13 @@ export function buildTuiViewModel(options) {
1681
1677
  };
1682
1678
  }
1683
1679
  function displayConfigValue(options) {
1684
- if (!options.configured)
1685
- return options.inherited ? '继承' : '未设置';
1686
- if (options.privateValue)
1687
- return '已设置';
1688
- if (options.field.type === 'object'
1689
- && typeof options.value === 'object'
1690
- && options.value !== null
1691
- && !Array.isArray(options.value)) {
1692
- const object = options.value;
1693
- if (configObjectHasSensitiveChild(options.field)) {
1694
- const count = Object.keys(object).length;
1695
- return `已设置 · ${count === 0 ? '空对象' : `${count} 项`}`;
1696
- }
1697
- const preset = matchPluginConfigPreset(options.field, object);
1698
- const keys = Object.keys(object).sort((left, right) => left.localeCompare(right, 'en'));
1699
- const keySummary = keys.length === 0
1700
- ? '空对象'
1701
- : `${keys.length} 项${keys.length > 0 ? `(${keys.slice(0, 2).join('、')}${keys.length > 2 ? '…' : ''})` : ''}`;
1702
- return preset ? `方案“${preset.title}” · ${keySummary}` : `自定义 · ${keySummary}`;
1703
- }
1704
- if (typeof options.value === 'string')
1705
- return options.value;
1706
- if (options.value === undefined || options.value === null)
1707
- return '已设置';
1708
- return String(options.value);
1680
+ return presentConfigValue({
1681
+ definition: options.field,
1682
+ summary: options.summary,
1683
+ value: options.value,
1684
+ configured: options.configured,
1685
+ privateValue: options.privateValue,
1686
+ }).text;
1709
1687
  }
1710
1688
  function configSourceLabel(source) {
1711
1689
  if (!source)
@@ -1780,6 +1758,8 @@ export function buildConfigGroups(options) {
1780
1758
  && entry.effectiveValue !== null
1781
1759
  && (entry.valueState === 'configured' || entry.valueState === 'default')
1782
1760
  : entry?.storedSourceLayer !== undefined;
1761
+ const summaryName = options.schema.presentation?.fieldViews?.[key]?.summary;
1762
+ const summary = summaryName === undefined ? undefined : options.schema.presentation?.summaries?.[summaryName];
1783
1763
  const privateValue = schema.sensitive === true;
1784
1764
  const choices = schema.choices;
1785
1765
  const selectedValue = effectivePage ? entry?.effectiveValue : entry?.storedValue;
@@ -1844,8 +1824,10 @@ export function buildConfigGroups(options) {
1844
1824
  ...(schema.description ? { description: schema.description } : {}),
1845
1825
  type: schema.type,
1846
1826
  definition: configEditorDefinition(schema),
1847
- displayValue: selectedStoredInvalid ? '值无效' : displayConfigValue({
1827
+ ...(summary ? { summary } : {}),
1828
+ displayValue: selectedStoredInvalid ? '需修正' : displayConfigValue({
1848
1829
  field: schema,
1830
+ summary,
1849
1831
  privateValue,
1850
1832
  inherited,
1851
1833
  configured,
@@ -1864,8 +1846,9 @@ export function buildConfigGroups(options) {
1864
1846
  sourceLabel: effectivePage
1865
1847
  ? configSourceLabel(entry?.sourceLayer ?? null)
1866
1848
  : configured ? '本层已设置' : '继承',
1867
- effectiveDisplayValue: displayConfigValue({
1849
+ effectiveDisplayValue: effectiveEntry?.invalidOverride ? '需修正' : displayConfigValue({
1868
1850
  field: schema,
1851
+ summary,
1869
1852
  privateValue,
1870
1853
  inherited: false,
1871
1854
  configured: effectiveConfigured,
@@ -1887,6 +1870,7 @@ export function buildConfigGroups(options) {
1887
1870
  ? '值无效;保存可成功,但应用会被阻止'
1888
1871
  : displayConfigValue({
1889
1872
  field: schema,
1873
+ summary,
1890
1874
  privateValue,
1891
1875
  inherited: false,
1892
1876
  configured: fallbackConfigured,