@praxisui/table 8.0.0-beta.43 → 8.0.0-beta.45

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.
@@ -39407,7 +39407,7 @@ class PraxisTable {
39407
39407
  if (this.aiAdapter || this.aiAdapterLoadStarted)
39408
39408
  return;
39409
39409
  this.aiAdapterLoadStarted = true;
39410
- import('./praxisui-table-table-ai.adapter-CNKK4L74.mjs')
39410
+ import('./praxisui-table-table-ai.adapter-Ju23kygf.mjs')
39411
39411
  .then(({ TableAiAdapter }) => {
39412
39412
  this.aiAdapter = new TableAiAdapter(this);
39413
39413
  this.initializeAiAssistantController();
@@ -39557,7 +39557,7 @@ class PraxisTable {
39557
39557
  initializeAiAssistantController() {
39558
39558
  if (!this.aiAdapter || this.aiAssistantController)
39559
39559
  return;
39560
- import('./praxisui-table-table-agentic-authoring-turn-flow-BX1o6_il.mjs')
39560
+ import('./praxisui-table-table-agentic-authoring-turn-flow-l-pLyTnb.mjs')
39561
39561
  .then(({ TableAgenticAuthoringTurnFlow }) => {
39562
39562
  if (this.aiAssistantController || !this.aiAdapter)
39563
39563
  return;
@@ -148,7 +148,9 @@ class TableAgenticAuthoringTurnFlow {
148
148
  try {
149
149
  emitProgress(this.buildSnapshotFallbackMessage(prompt, componentId));
150
150
  const result = await this.submitViaSnapshot(request, currentState, buildRequest);
151
- if (this.isProcessingTurnResult(result) && streamId && reconnectAttempts < this.streamTerminalReconnectLimit) {
151
+ if (this.isProcessingTurnResult(result)
152
+ && streamId
153
+ && reconnectAttempts < this.streamTerminalReconnectLimitFor(streamContextHints)) {
152
154
  subscriber.next(result);
153
155
  reconnectAttempts += 1;
154
156
  shouldClose = false;
@@ -180,7 +182,7 @@ class TableAgenticAuthoringTurnFlow {
180
182
  terminalWatchdog = setTimeout(() => {
181
183
  if (closed || !streamId)
182
184
  return;
183
- if (reconnectAttempts < this.streamTerminalReconnectLimit) {
185
+ if (reconnectAttempts < this.streamTerminalReconnectLimitFor(streamContextHints)) {
184
186
  reconnectAttempts += 1;
185
187
  emitProgress(this.buildStreamReplayMessage(prompt, componentId));
186
188
  openConnection();
@@ -216,7 +218,7 @@ class TableAgenticAuthoringTurnFlow {
216
218
  error: async () => {
217
219
  if (closed)
218
220
  return;
219
- if (streamId && reconnectAttempts < this.streamTerminalReconnectLimit) {
221
+ if (streamId && reconnectAttempts < this.streamTerminalReconnectLimitFor(streamContextHints)) {
220
222
  reconnectAttempts += 1;
221
223
  emitProgress(this.buildStreamReplayMessage(prompt, componentId));
222
224
  openConnection();
@@ -265,8 +267,30 @@ class TableAgenticAuthoringTurnFlow {
265
267
  }
266
268
  return this.streamTerminalWatchdogMs;
267
269
  }
270
+ streamTerminalReconnectLimitFor(contextHints) {
271
+ if (this.shouldUseSelectedRecordSurfaceSnapshotFallback(contextHints)
272
+ && this.selectedRecordFilterCandidates(contextHints).length === 0) {
273
+ return 0;
274
+ }
275
+ return this.streamTerminalReconnectLimit;
276
+ }
268
277
  shouldUseSelectedRecordSnapshotFallback(contextHints) {
269
- return this.selectedRecordsCountForTurn > 0 && this.selectedRecordFilterCandidates(contextHints).length > 0;
278
+ return this.selectedRecordsCountForTurn > 0
279
+ && (this.selectedRecordFilterCandidates(contextHints).length > 0
280
+ || this.shouldUseSelectedRecordSurfaceSnapshotFallback(contextHints));
281
+ }
282
+ shouldUseSelectedRecordSurfaceSnapshotFallback(contextHints) {
283
+ return this.selectedRecordsCountForTurn > 0
284
+ && this.selectedRecordSurfaces(contextHints).length > 0;
285
+ }
286
+ selectedRecordSurfaces(contextHints) {
287
+ const authoringContract = this.toRecord(contextHints?.['authoringContract']);
288
+ const consultativeContext = this.toRecord(authoringContract?.['consultativeContext']);
289
+ const recordSurfaces = this.toRecord(consultativeContext?.['recordSurfaces']);
290
+ const surfaces = Array.isArray(recordSurfaces?.['surfaces']) ? recordSurfaces['surfaces'] : [];
291
+ return surfaces
292
+ .map((surface) => this.toRecord(surface))
293
+ .filter((surface) => !!surface);
270
294
  }
271
295
  isProcessingTurnResult(result) {
272
296
  return result?.state === 'processing';
@@ -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-yrCWkQrc.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-Cln_diGk.mjs';
5
5
 
6
6
  const TABLE_COMPONENT_CONTEXT_PACK = {
7
7
  version: 'v1',
@@ -2071,6 +2071,24 @@ class TableAiAdapter extends BaseAiAdapter {
2071
2071
  'The user asks to change table configuration, visual rules, renderers, columns, behavior, actions, or appearance.',
2072
2072
  ],
2073
2073
  },
2074
+ {
2075
+ kind: 'runtime',
2076
+ operationKind: 'execute',
2077
+ changeKind: 'runtimeOperation',
2078
+ preferredResponse: TABLE_RUNTIME_OPERATION_BATCH_KIND,
2079
+ useWhen: [
2080
+ 'The user asks to execute a declared table runtime operation now, such as applying filters, exporting data, or opening a related dynamic-page surface.',
2081
+ 'The user selects records and asks to open, show, display, navigate to, or inspect a declared record surface such as a detail, team, timeline, history, payroll, or other related surface.',
2082
+ 'The user selects records and asks to filter or export using declared selectedRecordsContext and runtimeOperations.',
2083
+ ],
2084
+ rules: [
2085
+ 'Return type "patch" with tableRuntimeOperations when the request can be materialized by a declared runtimeOperations operation.',
2086
+ 'For dynamicPage.surface.open, emit tableRuntimeOperations.operations[] with operationId "dynamicPage.surface.open" and input.surfaceId equal to one declared recordSurfaces.surfaces[].id.',
2087
+ 'Do not answer with a textual confirmation before emitting dynamicPage.surface.open when a single requested record surface is declared and the user asks to open or show it now.',
2088
+ 'Ask clarification only when more than one declared runtime operation or record surface could satisfy the same user request.',
2089
+ 'Keep the explanation user-facing; do not expose operationIds, resource paths, field names, or payload details unless the user explicitly asks for technical details.',
2090
+ ],
2091
+ },
2074
2092
  ];
2075
2093
  const authoringContract = {
2076
2094
  kind: 'praxis.component-authoring-context',
@@ -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-yrCWkQrc.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-Cln_diGk.mjs';
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.43",
3
+ "version": "8.0.0-beta.45",
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.43",
9
- "@praxisui/core": "^8.0.0-beta.43",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.43",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.43",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.43",
13
- "@praxisui/rich-content": "^8.0.0-beta.43",
14
- "@praxisui/settings-panel": "^8.0.0-beta.43",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.43",
8
+ "@praxisui/ai": "^8.0.0-beta.45",
9
+ "@praxisui/core": "^8.0.0-beta.45",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.45",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.45",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.45",
13
+ "@praxisui/rich-content": "^8.0.0-beta.45",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.45",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.45",
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.43",
20
+ "@praxisui/dialog": "^8.0.0-beta.45",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {