@meshmakers/octo-meshboard 3.4.1490 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,11 +3,11 @@ import * as _angular_core from '@angular/core';
3
3
  import { Signal, AfterViewInit, OnChanges, EventEmitter, SimpleChanges, Type, OnDestroy, OnInit, EnvironmentProviders, InjectionToken, Provider } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import * as i1 from '@meshmakers/shared-ui';
6
- import { EntitySelectDialogDataSource, ColumnDefinition, DialogFetchOptions, DialogFetchResult, EntitySelectInputComponent, TimeRange, FetchDataOptions, FetchResultTyped, TableColumn as TableColumn$1, HasUnsavedChanges, TimeRangePickerLabels, TimeRangeSelection as TimeRangeSelection$1 } from '@meshmakers/shared-ui';
6
+ import { EntitySelectDialogDataSource, ColumnDefinition, DialogFetchOptions, DialogFetchResult, EntitySelectInputComponent, TimeRange, FetchDataOptions, FetchResultTyped, TableColumn as TableColumn$1, ListViewMessages, HasUnsavedChanges, TimeRangePickerLabels, TimeRangeSelection as TimeRangeSelection$1 } from '@meshmakers/shared-ui';
7
7
  import { Observable, Subject } from 'rxjs';
8
8
  import { EntitySelectDataSource, EntitySelectResult } from '@meshmakers/shared-services';
9
9
  import * as Types from '@meshmakers/octo-services';
10
- import { CkTypeSelectorItem, RuntimeEntityItem, RuntimeEntitySelectDataSource, RuntimeEntityDialogDataSource, SortDto, FieldFilterDto, QueryModeDto, ResolveSeriesQueryInputDto, CkRollupFunctionDto, SeriesResolutionSignalDto, AttributeItem, TenantIdProvider, TenantFeaturesStatus } from '@meshmakers/octo-services';
10
+ import { CkTypeSelectorItem, RuntimeEntityItem, RuntimeEntitySelectDataSource, RuntimeEntityDialogDataSource, SortDto, FieldFilterDto, QueryModeDto, ResolveSeriesQueryInputDto, CkRollupFunctionDto, SeriesResolutionSignalDto, AttributeItem, TenantIdProvider, TenantFeaturesStatus, HealthCheck } from '@meshmakers/octo-services';
11
11
  export { RuntimeEntityDialogDataSource, RuntimeEntityItem, RuntimeEntitySelectDataSource, TENANT_ID_PROVIDER, TenantIdProvider } from '@meshmakers/octo-services';
12
12
  import * as Apollo from 'apollo-angular';
13
13
  import { CkTypeSelectorInputComponent, AttributeValueTypeDto, FieldFilterItem, FilterVariable, PropertyGridItem, PropertyGridConfig, OctoGraphQlDataSource, FieldFilterEditorComponent } from '@meshmakers/octo-ui';
@@ -662,7 +662,26 @@ interface PieChartWidgetConfig extends WidgetConfig {
662
662
  legendPosition?: 'top' | 'bottom' | 'left' | 'right';
663
663
  /** Field filters for data source */
664
664
  filters?: WidgetFilterConfig[];
665
+ /**
666
+ * Colour per category (AB#5622), keyed by the raw category value (`PAID`; case-insensitive) or
667
+ * its displayed label. Value: a hex / CSS colour, a custom property (`--brand-paid`,
668
+ * `var(--brand-paid, #2fb37a)`) or a status name (`success`, `warning`, `error`, `info`).
669
+ * Categories without an entry keep the default (status colour, else the theme palette).
670
+ */
671
+ categoryColors?: Record<string, string>;
672
+ /**
673
+ * Where slice labels sit while `showLabels` is on (AB#5622): `outside` (with connector lines),
674
+ * `inside` or `none` (no labels). Absent = the chart default (outside, unchanged).
675
+ */
676
+ labelPosition?: PieChartLabelPosition;
677
+ /**
678
+ * Overlap handling (AB#5622): slices smaller than this share of the total (in percent, e.g. `3`)
679
+ * get no label, so small neighbours do not overlap. Absent / 0 = every slice is labelled.
680
+ */
681
+ hideLabelsBelowPercent?: number;
665
682
  }
683
+ /** Slice label position of a pie / donut chart (AB#5622). */
684
+ type PieChartLabelPosition = 'inside' | 'outside' | 'none';
666
685
  /**
667
686
  * Bar Chart types available
668
687
  * - column: Vertical bars (standard column chart)
@@ -1149,7 +1168,7 @@ interface AiInsightsWidgetConfig extends WidgetConfig {
1149
1168
  * of a configurable data source, gate every check on the viewer's roles and the tenant's CK models
1150
1169
  * (`COCKPIT_VIEWER_ACCESS`) and are registered with `provideCockpitWidgets()`.
1151
1170
  */
1152
- type CockpitWidgetType = 'attentionList' | 'adapterStatus' | 'ckModelState' | 'pipelineExecutions';
1171
+ type CockpitWidgetType = 'attentionList' | 'adapterStatus' | 'ckModelState' | 'pipelineExecutions' | 'tenantCount' | 'blueprintUpdates' | 'servicesHealth' | 'versionInfo';
1153
1172
  /** The cockpit widget types (e.g. to tell whether a board already shows them). */
1154
1173
  declare const COCKPIT_WIDGET_TYPES: readonly CockpitWidgetType[];
1155
1174
  /** True for the cockpit widget types. */
@@ -1187,8 +1206,24 @@ interface PipelineExecutionsWidgetConfig extends WidgetConfig, CockpitKpiWidgetO
1187
1206
  /** Show the hourly sparkline (default true). */
1188
1207
  showSparkline?: boolean;
1189
1208
  }
1209
+ /** "Tenants" (system cockpit, AB#5558) — child tenants of the current tenant. */
1210
+ interface TenantCountWidgetConfig extends WidgetConfig, CockpitKpiWidgetOptions {
1211
+ type: 'tenantCount';
1212
+ }
1213
+ /** "Blueprint updates" (system cockpit, AB#5558) — installed blueprints with a newer catalog version. */
1214
+ interface BlueprintUpdatesWidgetConfig extends WidgetConfig, CockpitKpiWidgetOptions {
1215
+ type: 'blueprintUpdates';
1216
+ }
1217
+ /** "Services healthy" (system cockpit, AB#5558) — platform services whose health check is Healthy. */
1218
+ interface ServicesHealthWidgetConfig extends WidgetConfig, CockpitKpiWidgetOptions {
1219
+ type: 'servicesHealth';
1220
+ }
1221
+ /** "Version" (system cockpit, AB#5558) — the host application's versions (`COCKPIT_VERSION_SOURCE`). */
1222
+ interface VersionInfoWidgetConfig extends WidgetConfig, CockpitKpiWidgetOptions {
1223
+ type: 'versionInfo';
1224
+ }
1190
1225
  /** Any cockpit KPI widget. */
1191
- type CockpitKpiWidgetConfig = AdapterStatusWidgetConfig | CkModelStateWidgetConfig | PipelineExecutionsWidgetConfig;
1226
+ type CockpitKpiWidgetConfig = AdapterStatusWidgetConfig | CkModelStateWidgetConfig | PipelineExecutionsWidgetConfig | TenantCountWidgetConfig | BlueprintUpdatesWidgetConfig | ServicesHealthWidgetConfig | VersionInfoWidgetConfig;
1192
1227
  /**
1193
1228
  * "Recent items" (AB#5558) — the viewer's recently opened pages, entities and boards, from the
1194
1229
  * host's `COCKPIT_RECENT_ITEMS` source (in the Refinery Studio the same history as the empty
@@ -1202,7 +1237,7 @@ interface RecentItemsWidgetConfig extends WidgetConfig {
1202
1237
  maxItems?: number;
1203
1238
  }
1204
1239
 
1205
- type AnyWidgetConfig = EntityCardWidgetConfig | EntityWithAssociationsWidgetConfig | KpiWidgetConfig | TableWidgetConfig | GaugeWidgetConfig | PieChartWidgetConfig | BarChartWidgetConfig | LineChartWidgetConfig | HeatmapWidgetConfig | StatsGridWidgetConfig | StatusIndicatorWidgetConfig | ServiceHealthWidgetConfig | ProcessWidgetConfig | WidgetGroupConfig | MarkdownWidgetConfig | StatusListWidgetConfig | SummaryCardWidgetConfig | AlertBannerWidgetConfig | AlertListWidgetConfig | AiInsightsWidgetConfig | AttentionListWidgetConfig | AdapterStatusWidgetConfig | CkModelStateWidgetConfig | PipelineExecutionsWidgetConfig | RecentItemsWidgetConfig;
1240
+ type AnyWidgetConfig = EntityCardWidgetConfig | EntityWithAssociationsWidgetConfig | KpiWidgetConfig | TableWidgetConfig | GaugeWidgetConfig | PieChartWidgetConfig | BarChartWidgetConfig | LineChartWidgetConfig | HeatmapWidgetConfig | StatsGridWidgetConfig | StatusIndicatorWidgetConfig | ServiceHealthWidgetConfig | ProcessWidgetConfig | WidgetGroupConfig | MarkdownWidgetConfig | StatusListWidgetConfig | SummaryCardWidgetConfig | AlertBannerWidgetConfig | AlertListWidgetConfig | AiInsightsWidgetConfig | AttentionListWidgetConfig | AdapterStatusWidgetConfig | CkModelStateWidgetConfig | PipelineExecutionsWidgetConfig | TenantCountWidgetConfig | BlueprintUpdatesWidgetConfig | ServicesHealthWidgetConfig | VersionInfoWidgetConfig | RecentItemsWidgetConfig;
1206
1241
  /**
1207
1242
  * Supported variable types
1208
1243
  */
@@ -1640,6 +1675,24 @@ interface ChartThemeColors {
1640
1675
  /** Major grid lines. */
1641
1676
  grid: string;
1642
1677
  }
