@praxisui/table 8.0.0-beta.81 → 8.0.0-beta.82
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.
- package/fesm2022/{praxisui-table-praxisui-table-BigLNasG.mjs → praxisui-table-praxisui-table-28INRbt6.mjs} +2 -2
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-CyJJHpMr.mjs → praxisui-table-table-agentic-authoring-turn-flow-Bdi7IIY2.mjs} +93 -41
- package/fesm2022/{praxisui-table-table-ai.adapter-D8fQSvC3.mjs → praxisui-table-table-ai.adapter-OIjGp0kj.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
|
@@ -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-
|
|
39581
|
+
import('./praxisui-table-table-ai.adapter-OIjGp0kj.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-
|
|
39763
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-Bdi7IIY2.mjs')
|
|
39764
39764
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
39765
39765
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
39766
39766
|
return;
|
|
@@ -584,6 +584,10 @@ class TableAgenticAuthoringTurnFlow {
|
|
|
584
584
|
warnings: compiledExecutable.warnings,
|
|
585
585
|
};
|
|
586
586
|
}
|
|
587
|
+
const continuedSurfaceRowActionFromInfo = this.selectedRecordSurfaceRowActionPlanForInfo(response, request);
|
|
588
|
+
if (continuedSurfaceRowActionFromInfo) {
|
|
589
|
+
return this.compileAdapterResponse(continuedSurfaceRowActionFromInfo, request);
|
|
590
|
+
}
|
|
587
591
|
const continuedSurfaceRuntimeOperation = this.selectedRecordSurfaceRuntimeOperationForInfo(response, request);
|
|
588
592
|
if (continuedSurfaceRuntimeOperation) {
|
|
589
593
|
return continuedSurfaceRuntimeOperation;
|
|
@@ -611,7 +615,9 @@ class TableAgenticAuthoringTurnFlow {
|
|
|
611
615
|
if (compiled.type === 'error') {
|
|
612
616
|
const continuedInvalidExecutable = this.selectedRecordSurfaceRuntimeOperationForInvalidExecutable(response, request, compiled.warnings);
|
|
613
617
|
if (continuedInvalidExecutable) {
|
|
614
|
-
return continuedInvalidExecutable
|
|
618
|
+
return continuedInvalidExecutable.componentEditPlan
|
|
619
|
+
? this.compileAdapterResponse(continuedInvalidExecutable, request)
|
|
620
|
+
: continuedInvalidExecutable;
|
|
615
621
|
}
|
|
616
622
|
return {
|
|
617
623
|
type: 'error',
|
|
@@ -950,52 +956,57 @@ class TableAgenticAuthoringTurnFlow {
|
|
|
950
956
|
if (!ranked.length || (ranked.length > 1 && ranked[0].score === ranked[1].score)) {
|
|
951
957
|
return null;
|
|
952
958
|
}
|
|
953
|
-
const
|
|
954
|
-
|
|
955
|
-
|
|
959
|
+
const rowActionResponse = this.buildSelectedRecordSurfaceRowActionResponse(ranked[0].surface, 'selected-record-surface-row-action-continued-from-clarification', clarificationKind === 'technical'
|
|
960
|
+
? 'selected-record-surface-row-action-continued-from-technical-clarification'
|
|
961
|
+
: 'selected-record-surface-row-action-continued-from-generic-clarification', clarificationKind === 'technical'
|
|
962
|
+
? 'Residual continuity guard acted only after LLM asked for technical row-action details while declared recordSurfaces and conversation history already grounded the target surface.'
|
|
963
|
+
: 'Residual continuity guard acted only after LLM asked a generic dataset/listing clarification while declared recordSurfaces and a row-action request already grounded the target surface.');
|
|
964
|
+
if (!rowActionResponse)
|
|
956
965
|
return null;
|
|
957
|
-
}
|
|
958
|
-
const surfaceId = this.stringValue(surface['id']) || this.stringValue(resourceSurface['id']);
|
|
959
|
-
if (!surfaceId)
|
|
960
|
-
return null;
|
|
961
|
-
const surfaceLabel = this.stringValue(surface['label'])
|
|
962
|
-
|| this.stringValue(resourceSurface['title'])
|
|
963
|
-
|| this.humanizeField(surfaceId);
|
|
964
|
-
const actionId = `open-${this.slugifyActionId(surfaceId)}`;
|
|
965
|
-
const rowAction = {
|
|
966
|
-
id: actionId,
|
|
967
|
-
label: surfaceLabel,
|
|
968
|
-
action: 'surface.open',
|
|
969
|
-
icon: 'open_in_new',
|
|
970
|
-
recordSurface: this.toAiJsonObject(resourceSurface),
|
|
971
|
-
};
|
|
972
966
|
// Residual continuity guard: this runs only after the LLM returned a
|
|
973
967
|
// clarification/info response for a row-button request. The target surface
|
|
974
968
|
// is ranked from declared canonical recordSurfaces and recent conversation
|
|
975
969
|
// context, so the guard repairs materialization without becoming primary
|
|
976
970
|
// intent routing by local command text.
|
|
977
|
-
return
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
971
|
+
return rowActionResponse;
|
|
972
|
+
}
|
|
973
|
+
selectedRecordSurfaceRowActionPlanForInfo(response, request) {
|
|
974
|
+
if (response.type !== 'info' || !request)
|
|
975
|
+
return null;
|
|
976
|
+
const normalizedPrompt = this.normalizeLabel(request.prompt ?? '');
|
|
977
|
+
const normalizedConversation = this.normalizeLabel([
|
|
978
|
+
...(request.messages ?? []).slice(-8).map((message) => message?.text ?? ''),
|
|
979
|
+
request.prompt ?? '',
|
|
980
|
+
].join(' '));
|
|
981
|
+
if (!this.textMentionsRowActionRequest(normalizedPrompt || normalizedConversation)) {
|
|
982
|
+
return null;
|
|
983
|
+
}
|
|
984
|
+
const responseText = this.normalizeLabel([
|
|
985
|
+
response.message ?? '',
|
|
986
|
+
response.explanation ?? '',
|
|
987
|
+
].join(' '));
|
|
988
|
+
if (!this.textMentionsSurfaceOpenCommitment(responseText) && !this.textMentionsRowActionRequest(responseText)) {
|
|
989
|
+
return null;
|
|
990
|
+
}
|
|
991
|
+
const contextHints = this.contextHintsFor(request);
|
|
992
|
+
const surfaces = this.selectedRecordSurfaces(contextHints);
|
|
993
|
+
if (!surfaces.length)
|
|
994
|
+
return null;
|
|
995
|
+
const ranked = surfaces
|
|
996
|
+
.map((surface) => ({
|
|
997
|
+
surface,
|
|
998
|
+
score: this.selectedRecordSurfacePromptScore(`${normalizedConversation || normalizedPrompt} ${responseText}`, surface),
|
|
999
|
+
}))
|
|
1000
|
+
.filter((entry) => entry.score >= 2)
|
|
1001
|
+
.sort((left, right) => right.score - left.score);
|
|
1002
|
+
if (!ranked.length || (ranked.length > 1 && ranked[0].score === ranked[1].score)) {
|
|
1003
|
+
return null;
|
|
1004
|
+
}
|
|
1005
|
+
// Residual continuity guard: this runs only after the LLM has already
|
|
1006
|
+
// answered an info turn for a row-button request but failed to emit the
|
|
1007
|
+
// manifest-backed rowAction.add envelope. The target is ranked from the
|
|
1008
|
+
// governed recordSurfaces catalog plus LLM-authored evidence.
|
|
1009
|
+
return this.buildSelectedRecordSurfaceRowActionResponse(ranked[0].surface, 'selected-record-surface-row-action-info-continuity-guard', 'selected-record-surface-row-action-continued-from-info', 'Residual continuity guard acted only after LLM resolved a declared recordSurface in an info answer for a row-action request without emitting rowAction.add.');
|
|
999
1010
|
}
|
|
1000
1011
|
selectedRecordSurfaceRuntimeOperationForInfo(response, request) {
|
|
1001
1012
|
if (response.type !== 'info' || !request)
|
|
@@ -1087,6 +1098,11 @@ class TableAgenticAuthoringTurnFlow {
|
|
|
1087
1098
|
if (!ranked.length || (ranked.length > 1 && ranked[0].score === ranked[1].score)) {
|
|
1088
1099
|
return null;
|
|
1089
1100
|
}
|
|
1101
|
+
if (this.textMentionsRowActionRequest(normalizedPrompt)) {
|
|
1102
|
+
const rowActionResponse = this.buildSelectedRecordSurfaceRowActionResponse(ranked[0].surface, 'selected-record-surface-row-action-invalid-executable-continuity-guard', 'selected-record-surface-row-action-continued-from-invalid-executable', 'Residual continuity guard acted only after LLM emitted an executable envelope that failed table component capability validation for a row-action request while a declared recordSurface uniquely matched the selected-record request.');
|
|
1103
|
+
if (rowActionResponse)
|
|
1104
|
+
return rowActionResponse;
|
|
1105
|
+
}
|
|
1090
1106
|
const surface = ranked[0].surface;
|
|
1091
1107
|
const surfaceId = this.stringValue(surface['id']);
|
|
1092
1108
|
if (!surfaceId)
|
|
@@ -1121,6 +1137,42 @@ class TableAgenticAuthoringTurnFlow {
|
|
|
1121
1137
|
],
|
|
1122
1138
|
};
|
|
1123
1139
|
}
|
|
1140
|
+
buildSelectedRecordSurfaceRowActionResponse(surface, source, warning, warningDetail) {
|
|
1141
|
+
const resourceSurface = this.toRecord(surface['resourceSurface']);
|
|
1142
|
+
if (!this.isResourceSurfaceCatalogDigest(resourceSurface)) {
|
|
1143
|
+
return null;
|
|
1144
|
+
}
|
|
1145
|
+
const surfaceId = this.stringValue(surface['id']) || this.stringValue(resourceSurface['id']);
|
|
1146
|
+
if (!surfaceId)
|
|
1147
|
+
return null;
|
|
1148
|
+
const surfaceLabel = this.stringValue(surface['label'])
|
|
1149
|
+
|| this.stringValue(resourceSurface['title'])
|
|
1150
|
+
|| this.humanizeField(surfaceId);
|
|
1151
|
+
const actionId = `open-${this.slugifyActionId(surfaceId)}`;
|
|
1152
|
+
const rowAction = {
|
|
1153
|
+
id: actionId,
|
|
1154
|
+
label: surfaceLabel,
|
|
1155
|
+
action: 'surface.open',
|
|
1156
|
+
icon: 'open_in_new',
|
|
1157
|
+
recordSurface: this.toAiJsonObject(resourceSurface),
|
|
1158
|
+
};
|
|
1159
|
+
return {
|
|
1160
|
+
type: 'patch',
|
|
1161
|
+
componentEditPlan: {
|
|
1162
|
+
kind: 'praxis.table.component-edit-plan',
|
|
1163
|
+
version: '1.0',
|
|
1164
|
+
componentId: 'praxis-table',
|
|
1165
|
+
operationId: 'rowAction.add',
|
|
1166
|
+
changeKind: 'add_row_action',
|
|
1167
|
+
capabilityPath: 'actions.row.actions[]',
|
|
1168
|
+
input: rowAction,
|
|
1169
|
+
value: rowAction,
|
|
1170
|
+
source,
|
|
1171
|
+
},
|
|
1172
|
+
explanation: `Vou criar um botão em cada linha para abrir ${surfaceLabel}.`,
|
|
1173
|
+
warnings: [warning, warningDetail],
|
|
1174
|
+
};
|
|
1175
|
+
}
|
|
1124
1176
|
selectedRecordSurfaceRowActionClarificationKind(response) {
|
|
1125
1177
|
const text = this.normalizeLabel([
|
|
1126
1178
|
response.message ?? '',
|
|
@@ -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-
|
|
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-28INRbt6.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-
|
|
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-28INRbt6.mjs';
|
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "8.0.0-beta.
|
|
3
|
+
"version": "8.0.0-beta.82",
|
|
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.
|
|
9
|
-
"@praxisui/core": "^8.0.0-beta.
|
|
10
|
-
"@praxisui/dynamic-fields": "^8.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-form": "^8.0.0-beta.
|
|
12
|
-
"@praxisui/metadata-editor": "^8.0.0-beta.
|
|
13
|
-
"@praxisui/rich-content": "^8.0.0-beta.
|
|
14
|
-
"@praxisui/settings-panel": "^8.0.0-beta.
|
|
15
|
-
"@praxisui/table-rule-builder": "^8.0.0-beta.
|
|
8
|
+
"@praxisui/ai": "^8.0.0-beta.82",
|
|
9
|
+
"@praxisui/core": "^8.0.0-beta.82",
|
|
10
|
+
"@praxisui/dynamic-fields": "^8.0.0-beta.82",
|
|
11
|
+
"@praxisui/dynamic-form": "^8.0.0-beta.82",
|
|
12
|
+
"@praxisui/metadata-editor": "^8.0.0-beta.82",
|
|
13
|
+
"@praxisui/rich-content": "^8.0.0-beta.82",
|
|
14
|
+
"@praxisui/settings-panel": "^8.0.0-beta.82",
|
|
15
|
+
"@praxisui/table-rule-builder": "^8.0.0-beta.82",
|
|
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.
|
|
20
|
+
"@praxisui/dialog": "^8.0.0-beta.82",
|
|
21
21
|
"rxjs": "~7.8.0"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|