photon-grid-core 0.0.1
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/LICENSE +1 -0
- package/README.md +0 -0
- package/cell-selection/active-grid-registry.d.ts +37 -0
- package/cell-selection/active-grid-registry.d.ts.map +1 -0
- package/cell-selection/active-grid-registry.js +25 -0
- package/cell-selection/active-grid-registry.js.map +1 -0
- package/cell-selection/cell-selection-engine.d.ts +336 -0
- package/cell-selection/cell-selection-engine.d.ts.map +1 -0
- package/cell-selection/cell-selection-engine.js +1534 -0
- package/cell-selection/cell-selection-engine.js.map +1 -0
- package/cell-selection/selection-range.d.ts +16 -0
- package/cell-selection/selection-range.d.ts.map +1 -0
- package/cell-selection/selection-range.js +48 -0
- package/cell-selection/selection-range.js.map +1 -0
- package/cell-selection/selection-renderer.d.ts +24 -0
- package/cell-selection/selection-renderer.d.ts.map +1 -0
- package/cell-selection/selection-renderer.js +107 -0
- package/cell-selection/selection-renderer.js.map +1 -0
- package/chart/chart-analyzer/aggregation-analyzer.d.ts +18 -0
- package/chart/chart-analyzer/aggregation-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/aggregation-analyzer.js +63 -0
- package/chart/chart-analyzer/aggregation-analyzer.js.map +1 -0
- package/chart/chart-analyzer/bar-analyzer.d.ts +19 -0
- package/chart/chart-analyzer/bar-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/bar-analyzer.js +56 -0
- package/chart/chart-analyzer/bar-analyzer.js.map +1 -0
- package/chart/chart-analyzer/bubble-analyzer.d.ts +16 -0
- package/chart/chart-analyzer/bubble-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/bubble-analyzer.js +61 -0
- package/chart/chart-analyzer/bubble-analyzer.js.map +1 -0
- package/chart/chart-analyzer/cardinality-analyzer.d.ts +13 -0
- package/chart/chart-analyzer/cardinality-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/cardinality-analyzer.js +28 -0
- package/chart/chart-analyzer/cardinality-analyzer.js.map +1 -0
- package/chart/chart-analyzer/dimension-analyzer.d.ts +12 -0
- package/chart/chart-analyzer/dimension-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/dimension-analyzer.js +33 -0
- package/chart/chart-analyzer/dimension-analyzer.js.map +1 -0
- package/chart/chart-analyzer/histogram-analyzer.d.ts +11 -0
- package/chart/chart-analyzer/histogram-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/histogram-analyzer.js +43 -0
- package/chart/chart-analyzer/histogram-analyzer.js.map +1 -0
- package/chart/chart-analyzer/index.d.ts +58 -0
- package/chart/chart-analyzer/index.d.ts.map +1 -0
- package/chart/chart-analyzer/index.js +130 -0
- package/chart/chart-analyzer/index.js.map +1 -0
- package/chart/chart-analyzer/line-analyzer.d.ts +23 -0
- package/chart/chart-analyzer/line-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/line-analyzer.js +61 -0
- package/chart/chart-analyzer/line-analyzer.js.map +1 -0
- package/chart/chart-analyzer/measure-analyzer.d.ts +11 -0
- package/chart/chart-analyzer/measure-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/measure-analyzer.js +44 -0
- package/chart/chart-analyzer/measure-analyzer.js.map +1 -0
- package/chart/chart-analyzer/pie-analyzer.d.ts +19 -0
- package/chart/chart-analyzer/pie-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/pie-analyzer.js +64 -0
- package/chart/chart-analyzer/pie-analyzer.js.map +1 -0
- package/chart/chart-analyzer/recommendation-engine.d.ts +18 -0
- package/chart/chart-analyzer/recommendation-engine.d.ts.map +1 -0
- package/chart/chart-analyzer/recommendation-engine.js +82 -0
- package/chart/chart-analyzer/recommendation-engine.js.map +1 -0
- package/chart/chart-analyzer/scatter-analyzer.d.ts +16 -0
- package/chart/chart-analyzer/scatter-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/scatter-analyzer.js +70 -0
- package/chart/chart-analyzer/scatter-analyzer.js.map +1 -0
- package/chart/chart-analyzer/types.d.ts +52 -0
- package/chart/chart-analyzer/types.d.ts.map +1 -0
- package/chart/chart-analyzer/types.js +10 -0
- package/chart/chart-analyzer/types.js.map +1 -0
- package/chart/chart-analyzer.d.ts +12 -0
- package/chart/chart-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer.js +77 -0
- package/chart/chart-analyzer.js.map +1 -0
- package/chart/chart-data-transformer.d.ts +26 -0
- package/chart/chart-data-transformer.d.ts.map +1 -0
- package/chart/chart-data-transformer.js +93 -0
- package/chart/chart-data-transformer.js.map +1 -0
- package/chart/chart-engine.d.ts +38 -0
- package/chart/chart-engine.d.ts.map +1 -0
- package/chart/chart-engine.js +96 -0
- package/chart/chart-engine.js.map +1 -0
- package/chart/chart-panel.d.ts +54 -0
- package/chart/chart-panel.d.ts.map +1 -0
- package/chart/chart-panel.js +350 -0
- package/chart/chart-panel.js.map +1 -0
- package/chart/chart-renderer.d.ts +93 -0
- package/chart/chart-renderer.d.ts.map +1 -0
- package/chart/chart-renderer.js +1330 -0
- package/chart/chart-renderer.js.map +1 -0
- package/chart/sparkline/sparkline-renderer.d.ts +269 -0
- package/chart/sparkline/sparkline-renderer.d.ts.map +1 -0
- package/chart/sparkline/sparkline-renderer.js +875 -0
- package/chart/sparkline/sparkline-renderer.js.map +1 -0
- package/chart/sparkline/sparkline.types.d.ts +214 -0
- package/chart/sparkline/sparkline.types.d.ts.map +1 -0
- package/chart/sparkline/sparkline.types.js +8 -0
- package/chart/sparkline/sparkline.types.js.map +1 -0
- package/column-groups/column-group-drag-handler.d.ts +169 -0
- package/column-groups/column-group-drag-handler.d.ts.map +1 -0
- package/column-groups/column-group-drag-handler.js +517 -0
- package/column-groups/column-group-drag-handler.js.map +1 -0
- package/column-groups/column-group-header-builder.d.ts +106 -0
- package/column-groups/column-group-header-builder.d.ts.map +1 -0
- package/column-groups/column-group-header-builder.js +311 -0
- package/column-groups/column-group-header-builder.js.map +1 -0
- package/column-groups/column-group-model.d.ts +248 -0
- package/column-groups/column-group-model.d.ts.map +1 -0
- package/column-groups/column-group-model.js +668 -0
- package/column-groups/column-group-model.js.map +1 -0
- package/column-groups/column-group-state-manager.d.ts +110 -0
- package/column-groups/column-group-state-manager.d.ts.map +1 -0
- package/column-groups/column-group-state-manager.js +153 -0
- package/column-groups/column-group-state-manager.js.map +1 -0
- package/column-groups/column-group.types.d.ts +250 -0
- package/column-groups/column-group.types.d.ts.map +1 -0
- package/column-groups/column-group.types.js +20 -0
- package/column-groups/column-group.types.js.map +1 -0
- package/column-groups/display-group-builder.d.ts +91 -0
- package/column-groups/display-group-builder.d.ts.map +1 -0
- package/column-groups/display-group-builder.js +225 -0
- package/column-groups/display-group-builder.js.map +1 -0
- package/column-groups/display-group-drag-handler.d.ts +205 -0
- package/column-groups/display-group-drag-handler.d.ts.map +1 -0
- package/column-groups/display-group-drag-handler.js +536 -0
- package/column-groups/display-group-drag-handler.js.map +1 -0
- package/column-groups/display-group-engine.d.ts +310 -0
- package/column-groups/display-group-engine.d.ts.map +1 -0
- package/column-groups/display-group-engine.js +549 -0
- package/column-groups/display-group-engine.js.map +1 -0
- package/column-groups/display-group-header-builder.d.ts +94 -0
- package/column-groups/display-group-header-builder.d.ts.map +1 -0
- package/column-groups/display-group-header-builder.js +224 -0
- package/column-groups/display-group-header-builder.js.map +1 -0
- package/column-groups/display-group.types.d.ts +140 -0
- package/column-groups/display-group.types.d.ts.map +1 -0
- package/column-groups/display-group.types.js +2 -0
- package/column-groups/display-group.types.js.map +1 -0
- package/column-groups/index.d.ts +25 -0
- package/column-groups/index.d.ts.map +1 -0
- package/column-groups/index.js +26 -0
- package/column-groups/index.js.map +1 -0
- package/column-groups/logical-group-registry.d.ts +77 -0
- package/column-groups/logical-group-registry.d.ts.map +1 -0
- package/column-groups/logical-group-registry.js +118 -0
- package/column-groups/logical-group-registry.js.map +1 -0
- package/core/column-model.d.ts +30 -0
- package/core/column-model.d.ts.map +1 -0
- package/core/column-model.js +203 -0
- package/core/column-model.js.map +1 -0
- package/core/grid-api.d.ts +187 -0
- package/core/grid-api.d.ts.map +1 -0
- package/core/grid-api.js +569 -0
- package/core/grid-api.js.map +1 -0
- package/core/grid-context.d.ts +61 -0
- package/core/grid-context.d.ts.map +1 -0
- package/core/grid-context.js +2 -0
- package/core/grid-context.js.map +1 -0
- package/core/grid-core.d.ts +49 -0
- package/core/grid-core.d.ts.map +1 -0
- package/core/grid-core.js +675 -0
- package/core/grid-core.js.map +1 -0
- package/core/grid-store.d.ts +62 -0
- package/core/grid-store.d.ts.map +1 -0
- package/core/grid-store.js +104 -0
- package/core/grid-store.js.map +1 -0
- package/core/row-model.d.ts +32 -0
- package/core/row-model.d.ts.map +1 -0
- package/core/row-model.js +150 -0
- package/core/row-model.js.map +1 -0
- package/drag-drop/drag-autoscroll.d.ts +14 -0
- package/drag-drop/drag-autoscroll.d.ts.map +1 -0
- package/drag-drop/drag-autoscroll.js +66 -0
- package/drag-drop/drag-autoscroll.js.map +1 -0
- package/drag-drop/drag-drop-engine.d.ts +55 -0
- package/drag-drop/drag-drop-engine.d.ts.map +1 -0
- package/drag-drop/drag-drop-engine.js +179 -0
- package/drag-drop/drag-drop-engine.js.map +1 -0
- package/drag-drop/drag-preview.d.ts +32 -0
- package/drag-drop/drag-preview.d.ts.map +1 -0
- package/drag-drop/drag-preview.js +74 -0
- package/drag-drop/drag-preview.js.map +1 -0
- package/engines/aggregation/aggregation-engine.d.ts +66 -0
- package/engines/aggregation/aggregation-engine.d.ts.map +1 -0
- package/engines/aggregation/aggregation-engine.js +149 -0
- package/engines/aggregation/aggregation-engine.js.map +1 -0
- package/engines/clipboard/clipboard-engine.d.ts +89 -0
- package/engines/clipboard/clipboard-engine.d.ts.map +1 -0
- package/engines/clipboard/clipboard-engine.js +323 -0
- package/engines/clipboard/clipboard-engine.js.map +1 -0
- package/engines/editing/cell-editor-engine.d.ts +62 -0
- package/engines/editing/cell-editor-engine.d.ts.map +1 -0
- package/engines/editing/cell-editor-engine.js +359 -0
- package/engines/editing/cell-editor-engine.js.map +1 -0
- package/engines/editing/custom-dropdown-editor.d.ts +99 -0
- package/engines/editing/custom-dropdown-editor.d.ts.map +1 -0
- package/engines/editing/custom-dropdown-editor.js +355 -0
- package/engines/editing/custom-dropdown-editor.js.map +1 -0
- package/engines/editing/value-parser.d.ts +12 -0
- package/engines/editing/value-parser.d.ts.map +1 -0
- package/engines/editing/value-parser.js +125 -0
- package/engines/editing/value-parser.js.map +1 -0
- package/engines/export/export-engine.d.ts +16 -0
- package/engines/export/export-engine.d.ts.map +1 -0
- package/engines/export/export-engine.js +99 -0
- package/engines/export/export-engine.js.map +1 -0
- package/engines/filter/filter-condition.d.ts +7 -0
- package/engines/filter/filter-condition.d.ts.map +1 -0
- package/engines/filter/filter-condition.js +126 -0
- package/engines/filter/filter-condition.js.map +1 -0
- package/engines/filter/filter-engine.d.ts +35 -0
- package/engines/filter/filter-engine.d.ts.map +1 -0
- package/engines/filter/filter-engine.js +150 -0
- package/engines/filter/filter-engine.js.map +1 -0
- package/engines/filter/filter-panel.d.ts +103 -0
- package/engines/filter/filter-panel.d.ts.map +1 -0
- package/engines/filter/filter-panel.js +645 -0
- package/engines/filter/filter-panel.js.map +1 -0
- package/engines/grouping/group-node.d.ts +21 -0
- package/engines/grouping/group-node.d.ts.map +1 -0
- package/engines/grouping/group-node.js +96 -0
- package/engines/grouping/group-node.js.map +1 -0
- package/engines/grouping/grouping-engine.d.ts +33 -0
- package/engines/grouping/grouping-engine.d.ts.map +1 -0
- package/engines/grouping/grouping-engine.js +118 -0
- package/engines/grouping/grouping-engine.js.map +1 -0
- package/engines/master-detail/master-detail-engine.d.ts +77 -0
- package/engines/master-detail/master-detail-engine.d.ts.map +1 -0
- package/engines/master-detail/master-detail-engine.js +199 -0
- package/engines/master-detail/master-detail-engine.js.map +1 -0
- package/engines/pagination/pagination-engine.d.ts +33 -0
- package/engines/pagination/pagination-engine.d.ts.map +1 -0
- package/engines/pagination/pagination-engine.js +110 -0
- package/engines/pagination/pagination-engine.js.map +1 -0
- package/engines/selection/row-selection-engine.d.ts +26 -0
- package/engines/selection/row-selection-engine.d.ts.map +1 -0
- package/engines/selection/row-selection-engine.js +145 -0
- package/engines/selection/row-selection-engine.js.map +1 -0
- package/engines/sort/sort-comparator.d.ts +43 -0
- package/engines/sort/sort-comparator.d.ts.map +1 -0
- package/engines/sort/sort-comparator.js +113 -0
- package/engines/sort/sort-comparator.js.map +1 -0
- package/engines/sort/sort-engine.d.ts +67 -0
- package/engines/sort/sort-engine.d.ts.map +1 -0
- package/engines/sort/sort-engine.js +178 -0
- package/engines/sort/sort-engine.js.map +1 -0
- package/engines/summary/summary-engine.d.ts +17 -0
- package/engines/summary/summary-engine.d.ts.map +1 -0
- package/engines/summary/summary-engine.js +72 -0
- package/engines/summary/summary-engine.js.map +1 -0
- package/engines/tree/tree-data-service.d.ts +117 -0
- package/engines/tree/tree-data-service.d.ts.map +1 -0
- package/engines/tree/tree-data-service.js +296 -0
- package/engines/tree/tree-data-service.js.map +1 -0
- package/engines/tree/tree-expansion-service.d.ts +35 -0
- package/engines/tree/tree-expansion-service.d.ts.map +1 -0
- package/engines/tree/tree-expansion-service.js +84 -0
- package/engines/tree/tree-expansion-service.js.map +1 -0
- package/engines/tree/tree-node.d.ts +40 -0
- package/engines/tree/tree-node.d.ts.map +1 -0
- package/engines/tree/tree-node.js +199 -0
- package/engines/tree/tree-node.js.map +1 -0
- package/engines/tree/tree-selection-service.d.ts +35 -0
- package/engines/tree/tree-selection-service.d.ts.map +1 -0
- package/engines/tree/tree-selection-service.js +72 -0
- package/engines/tree/tree-selection-service.js.map +1 -0
- package/engines/undo-redo/undo-redo-engine.d.ts +114 -0
- package/engines/undo-redo/undo-redo-engine.d.ts.map +1 -0
- package/engines/undo-redo/undo-redo-engine.js +165 -0
- package/engines/undo-redo/undo-redo-engine.js.map +1 -0
- package/event-bus/event-bus.d.ts +21 -0
- package/event-bus/event-bus.d.ts.map +1 -0
- package/event-bus/event-bus.js +106 -0
- package/event-bus/event-bus.js.map +1 -0
- package/icons/icon-registry.d.ts +19 -0
- package/icons/icon-registry.d.ts.map +1 -0
- package/icons/icon-registry.js +37 -0
- package/icons/icon-registry.js.map +1 -0
- package/icons/icon-renderer.d.ts +18 -0
- package/icons/icon-renderer.d.ts.map +1 -0
- package/icons/icon-renderer.js +75 -0
- package/icons/icon-renderer.js.map +1 -0
- package/icons/icon-sets/core-icons.d.ts +2 -0
- package/icons/icon-sets/core-icons.d.ts.map +1 -0
- package/icons/icon-sets/core-icons.js +48 -0
- package/icons/icon-sets/core-icons.js.map +1 -0
- package/index.d.ts +72 -0
- package/index.d.ts.map +1 -0
- package/index.js +54 -0
- package/index.js.map +1 -0
- package/package.json +64 -0
- package/photon-ai/builtins/filter.commands.d.ts +4 -0
- package/photon-ai/builtins/filter.commands.d.ts.map +1 -0
- package/photon-ai/builtins/filter.commands.js +189 -0
- package/photon-ai/builtins/filter.commands.js.map +1 -0
- package/photon-ai/builtins/grouping.commands.d.ts +4 -0
- package/photon-ai/builtins/grouping.commands.d.ts.map +1 -0
- package/photon-ai/builtins/grouping.commands.js +115 -0
- package/photon-ai/builtins/grouping.commands.js.map +1 -0
- package/photon-ai/builtins/index.d.ts +10 -0
- package/photon-ai/builtins/index.d.ts.map +1 -0
- package/photon-ai/builtins/index.js +26 -0
- package/photon-ai/builtins/index.js.map +1 -0
- package/photon-ai/builtins/info.commands.d.ts +4 -0
- package/photon-ai/builtins/info.commands.d.ts.map +1 -0
- package/photon-ai/builtins/info.commands.js +201 -0
- package/photon-ai/builtins/info.commands.js.map +1 -0
- package/photon-ai/builtins/move.commands.d.ts +4 -0
- package/photon-ai/builtins/move.commands.d.ts.map +1 -0
- package/photon-ai/builtins/move.commands.js +53 -0
- package/photon-ai/builtins/move.commands.js.map +1 -0
- package/photon-ai/builtins/pin.commands.d.ts +4 -0
- package/photon-ai/builtins/pin.commands.d.ts.map +1 -0
- package/photon-ai/builtins/pin.commands.js +106 -0
- package/photon-ai/builtins/pin.commands.js.map +1 -0
- package/photon-ai/builtins/selection.commands.d.ts +4 -0
- package/photon-ai/builtins/selection.commands.d.ts.map +1 -0
- package/photon-ai/builtins/selection.commands.js +102 -0
- package/photon-ai/builtins/selection.commands.js.map +1 -0
- package/photon-ai/builtins/sort.commands.d.ts +4 -0
- package/photon-ai/builtins/sort.commands.d.ts.map +1 -0
- package/photon-ai/builtins/sort.commands.js +67 -0
- package/photon-ai/builtins/sort.commands.js.map +1 -0
- package/photon-ai/builtins/visibility.commands.d.ts +4 -0
- package/photon-ai/builtins/visibility.commands.d.ts.map +1 -0
- package/photon-ai/builtins/visibility.commands.js +75 -0
- package/photon-ai/builtins/visibility.commands.js.map +1 -0
- package/photon-ai/command-builder.d.ts +21 -0
- package/photon-ai/command-builder.d.ts.map +1 -0
- package/photon-ai/command-builder.js +18 -0
- package/photon-ai/command-builder.js.map +1 -0
- package/photon-ai/command-executor.d.ts +15 -0
- package/photon-ai/command-executor.d.ts.map +1 -0
- package/photon-ai/command-executor.js +26 -0
- package/photon-ai/command-executor.js.map +1 -0
- package/photon-ai/entity-resolver.d.ts +121 -0
- package/photon-ai/entity-resolver.d.ts.map +1 -0
- package/photon-ai/entity-resolver.js +393 -0
- package/photon-ai/entity-resolver.js.map +1 -0
- package/photon-ai/fuzzy-match.d.ts +12 -0
- package/photon-ai/fuzzy-match.d.ts.map +1 -0
- package/photon-ai/fuzzy-match.js +37 -0
- package/photon-ai/fuzzy-match.js.map +1 -0
- package/photon-ai/index.d.ts +15 -0
- package/photon-ai/index.d.ts.map +1 -0
- package/photon-ai/index.js +13 -0
- package/photon-ai/index.js.map +1 -0
- package/photon-ai/intent-parser.d.ts +20 -0
- package/photon-ai/intent-parser.d.ts.map +1 -0
- package/photon-ai/intent-parser.js +52 -0
- package/photon-ai/intent-parser.js.map +1 -0
- package/photon-ai/photon-ai-memory.d.ts +42 -0
- package/photon-ai/photon-ai-memory.d.ts.map +1 -0
- package/photon-ai/photon-ai-memory.js +86 -0
- package/photon-ai/photon-ai-memory.js.map +1 -0
- package/photon-ai/photon-ai-panel.d.ts +54 -0
- package/photon-ai/photon-ai-panel.d.ts.map +1 -0
- package/photon-ai/photon-ai-panel.js +191 -0
- package/photon-ai/photon-ai-panel.js.map +1 -0
- package/photon-ai/photon-ai-registry.d.ts +25 -0
- package/photon-ai/photon-ai-registry.d.ts.map +1 -0
- package/photon-ai/photon-ai-registry.js +41 -0
- package/photon-ai/photon-ai-registry.js.map +1 -0
- package/photon-ai/photon-ai-service.d.ts +71 -0
- package/photon-ai/photon-ai-service.d.ts.map +1 -0
- package/photon-ai/photon-ai-service.js +165 -0
- package/photon-ai/photon-ai-service.js.map +1 -0
- package/photon-ai/photon-ai.types.d.ts +100 -0
- package/photon-ai/photon-ai.types.d.ts.map +1 -0
- package/photon-ai/photon-ai.types.js +2 -0
- package/photon-ai/photon-ai.types.js.map +1 -0
- package/photon-ai/query-splitter.d.ts +22 -0
- package/photon-ai/query-splitter.d.ts.map +1 -0
- package/photon-ai/query-splitter.js +81 -0
- package/photon-ai/query-splitter.js.map +1 -0
- package/photon-ai/text-normalizer.d.ts +33 -0
- package/photon-ai/text-normalizer.d.ts.map +1 -0
- package/photon-ai/text-normalizer.js +132 -0
- package/photon-ai/text-normalizer.js.map +1 -0
- package/renderer/auto-scroller.d.ts +78 -0
- package/renderer/auto-scroller.d.ts.map +1 -0
- package/renderer/auto-scroller.js +141 -0
- package/renderer/auto-scroller.js.map +1 -0
- package/renderer/body-renderer.d.ts +191 -0
- package/renderer/body-renderer.d.ts.map +1 -0
- package/renderer/body-renderer.js +806 -0
- package/renderer/body-renderer.js.map +1 -0
- package/renderer/cell-renderer.d.ts +26 -0
- package/renderer/cell-renderer.d.ts.map +1 -0
- package/renderer/cell-renderer.js +201 -0
- package/renderer/cell-renderer.js.map +1 -0
- package/renderer/column-menu.d.ts +285 -0
- package/renderer/column-menu.d.ts.map +1 -0
- package/renderer/column-menu.js +873 -0
- package/renderer/column-menu.js.map +1 -0
- package/renderer/column-style-manager.d.ts +38 -0
- package/renderer/column-style-manager.d.ts.map +1 -0
- package/renderer/column-style-manager.js +110 -0
- package/renderer/column-style-manager.js.map +1 -0
- package/renderer/detail-row-renderer.d.ts +153 -0
- package/renderer/detail-row-renderer.d.ts.map +1 -0
- package/renderer/detail-row-renderer.js +388 -0
- package/renderer/detail-row-renderer.js.map +1 -0
- package/renderer/dom-utils.d.ts +22 -0
- package/renderer/dom-utils.d.ts.map +1 -0
- package/renderer/dom-utils.js +132 -0
- package/renderer/dom-utils.js.map +1 -0
- package/renderer/footer-renderer.d.ts +25 -0
- package/renderer/footer-renderer.d.ts.map +1 -0
- package/renderer/footer-renderer.js +168 -0
- package/renderer/footer-renderer.js.map +1 -0
- package/renderer/grid-renderer.d.ts +295 -0
- package/renderer/grid-renderer.d.ts.map +1 -0
- package/renderer/grid-renderer.js +1456 -0
- package/renderer/grid-renderer.js.map +1 -0
- package/renderer/group-context-menu.d.ts +79 -0
- package/renderer/group-context-menu.d.ts.map +1 -0
- package/renderer/group-context-menu.js +238 -0
- package/renderer/group-context-menu.js.map +1 -0
- package/renderer/group-drop-zone.d.ts +56 -0
- package/renderer/group-drop-zone.d.ts.map +1 -0
- package/renderer/group-drop-zone.js +376 -0
- package/renderer/group-drop-zone.js.map +1 -0
- package/renderer/header-renderer.d.ts +264 -0
- package/renderer/header-renderer.d.ts.map +1 -0
- package/renderer/header-renderer.js +1321 -0
- package/renderer/header-renderer.js.map +1 -0
- package/renderer/overlay-renderer.d.ts +16 -0
- package/renderer/overlay-renderer.d.ts.map +1 -0
- package/renderer/overlay-renderer.js +64 -0
- package/renderer/overlay-renderer.js.map +1 -0
- package/renderer/renderer-resolver.d.ts +18 -0
- package/renderer/renderer-resolver.d.ts.map +1 -0
- package/renderer/renderer-resolver.js +18 -0
- package/renderer/renderer-resolver.js.map +1 -0
- package/renderer/row-animator.d.ts +72 -0
- package/renderer/row-animator.d.ts.map +1 -0
- package/renderer/row-animator.js +175 -0
- package/renderer/row-animator.js.map +1 -0
- package/renderer/row-drag-renderer.d.ts +58 -0
- package/renderer/row-drag-renderer.d.ts.map +1 -0
- package/renderer/row-drag-renderer.js +395 -0
- package/renderer/row-drag-renderer.js.map +1 -0
- package/renderer/row-offset-search.d.ts +17 -0
- package/renderer/row-offset-search.d.ts.map +1 -0
- package/renderer/row-offset-search.js +31 -0
- package/renderer/row-offset-search.js.map +1 -0
- package/renderer/row-position-sheet.d.ts +11 -0
- package/renderer/row-position-sheet.d.ts.map +1 -0
- package/renderer/row-position-sheet.js +29 -0
- package/renderer/row-position-sheet.js.map +1 -0
- package/renderer/scroll-controller.d.ts +58 -0
- package/renderer/scroll-controller.d.ts.map +1 -0
- package/renderer/scroll-controller.js +200 -0
- package/renderer/scroll-controller.js.map +1 -0
- package/renderer/sticky-row-tracker.d.ts +40 -0
- package/renderer/sticky-row-tracker.d.ts.map +1 -0
- package/renderer/sticky-row-tracker.js +63 -0
- package/renderer/sticky-row-tracker.js.map +1 -0
- package/renderer/tooltip-renderer.d.ts +36 -0
- package/renderer/tooltip-renderer.d.ts.map +1 -0
- package/renderer/tooltip-renderer.js +133 -0
- package/renderer/tooltip-renderer.js.map +1 -0
- package/renderer/tree-cell-renderer.d.ts +37 -0
- package/renderer/tree-cell-renderer.d.ts.map +1 -0
- package/renderer/tree-cell-renderer.js +75 -0
- package/renderer/tree-cell-renderer.js.map +1 -0
- package/renderer/tree-sticky-row-tracker.d.ts +62 -0
- package/renderer/tree-sticky-row-tracker.d.ts.map +1 -0
- package/renderer/tree-sticky-row-tracker.js +120 -0
- package/renderer/tree-sticky-row-tracker.js.map +1 -0
- package/renderer/virtual-scroll-renderer.d.ts +37 -0
- package/renderer/virtual-scroll-renderer.d.ts.map +1 -0
- package/renderer/virtual-scroll-renderer.js +133 -0
- package/renderer/virtual-scroll-renderer.js.map +1 -0
- package/styles/base-styles.d.ts +3 -0
- package/styles/base-styles.d.ts.map +1 -0
- package/styles/base-styles.js +3045 -0
- package/styles/base-styles.js.map +1 -0
- package/styles/themes/theme-alpine.d.ts +2 -0
- package/styles/themes/theme-alpine.d.ts.map +1 -0
- package/styles/themes/theme-alpine.js +120 -0
- package/styles/themes/theme-alpine.js.map +1 -0
- package/styles/themes/theme-balham.d.ts +2 -0
- package/styles/themes/theme-balham.d.ts.map +1 -0
- package/styles/themes/theme-balham.js +120 -0
- package/styles/themes/theme-balham.js.map +1 -0
- package/styles/themes/theme-dark.d.ts +2 -0
- package/styles/themes/theme-dark.d.ts.map +1 -0
- package/styles/themes/theme-dark.js +216 -0
- package/styles/themes/theme-dark.js.map +1 -0
- package/styles/themes/theme-material.d.ts +2 -0
- package/styles/themes/theme-material.d.ts.map +1 -0
- package/styles/themes/theme-material.js +134 -0
- package/styles/themes/theme-material.js.map +1 -0
- package/styles/themes/theme-quartz.d.ts +2 -0
- package/styles/themes/theme-quartz.d.ts.map +1 -0
- package/styles/themes/theme-quartz.js +120 -0
- package/styles/themes/theme-quartz.js.map +1 -0
- package/theme/css-var-injector.d.ts +10 -0
- package/theme/css-var-injector.d.ts.map +1 -0
- package/theme/css-var-injector.js +63 -0
- package/theme/css-var-injector.js.map +1 -0
- package/theme/theme-manager.d.ts +20 -0
- package/theme/theme-manager.d.ts.map +1 -0
- package/theme/theme-manager.js +79 -0
- package/theme/theme-manager.js.map +1 -0
- package/theme/themes/dark-theme.d.ts +3 -0
- package/theme/themes/dark-theme.d.ts.map +1 -0
- package/theme/themes/dark-theme.js +149 -0
- package/theme/themes/dark-theme.js.map +1 -0
- package/theme/themes/light-theme.d.ts +3 -0
- package/theme/themes/light-theme.d.ts.map +1 -0
- package/theme/themes/light-theme.js +149 -0
- package/theme/themes/light-theme.js.map +1 -0
- package/types/column.types.d.ts +195 -0
- package/types/column.types.d.ts.map +1 -0
- package/types/column.types.js +2 -0
- package/types/column.types.js.map +1 -0
- package/types/event.types.d.ts +213 -0
- package/types/event.types.d.ts.map +1 -0
- package/types/event.types.js +67 -0
- package/types/event.types.js.map +1 -0
- package/types/filter.types.d.ts +42 -0
- package/types/filter.types.d.ts.map +1 -0
- package/types/filter.types.js +2 -0
- package/types/filter.types.js.map +1 -0
- package/types/grid.types.d.ts +214 -0
- package/types/grid.types.d.ts.map +1 -0
- package/types/grid.types.js +2 -0
- package/types/grid.types.js.map +1 -0
- package/types/master-detail.types.d.ts +112 -0
- package/types/master-detail.types.d.ts.map +1 -0
- package/types/master-detail.types.js +2 -0
- package/types/master-detail.types.js.map +1 -0
- package/types/photon-ai.types.d.ts +19 -0
- package/types/photon-ai.types.d.ts.map +1 -0
- package/types/photon-ai.types.js +2 -0
- package/types/photon-ai.types.js.map +1 -0
- package/types/renderer.types.d.ts +156 -0
- package/types/renderer.types.d.ts.map +1 -0
- package/types/renderer.types.js +19 -0
- package/types/renderer.types.js.map +1 -0
- package/types/row.types.d.ts +127 -0
- package/types/row.types.d.ts.map +1 -0
- package/types/row.types.js +9 -0
- package/types/row.types.js.map +1 -0
- package/types/theme.types.d.ts +159 -0
- package/types/theme.types.d.ts.map +1 -0
- package/types/theme.types.js +2 -0
- package/types/theme.types.js.map +1 -0
- package/types/tree-data.types.d.ts +94 -0
- package/types/tree-data.types.d.ts.map +1 -0
- package/types/tree-data.types.js +2 -0
- package/types/tree-data.types.js.map +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { ColumnDef, ColumnDropdownOption } from '../types/column.types';
|
|
2
|
+
import type { FilterOperator } from '../types/filter.types';
|
|
3
|
+
import type { GridApi } from '../core/grid-api';
|
|
4
|
+
import type { PhotonAIMemoryStore } from './photon-ai-memory';
|
|
5
|
+
/** Result of {@link EntityResolver.resolveOperator} — the detected operator plus whatever tokens weren't consumed by its phrase. */
|
|
6
|
+
export interface OperatorMatch {
|
|
7
|
+
readonly operator: FilterOperator | null;
|
|
8
|
+
readonly remaining: string[];
|
|
9
|
+
}
|
|
10
|
+
/** Result of {@link EntityResolver.resolveColumnByValue} — a column guessed purely from a value, with no column name mentioned. */
|
|
11
|
+
export interface ValueMatch {
|
|
12
|
+
readonly column: ColumnDef;
|
|
13
|
+
readonly rawValue: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extracts grid entities (columns, directions, values, filter operators, …)
|
|
17
|
+
* from the leftover tokens an {@link IntentDefinition} receives after
|
|
18
|
+
* intent-keyword removal. Columns are **never** hardcoded — every lookup is
|
|
19
|
+
* against the grid's *current* `ColumnDef[]`, resolved fuzzily
|
|
20
|
+
* (case-insensitive, substring, and edit-distance tolerant) so `"Salary"`,
|
|
21
|
+
* `"employee salary"`, and `"salery"` all resolve to the same column.
|
|
22
|
+
*
|
|
23
|
+
* Stateless aside from the optional {@link PhotonAIMemoryStore}, which lets
|
|
24
|
+
* a fuzzy column match resolved once (e.g. "emp name" → the `name` column)
|
|
25
|
+
* become an exact, instant hit on every later prompt.
|
|
26
|
+
*/
|
|
27
|
+
export declare class EntityResolver {
|
|
28
|
+
private readonly memory?;
|
|
29
|
+
constructor(memory?: PhotonAIMemoryStore | undefined);
|
|
30
|
+
/**
|
|
31
|
+
* Finds the single best-matching column for a set of candidate tokens.
|
|
32
|
+
* Checks learned aliases first, then tries the whole remaining phrase (so
|
|
33
|
+
* multi-word column names like "employee salary" resolve directly), then
|
|
34
|
+
* falls back to individual tokens (so a typo'd single word like "salery"
|
|
35
|
+
* still resolves, and so noise words like operators/values sitting next
|
|
36
|
+
* to a column name don't prevent a match).
|
|
37
|
+
*/
|
|
38
|
+
resolveColumn(tokens: readonly string[], columns: readonly ColumnDef[]): ColumnDef | null;
|
|
39
|
+
/**
|
|
40
|
+
* Resolves every column named in a list — used by intents that can take
|
|
41
|
+
* more than one column at once (e.g. "pin price and income to the right",
|
|
42
|
+
* "unpin status, income and year", "group by department and status").
|
|
43
|
+
* Greedily tries the longest token window first at each position so a
|
|
44
|
+
* multi-word header like "Album Name" resolves as one column rather than
|
|
45
|
+
* two, but multi-word windows require an *exact* colId/field/header match
|
|
46
|
+
* (no fuzzy leniency) — otherwise the substring rule that lets "employee
|
|
47
|
+
* salary" resolve to "Salary" would just as happily let "price income"
|
|
48
|
+
* swallow both "Price" and "Income" as one bogus match. A single token
|
|
49
|
+
* still gets the full fuzzy/typo-tolerant treatment. Tokens that match
|
|
50
|
+
* nothing (list connectors like "and", stray words) are skipped rather
|
|
51
|
+
* than aborting the whole list.
|
|
52
|
+
*/
|
|
53
|
+
resolveColumns(tokens: readonly string[], columns: readonly ColumnDef[]): ColumnDef[];
|
|
54
|
+
/** `'asc'` if any ascending-leaning word is present, `'desc'` if any descending-leaning word is present, else `null`. */
|
|
55
|
+
resolveDirection(tokens: readonly string[]): 'asc' | 'desc' | null;
|
|
56
|
+
/** `'left'` / `'right'` if present, else `null` (meaning "unpin" for pin-side intents). */
|
|
57
|
+
resolveSide(tokens: readonly string[]): 'left' | 'right' | null;
|
|
58
|
+
/** The first bare integer found in the tokens (e.g. `"select row 5"` → `5`), or `null`. */
|
|
59
|
+
resolveIndex(tokens: readonly string[]): number | null;
|
|
60
|
+
/** `true` when the tokens refer to "all"/"every" rather than one named thing (e.g. "hide all columns"). */
|
|
61
|
+
resolveAllRequested(tokens: readonly string[]): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Joins whatever tokens remain after a column has already been consumed
|
|
64
|
+
* from them — the free-text "value" a filter intent applies (e.g. in
|
|
65
|
+
* `"filter status active"`, once `status` resolves to a column, `"active"`
|
|
66
|
+
* is the value). Strips every individual word of the column's name
|
|
67
|
+
* (colId/field/header), not just an exact whole-phrase match, so
|
|
68
|
+
* multi-word headers like "Album Name" are fully removed.
|
|
69
|
+
*/
|
|
70
|
+
extractValue(tokens: readonly string[], consumedColumn: ColumnDef | null): string | null;
|
|
71
|
+
/** Same as {@link extractValue} but returns the leftover tokens as an array (for further operator/value parsing) instead of a joined string. */
|
|
72
|
+
stripColumnTokens(tokens: readonly string[], consumedColumn: ColumnDef | null): string[];
|
|
73
|
+
/** Strips a single leading/anywhere "not" token, reporting whether negation was present so callers can flip their chosen operator. */
|
|
74
|
+
resolveNegation(tokens: readonly string[]): {
|
|
75
|
+
negated: boolean;
|
|
76
|
+
remaining: string[];
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Detects a comparison-operator phrase (e.g. "greater than", "starts
|
|
80
|
+
* with", "before") anywhere in `tokens` and returns it along with the
|
|
81
|
+
* tokens that are left after removing that phrase's words. Returns
|
|
82
|
+
* `operator: null` (and the original tokens, untouched) when no phrase
|
|
83
|
+
* matches, so callers can fall back to a type-appropriate default.
|
|
84
|
+
*/
|
|
85
|
+
resolveOperator(tokens: readonly string[]): OperatorMatch;
|
|
86
|
+
/** Splits `"between 10 and 50"`-style tokens into their two bounds, or `null` when no `between ... and ...` pattern is present. */
|
|
87
|
+
resolveRange(tokens: readonly string[]): {
|
|
88
|
+
from: string[];
|
|
89
|
+
to: string[];
|
|
90
|
+
} | null;
|
|
91
|
+
/** Parses a free-text number, tolerant of a leading currency symbol or trailing `%`. */
|
|
92
|
+
parseNumberToken(raw: string): number | null;
|
|
93
|
+
/** Parses a date token — ISO/slash-formatted dates plus "today"/"yesterday"/"tomorrow". */
|
|
94
|
+
parseDateToken(raw: string): Date | null;
|
|
95
|
+
/** Maps a boolean-leaning word ("active", "yes", "disabled", …) to `true`/`false`, or `null` when it isn't one. */
|
|
96
|
+
parseBooleanToken(raw: string): boolean | null;
|
|
97
|
+
/** Finds the best matching dropdown/enum option for a free-text value against one already-known column. */
|
|
98
|
+
matchOption(rawValue: string, column: ColumnDef): ColumnDropdownOption | null;
|
|
99
|
+
/**
|
|
100
|
+
* Guesses which column a free-text value belongs to when the user never
|
|
101
|
+
* named one (e.g. "show active items" — "active" is a `Status` dropdown
|
|
102
|
+
* option, not a column reference). Tries, in order: dropdown/enum option
|
|
103
|
+
* labels, boolean-leaning words, then a bounded scan of live row data for
|
|
104
|
+
* an exact match — each step only runs across columns still marked
|
|
105
|
+
* `filterable !== false`, and the raw-data scan is capped at
|
|
106
|
+
* {@link MAX_VALUE_SCAN_ROWS} rows so cost never scales with grid size.
|
|
107
|
+
*/
|
|
108
|
+
resolveColumnByValue(tokens: readonly string[], columns: readonly ColumnDef[], api: GridApi): ValueMatch | null;
|
|
109
|
+
private scanRowDataForValue;
|
|
110
|
+
private scoreCandidate;
|
|
111
|
+
/**
|
|
112
|
+
* Scores a free-text value phrase against one dropdown/enum option label.
|
|
113
|
+
* Combines the direct string score (handles typos, e.g. "innactive") with
|
|
114
|
+
* a word-coverage score that ignores connector words on both sides (e.g.
|
|
115
|
+
* "of") — so a candidate like "record out stock" (extra noise word,
|
|
116
|
+
* missing "of") still confidently matches the label "Out of Stock" as
|
|
117
|
+
* long as every *meaningful* label word is present somewhere in it.
|
|
118
|
+
*/
|
|
119
|
+
private optionScore;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=entity-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-resolver.d.ts","sourceRoot":"","sources":["../../src/photon-ai/entity-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { similarity } from './fuzzy-match';
|
|
2
|
+
/** Below this similarity score a fuzzy column match is rejected rather than guessed at. */
|
|
3
|
+
const MIN_COLUMN_SIMILARITY = 0.6;
|
|
4
|
+
/** Higher bar for guessing a column purely from a *value* (e.g. "active" → the Status column) — a wrong guess here silently filters the wrong column, so false positives are costlier than for column-name matching. */
|
|
5
|
+
const MIN_VALUE_MATCH_SIMILARITY = 0.75;
|
|
6
|
+
/** Upper bound on rows scanned when guessing a column from raw cell data — keeps worst-case cost flat regardless of grid size. */
|
|
7
|
+
const MAX_VALUE_SCAN_ROWS = 300;
|
|
8
|
+
const BOOLEAN_TRUE_WORDS = new Set(['true', 'yes', 'active', 'enabled', 'on', 'open']);
|
|
9
|
+
const BOOLEAN_FALSE_WORDS = new Set(['false', 'no', 'inactive', 'disabled', 'off', 'closed']);
|
|
10
|
+
/** Connector words dropped only when comparing a value phrase against a dropdown/enum option's label — never touches the tokens actually used for intent matching. Lets "record out stock" still match the option label "Out of Stock" despite the "of" the user's phrase never had and the "record" it has that the label doesn't. */
|
|
11
|
+
const OPTION_LABEL_STOPWORDS = new Set(['of', 'the', 'a', 'an', 'and', 'or']);
|
|
12
|
+
/** Longest column-name span (in tokens) {@link EntityResolver.resolveColumns} will try to match as one unit, so multi-word headers ("Album Name") resolve in a list without over-matching. */
|
|
13
|
+
const MAX_COLUMN_PHRASE_WORDS = 3;
|
|
14
|
+
const OPERATOR_PHRASE_TABLE = [
|
|
15
|
+
{ words: ['greater', 'than', 'or', 'equal'], operator: 'greaterThanOrEqual' },
|
|
16
|
+
{ words: ['less', 'than', 'or', 'equal'], operator: 'lessThanOrEqual' },
|
|
17
|
+
{ words: ['no', 'less', 'than'], operator: 'greaterThanOrEqual' },
|
|
18
|
+
{ words: ['no', 'more', 'than'], operator: 'lessThanOrEqual' },
|
|
19
|
+
{ words: ['not', 'equal'], operator: 'notEquals' },
|
|
20
|
+
{ words: ['not', 'blank'], operator: 'notBlank' },
|
|
21
|
+
{ words: ['not', 'empty'], operator: 'notBlank' },
|
|
22
|
+
{ words: ['at', 'least'], operator: 'greaterThanOrEqual' },
|
|
23
|
+
{ words: ['at', 'most'], operator: 'lessThanOrEqual' },
|
|
24
|
+
{ words: ['start', 'with'], operator: 'startsWith' },
|
|
25
|
+
{ words: ['end', 'with'], operator: 'endsWith' },
|
|
26
|
+
{ words: ['greater', 'than'], operator: 'greaterThan' },
|
|
27
|
+
{ words: ['more', 'than'], operator: 'greaterThan' },
|
|
28
|
+
{ words: ['less', 'than'], operator: 'lessThan' },
|
|
29
|
+
{ words: ['fewer', 'than'], operator: 'lessThan' },
|
|
30
|
+
{ words: ['not', 'contain'], operator: 'notContains' },
|
|
31
|
+
{ words: ['contain'], operator: 'contains' },
|
|
32
|
+
{ words: ['over'], operator: 'greaterThan' },
|
|
33
|
+
{ words: ['above'], operator: 'greaterThan' },
|
|
34
|
+
{ words: ['under'], operator: 'lessThan' },
|
|
35
|
+
{ words: ['below'], operator: 'lessThan' },
|
|
36
|
+
{ words: ['before'], operator: 'before' },
|
|
37
|
+
{ words: ['after'], operator: 'after' },
|
|
38
|
+
{ words: ['equal'], operator: 'equals' },
|
|
39
|
+
{ words: ['blank'], operator: 'blank' },
|
|
40
|
+
{ words: ['empty'], operator: 'blank' },
|
|
41
|
+
];
|
|
42
|
+
/** Ordered by word count (longest phrase first) so "greater than or equal" is preferred over "greater than". */
|
|
43
|
+
const OPERATOR_PHRASES = [...OPERATOR_PHRASE_TABLE].sort((a, b) => b.words.length - a.words.length);
|
|
44
|
+
function normalizeWord(s) {
|
|
45
|
+
return s.toLowerCase().trim();
|
|
46
|
+
}
|
|
47
|
+
/** Every string on a column a user might plausibly type or misspell. */
|
|
48
|
+
function candidateNamesFor(col) {
|
|
49
|
+
return [col.colId, col.field, col.header].filter((s) => !!s).map(normalizeWord);
|
|
50
|
+
}
|
|
51
|
+
/** Every individual word across a column's colId/field/header — used to strip the column reference out of leftover tokens once it's been resolved. */
|
|
52
|
+
function candidateWordsFor(col) {
|
|
53
|
+
const words = new Set();
|
|
54
|
+
for (const name of candidateNamesFor(col)) {
|
|
55
|
+
for (const w of name.split(' '))
|
|
56
|
+
words.add(w);
|
|
57
|
+
}
|
|
58
|
+
return words;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extracts grid entities (columns, directions, values, filter operators, …)
|
|
62
|
+
* from the leftover tokens an {@link IntentDefinition} receives after
|
|
63
|
+
* intent-keyword removal. Columns are **never** hardcoded — every lookup is
|
|
64
|
+
* against the grid's *current* `ColumnDef[]`, resolved fuzzily
|
|
65
|
+
* (case-insensitive, substring, and edit-distance tolerant) so `"Salary"`,
|
|
66
|
+
* `"employee salary"`, and `"salery"` all resolve to the same column.
|
|
67
|
+
*
|
|
68
|
+
* Stateless aside from the optional {@link PhotonAIMemoryStore}, which lets
|
|
69
|
+
* a fuzzy column match resolved once (e.g. "emp name" → the `name` column)
|
|
70
|
+
* become an exact, instant hit on every later prompt.
|
|
71
|
+
*/
|
|
72
|
+
export class EntityResolver {
|
|
73
|
+
constructor(memory) {
|
|
74
|
+
this.memory = memory;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Finds the single best-matching column for a set of candidate tokens.
|
|
78
|
+
* Checks learned aliases first, then tries the whole remaining phrase (so
|
|
79
|
+
* multi-word column names like "employee salary" resolve directly), then
|
|
80
|
+
* falls back to individual tokens (so a typo'd single word like "salery"
|
|
81
|
+
* still resolves, and so noise words like operators/values sitting next
|
|
82
|
+
* to a column name don't prevent a match).
|
|
83
|
+
*/
|
|
84
|
+
resolveColumn(tokens, columns) {
|
|
85
|
+
if (tokens.length === 0 || columns.length === 0)
|
|
86
|
+
return null;
|
|
87
|
+
const phrase = tokens.map(normalizeWord).join(' ');
|
|
88
|
+
const learnedColId = this.memory?.getColumnAlias(phrase);
|
|
89
|
+
if (learnedColId) {
|
|
90
|
+
const learned = columns.find((c) => c.colId === learnedColId);
|
|
91
|
+
if (learned)
|
|
92
|
+
return learned;
|
|
93
|
+
}
|
|
94
|
+
const candidates = [phrase, ...tokens.map(normalizeWord)].filter((c) => c.length > 0);
|
|
95
|
+
let best = null;
|
|
96
|
+
let bestScore = 0;
|
|
97
|
+
for (const col of columns) {
|
|
98
|
+
const names = candidateNamesFor(col);
|
|
99
|
+
for (const candidate of candidates) {
|
|
100
|
+
for (const name of names) {
|
|
101
|
+
const score = this.scoreCandidate(candidate, name);
|
|
102
|
+
if (score > bestScore) {
|
|
103
|
+
bestScore = score;
|
|
104
|
+
best = col;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (!best || bestScore < MIN_COLUMN_SIMILARITY)
|
|
110
|
+
return null;
|
|
111
|
+
if (bestScore < 1)
|
|
112
|
+
this.memory?.learnColumnAlias(phrase, best.colId);
|
|
113
|
+
return best;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Resolves every column named in a list — used by intents that can take
|
|
117
|
+
* more than one column at once (e.g. "pin price and income to the right",
|
|
118
|
+
* "unpin status, income and year", "group by department and status").
|
|
119
|
+
* Greedily tries the longest token window first at each position so a
|
|
120
|
+
* multi-word header like "Album Name" resolves as one column rather than
|
|
121
|
+
* two, but multi-word windows require an *exact* colId/field/header match
|
|
122
|
+
* (no fuzzy leniency) — otherwise the substring rule that lets "employee
|
|
123
|
+
* salary" resolve to "Salary" would just as happily let "price income"
|
|
124
|
+
* swallow both "Price" and "Income" as one bogus match. A single token
|
|
125
|
+
* still gets the full fuzzy/typo-tolerant treatment. Tokens that match
|
|
126
|
+
* nothing (list connectors like "and", stray words) are skipped rather
|
|
127
|
+
* than aborting the whole list.
|
|
128
|
+
*/
|
|
129
|
+
resolveColumns(tokens, columns) {
|
|
130
|
+
const resolved = [];
|
|
131
|
+
const seen = new Set();
|
|
132
|
+
let i = 0;
|
|
133
|
+
while (i < tokens.length) {
|
|
134
|
+
let consumed = 1;
|
|
135
|
+
let match = null;
|
|
136
|
+
for (let windowSize = Math.min(MAX_COLUMN_PHRASE_WORDS, tokens.length - i); windowSize >= 2; windowSize--) {
|
|
137
|
+
const phrase = tokens.slice(i, i + windowSize).map(normalizeWord).join(' ');
|
|
138
|
+
const exact = columns.find((c) => candidateNamesFor(c).includes(phrase));
|
|
139
|
+
if (exact) {
|
|
140
|
+
match = exact;
|
|
141
|
+
consumed = windowSize;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (!match)
|
|
146
|
+
match = this.resolveColumn([tokens[i]], columns);
|
|
147
|
+
if (match && !seen.has(match.colId)) {
|
|
148
|
+
seen.add(match.colId);
|
|
149
|
+
resolved.push(match);
|
|
150
|
+
}
|
|
151
|
+
i += consumed;
|
|
152
|
+
}
|
|
153
|
+
return resolved;
|
|
154
|
+
}
|
|
155
|
+
/** `'asc'` if any ascending-leaning word is present, `'desc'` if any descending-leaning word is present, else `null`. */
|
|
156
|
+
resolveDirection(tokens) {
|
|
157
|
+
const words = new Set(tokens.map(normalizeWord));
|
|
158
|
+
const ascending = ['asc', 'ascending', 'low', 'smallest', 'increasing'];
|
|
159
|
+
const descending = ['desc', 'descending', 'high', 'largest', 'decreasing'];
|
|
160
|
+
if (descending.some((w) => words.has(w)))
|
|
161
|
+
return 'desc';
|
|
162
|
+
if (ascending.some((w) => words.has(w)))
|
|
163
|
+
return 'asc';
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/** `'left'` / `'right'` if present, else `null` (meaning "unpin" for pin-side intents). */
|
|
167
|
+
resolveSide(tokens) {
|
|
168
|
+
const words = new Set(tokens.map(normalizeWord));
|
|
169
|
+
if (words.has('left'))
|
|
170
|
+
return 'left';
|
|
171
|
+
if (words.has('right'))
|
|
172
|
+
return 'right';
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
/** The first bare integer found in the tokens (e.g. `"select row 5"` → `5`), or `null`. */
|
|
176
|
+
resolveIndex(tokens) {
|
|
177
|
+
for (const token of tokens) {
|
|
178
|
+
if (/^\d+$/.test(token))
|
|
179
|
+
return parseInt(token, 10);
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
/** `true` when the tokens refer to "all"/"every" rather than one named thing (e.g. "hide all columns"). */
|
|
184
|
+
resolveAllRequested(tokens) {
|
|
185
|
+
return tokens.some((t) => normalizeWord(t) === 'all');
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Joins whatever tokens remain after a column has already been consumed
|
|
189
|
+
* from them — the free-text "value" a filter intent applies (e.g. in
|
|
190
|
+
* `"filter status active"`, once `status` resolves to a column, `"active"`
|
|
191
|
+
* is the value). Strips every individual word of the column's name
|
|
192
|
+
* (colId/field/header), not just an exact whole-phrase match, so
|
|
193
|
+
* multi-word headers like "Album Name" are fully removed.
|
|
194
|
+
*/
|
|
195
|
+
extractValue(tokens, consumedColumn) {
|
|
196
|
+
const remaining = this.stripColumnTokens(tokens, consumedColumn);
|
|
197
|
+
return remaining.length ? remaining.join(' ') : null;
|
|
198
|
+
}
|
|
199
|
+
/** Same as {@link extractValue} but returns the leftover tokens as an array (for further operator/value parsing) instead of a joined string. */
|
|
200
|
+
stripColumnTokens(tokens, consumedColumn) {
|
|
201
|
+
if (!consumedColumn)
|
|
202
|
+
return [...tokens];
|
|
203
|
+
const consumedWords = candidateWordsFor(consumedColumn);
|
|
204
|
+
return tokens.filter((t) => !consumedWords.has(normalizeWord(t)));
|
|
205
|
+
}
|
|
206
|
+
/** Strips a single leading/anywhere "not" token, reporting whether negation was present so callers can flip their chosen operator. */
|
|
207
|
+
resolveNegation(tokens) {
|
|
208
|
+
const idx = tokens.map(normalizeWord).indexOf('not');
|
|
209
|
+
if (idx < 0)
|
|
210
|
+
return { negated: false, remaining: [...tokens] };
|
|
211
|
+
return { negated: true, remaining: [...tokens.slice(0, idx), ...tokens.slice(idx + 1)] };
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Detects a comparison-operator phrase (e.g. "greater than", "starts
|
|
215
|
+
* with", "before") anywhere in `tokens` and returns it along with the
|
|
216
|
+
* tokens that are left after removing that phrase's words. Returns
|
|
217
|
+
* `operator: null` (and the original tokens, untouched) when no phrase
|
|
218
|
+
* matches, so callers can fall back to a type-appropriate default.
|
|
219
|
+
*/
|
|
220
|
+
resolveOperator(tokens) {
|
|
221
|
+
const words = tokens.map(normalizeWord);
|
|
222
|
+
for (const { words: phrase, operator } of OPERATOR_PHRASES) {
|
|
223
|
+
const start = indexOfSubsequence(words, phrase);
|
|
224
|
+
if (start < 0)
|
|
225
|
+
continue;
|
|
226
|
+
const remaining = [...words.slice(0, start), ...words.slice(start + phrase.length)];
|
|
227
|
+
return { operator, remaining };
|
|
228
|
+
}
|
|
229
|
+
return { operator: null, remaining: [...words] };
|
|
230
|
+
}
|
|
231
|
+
/** Splits `"between 10 and 50"`-style tokens into their two bounds, or `null` when no `between ... and ...` pattern is present. */
|
|
232
|
+
resolveRange(tokens) {
|
|
233
|
+
const words = tokens.map(normalizeWord);
|
|
234
|
+
const betweenIdx = words.indexOf('between');
|
|
235
|
+
if (betweenIdx < 0)
|
|
236
|
+
return null;
|
|
237
|
+
const andIdx = words.indexOf('and', betweenIdx + 1);
|
|
238
|
+
if (andIdx < 0)
|
|
239
|
+
return null;
|
|
240
|
+
const from = words.slice(betweenIdx + 1, andIdx);
|
|
241
|
+
const to = words.slice(andIdx + 1);
|
|
242
|
+
if (from.length === 0 || to.length === 0)
|
|
243
|
+
return null;
|
|
244
|
+
return { from, to };
|
|
245
|
+
}
|
|
246
|
+
/** Parses a free-text number, tolerant of a leading currency symbol or trailing `%`. */
|
|
247
|
+
parseNumberToken(raw) {
|
|
248
|
+
const cleaned = raw.replace(/[^0-9.\-]/g, '');
|
|
249
|
+
if (!cleaned)
|
|
250
|
+
return null;
|
|
251
|
+
const value = Number(cleaned);
|
|
252
|
+
return Number.isNaN(value) ? null : value;
|
|
253
|
+
}
|
|
254
|
+
/** Parses a date token — ISO/slash-formatted dates plus "today"/"yesterday"/"tomorrow". */
|
|
255
|
+
parseDateToken(raw) {
|
|
256
|
+
const word = normalizeWord(raw);
|
|
257
|
+
const now = new Date();
|
|
258
|
+
if (word === 'today')
|
|
259
|
+
return now;
|
|
260
|
+
if (word === 'yesterday')
|
|
261
|
+
return new Date(now.getTime() - 86400000);
|
|
262
|
+
if (word === 'tomorrow')
|
|
263
|
+
return new Date(now.getTime() + 86400000);
|
|
264
|
+
if (!/\d/.test(word))
|
|
265
|
+
return null;
|
|
266
|
+
const parsed = new Date(word);
|
|
267
|
+
return Number.isNaN(parsed.getTime()) ? null : parsed;
|
|
268
|
+
}
|
|
269
|
+
/** Maps a boolean-leaning word ("active", "yes", "disabled", …) to `true`/`false`, or `null` when it isn't one. */
|
|
270
|
+
parseBooleanToken(raw) {
|
|
271
|
+
const word = normalizeWord(raw);
|
|
272
|
+
if (BOOLEAN_TRUE_WORDS.has(word))
|
|
273
|
+
return true;
|
|
274
|
+
if (BOOLEAN_FALSE_WORDS.has(word))
|
|
275
|
+
return false;
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
/** Finds the best matching dropdown/enum option for a free-text value against one already-known column. */
|
|
279
|
+
matchOption(rawValue, column) {
|
|
280
|
+
const candidate = normalizeWord(rawValue);
|
|
281
|
+
if (!candidate)
|
|
282
|
+
return null;
|
|
283
|
+
const options = column.dropdownOptions ?? column.enumOptions?.map((v) => ({ value: v, label: v })) ?? [];
|
|
284
|
+
let best = null;
|
|
285
|
+
let bestScore = 0;
|
|
286
|
+
for (const option of options) {
|
|
287
|
+
const score = this.optionScore(candidate, String(option.label));
|
|
288
|
+
if (score > bestScore) {
|
|
289
|
+
bestScore = score;
|
|
290
|
+
best = option;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return bestScore >= MIN_VALUE_MATCH_SIMILARITY ? best : null;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Guesses which column a free-text value belongs to when the user never
|
|
297
|
+
* named one (e.g. "show active items" — "active" is a `Status` dropdown
|
|
298
|
+
* option, not a column reference). Tries, in order: dropdown/enum option
|
|
299
|
+
* labels, boolean-leaning words, then a bounded scan of live row data for
|
|
300
|
+
* an exact match — each step only runs across columns still marked
|
|
301
|
+
* `filterable !== false`, and the raw-data scan is capped at
|
|
302
|
+
* {@link MAX_VALUE_SCAN_ROWS} rows so cost never scales with grid size.
|
|
303
|
+
*/
|
|
304
|
+
resolveColumnByValue(tokens, columns, api) {
|
|
305
|
+
if (tokens.length === 0)
|
|
306
|
+
return null;
|
|
307
|
+
const phrase = tokens.map(normalizeWord).join(' ');
|
|
308
|
+
const candidates = [phrase, ...tokens.map(normalizeWord)].filter((c) => c.length > 0);
|
|
309
|
+
const filterableColumns = columns.filter((c) => c.filterable !== false);
|
|
310
|
+
let best = null;
|
|
311
|
+
let bestScore = 0;
|
|
312
|
+
for (const col of filterableColumns) {
|
|
313
|
+
const options = col.dropdownOptions ?? col.enumOptions?.map((v) => ({ value: v, label: v })) ?? [];
|
|
314
|
+
for (const candidate of candidates) {
|
|
315
|
+
for (const option of options) {
|
|
316
|
+
const score = this.optionScore(candidate, String(option.label));
|
|
317
|
+
if (score > bestScore) {
|
|
318
|
+
bestScore = score;
|
|
319
|
+
best = { column: col, rawValue: String(option.value) };
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (col.type === 'boolean' && this.parseBooleanToken(candidate) !== null) {
|
|
323
|
+
if (1 > bestScore) {
|
|
324
|
+
bestScore = 1;
|
|
325
|
+
best = { column: col, rawValue: candidate };
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
if (best && bestScore >= MIN_VALUE_MATCH_SIMILARITY)
|
|
331
|
+
return best;
|
|
332
|
+
return this.scanRowDataForValue(phrase, filterableColumns, api);
|
|
333
|
+
}
|
|
334
|
+
scanRowDataForValue(phrase, columns, api) {
|
|
335
|
+
if (phrase.length < 3)
|
|
336
|
+
return null;
|
|
337
|
+
const scannable = columns.filter((c) => c.type === 'string' || c.type === 'dropdown' || c.type === 'email');
|
|
338
|
+
if (scannable.length === 0)
|
|
339
|
+
return null;
|
|
340
|
+
const rows = api.getAllRows();
|
|
341
|
+
const limit = Math.min(rows.length, MAX_VALUE_SCAN_ROWS);
|
|
342
|
+
for (let i = 0; i < limit; i++) {
|
|
343
|
+
const data = rows[i].data;
|
|
344
|
+
for (const col of scannable) {
|
|
345
|
+
const cell = data[col.field];
|
|
346
|
+
if (cell != null && normalizeWord(String(cell)) === phrase) {
|
|
347
|
+
return { column: col, rawValue: String(cell) };
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
scoreCandidate(candidate, name) {
|
|
354
|
+
if (candidate === name)
|
|
355
|
+
return 1;
|
|
356
|
+
if (candidate.length >= 3 && (name.includes(candidate) || candidate.includes(name)))
|
|
357
|
+
return 0.9;
|
|
358
|
+
return similarity(candidate, name);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Scores a free-text value phrase against one dropdown/enum option label.
|
|
362
|
+
* Combines the direct string score (handles typos, e.g. "innactive") with
|
|
363
|
+
* a word-coverage score that ignores connector words on both sides (e.g.
|
|
364
|
+
* "of") — so a candidate like "record out stock" (extra noise word,
|
|
365
|
+
* missing "of") still confidently matches the label "Out of Stock" as
|
|
366
|
+
* long as every *meaningful* label word is present somewhere in it.
|
|
367
|
+
*/
|
|
368
|
+
optionScore(candidate, optionLabel) {
|
|
369
|
+
const label = normalizeWord(optionLabel);
|
|
370
|
+
const direct = this.scoreCandidate(candidate, label);
|
|
371
|
+
const candidateWords = new Set(candidate.split(' ').filter((w) => w.length > 0));
|
|
372
|
+
const labelWords = label.split(' ').filter((w) => w.length > 0 && !OPTION_LABEL_STOPWORDS.has(w));
|
|
373
|
+
if (labelWords.length === 0)
|
|
374
|
+
return direct;
|
|
375
|
+
const coverage = labelWords.filter((w) => candidateWords.has(w)).length / labelWords.length;
|
|
376
|
+
const coverageScore = coverage === 1 ? 0.95 : coverage * 0.7;
|
|
377
|
+
return Math.max(direct, coverageScore);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/** Index of the first occurrence of `needle` as a contiguous subsequence of `haystack`, or `-1`. */
|
|
381
|
+
function indexOfSubsequence(haystack, needle) {
|
|
382
|
+
if (needle.length === 0 || needle.length > haystack.length)
|
|
383
|
+
return -1;
|
|
384
|
+
outer: for (let i = 0; i <= haystack.length - needle.length; i++) {
|
|
385
|
+
for (let j = 0; j < needle.length; j++) {
|
|
386
|
+
if (haystack[i + j] !== needle[j])
|
|
387
|
+
continue outer;
|
|
388
|
+
}
|
|
389
|
+
return i;
|
|
390
|
+
}
|
|
391
|
+
return -1;
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=entity-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-resolver.js","sourceRoot":"","sources":["../../src/photon-ai/entity-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classic Levenshtein edit distance (insertions + deletions + substitutions)
|
|
3
|
+
* between two strings. Single-row dynamic programming — O(n*m) time, O(min(n,m)) space.
|
|
4
|
+
*/
|
|
5
|
+
export declare function levenshteinDistance(a: string, b: string): number;
|
|
6
|
+
/**
|
|
7
|
+
* Normalized similarity in `[0, 1]` — `1` for identical strings, `0` for
|
|
8
|
+
* completely dissimilar ones. Used to fuzzy-match typos in column names
|
|
9
|
+
* (e.g. "salery" vs "salary") without pulling in an external library.
|
|
10
|
+
*/
|
|
11
|
+
export declare function similarity(a: string, b: string): number;
|
|
12
|
+
//# sourceMappingURL=fuzzy-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy-match.d.ts","sourceRoot":"","sources":["../../src/photon-ai/fuzzy-match.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBhE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classic Levenshtein edit distance (insertions + deletions + substitutions)
|
|
3
|
+
* between two strings. Single-row dynamic programming — O(n*m) time, O(min(n,m)) space.
|
|
4
|
+
*/
|
|
5
|
+
export function levenshteinDistance(a, b) {
|
|
6
|
+
if (a === b)
|
|
7
|
+
return 0;
|
|
8
|
+
if (a.length === 0)
|
|
9
|
+
return b.length;
|
|
10
|
+
if (b.length === 0)
|
|
11
|
+
return a.length;
|
|
12
|
+
let prevRow = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
13
|
+
let currRow = new Array(b.length + 1);
|
|
14
|
+
for (let i = 1; i <= a.length; i++) {
|
|
15
|
+
currRow[0] = i;
|
|
16
|
+
for (let j = 1; j <= b.length; j++) {
|
|
17
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
18
|
+
currRow[j] = Math.min(prevRow[j] + 1, // deletion
|
|
19
|
+
currRow[j - 1] + 1, // insertion
|
|
20
|
+
prevRow[j - 1] + cost);
|
|
21
|
+
}
|
|
22
|
+
[prevRow, currRow] = [currRow, prevRow];
|
|
23
|
+
}
|
|
24
|
+
return prevRow[b.length];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Normalized similarity in `[0, 1]` — `1` for identical strings, `0` for
|
|
28
|
+
* completely dissimilar ones. Used to fuzzy-match typos in column names
|
|
29
|
+
* (e.g. "salery" vs "salary") without pulling in an external library.
|
|
30
|
+
*/
|
|
31
|
+
export function similarity(a, b) {
|
|
32
|
+
const maxLen = Math.max(a.length, b.length);
|
|
33
|
+
if (maxLen === 0)
|
|
34
|
+
return 1;
|
|
35
|
+
return 1 - levenshteinDistance(a, b) / maxLen;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=fuzzy-match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy-match.js","sourceRoot":"","sources":["../../src/photon-ai/fuzzy-match.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAS,EAAE,CAAS;IACtD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAEpC,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACnB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAO,WAAW;YAChC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAG,YAAY;YACjC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CACtB,CAAC;QACJ,CAAC;QACD,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { PhotonAIService } from './photon-ai-service';
|
|
2
|
+
export { PhotonAIPanel } from './photon-ai-panel';
|
|
3
|
+
export { PhotonAICommandRegistry } from './photon-ai-registry';
|
|
4
|
+
export { IntentParser } from './intent-parser';
|
|
5
|
+
export { EntityResolver } from './entity-resolver';
|
|
6
|
+
export type { OperatorMatch, ValueMatch } from './entity-resolver';
|
|
7
|
+
export { CommandBuilder } from './command-builder';
|
|
8
|
+
export { CommandExecutor } from './command-executor';
|
|
9
|
+
export { registerBuiltinCommands } from './builtins';
|
|
10
|
+
export { normalizeInput, tokenize, stemWord } from './text-normalizer';
|
|
11
|
+
export { splitClauses } from './query-splitter';
|
|
12
|
+
export { PhotonAIMemoryStore, columnSignature } from './photon-ai-memory';
|
|
13
|
+
export { levenshteinDistance, similarity } from './fuzzy-match';
|
|
14
|
+
export type { PhotonCommand, PhotonCommandResult, ResolvedEntities, IntentDefinition, ParsedIntentMatch, } from './photon-ai.types';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/photon-ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { PhotonAIService } from './photon-ai-service';
|
|
2
|
+
export { PhotonAIPanel } from './photon-ai-panel';
|
|
3
|
+
export { PhotonAICommandRegistry } from './photon-ai-registry';
|
|
4
|
+
export { IntentParser } from './intent-parser';
|
|
5
|
+
export { EntityResolver } from './entity-resolver';
|
|
6
|
+
export { CommandBuilder } from './command-builder';
|
|
7
|
+
export { CommandExecutor } from './command-executor';
|
|
8
|
+
export { registerBuiltinCommands } from './builtins';
|
|
9
|
+
export { normalizeInput, tokenize, stemWord } from './text-normalizer';
|
|
10
|
+
export { splitClauses } from './query-splitter';
|
|
11
|
+
export { PhotonAIMemoryStore, columnSignature } from './photon-ai-memory';
|
|
12
|
+
export { levenshteinDistance, similarity } from './fuzzy-match';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|