1678
+ /** Fixed series colours, the last resort when the host theme defines no chart palette (or no CSS). */
1679
+ declare const FALLBACK_SERIES_COLORS: readonly string[];
1680
+ /**
1681
+ * The categorical chart palette of the current theme (AB#5622): the host's `--theme-chart-1…12`
1682
+ * (Studio tokens), else the Kendo theme's `--kendo-chart-series-1…12`, else
1683
+ * `--kendo-color-series-a…f`, else {@link FALLBACK_SERIES_COLORS}. Values that are empty, still
1684
+ * contain `var()` or are no valid colour are skipped — Kendo resolves its series colours once per
1685
+ * page load, and a token it could not resolve rendered a slice black in dark mode. The charts set
1686
+ * these colours explicitly on every data item, so the palette also follows a live theme switch.
1687
+ */
1688
+ declare function chartSeriesColors(doc?: Document | null): string[];
1689
+ /**
1690
+ * Resolves a configured colour (per-category colour of a chart, AB#5622): a status name
1691
+ * (`success`, `warning`, `error`, `info` → theme status colour), a custom property (`--brand-paid`
1692
+ * or `var(--brand-paid, #2fb37a)`) read from the document root, or any CSS colour (`#2fb37a`,
1693
+ * `rgb(…)`) used as it is. Returns `undefined` when it cannot be resolved (the default colour applies).
1694
+ */
1695
+ declare function resolveChartColor(token: string | null | undefined, doc?: Document | null): string | undefined;
1643
1696
  /**
1644
1697
  * Calls `onChange` when the colour theme really changed: `<html>` `data-theme`, `class` or
1645
1698
  * `style` mutated (the Studio ThemeService sets `data-theme`) or the OS colour scheme switched,
@@ -3963,6 +4016,12 @@ declare class TableWidgetComponent implements DashboardWidget<TableWidgetConfig,
3963
4016
  config: TableWidgetConfig;
3964
4017
  dataSource?: TableWidgetDataSourceDirective;
3965
4018
  private readonly stateService;
4019
+ /** Host texts (`MESHBOARD_MESSAGES`, AB#5622): list texts (empty state, pager, toolbar) and the placeholder. */
4020
+ protected readonly texts: _angular_core.Signal<_meshmakers_octo_meshboard.MeshBoardMessages & Required<Omit<_meshmakers_octo_meshboard.MeshBoardMessages, "tableList">>>;
4021
+ /** Host translation of enum cell values (`MESHBOARD_LABEL_RESOLVER`, AB#5622); absent = raw text. */
4022
+ private readonly labelResolver;
4023
+ /** CK value type per derived column field (persistent queries), for the label resolver. */
4024
+ private readonly _queryColumnValueTypes;
3966
4025
  private readonly _isLoading;
3967
4026
  private readonly _data;
3968
4027
  private readonly _error;
@@ -4308,7 +4367,10 @@ declare class GaugeConfigDialogComponent implements OnInit {
4308
4367
  interface ChartDataItem {
4309
4368
  category: string;
4310
4369
  value: number;
4311
- /** Status colour of a well-known state category (`RESOLVE_FAILED` → error); default series colour otherwise. */
4370
+ /**
4371
+ * Slice colour: the configured category colour, else the status colour of a well-known state
4372
+ * category (`RESOLVE_FAILED` → error), else the theme palette colour of its position (AB#5622).
4373
+ */
4312
4374
  color?: string;
4313
4375
  }
4314
4376
  /** Plot area options of the pie / donut (stable references, AB#5568). */
@@ -4332,6 +4394,8 @@ declare class PieChartWidgetComponent implements DashboardWidget<PieChartWidgetC
4332
4394
  private readonly dataService;
4333
4395
  private readonly stateService;
4334
4396
  private readonly variableService;
4397
+ /** Host translation of category names (`MESHBOARD_LABEL_RESOLVER`, AB#5622): slices, legend and tooltips. */
4398
+ private readonly labelResolver;
4335
4399
  config: PieChartWidgetConfig;
4336
4400
  private readonly _isLoading;
4337
4401
  /** Raw categories and values as loaded; labels and status colours are derived in `chartData`. */
@@ -4368,8 +4432,15 @@ declare class PieChartWidgetComponent implements DashboardWidget<PieChartWidgetC
4368
4432
  legendPosition(): 'top' | 'bottom' | 'left' | 'right';
4369
4433
  ngAfterViewInit(): void;
4370
4434
  ngOnDestroy(): void;
4371
- /** Human label and status colour for a raw category value (exposed for tests). */
4372
- toItem(rawCategory: string, value: number): ChartDataItem;
4435
+ /**
4436
+ * Human label and status colour for a raw category value (exposed for tests). The label is the
4437
+ * host resolver's text (AB#5622), else the humanized category; the colour still follows the raw value.
4438
+ */
4439
+ toItem(rawCategory: string, value: number, index?: number, palette?: readonly string[]): ChartDataItem;
4440
+ /** The `categoryColors` entry of a category (raw value, case-insensitive, then the label), resolved. */
4441
+ private configuredColor;
4442
+ /** Display name of a raw category: the host label resolver, else `humanizeCategory`. */
4443
+ private categoryLabel;
4373
4444
  private readonly _labelSettings;
4374
4445
  /** Series label options incl. the theme text colour (new object only when either changes). */
4375
4446
  readonly labelSettings: _angular_core.Signal<{
@@ -4378,8 +4449,17 @@ declare class PieChartWidgetComponent implements DashboardWidget<PieChartWidgetC
4378
4449
  content: (e: {
4379
4450
  category: string;
4380
4451
  value: number;
4452
+ percentage?: number;
4381
4453
  }) => string;
4454
+ position?: "insideEnd" | "outsideEnd";
4382
4455
  }>;
4456
+ /** Connector lines of outside labels: theme coloured when `labelPosition: 'outside'` is set, else the chart default (AB#5622). */
4457
+ private readonly _explicitOutsideLabels;
4458
+ readonly connectors: _angular_core.Signal<{
4459
+ color: string;
4460
+ width: number;
4461
+ padding: number;
4462
+ } | undefined>;
4383
4463
  private updateLabelSettings;
4384
4464
  ngOnInit(): void;
4385
4465
  ngOnChanges(changes: SimpleChanges): void;
@@ -4425,6 +4505,12 @@ interface PieChartConfigResult extends WidgetConfigResult {
4425
4505
  showLabels: boolean;
4426
4506
  showLegend: boolean;
4427
4507
  legendPosition: 'top' | 'bottom' | 'left' | 'right';
4508
+ /** Colour per category (AB#5622); absent = default colours. */
4509
+ categoryColors?: Record<string, string>;
4510
+ /** Slice label position (AB#5622); absent = chart default. */
4511
+ labelPosition?: PieChartLabelPosition;
4512
+ /** Hide labels of slices below this share in percent (AB#5622); absent = all labelled. */
4513
+ hideLabelsBelowPercent?: number;
4428
4514
  filters?: FieldFilterDto[];
4429
4515
  }
4430
4516
  /**
@@ -4451,6 +4537,22 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
4451
4537
  initialCkQueryTarget?: CkQueryTarget;
4452
4538
  initialCkGroupBy?: string;
4453
4539
  initialFilters?: WidgetFilterConfig[];
4540
+ initialCategoryColors?: Record<string, string>;
4541
+ initialLabelPosition?: PieChartLabelPosition;
4542
+ initialHideLabelsBelowPercent?: number;
4543
+ protected readonly addIcon: _progress_kendo_svg_icons.SVGIcon;
4544
+ protected readonly removeIcon: _progress_kendo_svg_icons.SVGIcon;
4545
+ /** Rows of the category colour editor (AB#5622). */
4546
+ categoryColorRows: {
4547
+ id: number;
4548
+ category: string;
4549
+ color: string;
4550
+ }[];
4551
+ private nextCategoryColorId;
4552
+ labelPositions: {
4553
+ value: PieChartLabelPosition | undefined;
4554
+ label: string;
4555
+ }[];
4454
4556
  protected readonly searchIcon: _progress_kendo_svg_icons.SVGIcon;
4455
4557
  protected readonly chartPieIcon: _progress_kendo_svg_icons.SVGIcon;
4456
4558
  isLoadingInitial: boolean;
@@ -4487,6 +4589,8 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
4487
4589
  legendPosition: "top" | "bottom" | "left" | "right";
4488
4590
  ckQueryTarget: CkQueryTarget;
4489
4591
  ckGroupBy: string;
4592
+ labelPosition: PieChartLabelPosition | undefined;
4593
+ hideLabelsBelowPercent: number | null;
4490
4594
  };
4491
4595
  get isValid(): boolean;
4492
4596
  /** Family of the currently selected query; drives the time-filter toggle's visibility. */
@@ -4506,11 +4610,17 @@ declare class PieChartConfigDialogComponent implements OnInit, AfterViewInit {
4506
4610
  * because the SD path has no dedicated column-introspection endpoint today.
4507
4611
  */
4508
4612
  private fetchColumnsForFamily;
4613
+ addCategoryColor(): void;
4614
+ removeCategoryColor(id: number): void;
4615
+ /** Value of the native colour picker: the row's hex colour, else black (the picker needs a #rrggbb value). */
4616
+ swatchValue(color: string): string;
4617
+ /** The edited category colours; rows without category or colour are dropped; none = undefined. */
4618
+ private categoryColorsResult;
4509
4619
  onFiltersChange(updatedFilters: FieldFilterItem[]): void;
4510
4620
  onSave(): void;
4511
4621
  onCancel(): void;
4512
4622
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieChartConfigDialogComponent, never>;
4513
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieChartConfigDialogComponent, "mm-pie-chart-config-dialog", never, { "initialDataSourceType": { "alias": "initialDataSourceType"; "required": false; }; "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialEntitySelectorId": { "alias": "initialEntitySelectorId"; "required": false; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialShowLabels": { "alias": "initialShowLabels"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialCkQueryTarget": { "alias": "initialCkQueryTarget"; "required": false; }; "initialCkGroupBy": { "alias": "initialCkGroupBy"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; }, {}, never, never, true, never>;
4623
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieChartConfigDialogComponent, "mm-pie-chart-config-dialog", never, { "initialDataSourceType": { "alias": "initialDataSourceType"; "required": false; }; "initialQueryRtId": { "alias": "initialQueryRtId"; "required": false; }; "initialQueryName": { "alias": "initialQueryName"; "required": false; }; "initialQueryFamily": { "alias": "initialQueryFamily"; "required": false; }; "initialIgnoreTimeFilter": { "alias": "initialIgnoreTimeFilter"; "required": false; }; "initialEntitySelectorId": { "alias": "initialEntitySelectorId"; "required": false; }; "initialChartType": { "alias": "initialChartType"; "required": false; }; "initialCategoryField": { "alias": "initialCategoryField"; "required": false; }; "initialValueField": { "alias": "initialValueField"; "required": false; }; "initialShowLabels": { "alias": "initialShowLabels"; "required": false; }; "initialShowLegend": { "alias": "initialShowLegend"; "required": false; }; "initialLegendPosition": { "alias": "initialLegendPosition"; "required": false; }; "initialCkQueryTarget": { "alias": "initialCkQueryTarget"; "required": false; }; "initialCkGroupBy": { "alias": "initialCkGroupBy"; "required": false; }; "initialFilters": { "alias": "initialFilters"; "required": false; }; "initialCategoryColors": { "alias": "initialCategoryColors"; "required": false; }; "initialLabelPosition": { "alias": "initialLabelPosition"; "required": false; }; "initialHideLabelsBelowPercent": { "alias": "initialHideLabelsBelowPercent"; "required": false; }; }, {}, never, never, true, never>;
4514
4624
  }
4515
4625
 
4516
4626
  /**
@@ -6144,6 +6254,40 @@ declare function registerProcessWidget(registry: WidgetRegistryService): void;
6144
6254
  */
6145
6255
  declare function provideProcessWidget(): EnvironmentProviders;
6146
6256
 
6257
+ /**
6258
+ * Host translations of the MeshBoard widget texts (AB#5622). Every member is optional; a missing
6259
+ * member keeps the English default, so an app sets only what it translates.
6260
+ */
6261
+ interface MeshBoardMessages {
6262
+ /**
6263
+ * Texts of the list inside the table widget (`mm-list-view`): "No records available.", the
6264
+ * pager texts, the toolbar labels and the row action names. Merged over the list's English
6265
+ * defaults (`DEFAULT_LIST_VIEW_MESSAGES`).
6266
+ */
6267
+ tableList?: Partial<ListViewMessages>;
6268
+ /** Placeholder of a table widget without data source / columns. Default: "Table not configured" */
6269
+ tableNotConfigured?: string;
6270
+ }
6271
+ /** Default texts of {@link MeshBoardMessages} (the list texts default inside `mm-list-view`). */
6272
+ declare const DEFAULT_MESHBOARD_MESSAGES: Required<Omit<MeshBoardMessages, 'tableList'>>;
6273
+ /**
6274
+ * What a host provides on {@link MESHBOARD_MESSAGES}: a fixed object, or a signal for apps that
6275
+ * switch the language at runtime (the widgets follow it).
6276
+ */
6277
+ type MeshBoardMessagesSource = MeshBoardMessages | Signal<MeshBoardMessages | null | undefined>;
6278
+ /**
6279
+ * Optional: the host's translations of the MeshBoard widget texts (English without it). Set it
6280
+ * once app-wide, either directly or via `provideMeshBoard({ messages })` /
6281
+ * `provideMeshBoardMessages(messages)`.
6282
+ *
6283
+ * ```ts
6284
+ * providers: [provideMeshBoardMessages({ tableList: { noRecords: 'Keine Einträge vorhanden.', pagerItemsPerPage: 'Einträge pro Seite' } })]
6285
+ * ```
6286
+ */
6287
+ declare const MESHBOARD_MESSAGES: InjectionToken<MeshBoardMessagesSource>;
6288
+ /** The resolved MeshBoard texts: defaults with the host layer on top (missing / null members keep the default). */
6289
+ declare function resolveMeshBoardMessages(messages: MeshBoardMessages | null | undefined): MeshBoardMessages & typeof DEFAULT_MESHBOARD_MESSAGES;
6290
+
6147
6291
  /**
6148
6292
  * Registers all built-in widget types with the registry.
6149
6293
  * Called during app initialization.
@@ -6176,6 +6320,11 @@ interface MeshBoardOptions {
6176
6320
  defaultRowHeight?: number;
6177
6321
  /** Default gap between widgets in pixels (default: 16) */
6178
6322
  defaultGap?: number;
6323
+ /**
6324
+ * Host translations of the widget texts (AB#5622), provided as `MESHBOARD_MESSAGES` — e.g. the
6325
+ * table widget's list texts. Fixed object or signal. Absent = English.
6326
+ */
6327
+ messages?: MeshBoardMessagesSource;
6179
6328
  }
6180
6329
  /**
6181
6330
  * Injection token for MeshBoard options
@@ -6205,6 +6354,11 @@ declare const MESHBOARD_TENANT_ID_PROVIDER: InjectionToken<Types.TenantIdProvide
6205
6354
  * ```
6206
6355
  */
6207
6356
  declare function provideMeshBoard(options?: MeshBoardOptions): EnvironmentProviders;
6357
+ /**
6358
+ * Provides the host translations of the MeshBoard widget texts (`MESHBOARD_MESSAGES`, AB#5622)
6359
+ * without `provideMeshBoard()` — for apps that register the widgets lazily.
6360
+ */
6361
+ declare function provideMeshBoardMessages(messages: MeshBoardMessagesSource): EnvironmentProviders;
6208
6362
  /**
6209
6363
  * Provider function for registering custom widgets.
6210
6364
  * Use this to add your own widget types to MeshBoard.
@@ -6237,6 +6391,44 @@ declare function provideMeshBoard(options?: MeshBoardOptions): EnvironmentProvid
6237
6391
  */
6238
6392
  declare function provideWidgetRegistrations(registrations: WidgetRegistration<AnyWidgetConfig, WidgetConfigResult>[]): EnvironmentProviders;
6239
6393
 
6394
+ /**
6395
+ * What a MeshBoard label belongs to (AB#5622):
6396
+ * - `tableCell` — the text of a table widget cell (enum values such as `PAID`);
6397
+ * - `chartCategory` — a category of a pie / donut chart. The resolved text is the slice's name
6398
+ * everywhere: data labels, legend items and tooltips.
6399
+ */
6400
+ type MeshBoardLabelKind = 'tableCell' | 'chartCategory';
6401
+ /** One label lookup of {@link MeshBoardLabelResolver}. */
6402
+ interface MeshBoardLabelRequest {
6403
+ kind: MeshBoardLabelKind;
6404
+ /** Runtime CK type of the widget's data, when known (table over a runtime entity type); else undefined. */
6405
+ ckTypeId?: string;
6406
+ /** The attribute (column field / category field) the value belongs to, as configured on the widget. */
6407
+ attribute: string;
6408
+ /** The raw value as delivered by the query (e.g. the enum value name `PAID`). */
6409
+ value: string;
6410
+ /** CK value type of the column when the query reports it (`ENUM`, `STRING`, ...). */
6411
+ valueType?: string;
6412
+ /** The text shown without a resolver (e.g. "Paid" for `PAID` in charts, the raw value in tables). */
6413
+ defaultText: string;
6414
+ }
6415
+ /**
6416
+ * Host hook that translates enum values in MeshBoard tables and chart categories (AB#5622). Same
6417
+ * pattern as the entity forms' `ENTITY_FORM_LABEL_RESOLVER`: return `null`, `undefined` or `''`
6418
+ * to keep {@link MeshBoardLabelRequest.defaultText}. A resolver that throws is logged once and
6419
+ * ignored. Charts call it inside a `computed`, so a resolver that reads a signal (the current
6420
+ * language) re-labels the chart when the signal changes.
6421
+ *
6422
+ * ```ts
6423
+ * { provide: MESHBOARD_LABEL_RESOLVER, useValue: (r) => r.attribute === 'paymentState' ? i18n.enumLabel('PaymentState', r.value) : null }
6424
+ * ```
6425
+ */
6426
+ type MeshBoardLabelResolver = (request: MeshBoardLabelRequest) => string | null | undefined;
6427
+ /** App-wide {@link MeshBoardLabelResolver}. Not provided = today's texts. */
6428
+ declare const MESHBOARD_LABEL_RESOLVER: InjectionToken<MeshBoardLabelResolver>;
6429
+ /** Resolves one label; the default text when there is no resolver, no translation, or the resolver throws. */
6430
+ declare function resolveMeshBoardLabel(resolver: MeshBoardLabelResolver | null | undefined, request: MeshBoardLabelRequest): string;
6431
+
6240
6432
  /**
6241
6433
  * Component for editing entity selector configurations in MeshBoard settings.
6242
6434
  * Allows adding, editing, and removing entity selectors.
@@ -7121,7 +7313,8 @@ declare class MeshBoardManagerDialogComponent implements OnInit {
7121
7313
 
7122
7314
  /**
7123
7315
  * Translatable texts of the cockpit widgets (AB#5622): "Attention list", the KPI tiles
7124
- * ("Adapter status", "CK model state", "Pipeline executions 24 h") and "Recent items".
7316
+ * ("Adapter status", "CK model state", "Pipeline executions 24 h", and for the system cockpit
7317
+ * "Tenants", "Blueprint updates", "Services healthy", "Version") and "Recent items".
7125
7318
  *
7126
7319
  * The widgets are created by the MeshBoard, so a host translates them through
7127
7320
  * {@link COCKPIT_WIDGET_MESSAGES} (or `provideCockpitWidgetHost({ messages })`); a widget used on
@@ -7132,7 +7325,8 @@ declare class MeshBoardManagerDialogComponent implements OnInit {
7132
7325
  *
7133
7326
  * Placeholders in braces (`{count}`) are filled with {@link formatCockpitMessage}. Not covered:
7134
7327
  * the config dialogs (board editors) and the findings of the built-in OctoMesh attention
7135
- * providers, except "Failed pipeline executions" (`attentionFailedExecutions*`) — a host's own
7328
+ * providers, except "Failed pipeline executions" (`attentionFailedExecutions*`), the service
7329
+ * health (`attentionService*`) and blueprint update (`attentionBlueprintUpdates*`) checks — a host's own
7136
7330
  * providers bring their own (translated) titles and texts.
7137
7331
  */
7138
7332
  interface CockpitWidgetMessages {
@@ -7232,6 +7426,69 @@ interface CockpitWidgetMessages {
7232
7426
  kpiCkModelsImportingStatus: string;
7233
7427
  /** Default: "All available" */
7234
7428
  kpiCkModelsAllAvailable: string;
7429
+ /** Builders without the role of the tenant tile. Default: "Needs the TenantManagement role." */
7430
+ kpiNeedsTenantManagement?: string;
7431
+ /** Default: "Tenants" */
7432
+ kpiTenantsLabel?: string;
7433
+ /** Status chip with child tenants. Default: "Registered" */
7434
+ kpiTenantsRegistered?: string;
7435
+ /** Status chip without child tenants. Default: "No child tenants" */
7436
+ kpiTenantsNone?: string;
7437
+ /** Default: "Blueprint updates" */
7438
+ kpiBlueprintsLabel?: string;
7439
+ /** Default: "Up to date" */
7440
+ kpiBlueprintsUpToDate?: string;
7441
+ /** Default: "{count} available" */
7442
+ kpiBlueprintsAvailable?: string;
7443
+ /** Default: "No blueprints installed" */
7444
+ kpiBlueprintsNone?: string;
7445
+ /** Default: "{count} installed" */
7446
+ kpiBlueprintsInstalled?: string;
7447
+ /** Service-managed blueprints whose newer version their service has not applied yet. Default: "{count} service-managed pending" */
7448
+ kpiBlueprintsServiceManaged?: string;
7449
+ /** Capped catalog read. Default: "based on the first {read} of {total} catalog entries" */
7450
+ kpiBlueprintsTruncated?: string;
7451
+ /**
7452
+ * Shown instead of `loading` once the catalog scan of the "Blueprint updates" tile takes longer
7453
+ * than {@link COCKPIT_KPI_SLOW_LOADING_MS}. Default: "Scanning catalogs…"
7454
+ */
7455
+ kpiBlueprintsScanning?: string;
7456
+ /** Default: "Services healthy" */
7457
+ kpiServicesLabel?: string;
7458
+ /** Default: "All healthy" */
7459
+ kpiServicesAllHealthy?: string;
7460
+ /** Default: "{count} unhealthy" */
7461
+ kpiServicesUnhealthy?: string;
7462
+ /** Default: "{count} degraded" */
7463
+ kpiServicesDegraded?: string;
7464
+ /** Default: "degraded" */
7465
+ serviceStateDegraded?: string;
7466
+ /** Default: "unhealthy" */
7467
+ serviceStateUnhealthy?: string;
7468
+ /** Health endpoint without answer. Default: "not reachable" */
7469
+ serviceStateUnknown?: string;
7470
+ /** Default: "Version" */
7471
+ kpiVersionLabel?: string;
7472
+ /** Default: "No version information" */
7473
+ kpiVersionNone?: string;
7474
+ /** Finding title; `{name}` service, `{state}` one of the serviceState* texts. Default: "{name} service is {state}" */
7475
+ attentionServiceTitle?: string;
7476
+ /** Default: "Its health check reports a problem. The health details list the failing checks." */
7477
+ attentionServiceText?: string;
7478
+ /** Default: "Its health endpoint does not answer. Features that use the service may fail." */
7479
+ attentionServiceUnreachableText?: string;
7480
+ /** Default: "Open health details" */
7481
+ attentionServiceLink?: string;
7482
+ /** Default: "Why is the {name} service {state}?" */
7483
+ attentionServiceExplain?: string;
7484
+ /** Title; the count is the finding's badge. Default: "Blueprint updates available" */
7485
+ attentionBlueprintUpdatesTitle?: string;
7486
+ /** `{list}` = "Name 1.0.0 → 1.1.0, …". Default: "{list}. Updates are applied on the Blueprints page." */
7487
+ attentionBlueprintUpdatesText?: string;
7488
+ /** Default: "Service-managed: {list} — applied by the owning service when it starts." */
7489
+ attentionBlueprintUpdatesServiceManaged?: string;
7490
+ /** Default: "Open blueprints" */
7491
+ attentionBlueprintUpdatesLink?: string;
7235
7492
  /** Default: "Recently opened items could not be read." */
7236
7493
  recentLoadFailed: string;
7237
7494
  /** Accessible name of the list when the widget has no title. Default: "Recently opened" */
@@ -7324,6 +7581,12 @@ interface CockpitRouteLinkTarget {
7324
7581
  * What a finding or KPI links to — semantic targets, so the library holds no application routes.
7325
7582
  * The host maps them to its own URLs (`CockpitLinkResolver`); `route` targets carry the route
7326
7583
  * themselves.
7584
+ *
7585
+ * Deployment sites (System.Communication 4.x, AB#5842): the library emits `deployment-site` /
7586
+ * `deployment-sites`. `pool` / `pools` are their deprecated pre-4.x aliases, kept so existing
7587
+ * resolvers still compile; a resolver that answers `null` for a deployment-site kind is asked once
7588
+ * more with the legacy alias (`legacyCockpitLinkTarget`), so hosts keep their links until they map
7589
+ * the new kinds.
7327
7590
  */
7328
7591
  type CockpitLinkTarget = {
7329
7592
  kind: 'adapter';
@@ -7331,9 +7594,18 @@ type CockpitLinkTarget = {
7331
7594
  } | {
7332
7595
  kind: 'adapters';
7333
7596
  } | {
7334
- kind: 'pool';
7597
+ kind: 'deployment-site';
7335
7598
  rtId: string;
7336
7599
  } | {
7600
+ kind: 'deployment-sites';
7601
+ }
7602
+ /** @deprecated Since System.Communication 4.x (AB#5842): use `deployment-site`. */
7603
+ | {
7604
+ kind: 'pool';
7605
+ rtId: string;
7606
+ }
7607
+ /** @deprecated Since System.Communication 4.x (AB#5842): use `deployment-sites`. */
7608
+ | {
7337
7609
  kind: 'pools';
7338
7610
  } | {
7339
7611
  kind: 'dataFlows';
@@ -7343,7 +7615,26 @@ type CockpitLinkTarget = {
7343
7615
  kind: 'tenantSettings';
7344
7616
  } | {
7345
7617
  kind: 'secretsReEntry';
7618
+ }
7619
+ /** The tenant's child tenants (system cockpit, AB#5558). */
7620
+ | {
7621
+ kind: 'tenants';
7622
+ }
7623
+ /** Blueprints installed on the tenant (system cockpit, AB#5558). */
7624
+ | {
7625
+ kind: 'blueprints';
7626
+ }
7627
+ /** Health detail of one platform service (`identity`, `asset-repository`, `bot`, `communication-controller`). */
7628
+ | {
7629
+ kind: 'serviceHealth';
7630
+ service: string;
7346
7631
  } | CockpitRouteLinkTarget;
7632
+ /**
7633
+ * The deprecated pre-4.x alias of a deployment-site target (`deployment-site` → `pool`,
7634
+ * `deployment-sites` → `pools`), or `null` for every other target. Used as the fallback when a
7635
+ * host's resolver has no page for the new kind yet (AB#5842).
7636
+ */
7637
+ declare function legacyCockpitLinkTarget(target: CockpitLinkTarget): CockpitLinkTarget | null;
7347
7638
  /** A link target resolved for `routerLink` (path or commands) and `queryParams`. */
7348
7639
  interface CockpitResolvedLink {
7349
7640
  path: string | string[];
@@ -7414,12 +7705,29 @@ interface CockpitRecentItemsSource {
7414
7705
  }
7415
7706
  /** The host's recent items; without it the "Recent items" widget says "Not available" and collapses. */
7416
7707
  declare const COCKPIT_RECENT_ITEMS: InjectionToken<CockpitRecentItemsSource>;
7708
+ /** One entry of the "Version" tile, e.g. `{ label: 'Refinery Studio', version: '3.4.120' }`. */
7709
+ interface CockpitVersionEntry {
7710
+ label: string;
7711
+ version: string;
7712
+ }
7713
+ /**
7714
+ * Versions the host knows (AB#5558, system cockpit): its own build and whatever else it can tell.
7715
+ * The backend services expose no version endpoint, so the library has nothing of its own to add.
7716
+ */
7717
+ interface CockpitVersionSource {
7718
+ /** Most important first: the first entry is the tile's value. */
7719
+ entries(): CockpitVersionEntry[] | Promise<CockpitVersionEntry[]>;
7720
+ }
7721
+ /** The host's versions; without it the "Version" tile says "Not available" and collapses. */
7722
+ declare const COCKPIT_VERSION_SOURCE: InjectionToken<CockpitVersionSource>;
7417
7723
  /** The host services in one call (`providers: [...provideCockpitWidgetHost({...})]`). */
7418
7724
  interface CockpitWidgetHost {
7419
7725
  access?: () => CockpitViewerAccess;
7420
7726
  links?: () => CockpitLinkResolver;
7421
7727
  explain?: () => CockpitExplainHandler;
7422
7728
  recents?: () => CockpitRecentItemsSource;
7729
+ /** Versions for the "Version" tile (AB#5558). */
7730
+ versions?: () => CockpitVersionSource;
7423
7731
  /** Translated widget texts (AB#5622), fixed or as a signal that follows the language. */
7424
7732
  messages?: () => CockpitWidgetMessagesSource;
7425
7733
  }
@@ -7447,10 +7755,17 @@ declare class CockpitContextService {
7447
7755
  private readonly links;
7448
7756
  private readonly explainHandler;
7449
7757
  private readonly ckModelService;
7758
+ private readonly configuration;
7450
7759
  /** The current tenant, or `null` when the host provides none. */
7451
7760
  tenantId(): Promise<string | null>;
7452
7761
  /** True when the viewer has every role and the tenant has every CK model. */
7453
7762
  allows(roles: readonly string[], models?: readonly string[]): Promise<boolean>;
7763
+ /**
7764
+ * Whether `tenantId` is the installation's system tenant (`systemTenantId` of the platform
7765
+ * configuration, `octosystem` when the host has none). Checks about the whole installation
7766
+ * (service health, AB#5558) run only there.
7767
+ */
7768
+ isSystemTenant(tenantId: string): boolean;
7454
7769
  /** Whether the viewer is a builder (`CockpitViewerAccess.isBuilder`); fails closed. */
7455
7770
  isBuilder(): Promise<boolean>;
7456
7771
  /**
@@ -7466,6 +7781,7 @@ declare class CockpitContextService {
7466
7781
  * keep their path unless the resolver rewrites it, and always keep their query parameters.
7467
7782
  */
7468
7783
  resolveLinkTarget(target: CockpitLinkTarget, tenantId: string): CockpitResolvedLink | null;
7784
+ private resolveWithHost;
7469
7785
  /** Whether "✦ Explain" buttons are shown. */
7470
7786
  get explainEnabled(): boolean;
7471
7787
  explain(target: CockpitExplainTarget): void;
@@ -7618,15 +7934,22 @@ declare class AdaptersAttentionProvider implements AttentionProvider {
7618
7934
  }
7619
7935
 
7620
7936
  /**
7621
- * Pools no Communication Operator has registered for: their adapters and applications are not
7622
- * rolled out. Needs what the pools page needs (CommunicationManagement + System.Communication).
7937
+ * Deployment sites (`System.Communication/DeploymentSite`, called "pools" before
7938
+ * System.Communication 4.x) no Communication Operator has registered for: the adapters and
7939
+ * applications they host are not rolled out. Needs what the deployment sites page needs
7940
+ * (CommunicationManagement + System.Communication).
7941
+ *
7942
+ * The class name and the provider id `pools-unregistered` keep the pre-4.x wording on purpose:
7943
+ * the id is persisted in attention-list widget configs (`providerIds`) and must never change
7944
+ * (AB#5842).
7623
7945
  */
7624
7946
  declare class UnregisteredPoolsAttentionProvider implements AttentionProvider {
7625
7947
  private readonly context;
7626
- private readonly poolsGql;
7948
+ private readonly sitesGql;
7949
+ /** Persisted in widget configs — stable since AB#5558, deliberately not renamed in AB#5842. */
7627
7950
  readonly id = "pools-unregistered";
7628
- readonly label = "Pools not registered";
7629
- readonly description = "Pools without a connected Communication Operator. Viewers with CommunicationManagement.";
7951
+ readonly label = "Deployment sites not registered";
7952
+ readonly description = "Deployment sites without a connected Communication Operator. Viewers with CommunicationManagement.";
7630
7953
  isVisible(): Promise<boolean>;
7631
7954
  load(): Observable<AttentionFinding[]>;
7632
7955
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UnregisteredPoolsAttentionProvider, never>;
@@ -7702,6 +8025,170 @@ declare class FeaturesNotInstalledAttentionProvider implements AttentionProvider
7702
8025
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<FeaturesNotInstalledAttentionProvider>;
7703
8026
  }
7704
8027
 
8028
+ /**
8029
+ * Platform services whose health check is not Healthy (system cockpit, AB#5558): one finding per
8030
+ * service — unhealthy or not answering is an error, degraded a warning — linking to the service's
8031
+ * health details. The services serve the whole installation, so the check runs on the system
8032
+ * tenant only (tenant cockpits are unchanged). Shares its requests with the "Services healthy" KPI.
8033
+ */
8034
+ declare class ServicesHealthAttentionProvider implements AttentionProvider {
8035
+ private readonly context;
8036
+ /** Resolved on first load: hosts and tests that never run the check need no data providers. */
8037
+ private readonly injector;
8038
+ private readonly messagesSource;
8039
+ readonly id = "services-unhealthy";
8040
+ readonly label = "Platform services with problems";
8041
+ readonly description = "Identity, Asset Repository, Bot or Communication Controller not healthy. System tenant only.";
8042
+ isVisible(context: AttentionContext): Promise<boolean>;
8043
+ load(): Observable<AttentionFinding[]>;
8044
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ServicesHealthAttentionProvider, never>;
8045
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ServicesHealthAttentionProvider>;
8046
+ }
8047
+
8048
+ /**
8049
+ * Installed blueprints with a newer catalog version (system cockpit, AB#5558): one info finding
8050
+ * with the count as badge, linking to the installed blueprints. Service-managed blueprints
8051
+ * (`System.*`) are named separately — their service applies them. Runs on the system tenant only
8052
+ * for now (it reads the catalogs, so tenant cockpits do not pay for it); same role as the
8053
+ * Blueprints pages. Shares its request with the "Blueprint updates" KPI.
8054
+ */
8055
+ declare class BlueprintUpdatesAttentionProvider implements AttentionProvider {
8056
+ private readonly context;
8057
+ /** Resolved on first load: hosts and tests that never run the check need no data providers. */
8058
+ private readonly injector;
8059
+ private readonly messagesSource;
8060
+ readonly id = "blueprint-updates";
8061
+ readonly label = "Blueprint updates available";
8062
+ readonly description = "Installed blueprints with a newer version in the catalogs. System tenant, viewers with AdminPanelManagement.";
8063
+ isVisible(context: AttentionContext): Promise<boolean>;
8064
+ load(context: AttentionContext): Observable<AttentionFinding[]>;
8065
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BlueprintUpdatesAttentionProvider, never>;
8066
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<BlueprintUpdatesAttentionProvider>;
8067
+ }
8068
+
8069
+ type CockpitBlueprintStatusQueryDto = {
8070
+ __typename?: 'OctoQuery';
8071
+ blueprints?: {
8072
+ __typename?: 'BlueprintsQuery';
8073
+ installations: Array<{
8074
+ __typename?: 'BlueprintInstallation';
8075
+ blueprintId: string;
8076
+ isDependency: boolean;
8077
+ }>;
8078
+ list: {
8079
+ __typename?: 'BlueprintListResponse';
8080
+ totalCount: number;
8081
+ items: Array<{
8082
+ __typename?: 'Blueprint';
8083
+ name: string;
8084
+ version: string;
8085
+ }>;
8086
+ };
8087
+ } | null;
8088
+ };
8089
+
8090
+ /** Catalog entries read with the installations (one page; the catalog lists one entry per name and version). */
8091
+ declare const COCKPIT_BLUEPRINT_CATALOG_LIMIT = 500;
8092
+ /**
8093
+ * Blueprints whose name starts with `System.` are service-managed: the owning service applies and
8094
+ * rolls them forward per tenant (mirrors `BlueprintIdExtensions.IsServiceManaged`).
8095
+ */
8096
+ declare const SERVICE_MANAGED_BLUEPRINT_PREFIX = "System.";
8097
+ /** One installed blueprint with the highest version the catalogs offer for its name. */
8098
+ interface CockpitBlueprintUpdate {
8099
+ name: string;
8100
+ installedVersion: string;
8101
+ availableVersion: string;
8102
+ isServiceManaged: boolean;
8103
+ }
8104
+ /** Installed blueprints of the tenant compared with the catalogs (AB#5558, system cockpit). */
8105
+ interface CockpitBlueprintStatus {
8106
+ /** Installed root blueprints (dependencies pulled in by another blueprint are not counted). */
8107
+ installed: number;
8108
+ /** Installed blueprints with a strictly higher catalog version; installed by the tenant first, then service-managed. */
8109
+ updates: CockpitBlueprintUpdate[];
8110
+ /** Catalog entries read and available; more available than read = updates may be missing. */
8111
+ catalogRead: number;
8112
+ catalogTotal: number;
8113
+ }
8114
+ /**
8115
+ * `Name-Version` → parts. Splits at the last dash, like the Studio's blueprint pages (a `CkVersion`
8116
+ * never contains a dash).
8117
+ */
8118
+ declare function splitBlueprintId(blueprintId: string): {
8119
+ name: string;
8120
+ version: string;
8121
+ };
8122
+ /**
8123
+ * Compares two blueprint versions like the backend's `CkVersion` (`Major.Minor.Revision`,
8124
+ * numeric, missing components 0): negative when `a` is older, positive when newer. A string
8125
+ * comparison would rate `2.10.0` below `2.9.0` (AB#4837).
8126
+ */
8127
+ declare function compareBlueprintVersions(a: string, b: string): number;
8128
+ /** The status from one `cockpitBlueprintStatus` answer. */
8129
+ declare function toBlueprintStatus(data: CockpitBlueprintStatusQueryDto | null | undefined): CockpitBlueprintStatus;
8130
+ /**
8131
+ * The tenant's blueprint status, shared for a few seconds per tenant between the "Blueprint
8132
+ * updates" KPI and the attention check.
8133
+ */
8134
+ declare class CockpitBlueprintStatusService {
8135
+ private readonly gql;
8136
+ private readonly shared;
8137
+ status(tenantId: string, now?: number): Observable<CockpitBlueprintStatus>;
8138
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CockpitBlueprintStatusService, never>;
8139
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CockpitBlueprintStatusService>;
8140
+ }
8141
+
8142
+ /** Child tenants of the current tenant (the system tenant: every tenant of the installation). */
8143
+ interface CockpitChildTenants {
8144
+ total: number;
8145
+ /** Ids of the first tenants (for the detail line). */
8146
+ firstIds: string[];
8147
+ }
8148
+ /** Tenant ids read with the count. */
8149
+ declare const COCKPIT_CHILD_TENANT_IDS = 3;
8150
+ /**
8151
+ * Child tenant count (AB#5558, system cockpit) from the asset repository's tenant list
8152
+ * (`GET {tenantId}/v1/tenants`, the Child Tenants page). The list only knows id and database —
8153
+ * there is no per-tenant state (enabled, mode, health) to group by.
8154
+ */
8155
+ declare class CockpitChildTenantsService {
8156
+ private readonly assetRepo;
8157
+ childTenants(): Observable<CockpitChildTenants>;
8158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CockpitChildTenantsService, never>;
8159
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CockpitChildTenantsService>;
8160
+ }
8161
+
8162
+ /** Platform services the cockpit checks (the keys of the Studio's `health/:serviceType` page). */
8163
+ type CockpitServiceKey = 'identity' | 'asset-repository' | 'bot' | 'communication-controller';
8164
+ /** Health of one platform service. `unknown`: the health endpoint did not answer. */
8165
+ type CockpitServiceHealthStatus = 'healthy' | 'degraded' | 'unhealthy' | 'unknown';
8166
+ interface CockpitServiceHealth {
8167
+ service: CockpitServiceKey;
8168
+ /** English display name ("Identity"). */
8169
+ name: string;
8170
+ status: CockpitServiceHealthStatus;
8171
+ }
8172
+ /** Display names, in check order. */
8173
+ declare const COCKPIT_SERVICE_NAMES: Readonly<Record<CockpitServiceKey, string>>;
8174
+ /** `HealthCheck` → status (`null` = no answer). */
8175
+ declare function toServiceHealthStatus(check: HealthCheck | null | undefined): CockpitServiceHealthStatus;
8176
+ /**
8177
+ * Health of the platform services (AB#5558, system cockpit): the same `/health` endpoints as the
8178
+ * MeshBoard's service health tiles, all at once, shared for a few seconds between the "Services"
8179
+ * KPI and the attention check. Optional services that are not part of the installation (empty
8180
+ * URL, or `/` from older platform-services) are left out.
8181
+ */
8182
+ declare class CockpitServiceHealthService {
8183
+ private readonly health;
8184
+ private readonly configuration;
8185
+ private shared;
8186
+ services(now?: number): Observable<CockpitServiceHealth[]>;
8187
+ private check;
8188
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CockpitServiceHealthService, never>;
8189
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CockpitServiceHealthService>;
8190
+ }
8191
+
7705
8192
  type CockpitAdapterStatesQueryDto = {
7706
8193
  __typename?: 'OctoQuery';
7707
8194
  runtime?: {
@@ -7846,6 +8333,27 @@ declare function executionKpi(flows: CockpitDataFlowRow[], totalCount?: number,
7846
8333
  * `messages` (English by default, AB#5622).
7847
8334
  */
7848
8335
  declare function ckModelKpi(counts: CockpitCkModelCounts, messages?: CockpitWidgetMessages): CockpitKpi;
8336
+ /**
8337
+ * "Tenants" (system cockpit, AB#5558): child tenants of the current tenant — on the system tenant
8338
+ * every tenant of the installation. The tenant list has no state, so the tile counts only.
8339
+ */
8340
+ declare function tenantCountKpi(tenants: CockpitChildTenants, messages?: CockpitWidgetMessages): CockpitKpi;
8341
+ /**
8342
+ * "Blueprint updates" (system cockpit, AB#5558): installed blueprints with a newer catalog
8343
+ * version. Only blueprints the tenant installed count as updates to act on (warning);
8344
+ * service-managed ones (`System.*`) are applied by their service and only named in the detail.
8345
+ */
8346
+ declare function blueprintUpdatesKpi(status: CockpitBlueprintStatus, messages?: CockpitWidgetMessages): CockpitKpi;
8347
+ /** The display word of a service health state (`degraded`, `unhealthy`, `not reachable`). */
8348
+ declare function serviceStateText(state: CockpitServiceHealthStatus, messages?: CockpitWidgetMessages): string;
8349
+ /**
8350
+ * "Services healthy" (system cockpit, AB#5558): platform services whose health check reports
8351
+ * Healthy, of all checked. Unhealthy and not answering are errors, degraded a warning; the tile
8352
+ * opens the health details of the first service with a problem (else Identity).
8353
+ */
8354
+ declare function servicesHealthKpi(services: CockpitServiceHealth[], messages?: CockpitWidgetMessages): CockpitKpi;
8355
+ /** "Version" (system cockpit, AB#5558): the host's versions; the first is the value. No page behind it. */
8356
+ declare function versionKpi(entries: CockpitVersionEntry[], messages?: CockpitWidgetMessages): CockpitKpi;
7849
8357
  /** SVG paths of a sparkline in a `width` × `height` box (line, filled area, last point). */
7850
8358
  interface SparklineGeometry {
7851
8359
  line: string;
@@ -7871,8 +8379,11 @@ declare class CockpitCkModelStatesService {
7871
8379
 
7872
8380
  /** What a tile shows when its query failed (details are logged, never shown). */
7873
8381
  declare const KPI_ERROR_TEXT = "The figure could not be loaded.";
7874
- /** The cockpit KPIs. */
7875
- type CockpitKpiKind = 'adapterStatus' | 'ckModelState' | 'pipelineExecutions';
8382
+ /**
8383
+ * The cockpit KPIs. The last four are the system cockpit's (AB#5558): child tenants, blueprint
8384
+ * updates, platform service health and the host's version.
8385
+ */
8386
+ type CockpitKpiKind = 'adapterStatus' | 'ckModelState' | 'pipelineExecutions' | 'tenantCount' | 'blueprintUpdates' | 'servicesHealth' | 'versionInfo';
7876
8387
  /** State of one KPI widget. */
7877
8388
  type CockpitKpiResult = {
7878
8389
  state: 'loading';
@@ -7898,7 +8409,7 @@ interface KpiGate {
7898
8409
  /** English reason (the default of {@link reasonMessage}). */
7899
8410
  reason: string;
7900
8411
  /** Message member of the reason (AB#5622). */
7901
- reasonMessage: 'kpiNeedsCommunication' | 'kpiNeedsAdminPanel';
8412
+ reasonMessage: 'kpiNeedsCommunication' | 'kpiNeedsAdminPanel' | 'kpiNeedsTenantManagement' | 'notAvailable';
7902
8413
  }
7903
8414
  /** What each KPI needs — the same as the page its tile opens. */
7904
8415
  declare const COCKPIT_KPI_GATES: Record<CockpitKpiKind, KpiGate>;
@@ -7911,6 +8422,9 @@ declare class CockpitKpiService {
7911
8422
  private readonly adapterStates;
7912
8423
  private readonly ckModelStates;
7913
8424
  private readonly dataFlowExecutions;
8425
+ /** The system cockpit's data services are resolved on first use, so hosts without them need no providers. */
8426
+ private readonly injector;
8427
+ private readonly versions;
7914
8428
  private readonly messagesSource;
7915
8429
  /**
7916
8430
  * The KPI's state. Texts (label, status, detail, reasons) come from `messages`, else from the
@@ -8058,11 +8572,17 @@ declare class CockpitKpiWidgetComponent implements DashboardWidget<CockpitKpiWid
8058
8572
  private readonly tenantId;
8059
8573
  private readonly options;
8060
8574
  private subscription;
8575
+ /** Set once a load has been running for {@link COCKPIT_KPI_SLOW_LOADING_MS}. */
8576
+ private readonly slowLoading;
8577
+ private slowTimer;
8578
+ private readonly kind;
8061
8579
  readonly result: _angular_core.Signal<CockpitKpiResult>;
8062
8580
  readonly isLoading: _angular_core.Signal<boolean>;
8063
8581
  readonly data: _angular_core.Signal<CockpitKpi | null>;
8064
8582
  readonly error: _angular_core.Signal<string | null>;
8065
8583
  protected readonly kpi: _angular_core.Signal<CockpitKpi | null>;
8584
+ /** "Loading…", or what a slow KPI is doing (blueprint catalog scan) after a second. */
8585
+ protected readonly loadingText: _angular_core.Signal<string>;
8066
8586
  protected readonly showDetail: _angular_core.Signal<boolean>;
8067
8587
  /** Role requirements only for builders; other viewers get a neutral "Not available" (AB#5558 review). */
8068
8588
  protected readonly reason: _angular_core.Signal<string>;
@@ -8074,9 +8594,15 @@ declare class CockpitKpiWidgetComponent implements DashboardWidget<CockpitKpiWid
8074
8594
  ngOnDestroy(): void;
8075
8595
  refresh(): void;
8076
8596
  private load;
8597
+ private clearSlowTimer;
8077
8598
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CockpitKpiWidgetComponent, never>;
8078
8599
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CockpitKpiWidgetComponent, "mm-cockpit-kpi-widget", never, { "config": { "alias": "config"; "required": false; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8079
8600
  }
8601
+ /**
8602
+ * After this long still loading, a slow KPI says what it is doing instead of "Loading…"
8603
+ * (AB#5622: the "Blueprint updates" tile scans every catalog, which can take several seconds).
8604
+ */
8605
+ declare const COCKPIT_KPI_SLOW_LOADING_MS = 1000;
8080
8606
  /** What viewers without builder roles see instead of role requirements. */
8081
8607
  declare const NOT_AVAILABLE_TEXT = "Not available";
8082
8608
  /** The KPI a cockpit KPI widget shows. */
@@ -8195,7 +8721,8 @@ declare class RecentItemsConfigDialogComponent implements OnInit {
8195
8721
  declare const BUILT_IN_ATTENTION_PROVIDERS: readonly Type<AttentionProvider>[];
8196
8722
  /**
8197
8723
  * Registers the cockpit widgets (AB#5558): "Attention list", "Adapter status", "CK model state",
8198
- * "Pipeline executions 24 h" and "Recent items". Persisted with `dataSourceType: 'static'` and a small JSON
8724
+ * "Pipeline executions 24 h", the system cockpit's "Tenants", "Blueprint updates", "Services
8725
+ * healthy" and "Version", and "Recent items". Persisted with `dataSourceType: 'static'` and a small JSON
8199
8726
  * config (see the README widget catalogue for the exact keys).
8200
8727
  */
8201
8728
  declare function registerCockpitWidgets(registry: WidgetRegistryService): void;
@@ -8354,5 +8881,5 @@ declare function pipelineExecutionInputs(children: (unknown | null)[] | null | u
8354
8881
  */
8355
8882
  declare function countPipelineExecutions(pipelines: PipelineExecutionInput[], now?: number): PipelineExecutionCounts;
8356
8883
 
8357
- export { ADAPTER_OFFLINE_GRACE_MS, ATTENTION_SEVERITY_ORDER, AdaptersAttentionProvider, AddWidgetDialogComponent, AiInsightsConfigDialogComponent, AiInsightsService, AiInsightsWidgetComponent, AlertBannerConfigDialogComponent, AlertBannerWidgetComponent, AlertListConfigDialogComponent, AlertListWidgetComponent, AssociationsConfigDialogComponent, AttentionListConfigDialogComponent, AttentionListWidgetComponent, AutoRefreshTimerService, BUILT_IN_ATTENTION_PROVIDERS, BarChartConfigDialogComponent, BarChartWidgetComponent, COCKPIT_ADAPTER_LIMIT, COCKPIT_ATTENTION_PROVIDERS, COCKPIT_DATA_FLOW_LIMIT, COCKPIT_EXPLAIN_HANDLER, COCKPIT_FAILED_EXECUTIONS_OPTIONS, COCKPIT_KPI_GATES, COCKPIT_LINK_RESOLVER, COCKPIT_RECENT_ITEMS, COCKPIT_ROLES, COCKPIT_VIEWER_ACCESS, COCKPIT_WIDGET_MESSAGES, COCKPIT_WIDGET_TYPES, CkModelsResolveFailedAttentionProvider, CockpitAdapterStatesService, CockpitAttentionService, CockpitCkModelStatesService, CockpitContextService, CockpitDataFlowExecutionsService, CockpitKpiConfigDialogComponent, CockpitKpiService, CockpitKpiWidgetComponent, DAY_MS, DEFAULT_ATTENTION_MAX_ITEMS, DEFAULT_COCKPIT_WIDGET_MESSAGES, DEFAULT_FAILED_EXECUTIONS_OPTIONS, DEFAULT_RECENT_ITEMS_MAX, DEFAULT_TIME_ZONE_MODE, DashboardDataService, DashboardGridService, EditModeStateService, EditWidgetDialogComponent, EntityAssociationsWidgetComponent, EntityCardConfigDialogComponent, EntityCardWidgetComponent, EntityDetailDialogComponent, EntitySelectorEditorComponent, EntitySelectorToolbarComponent, FailedExecutionsAttentionProvider, FeaturesNotInstalledAttentionProvider, GaugeConfigDialogComponent, GaugeWidgetComponent, HISTOGRAM_HOURS, HOUR_MS, HeatmapConfigDialogComponent, HeatmapWidgetComponent, KPI_ERROR_TEXT, KpiConfigDialogComponent, KpiWidgetComponent, LazyMarkdownComponent, LineChartConfigDialogComponent, LineChartWidgetComponent, MAX_RECENT_ITEMS, MESHBOARD_CHROME_ROUTE_DATA, MESHBOARD_DESCRIPTION_MARKER, MESHBOARD_EDIT_QUERY_PARAM, MESHBOARD_HEADER_MODE_ROUTE_DATA, MESHBOARD_OPTIONS, MESHBOARD_TENANT_ID_PROVIDER, MarkdownConfigDialogComponent, MarkdownWidgetComponent, MeshBoardDataService, MeshBoardGridService, MeshBoardManagerDialogComponent, MeshBoardPersistenceService, MeshBoardSettingsDialogComponent, MeshBoardSettingsResult, MeshBoardStateService, MeshBoardViewComponent, NOT_AVAILABLE_TEXT, PieChartConfigDialogComponent, PieChartWidgetComponent, QueryExecutorService, QuerySelectorComponent, RecentItemsConfigDialogComponent, RecentItemsWidgetComponent, RuntimeEntitySelectorComponent, STATE_STATUS_BY_KEY, ServiceHealthConfigDialogComponent, ServiceHealthWidgetComponent, StatsGridConfigDialogComponent, StatsGridWidgetComponent, StatusIndicatorConfigDialogComponent, StatusIndicatorWidgetComponent, StatusListConfigDialogComponent, StatusListWidgetComponent, SummaryCardConfigDialogComponent, SummaryCardWidgetComponent, TableConfigDialogComponent, TableWidgetComponent, TableWidgetDataSourceDirective, UnregisteredPoolsAttentionProvider, WidgetFactoryService, WidgetGroupComponent, WidgetGroupConfigDialogComponent, WidgetNotConfiguredComponent, WidgetRegistryService, adapterKpi, adaptersInError, adaptersOffline, buildHourlyHistogram, categoryStatus, ckModelKpi, classifyQuery, compareMeshBoardNavigation, countFlowExecutions, countLabel, countPipelineExecutions, enabledButNotInstalled, executionKpi, failedExecutionsSeverity, formatCockpitMessage, formatCount, humanizeCategory, isAdapterAtRest, isAdapterExpectedToRun, isAdapterOnline, isCockpitWidgetType, isMeshBoardChrome, isMeshBoardHeaderMode, isServiceConfigured, joinEncodedDescription, kpiKindOf, latestStatisticsUpdate, loadNgxMarkdown, nameList, newMeshBoardConfig, normalizeNavigation, observeThemeChanges, pipelineExecutionInputs, plural, provideCockpitWidgetHost, provideCockpitWidgets, provideDefaultWidgets, provideMeshBoard, provideProcessWidget, provideWidgetRegistrations, queryFamily, readMeshBoardNavigation, recentRelativeTime, registerCockpitWidgets, registerDefaultWidgets, registerProcessWidget, resolveCockpitWidgetMessages, resolveMeshBoardChrome, resolveMeshBoardHeaderMode, selectProviders, sortAttentionFindings, sparklineGeometry, splitEncodedDescription, statusColor, summarizeAdapterOnline, truncationNote, withMeshBoardNavigation };
8358
- export type { AdapterOnlineFields, AdapterOnlineSummary, AdapterStatusWidgetConfig, AggregationDataSource, AggregationQuery, AggregationType, AiInsightsConfigResult, AiInsightsWidgetConfig, AlertBannerConfigResult, AlertBannerWidgetConfig, AlertListConfigResult, AlertListWidgetConfig, AnyWidgetConfig, AssociationsConfigResult, AttentionContext, AttentionFinding, AttentionLink, AttentionListConfigResult, AttentionListWidgetConfig, AttentionProvider, AttentionProviderInfo, AttentionSeverity, AttentionState, BarChartColorThreshold, BarChartConfigResult, BarChartSeries, BarChartType, BarChartWidgetConfig, BaseWidgetConfig, CategoryStatus, CategoryValueItem, ChartReferenceLine, CkModelStateWidgetConfig, CkQueryResult, CkQueryTarget, CkTypeAttributeInfo, CockpitAdapterState, CockpitAdapterStates, CockpitCkModelCounts, CockpitDataFlowExecutions, CockpitDataFlowRow, CockpitExecutionCounts, CockpitExplainHandler, CockpitExplainTarget, CockpitKpi, CockpitKpiConfigResult, CockpitKpiKind, CockpitKpiResult, CockpitKpiStatus, CockpitKpiWidgetConfig, CockpitKpiWidgetOptions, CockpitLinkQueryParams, CockpitLinkResolver, CockpitLinkTarget, CockpitRecentItem, CockpitRecentItemKind, CockpitRecentItemsSource, CockpitResolvedLink, CockpitRouteLinkTarget, CockpitViewerAccess, CockpitWidgetHost, CockpitWidgetMessages, CockpitWidgetMessagesSource, CockpitWidgetType, ConfigDialogResult, ConfigResultApplier, ConstructionKitQueryDataSource, DashboardConfig, DashboardWidget, DataSource, DataSourceType, DiagramPropertyMapping, EncodedDescription, EntityAssociation, EntityAttribute, EntityCardConfigResult, EntityCardWidgetConfig, EntityListWidget, EntitySelectorAttributeMapping, EntitySelectorChildScope, EntitySelectorClearEvent, EntitySelectorConfig, EntitySelectorEvent, EntityWidget, EntityWithAssociationsWidgetConfig, FailedExecutionsAttentionOptions, GaugeConfigResult, GaugeRange, GaugeType, GaugeWidgetConfig, GridCell, GridPosition, GroupChildWidgetType, GroupedDataItem, HeatmapAggregation, HeatmapColorMode, HeatmapColorScheme, HeatmapConfigResult, HeatmapWidgetConfig, HourlyExecutionBucket, HourlyHistogramOptions, KpiConfigResult, KpiDataSourceType, KpiQueryMode, KpiValueMode, KpiWidgetConfig, LatestExecutionInput, LineChartConfigResult, LineChartType, LineChartWidgetConfig, MarkdownConfigResult, MarkdownTextAlign, MarkdownWidgetConfig, MeshBoardChrome, MeshBoardConfig, MeshBoardHeaderMode, MeshBoardNavigationConfig, MeshBoardOptions, MeshBoardTimeFilterConfig, MeshBoardTimeZoneMode, MeshBoardVariable, MeshBoardVariableSource, MeshBoardVariableType, ParentAssociationMode, PersistedDashboard, PersistedMeshBoard, PersistedWidget, PersistedWidgetData, PersistentQueryCellMode, PersistentQueryCellSource, PersistentQueryDataSource, PersistentQueryItem, PieChartConfigResult, PieChartType, PieChartWidgetConfig, PipelineExecutionCounts, PipelineExecutionInput, PipelineExecutionsWidgetConfig, PipelineStatisticsInput, ProcessWidgetConfig, Quarter, QueryCell, QueryClassification, QueryColumn, QueryColumnInfo, QueryColumnItem, QueryExecutionOptions, QueryExecutionResult, QueryFamily, QueryKind, QueryResultRow, RawHourBucket, RecentItemsConfigResult, RecentItemsWidgetConfig, RelativeTimeUnit, RepeaterDataItem, RepeaterQueryDataSource, RuntimeEntityData, RuntimeEntityDataSource, RuntimeEntitySelectorValue, SeriesAggregationFunction, SeriesResolutionResult, ServiceCallDataSource, ServiceCallType, ServiceHealthConfigResult, ServiceHealthWidgetConfig, SparklineGeometry, StatColor, StatItem, StaticDataSource, StatsGridConfigResult, StatsGridWidgetConfig, StatusIndicatorConfigResult, StatusIndicatorWidgetConfig, StatusListConfigResult, StatusListWidgetConfig, StreamDataExecutionArgs, SummaryCardConfigResult, SummaryCardTile, SummaryCardWidgetConfig, TableColumn, TableColumnStatusIconMapping, TableConfigResult, TableFilterConfig, TableSortConfig, TableWidgetConfig, TargetEntityWithAttributes, TimeRangePickerConfig, TimeRangeSelection, TimeRangeType, UpdateDashboardResult, VariableResolutionError, WidgetConfig, WidgetConfigDialog, WidgetConfigDialogSize, WidgetConfigResult, WidgetCreationOptions, WidgetDataSource, WidgetFilterConfig, WidgetGroupAttributeMappings, WidgetGroupChildTemplate, WidgetGroupConfig, WidgetGroupConfigResult, WidgetGroupLayout, WidgetPersistenceData, WidgetPositionUpdate, WidgetRegistration, WidgetType, WidgetZone };
8884
+ export { ADAPTER_OFFLINE_GRACE_MS, ATTENTION_SEVERITY_ORDER, AdaptersAttentionProvider, AddWidgetDialogComponent, AiInsightsConfigDialogComponent, AiInsightsService, AiInsightsWidgetComponent, AlertBannerConfigDialogComponent, AlertBannerWidgetComponent, AlertListConfigDialogComponent, AlertListWidgetComponent, AssociationsConfigDialogComponent, AttentionListConfigDialogComponent, AttentionListWidgetComponent, AutoRefreshTimerService, BUILT_IN_ATTENTION_PROVIDERS, BarChartConfigDialogComponent, BarChartWidgetComponent, BlueprintUpdatesAttentionProvider, COCKPIT_ADAPTER_LIMIT, COCKPIT_ATTENTION_PROVIDERS, COCKPIT_BLUEPRINT_CATALOG_LIMIT, COCKPIT_CHILD_TENANT_IDS, COCKPIT_DATA_FLOW_LIMIT, COCKPIT_EXPLAIN_HANDLER, COCKPIT_FAILED_EXECUTIONS_OPTIONS, COCKPIT_KPI_GATES, COCKPIT_KPI_SLOW_LOADING_MS, COCKPIT_LINK_RESOLVER, COCKPIT_RECENT_ITEMS, COCKPIT_ROLES, COCKPIT_SERVICE_NAMES, COCKPIT_VERSION_SOURCE, COCKPIT_VIEWER_ACCESS, COCKPIT_WIDGET_MESSAGES, COCKPIT_WIDGET_TYPES, CkModelsResolveFailedAttentionProvider, CockpitAdapterStatesService, CockpitAttentionService, CockpitBlueprintStatusService, CockpitChildTenantsService, CockpitCkModelStatesService, CockpitContextService, CockpitDataFlowExecutionsService, CockpitKpiConfigDialogComponent, CockpitKpiService, CockpitKpiWidgetComponent, CockpitServiceHealthService, DAY_MS, DEFAULT_ATTENTION_MAX_ITEMS, DEFAULT_COCKPIT_WIDGET_MESSAGES, DEFAULT_FAILED_EXECUTIONS_OPTIONS, DEFAULT_MESHBOARD_MESSAGES, DEFAULT_RECENT_ITEMS_MAX, DEFAULT_TIME_ZONE_MODE, DashboardDataService, DashboardGridService, EditModeStateService, EditWidgetDialogComponent, EntityAssociationsWidgetComponent, EntityCardConfigDialogComponent, EntityCardWidgetComponent, EntityDetailDialogComponent, EntitySelectorEditorComponent, EntitySelectorToolbarComponent, FALLBACK_SERIES_COLORS, FailedExecutionsAttentionProvider, FeaturesNotInstalledAttentionProvider, GaugeConfigDialogComponent, GaugeWidgetComponent, HISTOGRAM_HOURS, HOUR_MS, HeatmapConfigDialogComponent, HeatmapWidgetComponent, KPI_ERROR_TEXT, KpiConfigDialogComponent, KpiWidgetComponent, LazyMarkdownComponent, LineChartConfigDialogComponent, LineChartWidgetComponent, MAX_RECENT_ITEMS, MESHBOARD_CHROME_ROUTE_DATA, MESHBOARD_DESCRIPTION_MARKER, MESHBOARD_EDIT_QUERY_PARAM, MESHBOARD_HEADER_MODE_ROUTE_DATA, MESHBOARD_LABEL_RESOLVER, MESHBOARD_MESSAGES, MESHBOARD_OPTIONS, MESHBOARD_TENANT_ID_PROVIDER, MarkdownConfigDialogComponent, MarkdownWidgetComponent, MeshBoardDataService, MeshBoardGridService, MeshBoardManagerDialogComponent, MeshBoardPersistenceService, MeshBoardSettingsDialogComponent, MeshBoardSettingsResult, MeshBoardStateService, MeshBoardViewComponent, NOT_AVAILABLE_TEXT, PieChartConfigDialogComponent, PieChartWidgetComponent, QueryExecutorService, QuerySelectorComponent, RecentItemsConfigDialogComponent, RecentItemsWidgetComponent, RuntimeEntitySelectorComponent, SERVICE_MANAGED_BLUEPRINT_PREFIX, STATE_STATUS_BY_KEY, ServiceHealthConfigDialogComponent, ServiceHealthWidgetComponent, ServicesHealthAttentionProvider, StatsGridConfigDialogComponent, StatsGridWidgetComponent, StatusIndicatorConfigDialogComponent, StatusIndicatorWidgetComponent, StatusListConfigDialogComponent, StatusListWidgetComponent, SummaryCardConfigDialogComponent, SummaryCardWidgetComponent, TableConfigDialogComponent, TableWidgetComponent, TableWidgetDataSourceDirective, UnregisteredPoolsAttentionProvider, WidgetFactoryService, WidgetGroupComponent, WidgetGroupConfigDialogComponent, WidgetNotConfiguredComponent, WidgetRegistryService, adapterKpi, adaptersInError, adaptersOffline, blueprintUpdatesKpi, buildHourlyHistogram, categoryStatus, chartSeriesColors, ckModelKpi, classifyQuery, compareBlueprintVersions, compareMeshBoardNavigation, countFlowExecutions, countLabel, countPipelineExecutions, enabledButNotInstalled, executionKpi, failedExecutionsSeverity, formatCockpitMessage, formatCount, humanizeCategory, isAdapterAtRest, isAdapterExpectedToRun, isAdapterOnline, isCockpitWidgetType, isMeshBoardChrome, isMeshBoardHeaderMode, isServiceConfigured, joinEncodedDescription, kpiKindOf, latestStatisticsUpdate, legacyCockpitLinkTarget, loadNgxMarkdown, nameList, newMeshBoardConfig, normalizeNavigation, observeThemeChanges, pipelineExecutionInputs, plural, provideCockpitWidgetHost, provideCockpitWidgets, provideDefaultWidgets, provideMeshBoard, provideMeshBoardMessages, provideProcessWidget, provideWidgetRegistrations, queryFamily, readMeshBoardNavigation, recentRelativeTime, registerCockpitWidgets, registerDefaultWidgets, registerProcessWidget, resolveChartColor, resolveCockpitWidgetMessages, resolveMeshBoardChrome, resolveMeshBoardHeaderMode, resolveMeshBoardLabel, resolveMeshBoardMessages, selectProviders, serviceStateText, servicesHealthKpi, sortAttentionFindings, sparklineGeometry, splitBlueprintId, splitEncodedDescription, statusColor, summarizeAdapterOnline, tenantCountKpi, toBlueprintStatus, toServiceHealthStatus, truncationNote, versionKpi, withMeshBoardNavigation };
8885
+ export type { AdapterOnlineFields, AdapterOnlineSummary, AdapterStatusWidgetConfig, AggregationDataSource, AggregationQuery, AggregationType, AiInsightsConfigResult, AiInsightsWidgetConfig, AlertBannerConfigResult, AlertBannerWidgetConfig, AlertListConfigResult, AlertListWidgetConfig, AnyWidgetConfig, AssociationsConfigResult, AttentionContext, AttentionFinding, AttentionLink, AttentionListConfigResult, AttentionListWidgetConfig, AttentionProvider, AttentionProviderInfo, AttentionSeverity, AttentionState, BarChartColorThreshold, BarChartConfigResult, BarChartSeries, BarChartType, BarChartWidgetConfig, BaseWidgetConfig, BlueprintUpdatesWidgetConfig, CategoryStatus, CategoryValueItem, ChartReferenceLine, CkModelStateWidgetConfig, CkQueryResult, CkQueryTarget, CkTypeAttributeInfo, CockpitAdapterState, CockpitAdapterStates, CockpitBlueprintStatus, CockpitBlueprintUpdate, CockpitChildTenants, CockpitCkModelCounts, CockpitDataFlowExecutions, CockpitDataFlowRow, CockpitExecutionCounts, CockpitExplainHandler, CockpitExplainTarget, CockpitKpi, CockpitKpiConfigResult, CockpitKpiKind, CockpitKpiResult, CockpitKpiStatus, CockpitKpiWidgetConfig, CockpitKpiWidgetOptions, CockpitLinkQueryParams, CockpitLinkResolver, CockpitLinkTarget, CockpitRecentItem, CockpitRecentItemKind, CockpitRecentItemsSource, CockpitResolvedLink, CockpitRouteLinkTarget, CockpitServiceHealth, CockpitServiceHealthStatus, CockpitServiceKey, CockpitVersionEntry, CockpitVersionSource, CockpitViewerAccess, CockpitWidgetHost, CockpitWidgetMessages, CockpitWidgetMessagesSource, CockpitWidgetType, ConfigDialogResult, ConfigResultApplier, ConstructionKitQueryDataSource, DashboardConfig, DashboardWidget, DataSource, DataSourceType, DiagramPropertyMapping, EncodedDescription, EntityAssociation, EntityAttribute, EntityCardConfigResult, EntityCardWidgetConfig, EntityListWidget, EntitySelectorAttributeMapping, EntitySelectorChildScope, EntitySelectorClearEvent, EntitySelectorConfig, EntitySelectorEvent, EntityWidget, EntityWithAssociationsWidgetConfig, FailedExecutionsAttentionOptions, GaugeConfigResult, GaugeRange, GaugeType, GaugeWidgetConfig, GridCell, GridPosition, GroupChildWidgetType, GroupedDataItem, HeatmapAggregation, HeatmapColorMode, HeatmapColorScheme, HeatmapConfigResult, HeatmapWidgetConfig, HourlyExecutionBucket, HourlyHistogramOptions, KpiConfigResult, KpiDataSourceType, KpiQueryMode, KpiValueMode, KpiWidgetConfig, LatestExecutionInput, LineChartConfigResult, LineChartType, LineChartWidgetConfig, MarkdownConfigResult, MarkdownTextAlign, MarkdownWidgetConfig, MeshBoardChrome, MeshBoardConfig, MeshBoardHeaderMode, MeshBoardLabelKind, MeshBoardLabelRequest, MeshBoardLabelResolver, MeshBoardMessages, MeshBoardMessagesSource, MeshBoardNavigationConfig, MeshBoardOptions, MeshBoardTimeFilterConfig, MeshBoardTimeZoneMode, MeshBoardVariable, MeshBoardVariableSource, MeshBoardVariableType, ParentAssociationMode, PersistedDashboard, PersistedMeshBoard, PersistedWidget, PersistedWidgetData, PersistentQueryCellMode, PersistentQueryCellSource, PersistentQueryDataSource, PersistentQueryItem, PieChartConfigResult, PieChartLabelPosition, PieChartType, PieChartWidgetConfig, PipelineExecutionCounts, PipelineExecutionInput, PipelineExecutionsWidgetConfig, PipelineStatisticsInput, ProcessWidgetConfig, Quarter, QueryCell, QueryClassification, QueryColumn, QueryColumnInfo, QueryColumnItem, QueryExecutionOptions, QueryExecutionResult, QueryFamily, QueryKind, QueryResultRow, RawHourBucket, RecentItemsConfigResult, RecentItemsWidgetConfig, RelativeTimeUnit, RepeaterDataItem, RepeaterQueryDataSource, RuntimeEntityData, RuntimeEntityDataSource, RuntimeEntitySelectorValue, SeriesAggregationFunction, SeriesResolutionResult, ServiceCallDataSource, ServiceCallType, ServiceHealthConfigResult, ServiceHealthWidgetConfig, ServicesHealthWidgetConfig, SparklineGeometry, StatColor, StatItem, StaticDataSource, StatsGridConfigResult, StatsGridWidgetConfig, StatusIndicatorConfigResult, StatusIndicatorWidgetConfig, StatusListConfigResult, StatusListWidgetConfig, StreamDataExecutionArgs, SummaryCardConfigResult, SummaryCardTile, SummaryCardWidgetConfig, TableColumn, TableColumnStatusIconMapping, TableConfigResult, TableFilterConfig, TableSortConfig, TableWidgetConfig, TargetEntityWithAttributes, TenantCountWidgetConfig, TimeRangePickerConfig, TimeRangeSelection, TimeRangeType, UpdateDashboardResult, VariableResolutionError, VersionInfoWidgetConfig, WidgetConfig, WidgetConfigDialog, WidgetConfigDialogSize, WidgetConfigResult, WidgetCreationOptions, WidgetDataSource, WidgetFilterConfig, WidgetGroupAttributeMappings, WidgetGroupChildTemplate, WidgetGroupConfig, WidgetGroupConfigResult, WidgetGroupLayout, WidgetPersistenceData, WidgetPositionUpdate, WidgetRegistration, WidgetType, WidgetZone };