@memberjunction/ng-dashboards 6.2.0-edge.5 → 6.2.0-edge.6
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/README.md +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +15 -7
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +7 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +209 -57
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +12 -11
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +15 -15
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +28 -16
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +30 -6
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +15 -7
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/sensitive-fields.d.ts +9 -4
- package/dist/AI/components/vectors/sensitive-fields.d.ts.map +1 -1
- package/dist/AI/components/vectors/sensitive-fields.js +39 -14
- package/dist/AI/components/vectors/sensitive-fields.js.map +1 -1
- package/dist/AI/components/vectors/vector-document-rules.d.ts +13 -0
- package/dist/AI/components/vectors/vector-document-rules.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-document-rules.js +14 -0
- package/dist/AI/components/vectors/vector-document-rules.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +34 -14
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +127 -50
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-store-selection.d.ts +32 -0
- package/dist/AI/components/vectors/vector-store-selection.d.ts.map +1 -0
- package/dist/AI/components/vectors/vector-store-selection.js +57 -0
- package/dist/AI/components/vectors/vector-store-selection.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +236 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +374 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts +195 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js +2910 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js.map +1 -0
- package/dist/ChiefOfStaff/index.d.ts +3 -0
- package/dist/ChiefOfStaff/index.d.ts.map +1 -0
- package/dist/ChiefOfStaff/index.js +3 -0
- package/dist/ChiefOfStaff/index.js.map +1 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +2 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +23 -18
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +11 -10
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/DashboardEditor/dashboard-editor.component.d.ts +17 -2
- package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -1
- package/dist/DashboardEditor/dashboard-editor.component.js +94 -43
- package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +24 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +146 -50
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +2 -0
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
- package/dist/LoginStudio/login-studio-resource.component.d.ts +10 -2
- package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -1
- package/dist/LoginStudio/login-studio-resource.component.js +110 -77
- package/dist/LoginStudio/login-studio-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +24 -4
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +118 -65
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/PredictiveStudio/business-predictions.view-models.d.ts +1 -1
- package/dist/PredictiveStudio/business-predictions.view-models.d.ts.map +1 -1
- package/dist/PredictiveStudio/business-predictions.view-models.js +3 -3
- package/dist/PredictiveStudio/business-predictions.view-models.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +6 -63
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.js +256 -521
- package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +0 -18
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +122 -249
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +5 -9
- package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipelines.component.js +98 -130
- package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +53 -4
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +335 -326
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts +19 -0
- package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts.map +1 -0
- package/dist/PredictiveStudio/components/ps-row-drivers.component.js +85 -0
- package/dist/PredictiveStudio/components/ps-row-drivers.component.js.map +1 -0
- package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts +19 -1
- package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
- package/dist/PredictiveStudio/engine/predictive-studio.engine.js +51 -2
- package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts +3 -1
- package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-agent-context.js +3 -0
- package/dist/PredictiveStudio/predictive-studio-agent-context.js.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +27 -4
- package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-score-history.service.js +94 -61
- package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +29 -5
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +185 -103
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +1 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +22 -21
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +8 -2
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +71 -71
- package/dist/PredictiveStudio/at-risk.view-models.d.ts +0 -120
- package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +0 -1
- package/dist/PredictiveStudio/at-risk.view-models.js +0 -261
- package/dist/PredictiveStudio/at-risk.view-models.js.map +0 -1
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts +0 -109
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts.map +0 -1
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.js +0 -323
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.js.map +0 -1
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +0 -137
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +0 -1
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +0 -826
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +0 -1
|
@@ -3537,25 +3537,48 @@ let MCPDashboardComponent = class MCPDashboardComponent extends BaseDashboard {
|
|
|
3537
3537
|
return n;
|
|
3538
3538
|
}
|
|
3539
3539
|
/** Values record consumed by the centralized <mj-filter-panel>, scoped to the current tab. */
|
|
3540
|
+
_mcpFilterValuesCache = {};
|
|
3541
|
+
_mcpFilterValuesKey = '';
|
|
3542
|
+
/**
|
|
3543
|
+
* Filter values object passed to `<mj-filter-panel>`.
|
|
3544
|
+
* Memoized on filter field signature so template bindings do not allocate a fresh object on every CD pass.
|
|
3545
|
+
*/
|
|
3540
3546
|
get McpFilterValues() {
|
|
3541
3547
|
const f = this.Filters$.value;
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3548
|
+
const key = `${f.serverStatus}|${f.connectionStatus}|${f.toolStatus}|${f.logStatus}|${f.toolsServer ?? ''}|${f.toolsCategory ?? ''}|${f.favoritesOnly ? 1 : 0}|${f.recentOnly ? 1 : 0}`;
|
|
3549
|
+
if (key !== this._mcpFilterValuesKey) {
|
|
3550
|
+
this._mcpFilterValuesKey = key;
|
|
3551
|
+
this._mcpFilterValuesCache = {
|
|
3552
|
+
serverStatus: f.serverStatus,
|
|
3553
|
+
connectionStatus: f.connectionStatus,
|
|
3554
|
+
toolStatus: f.toolStatus,
|
|
3555
|
+
logStatus: f.logStatus,
|
|
3556
|
+
toolsServer: f.toolsServer,
|
|
3557
|
+
toolsCategory: f.toolsCategory,
|
|
3558
|
+
favoritesOnly: f.favoritesOnly,
|
|
3559
|
+
recentOnly: f.recentOnly,
|
|
3560
|
+
};
|
|
3561
|
+
}
|
|
3562
|
+
return this._mcpFilterValuesCache;
|
|
3552
3563
|
}
|
|
3553
3564
|
/** @deprecated Use {@link McpFilterValues}. */
|
|
3554
3565
|
get mcpFilterValues() {
|
|
3555
3566
|
return this.McpFilterValues;
|
|
3556
3567
|
}
|
|
3557
|
-
|
|
3568
|
+
_mcpFilterFieldsCache = [];
|
|
3569
|
+
_mcpFilterFieldsKey = '';
|
|
3570
|
+
/**
|
|
3571
|
+
* Field config built dynamically based on the active tab.
|
|
3572
|
+
* Memoized on active tab and available servers/categories so `<mj-filter-panel>` receives a stable reference across CD ticks.
|
|
3573
|
+
*/
|
|
3558
3574
|
get McpFilterFields() {
|
|
3575
|
+
const srvSig = this.ActiveTab === 'tools' ? this.ToolsAvailableServers.map(s => s.ID).join(',') : '';
|
|
3576
|
+
const catSig = this.ActiveTab === 'tools' ? this.ToolsAvailableCategories.map(c => `${c.category}:${c.count}`).join(',') : '';
|
|
3577
|
+
const key = `${this.ActiveTab}|${srvSig}|${catSig}`;
|
|
3578
|
+
if (key === this._mcpFilterFieldsKey) {
|
|
3579
|
+
return this._mcpFilterFieldsCache;
|
|
3580
|
+
}
|
|
3581
|
+
this._mcpFilterFieldsKey = key;
|
|
3559
3582
|
const fields = [];
|
|
3560
3583
|
if (this.ActiveTab === 'tools') {
|
|
3561
3584
|
fields.push({
|
|
@@ -3657,6 +3680,7 @@ let MCPDashboardComponent = class MCPDashboardComponent extends BaseDashboard {
|
|
|
3657
3680
|
],
|
|
3658
3681
|
});
|
|
3659
3682
|
}
|
|
3683
|
+
this._mcpFilterFieldsCache = fields;
|
|
3660
3684
|
return fields;
|
|
3661
3685
|
}
|
|
3662
3686
|
/** @deprecated Use {@link McpFilterFields}. */
|
|
@@ -4726,43 +4750,57 @@ let MCPDashboardComponent = class MCPDashboardComponent extends BaseDashboard {
|
|
|
4726
4750
|
trackPagedTool(_index, tool) {
|
|
4727
4751
|
return this.TrackPagedTool(_index, tool);
|
|
4728
4752
|
}
|
|
4753
|
+
_visiblePagedToolsCache = [];
|
|
4754
|
+
_visiblePagedToolsKey = '';
|
|
4755
|
+
_testRecentToolIDsCache = [];
|
|
4756
|
+
_testRecentToolIDSetCache = new Set();
|
|
4757
|
+
_testRecentToolIDsSource = null;
|
|
4758
|
+
_testRecentToolIDsLen = -1;
|
|
4759
|
+
_testComboboxToolsCache = [];
|
|
4760
|
+
_testComboboxToolsKey = '';
|
|
4729
4761
|
/** Part 3.6 — Scale mode display. When a client-side filter (Favorites/Recently-used) is active,
|
|
4730
4762
|
* bypass server pagination and filter the fully-loaded local `this.tools` list so the filter
|
|
4731
|
-
* considers ALL tools, not just the current 50-row page.
|
|
4763
|
+
* considers ALL tools, not just the current 50-row page.
|
|
4764
|
+
* Memoized on filter state, tool count, favorite count, and log count to avoid repeated array allocation per CD pass. */
|
|
4732
4765
|
get VisiblePagedTools() {
|
|
4733
4766
|
const f = this.Filters$.value;
|
|
4734
4767
|
if (f.favoritesOnly || f.recentOnly) {
|
|
4735
|
-
const
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
.
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
if (f.toolsServer && f.toolsServer !== 'all' && !UUIDsEqual(t.MCPServerID, f.toolsServer))
|
|
4744
|
-
return false;
|
|
4745
|
-
if (f.toolsCategory && f.toolsCategory !== 'all') {
|
|
4746
|
-
const idx = t.ToolName.indexOf('_');
|
|
4747
|
-
const cat = idx > 0 ? t.ToolName.substring(0, idx) : t.ToolName;
|
|
4748
|
-
if (cat !== f.toolsCategory)
|
|
4768
|
+
const key = `${f.favoritesOnly ? 1 : 0}|${f.recentOnly ? 1 : 0}|${f.toolsServer ?? ''}|${f.toolsCategory ?? ''}|${f.searchTerm ?? ''}|${this.tools.length}|${this.FavoritedToolIDs.size}|${this.ExecutionLogs.length}`;
|
|
4769
|
+
if (key !== this._visiblePagedToolsKey) {
|
|
4770
|
+
this._visiblePagedToolsKey = key;
|
|
4771
|
+
const search = (f.searchTerm || '').toLowerCase();
|
|
4772
|
+
const recent = f.recentOnly ? this.RecentToolIDSet() : null;
|
|
4773
|
+
this._visiblePagedToolsCache = this.tools
|
|
4774
|
+
.filter(t => {
|
|
4775
|
+
if (f.favoritesOnly && !this.IsFavorited(t.ID))
|
|
4749
4776
|
return false;
|
|
4750
|
-
|
|
4751
|
-
|
|
4752
|
-
(
|
|
4753
|
-
|
|
4754
|
-
|
|
4755
|
-
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4777
|
+
if (recent && !recent.has(NormalizeUUID(t.ID)))
|
|
4778
|
+
return false;
|
|
4779
|
+
if (f.toolsServer && f.toolsServer !== 'all' && !UUIDsEqual(t.MCPServerID, f.toolsServer))
|
|
4780
|
+
return false;
|
|
4781
|
+
if (f.toolsCategory && f.toolsCategory !== 'all') {
|
|
4782
|
+
const idx = t.ToolName.indexOf('_');
|
|
4783
|
+
const cat = idx > 0 ? t.ToolName.substring(0, idx) : t.ToolName;
|
|
4784
|
+
if (cat !== f.toolsCategory)
|
|
4785
|
+
return false;
|
|
4786
|
+
}
|
|
4787
|
+
if (search && !(t.ToolName.toLowerCase().includes(search) ||
|
|
4788
|
+
(t.ToolTitle?.toLowerCase().includes(search) ?? false) ||
|
|
4789
|
+
(t.ToolDescription?.toLowerCase().includes(search) ?? false)))
|
|
4790
|
+
return false;
|
|
4791
|
+
return true;
|
|
4792
|
+
})
|
|
4793
|
+
.map(t => ({
|
|
4794
|
+
ID: t.ID,
|
|
4795
|
+
MCPServerID: t.MCPServerID,
|
|
4796
|
+
ToolName: t.ToolName,
|
|
4797
|
+
ToolTitle: t.ToolTitle ?? null,
|
|
4798
|
+
ToolDescription: t.ToolDescription ?? null,
|
|
4799
|
+
Status: t.Status,
|
|
4800
|
+
ServerName: t.ServerName ?? null
|
|
4801
|
+
}));
|
|
4802
|
+
}
|
|
4803
|
+
return this._visiblePagedToolsCache;
|
|
4766
4804
|
}
|
|
4767
4805
|
return this.PagedTools;
|
|
4768
4806
|
}
|
|
@@ -4784,36 +4822,51 @@ let MCPDashboardComponent = class MCPDashboardComponent extends BaseDashboard {
|
|
|
4784
4822
|
scaleDenominator() {
|
|
4785
4823
|
return this.ScaleDenominator();
|
|
4786
4824
|
}
|
|
4787
|
-
/** Part 3.5 — recently used tool IDs derived from execution logs (dedup, max 5) */
|
|
4825
|
+
/** Part 3.5 — recently used tool IDs derived from execution logs (dedup, max 5), memoized on `ExecutionLogs`. */
|
|
4788
4826
|
get TestRecentToolIDs() {
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4827
|
+
if (this._testRecentToolIDsSource !== this.ExecutionLogs ||
|
|
4828
|
+
this._testRecentToolIDsLen !== this.ExecutionLogs.length) {
|
|
4829
|
+
this._testRecentToolIDsSource = this.ExecutionLogs;
|
|
4830
|
+
this._testRecentToolIDsLen = this.ExecutionLogs.length;
|
|
4831
|
+
const seen = new Set();
|
|
4832
|
+
const out = [];
|
|
4833
|
+
for (const log of this.ExecutionLogs) {
|
|
4834
|
+
if (!log.ToolID)
|
|
4835
|
+
continue;
|
|
4836
|
+
if (seen.has(log.ToolID))
|
|
4837
|
+
continue;
|
|
4838
|
+
seen.add(log.ToolID);
|
|
4839
|
+
out.push(log.ToolID);
|
|
4840
|
+
if (out.length >= 5)
|
|
4841
|
+
break;
|
|
4842
|
+
}
|
|
4843
|
+
this._testRecentToolIDsCache = out;
|
|
4844
|
+
this._testRecentToolIDSetCache = seen;
|
|
4800
4845
|
}
|
|
4801
|
-
return
|
|
4846
|
+
return this._testRecentToolIDsCache;
|
|
4802
4847
|
}
|
|
4803
|
-
/** Part 3.5 — Test dialog combobox: filtered tools with recent-first ordering */
|
|
4848
|
+
/** Part 3.5 — Test dialog combobox: filtered tools with recent-first ordering, memoized on inputs. */
|
|
4804
4849
|
get TestComboboxTools() {
|
|
4805
4850
|
const term = this.TestToolSearch.trim().toLowerCase();
|
|
4806
|
-
const base = this.TestFilteredTools
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4851
|
+
const base = this.TestFilteredTools;
|
|
4852
|
+
const recentIds = this.TestRecentToolIDs;
|
|
4853
|
+
const key = `${term}|${base.length}|${base[0]?.ID ?? ''}|${recentIds.join(',')}`;
|
|
4854
|
+
if (key !== this._testComboboxToolsKey) {
|
|
4855
|
+
this._testComboboxToolsKey = key;
|
|
4856
|
+
const filtered = base.filter(t => !term ||
|
|
4857
|
+
t.ToolName.toLowerCase().includes(term) ||
|
|
4858
|
+
(t.ToolTitle && t.ToolTitle.toLowerCase().includes(term)) ||
|
|
4859
|
+
(t.ToolDescription && t.ToolDescription.toLowerCase().includes(term)));
|
|
4860
|
+
const recentSet = this._testRecentToolIDSetCache;
|
|
4861
|
+
const recent = filtered.filter(t => recentSet.has(t.ID));
|
|
4862
|
+
const rest = filtered.filter(t => !recentSet.has(t.ID));
|
|
4863
|
+
this._testComboboxToolsCache = [...recent, ...rest];
|
|
4864
|
+
}
|
|
4865
|
+
return this._testComboboxToolsCache;
|
|
4814
4866
|
}
|
|
4815
4867
|
IsRecentTestTool(toolID) {
|
|
4816
|
-
|
|
4868
|
+
void this.TestRecentToolIDs;
|
|
4869
|
+
return this._testRecentToolIDSetCache.has(toolID);
|
|
4817
4870
|
}
|
|
4818
4871
|
/** @deprecated Use {@link IsRecentTestTool}. */
|
|
4819
4872
|
isRecentTestTool(toolID) {
|