@praxisui/table 8.0.0-beta.53 → 8.0.0-beta.54

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.
@@ -39528,7 +39528,7 @@ class PraxisTable {
39528
39528
  if (this.aiAdapter || this.aiAdapterLoadStarted)
39529
39529
  return;
39530
39530
  this.aiAdapterLoadStarted = true;
39531
- import('./praxisui-table-table-ai.adapter-rtjGFq_B.mjs')
39531
+ import('./praxisui-table-table-ai.adapter-B3KQThqg.mjs')
39532
39532
  .then(({ TableAiAdapter }) => {
39533
39533
  this.aiAdapter = new TableAiAdapter(this);
39534
39534
  this.initializeAiAssistantController();
@@ -1,7 +1,7 @@
1
1
  import { firstValueFrom } from 'rxjs';
2
2
  import { BaseAiAdapter, createComponentAuthoringContext } from '@praxisui/ai';
3
3
  import { deepMerge } from '@praxisui/core';
4
- import { z as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, R as coerceTableComponentEditPlans, W as compileTableComponentEditPlans, G as TASK_PRESETS, $ as getTableComponentEditPlanCapabilities, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-AUAbRLeB.mjs';
4
+ import { z as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, R as coerceTableComponentEditPlans, W as compileTableComponentEditPlans, G as TASK_PRESETS, $ as getTableComponentEditPlanCapabilities, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-KAnwisrq.mjs';
5
5
 
6
6
  const TABLE_COMPONENT_CONTEXT_PACK = {
7
7
  version: 'v1',
@@ -2023,6 +2023,7 @@ class TableAiAdapter extends BaseAiAdapter {
2023
2023
  'For filterFieldCatalog fields with criterionKind "range" and selectedRecordsContext as the source, derive criteria from the minimum and maximum selected values in relatedColumnFields and emit { start, end }; for criterionKind "date-range", emit { startDate, endDate } from the earliest and latest selected dates.',
2024
2024
  'When the user asks for similar, matching, or comparable records from selected records without naming which property should define similarity, return clarification with options derived from filterFieldCatalog labels instead of info text or a patch.',
2025
2025
  'When recordSurfaces exists and the user asks to open, consult, view, navigate, or inspect information related to the selected record, answer from recordSurfaces before considering selection-derived filters.',
2026
+ 'Resolve related-surface requests by the declared recordSurfaces semantic catalog, including label, description, semanticIntent, kind, scope, and tags; do not fall back to selected-record filters when a declared surface semantically satisfies the request.',
2026
2027
  'Use dynamicPage.surface.open only when recordSurfaces declares the requested surface and the user asks to open, show, navigate to, or display that related surface now.',
2027
2028
  'Do not use table.filter.apply for related-surface requests unless the user explicitly asks to find other records.',
2028
2029
  'When runtimeOperations.filterExpression.supported is not true, do not materialize OR, alternative groups, or nested boolean filters; ask which single filter field/value should be applied or explain the limitation.',
@@ -2054,6 +2055,7 @@ class TableAiAdapter extends BaseAiAdapter {
2054
2055
  'When selectedRecordsContext.selectedCount is greater than zero, do not claim that no record is selected; answer from selectedRecordsContext.sampleRows even when there is only one selected row.',
2055
2056
  'When selectedRecordsContext.filterCandidates exists, treat those candidates as the canonical selection-derived bridge to advanced filters; prefer their labels and criteria over re-inferring values from prose.',
2056
2057
  'When recordSurfaces exists and the user asks what can be opened, consulted, navigated, or viewed for selected records, answer or clarify using recordSurfaces before considering selection-derived filters.',
2058
+ 'For record-related surface requests, ground the target in recordSurfaces semantic fields such as label, description, semanticIntent, kind, scope, and tags before considering filters.',
2057
2059
  'Do not use selection-derived filters for requests about related surfaces, detail panels, timelines, teams, profiles, histories, payroll, or other record-adjacent information unless the user explicitly asks to find other records.',
2058
2060
  'If the user asks for a related surface that is not declared in recordSurfaces, say that it is not available in the current context and list the declared surfaces in human-facing labels.',
2059
2061
  'When the user asks how selected records can drive advanced filters or export, bridge the selected records to declared filterFieldCatalog fields and export scopes conceptually; ask for clarification when the shared property or export scope is ambiguous.',
@@ -2201,11 +2203,39 @@ class TableAiAdapter extends BaseAiAdapter {
2201
2203
  operationId: surface.operationId,
2202
2204
  ...(surface.description ? { description: surface.description } : {}),
2203
2205
  ...(surface.statePath ? { statePath: surface.statePath } : {}),
2206
+ ...this.buildRecordSurfaceSemanticDigest(surface),
2204
2207
  source: surface.source,
2205
2208
  target: surface.target,
2206
2209
  })),
2207
2210
  };
2208
2211
  }
2212
+ buildRecordSurfaceSemanticDigest(surface) {
2213
+ const resourceSurface = this.toRecord(surface['resourceSurface']);
2214
+ if (!resourceSurface) {
2215
+ return {};
2216
+ }
2217
+ const semanticIntent = this.stringValue(resourceSurface['intent']);
2218
+ const kind = this.stringValue(resourceSurface['kind']);
2219
+ const scope = this.stringValue(resourceSurface['scope']);
2220
+ const title = this.stringValue(resourceSurface['title']);
2221
+ const description = this.stringValue(resourceSurface['description']);
2222
+ const tags = this.compactStringArray(resourceSurface['tags']);
2223
+ const digest = {};
2224
+ if (kind)
2225
+ digest['kind'] = kind;
2226
+ if (scope)
2227
+ digest['scope'] = scope;
2228
+ if (semanticIntent)
2229
+ digest['semanticIntent'] = semanticIntent;
2230
+ if (title && title !== this.stringValue(surface['label']))
2231
+ digest['title'] = title;
2232
+ if (description && description !== this.stringValue(surface['description'])) {
2233
+ digest['semanticDescription'] = description;
2234
+ }
2235
+ if (tags.length)
2236
+ digest['tags'] = tags;
2237
+ return digest;
2238
+ }
2209
2239
  getResourceCapabilityAuthoringContext() {
2210
2240
  const tableWithCapabilities = this.table;
2211
2241
  try {
@@ -2709,6 +2739,14 @@ class TableAiAdapter extends BaseAiAdapter {
2709
2739
  stringValue(value) {
2710
2740
  return typeof value === 'string' ? value.trim() : '';
2711
2741
  }
2742
+ compactStringArray(value) {
2743
+ if (!Array.isArray(value)) {
2744
+ return [];
2745
+ }
2746
+ return value
2747
+ .map((item) => this.stringValue(item))
2748
+ .filter((item, index, items) => !!item && items.indexOf(item) === index);
2749
+ }
2712
2750
  normalizeString(value) {
2713
2751
  if (typeof value !== 'string') {
2714
2752
  return null;
@@ -1 +1 @@
1
- export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PraxisFilter, n as PraxisFilterWidgetConfigEditor, o as PraxisTable, p as PraxisTableConfigEditor, q as PraxisTableInlineAuthoringEditorComponent, r as PraxisTableToolbar, s as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, t as TABLE_COMPONENT_AI_CAPABILITIES, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, y as TABLE_COMPONENT_EDIT_PLAN_KIND, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TASK_PRESETS, H as TableDefaultsProvider, I as TableRulesEditorComponent, K as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, L as VisualFormulaBuilderComponent, O as buildTableApplyPlan, Q as coerceTableComponentEditPlan, R as coerceTableComponentEditPlans, U as compileTableComponentEditPlan, W as compileTableComponentEditPlans, X as createTableAuthoringDocument, Y as getActionId, Z as getEnum, _ as getTableCapabilities, $ as getTableComponentEditPlanCapabilities, a0 as isTableRendererSupportedByRichContentP0, a1 as mapTableRendererToRichContentP0, a2 as normalizeTableAuthoringDocument, a3 as parseLegacyOrTableDocument, a4 as providePraxisFilterMetadata, a5 as providePraxisTableMetadata, a6 as serializeTableAuthoringDocument, a7 as toCanonicalTableConfig, a8 as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-AUAbRLeB.mjs';
1
+ export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PraxisFilter, n as PraxisFilterWidgetConfigEditor, o as PraxisTable, p as PraxisTableConfigEditor, q as PraxisTableInlineAuthoringEditorComponent, r as PraxisTableToolbar, s as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, t as TABLE_COMPONENT_AI_CAPABILITIES, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, y as TABLE_COMPONENT_EDIT_PLAN_KIND, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TASK_PRESETS, H as TableDefaultsProvider, I as TableRulesEditorComponent, K as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, L as VisualFormulaBuilderComponent, O as buildTableApplyPlan, Q as coerceTableComponentEditPlan, R as coerceTableComponentEditPlans, U as compileTableComponentEditPlan, W as compileTableComponentEditPlans, X as createTableAuthoringDocument, Y as getActionId, Z as getEnum, _ as getTableCapabilities, $ as getTableComponentEditPlanCapabilities, a0 as isTableRendererSupportedByRichContentP0, a1 as mapTableRendererToRichContentP0, a2 as normalizeTableAuthoringDocument, a3 as parseLegacyOrTableDocument, a4 as providePraxisFilterMetadata, a5 as providePraxisTableMetadata, a6 as serializeTableAuthoringDocument, a7 as toCanonicalTableConfig, a8 as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-KAnwisrq.mjs';
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.53",
3
+ "version": "8.0.0-beta.54",
4
4
  "description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/ai": "^8.0.0-beta.53",
9
- "@praxisui/core": "^8.0.0-beta.53",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.53",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.53",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.53",
13
- "@praxisui/rich-content": "^8.0.0-beta.53",
14
- "@praxisui/settings-panel": "^8.0.0-beta.53",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.53",
8
+ "@praxisui/ai": "^8.0.0-beta.54",
9
+ "@praxisui/core": "^8.0.0-beta.54",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.54",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.54",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.54",
13
+ "@praxisui/rich-content": "^8.0.0-beta.54",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.54",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.54",
16
16
  "@angular/cdk": "^21.0.0",
17
17
  "@angular/forms": "^21.0.0",
18
18
  "@angular/material": "^21.0.0",
19
19
  "@angular/router": "^21.0.0",
20
- "@praxisui/dialog": "^8.0.0-beta.53",
20
+ "@praxisui/dialog": "^8.0.0-beta.54",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {