@praxisui/table 8.0.0-beta.79 → 8.0.0-beta.80

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.
@@ -39578,7 +39578,7 @@ class PraxisTable {
39578
39578
  if (this.aiAdapter || this.aiAdapterLoadStarted)
39579
39579
  return;
39580
39580
  this.aiAdapterLoadStarted = true;
39581
- import('./praxisui-table-table-ai.adapter-xYd8P_-p.mjs')
39581
+ import('./praxisui-table-table-ai.adapter-D8fQSvC3.mjs')
39582
39582
  .then(({ TableAiAdapter }) => {
39583
39583
  this.aiAdapter = new TableAiAdapter(this);
39584
39584
  this.initializeAiAssistantController();
@@ -39760,7 +39760,7 @@ class PraxisTable {
39760
39760
  initializeAiAssistantController() {
39761
39761
  if (!this.aiAdapter || this.aiAssistantController)
39762
39762
  return;
39763
- import('./praxisui-table-table-agentic-authoring-turn-flow-DtH4XP12.mjs')
39763
+ import('./praxisui-table-table-agentic-authoring-turn-flow-CyJJHpMr.mjs')
39764
39764
  .then(({ TableAgenticAuthoringTurnFlow }) => {
39765
39765
  if (this.aiAssistantController || !this.aiAdapter)
39766
39766
  return;
@@ -574,6 +574,10 @@ class TableAgenticAuthoringTurnFlow {
574
574
  return executableResponse;
575
575
  }
576
576
  if (compiledExecutable?.type === 'error') {
577
+ const continuedInvalidExecutable = this.selectedRecordSurfaceRuntimeOperationForInvalidExecutable(response, request, compiledExecutable.warnings);
578
+ if (continuedInvalidExecutable) {
579
+ return continuedInvalidExecutable;
580
+ }
577
581
  return {
578
582
  type: 'error',
579
583
  message: compiledExecutable.message || 'O componentEditPlan da tabela nao passou na validacao de capacidades.',
@@ -605,6 +609,10 @@ class TableAgenticAuthoringTurnFlow {
605
609
  return response;
606
610
  }
607
611
  if (compiled.type === 'error') {
612
+ const continuedInvalidExecutable = this.selectedRecordSurfaceRuntimeOperationForInvalidExecutable(response, request, compiled.warnings);
613
+ if (continuedInvalidExecutable) {
614
+ return continuedInvalidExecutable;
615
+ }
608
616
  return {
609
617
  type: 'error',
610
618
  message: compiled.message || 'O componentEditPlan da tabela nao passou na validacao de capacidades.',
@@ -1050,6 +1058,69 @@ class TableAgenticAuthoringTurnFlow {
1050
1058
  ],
1051
1059
  };
1052
1060
  }
1061
+ selectedRecordSurfaceRuntimeOperationForInvalidExecutable(response, request, warnings = []) {
1062
+ if (!request || !this.responseMayContainExecutableEnvelope(response))
1063
+ return null;
1064
+ const normalizedPrompt = this.normalizeLabel(request.prompt ?? '');
1065
+ if (!this.textMentionsRecordSurfaceOpenRequest(normalizedPrompt))
1066
+ return null;
1067
+ if (this.promptRequestsSimilarRecords(normalizedPrompt))
1068
+ return null;
1069
+ const contextHints = this.contextHintsFor(request);
1070
+ const surfaces = this.selectedRecordSurfaces(contextHints);
1071
+ if (!surfaces.length)
1072
+ return null;
1073
+ const responseEvidence = this.normalizeLabel([
1074
+ response.message ?? '',
1075
+ response.explanation ?? '',
1076
+ ...(response.questions ?? []),
1077
+ ...warnings,
1078
+ this.stringifySurfaceEvidence(response),
1079
+ ].join(' '));
1080
+ const ranked = surfaces
1081
+ .map((surface) => ({
1082
+ surface,
1083
+ score: this.selectedRecordSurfacePromptScore(`${normalizedPrompt} ${responseEvidence}`, surface),
1084
+ }))
1085
+ .filter((entry) => entry.score >= 2)
1086
+ .sort((left, right) => right.score - left.score);
1087
+ if (!ranked.length || (ranked.length > 1 && ranked[0].score === ranked[1].score)) {
1088
+ return null;
1089
+ }
1090
+ const surface = ranked[0].surface;
1091
+ const surfaceId = this.stringValue(surface['id']);
1092
+ if (!surfaceId)
1093
+ return null;
1094
+ const resourceSurface = this.toRecord(surface['resourceSurface']);
1095
+ const surfaceLabel = this.stringValue(surface['label'])
1096
+ || this.stringValue(resourceSurface?.['title'])
1097
+ || this.humanizeField(surfaceId);
1098
+ // Residual executable guard: this runs only after the LLM already authored
1099
+ // an executable envelope that failed component capability validation. The
1100
+ // surface target is ranked from declared recordSurfaces plus LLM-authored
1101
+ // evidence, so this does not become primary command routing by text.
1102
+ return {
1103
+ type: 'patch',
1104
+ patch: {
1105
+ tableRuntimeOperations: {
1106
+ source: 'selected-record-surface-invalid-executable-continuity-guard',
1107
+ operations: [{
1108
+ operationId: 'dynamicPage.surface.open',
1109
+ input: {
1110
+ surfaceId,
1111
+ surfaceLabel,
1112
+ source: 'selected-records',
1113
+ },
1114
+ }],
1115
+ },
1116
+ },
1117
+ explanation: `Vou abrir a superfície relacionada ${surfaceLabel}.`,
1118
+ warnings: [
1119
+ 'selected-record-surface-invalid-executable-continued-to-runtime-operation',
1120
+ 'Residual continuity guard acted only after LLM emitted an executable envelope that failed table component capability validation while a declared recordSurface uniquely matched the selected-record request.',
1121
+ ],
1122
+ };
1123
+ }
1053
1124
  selectedRecordSurfaceRowActionClarificationKind(response) {
1054
1125
  const text = this.normalizeLabel([
1055
1126
  response.message ?? '',
@@ -2861,6 +2932,14 @@ class TableAgenticAuthoringTurnFlow {
2861
2932
  stringValue(value) {
2862
2933
  return typeof value === 'string' ? value.trim() : '';
2863
2934
  }
2935
+ stringifySurfaceEvidence(value) {
2936
+ try {
2937
+ return JSON.stringify(value)?.slice(0, 4000) ?? '';
2938
+ }
2939
+ catch {
2940
+ return '';
2941
+ }
2942
+ }
2864
2943
  buildCurrentStateDigest(currentState, dataProfile) {
2865
2944
  const currentColumns = Array.isArray(currentState['columns'])
2866
2945
  ? currentState['columns']
@@ -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-Mu4q753b.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-BigLNasG.mjs';
5
5
 
6
6
  const TABLE_COMPONENT_CONTEXT_PACK = {
7
7
  version: 'v1',
@@ -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-Mu4q753b.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-BigLNasG.mjs';
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.79",
3
+ "version": "8.0.0-beta.80",
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.79",
9
- "@praxisui/core": "^8.0.0-beta.79",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.79",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.79",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.79",
13
- "@praxisui/rich-content": "^8.0.0-beta.79",
14
- "@praxisui/settings-panel": "^8.0.0-beta.79",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.79",
8
+ "@praxisui/ai": "^8.0.0-beta.80",
9
+ "@praxisui/core": "^8.0.0-beta.80",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.80",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.80",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.80",
13
+ "@praxisui/rich-content": "^8.0.0-beta.80",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.80",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.80",
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.79",
20
+ "@praxisui/dialog": "^8.0.0-beta.80",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {