snow-flow 1.1.75 → 1.1.77
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/.claude-flow/queen/queen-memory.db +0 -0
- package/.claude-flow/queen-test/test-memory.db +0 -0
- package/.claude-flow/queen-test/test-memory.db-agents +0 -0
- package/.claude-flow/queen-test/test-memory.db-import +0 -0
- package/.claude-flow/queen-test/test-memory.db-memory +0 -0
- package/.claude-flow/queen-test/test-memory.db-neural +0 -0
- package/CLAUDE.md +145 -13
- package/README.md +117 -50
- package/dist/agents/base-agent.d.ts +92 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +228 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/coordinator.d.ts +200 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +775 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/agents/flow-builder-agent.d.ts +18 -0
- package/dist/agents/flow-builder-agent.d.ts.map +1 -0
- package/dist/agents/flow-builder-agent.js +536 -0
- package/dist/agents/flow-builder-agent.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +61 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/queen-agent-example.d.ts +23 -0
- package/dist/agents/queen-agent-example.d.ts.map +1 -0
- package/dist/agents/queen-agent-example.js +241 -0
- package/dist/agents/queen-agent-example.js.map +1 -0
- package/dist/agents/queen-agent.d.ts +180 -0
- package/dist/agents/queen-agent.d.ts.map +1 -0
- package/dist/agents/queen-agent.js +909 -0
- package/dist/agents/queen-agent.js.map +1 -0
- package/dist/agents/queen-agent.test.d.ts +6 -0
- package/dist/agents/queen-agent.test.d.ts.map +1 -0
- package/dist/agents/queen-agent.test.js.map +1 -0
- package/dist/agents/script-writer-agent.d.ts +22 -0
- package/dist/agents/script-writer-agent.d.ts.map +1 -0
- package/dist/agents/script-writer-agent.js +695 -0
- package/dist/agents/script-writer-agent.js.map +1 -0
- package/dist/agents/security-agent.d.ts +23 -0
- package/dist/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/security-agent.js +619 -0
- package/dist/agents/security-agent.js.map +1 -0
- package/dist/agents/test-agent.d.ts +26 -0
- package/dist/agents/test-agent.d.ts.map +1 -0
- package/dist/agents/test-agent.js +735 -0
- package/dist/agents/test-agent.js.map +1 -0
- package/dist/agents/test-agents.d.ts +7 -0
- package/dist/agents/test-agents.d.ts.map +1 -0
- package/dist/agents/test-agents.js +65 -0
- package/dist/agents/test-agents.js.map +1 -0
- package/dist/agents/widget-creator-agent.d.ts +18 -0
- package/dist/agents/widget-creator-agent.d.ts.map +1 -0
- package/dist/agents/widget-creator-agent.js +440 -0
- package/dist/agents/widget-creator-agent.js.map +1 -0
- package/dist/cli/snow-flow-cli-integration.d.ts +30 -0
- package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -0
- package/dist/cli/snow-flow-cli-integration.js +385 -0
- package/dist/cli/snow-flow-cli-integration.js.map +1 -0
- package/dist/cli.js +692 -150
- package/dist/cli.js.map +1 -1
- package/dist/config/snow-flow-config.d.ts +1454 -0
- package/dist/config/snow-flow-config.d.ts.map +1 -0
- package/dist/config/snow-flow-config.js +403 -0
- package/dist/config/snow-flow-config.js.map +1 -0
- package/dist/health/system-health.d.ts +123 -0
- package/dist/health/system-health.d.ts.map +1 -0
- package/dist/health/system-health.js +580 -0
- package/dist/health/system-health.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-transport-wrapper.d.ts +29 -0
- package/dist/mcp/http-transport-wrapper.d.ts.map +1 -0
- package/dist/mcp/http-transport-wrapper.js +318 -0
- package/dist/mcp/http-transport-wrapper.js.map +1 -0
- package/dist/mcp/service-discovery-client.d.ts +83 -0
- package/dist/mcp/service-discovery-client.d.ts.map +1 -0
- package/dist/mcp/service-discovery-client.js +211 -0
- package/dist/mcp/service-discovery-client.js.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +58 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js +651 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp.js +116 -23
- package/dist/mcp/servicenow-deployment-mcp.js.map +1 -1
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts +43 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js +576 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp.d.ts +102 -1
- package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
- package/dist/mcp/servicenow-intelligent-mcp.js +254 -18
- package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
- package/dist/mcp/servicenow-operations-mcp.js +170 -32
- package/dist/mcp/servicenow-operations-mcp.js.map +1 -1
- package/dist/mcp/shared/agent-context-provider.d.ts +77 -0
- package/dist/mcp/shared/agent-context-provider.d.ts.map +1 -0
- package/dist/mcp/shared/agent-context-provider.js +292 -0
- package/dist/mcp/shared/agent-context-provider.js.map +1 -0
- package/dist/mcp/shared/base-mcp-server.d.ts +97 -0
- package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -0
- package/dist/mcp/shared/base-mcp-server.js +216 -0
- package/dist/mcp/shared/base-mcp-server.js.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts +87 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.js +423 -0
- package/dist/mcp/shared/mcp-memory-manager.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +20 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/mcp-integration-example.d.ts +6 -0
- package/dist/memory/mcp-integration-example.d.ts.map +1 -0
- package/dist/memory/mcp-integration-example.js +282 -0
- package/dist/memory/mcp-integration-example.js.map +1 -0
- package/dist/memory/memory-client.d.ts +184 -0
- package/dist/memory/memory-client.d.ts.map +1 -0
- package/dist/memory/memory-client.js +325 -0
- package/dist/memory/memory-client.js.map +1 -0
- package/dist/memory/memory-operations.d.ts +170 -0
- package/dist/memory/memory-operations.d.ts.map +1 -0
- package/dist/memory/memory-operations.js +639 -0
- package/dist/memory/memory-operations.js.map +1 -0
- package/dist/memory/memory-system.d.ts +118 -0
- package/dist/memory/memory-system.d.ts.map +1 -0
- package/dist/memory/memory-system.js +477 -0
- package/dist/memory/memory-system.js.map +1 -0
- package/dist/memory/memory-test.d.ts +6 -0
- package/dist/memory/memory-test.d.ts.map +1 -0
- package/dist/memory/memory-test.js +162 -0
- package/dist/memory/memory-test.js.map +1 -0
- package/dist/memory/swarm-memory.d.ts +135 -0
- package/dist/memory/swarm-memory.d.ts.map +1 -0
- package/dist/memory/swarm-memory.js +378 -0
- package/dist/memory/swarm-memory.js.map +1 -0
- package/dist/monitoring/performance-tracker.d.ts +157 -0
- package/dist/monitoring/performance-tracker.d.ts.map +1 -0
- package/dist/monitoring/performance-tracker.js +571 -0
- package/dist/monitoring/performance-tracker.js.map +1 -0
- package/dist/orchestration/discovery/service-discovery.d.ts +81 -0
- package/dist/orchestration/discovery/service-discovery.d.ts.map +1 -0
- package/dist/orchestration/discovery/service-discovery.js +808 -0
- package/dist/orchestration/discovery/service-discovery.js.map +1 -0
- package/dist/orchestration/distributed-orchestrator.d.ts +131 -0
- package/dist/orchestration/distributed-orchestrator.d.ts.map +1 -0
- package/dist/orchestration/distributed-orchestrator.js +712 -0
- package/dist/orchestration/distributed-orchestrator.js.map +1 -0
- package/dist/orchestration/distribution/task-distribution-engine.d.ts +53 -0
- package/dist/orchestration/distribution/task-distribution-engine.d.ts.map +1 -0
- package/dist/orchestration/distribution/task-distribution-engine.js +586 -0
- package/dist/orchestration/distribution/task-distribution-engine.js.map +1 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts +606 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts.map +1 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.js +65 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.js.map +1 -0
- package/dist/orchestration/protocols/mcpx-protocol.d.ts +71 -0
- package/dist/orchestration/protocols/mcpx-protocol.d.ts.map +1 -0
- package/dist/orchestration/protocols/mcpx-protocol.js +668 -0
- package/dist/orchestration/protocols/mcpx-protocol.js.map +1 -0
- package/dist/orchestration/state/distributed-state-manager.d.ts +89 -0
- package/dist/orchestration/state/distributed-state-manager.d.ts.map +1 -0
- package/dist/orchestration/state/distributed-state-manager.js +716 -0
- package/dist/orchestration/state/distributed-state-manager.js.map +1 -0
- package/dist/queen/advanced-integration-test.d.ts +48 -0
- package/dist/queen/advanced-integration-test.d.ts.map +1 -0
- package/dist/queen/advanced-integration-test.js +474 -0
- package/dist/queen/advanced-integration-test.js.map +1 -0
- package/dist/queen/agent-factory.d.ts +43 -0
- package/dist/queen/agent-factory.d.ts.map +1 -0
- package/dist/queen/agent-factory.js +485 -0
- package/dist/queen/agent-factory.js.map +1 -0
- package/dist/queen/index.d.ts +58 -0
- package/dist/queen/index.d.ts.map +1 -0
- package/dist/queen/index.js +79 -0
- package/dist/queen/index.js.map +1 -0
- package/dist/queen/integration-example.d.ts +82 -0
- package/dist/queen/integration-example.d.ts.map +1 -0
- package/dist/queen/integration-example.js +220 -0
- package/dist/queen/integration-example.js.map +1 -0
- package/dist/queen/integration-test.d.ts +72 -0
- package/dist/queen/integration-test.d.ts.map +1 -0
- package/dist/queen/integration-test.js +564 -0
- package/dist/queen/integration-test.js.map +1 -0
- package/dist/queen/mock-mcp-client.d.ts +66 -0
- package/dist/queen/mock-mcp-client.d.ts.map +1 -0
- package/dist/queen/mock-mcp-client.js +297 -0
- package/dist/queen/mock-mcp-client.js.map +1 -0
- package/dist/queen/neural-learning.d.ts +28 -0
- package/dist/queen/neural-learning.d.ts.map +1 -0
- package/dist/queen/neural-learning.js +244 -0
- package/dist/queen/neural-learning.js.map +1 -0
- package/dist/queen/queen-memory.d.ts +31 -0
- package/dist/queen/queen-memory.d.ts.map +1 -0
- package/dist/queen/queen-memory.js +315 -0
- package/dist/queen/queen-memory.js.map +1 -0
- package/dist/queen/run-integration-tests.d.ts +9 -0
- package/dist/queen/run-integration-tests.d.ts.map +1 -0
- package/dist/queen/run-integration-tests.js +28 -0
- package/dist/queen/run-integration-tests.js.map +1 -0
- package/dist/queen/servicenow-queen.d.ts +56 -0
- package/dist/queen/servicenow-queen.d.ts.map +1 -0
- package/dist/queen/servicenow-queen.js +659 -0
- package/dist/queen/servicenow-queen.js.map +1 -0
- package/dist/queen/types.d.ts +58 -0
- package/dist/queen/types.d.ts.map +1 -0
- package/dist/queen/types.js +7 -0
- package/dist/queen/types.js.map +1 -0
- package/dist/snow-flow-system.d.ts +132 -0
- package/dist/snow-flow-system.d.ts.map +1 -0
- package/dist/snow-flow-system.js +396 -0
- package/dist/snow-flow-system.js.map +1 -0
- package/dist/types/todo.types.d.ts +61 -0
- package/dist/types/todo.types.d.ts.map +1 -0
- package/dist/types/todo.types.js +7 -0
- package/dist/types/todo.types.js.map +1 -0
- package/dist/utils/error-recovery.d.ts +101 -0
- package/dist/utils/error-recovery.d.ts.map +1 -0
- package/dist/utils/error-recovery.js +548 -0
- package/dist/utils/error-recovery.js.map +1 -0
- package/dist/version.d.ts +2 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +16 -2
- package/dist/version.js.map +1 -1
- package/package.json +8 -3
- package/test-clean-install/.claude/config.json +0 -12
- package/test-clean-install/.env.example +0 -49
- package/test-clean-install/CLAUDE.md +0 -26
- package/test-clean-install/README.md +0 -23
- package/test-global-install/.claude/config.json +0 -12
- package/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/test-global-install/.env.example +0 -49
- package/test-global-install/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/test-global-install/README.md +0 -23
- package/test-init-debug/.claude/config.json +0 -12
- package/test-init-debug/CLAUDE.md +0 -693
- package/test-init-debug/README.md +0 -392
- package/test-init-real/.claude/config.json +0 -12
- package/test-init-real/.claude/mcp-config.json +0 -128
- package/test-init-real/.claude/settings.json +0 -37
- package/test-init-real/CLAUDE.md +0 -693
- package/test-init-real/README.md +0 -392
- package/test-init-real/activate-mcp.sh +0 -15
|
@@ -1634,12 +1634,52 @@ class ServiceNowOperationsMCP {
|
|
|
1634
1634
|
};
|
|
1635
1635
|
}
|
|
1636
1636
|
async analyzeUserBehavior(dateFilter) {
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1637
|
+
try {
|
|
1638
|
+
// Query actual user activity data from ServiceNow
|
|
1639
|
+
const activities = [];
|
|
1640
|
+
// Get recent incidents created by users
|
|
1641
|
+
const incidents = await this.client.searchRecords('incident', `sys_created_on>=${dateFilter}^caller_idISNOTEMPTY`, 100);
|
|
1642
|
+
if (incidents.success && incidents.data) {
|
|
1643
|
+
const incidentData = Array.isArray(incidents.data) ? incidents.data : [incidents.data];
|
|
1644
|
+
const userIncidents = new Map();
|
|
1645
|
+
incidentData.forEach(inc => {
|
|
1646
|
+
const userId = inc.caller_id?.value || inc.caller_id;
|
|
1647
|
+
if (userId) {
|
|
1648
|
+
userIncidents.set(userId, (userIncidents.get(userId) || 0) + 1);
|
|
1649
|
+
}
|
|
1650
|
+
});
|
|
1651
|
+
activities.push({
|
|
1652
|
+
metric: 'incident_reporting',
|
|
1653
|
+
total_incidents: incidentData.length,
|
|
1654
|
+
unique_users: userIncidents.size,
|
|
1655
|
+
avg_per_user: userIncidents.size > 0 ? Math.round(incidentData.length / userIncidents.size * 10) / 10 : 0
|
|
1656
|
+
});
|
|
1657
|
+
}
|
|
1658
|
+
// Get service requests
|
|
1659
|
+
const requests = await this.client.searchRecords('sc_request', `sys_created_on>=${dateFilter}^requested_forISNOTEMPTY`, 100);
|
|
1660
|
+
if (requests.success && requests.data) {
|
|
1661
|
+
const requestData = Array.isArray(requests.data) ? requests.data : [requests.data];
|
|
1662
|
+
activities.push({
|
|
1663
|
+
metric: 'request_frequency',
|
|
1664
|
+
total_requests: requestData.length,
|
|
1665
|
+
period: dateFilter
|
|
1666
|
+
});
|
|
1667
|
+
}
|
|
1668
|
+
return {
|
|
1669
|
+
analysis_period: dateFilter,
|
|
1670
|
+
generated_at: new Date().toISOString(),
|
|
1671
|
+
user_activities: activities,
|
|
1672
|
+
summary: `Analyzed ${activities.length} activity metrics for period: ${dateFilter}`,
|
|
1673
|
+
note: 'Analysis based on actual ServiceNow data from incident and request tables'
|
|
1674
|
+
};
|
|
1675
|
+
}
|
|
1676
|
+
catch (error) {
|
|
1677
|
+
return {
|
|
1678
|
+
error: 'User behavior analysis failed',
|
|
1679
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1680
|
+
available_metrics: ['incident_reporting', 'request_frequency']
|
|
1681
|
+
};
|
|
1682
|
+
}
|
|
1643
1683
|
}
|
|
1644
1684
|
async calculateKnowledgeRelevance(articles, incident) {
|
|
1645
1685
|
const relevanceScores = [];
|
|
@@ -1661,33 +1701,131 @@ class ServiceNowOperationsMCP {
|
|
|
1661
1701
|
return relevanceScores.sort((a, b) => b.relevance_score - a.relevance_score);
|
|
1662
1702
|
}
|
|
1663
1703
|
async performPredictiveAnalysis(predictionType, timeframe) {
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1704
|
+
try {
|
|
1705
|
+
const currentDate = new Date();
|
|
1706
|
+
const analysis = {
|
|
1707
|
+
prediction_type: predictionType,
|
|
1708
|
+
timeframe: timeframe,
|
|
1709
|
+
generated_at: currentDate.toISOString(),
|
|
1710
|
+
analysis_method: 'trend_analysis',
|
|
1711
|
+
data_points: []
|
|
1712
|
+
};
|
|
1713
|
+
switch (predictionType) {
|
|
1714
|
+
case 'incident_volume':
|
|
1715
|
+
analysis.data_points = await this.analyzeIncidentTrends(timeframe);
|
|
1716
|
+
analysis.interpretation = 'Based on recent incident creation patterns';
|
|
1717
|
+
break;
|
|
1718
|
+
case 'system_failure':
|
|
1719
|
+
analysis.data_points = await this.analyzeSystemHealthTrends(timeframe);
|
|
1720
|
+
analysis.interpretation = 'Based on critical incident patterns and system health indicators';
|
|
1721
|
+
break;
|
|
1722
|
+
case 'resource_exhaustion':
|
|
1723
|
+
analysis.data_points = await this.analyzeResourceTrends(timeframe);
|
|
1724
|
+
analysis.interpretation = 'Based on request volumes and capacity indicators';
|
|
1725
|
+
break;
|
|
1726
|
+
case 'user_impact':
|
|
1727
|
+
analysis.data_points = await this.analyzeUserImpactTrends(timeframe);
|
|
1728
|
+
analysis.interpretation = 'Based on user-reported incidents and service requests';
|
|
1729
|
+
break;
|
|
1730
|
+
default:
|
|
1731
|
+
analysis.data_points = [{ error: 'Unknown prediction type', supported_types: ['incident_volume', 'system_failure', 'resource_exhaustion', 'user_impact'] }];
|
|
1732
|
+
analysis.interpretation = 'Unsupported analysis type';
|
|
1733
|
+
}
|
|
1734
|
+
return analysis;
|
|
1735
|
+
}
|
|
1736
|
+
catch (error) {
|
|
1737
|
+
return {
|
|
1738
|
+
prediction_type: predictionType,
|
|
1739
|
+
timeframe: timeframe,
|
|
1740
|
+
error: 'Analysis failed',
|
|
1741
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1742
|
+
generated_at: new Date().toISOString()
|
|
1743
|
+
};
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
// New trend analysis methods
|
|
1747
|
+
async analyzeIncidentTrends(timeframe) {
|
|
1748
|
+
try {
|
|
1749
|
+
const incidents = await this.client.searchRecords('incident', 'sys_created_onONToday@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)', 100);
|
|
1750
|
+
if (incidents.success && incidents.data) {
|
|
1751
|
+
const incidentData = Array.isArray(incidents.data) ? incidents.data : [incidents.data];
|
|
1752
|
+
const dailyCounts = new Map();
|
|
1753
|
+
incidentData.forEach(incident => {
|
|
1754
|
+
const date = new Date(incident.sys_created_on).toDateString();
|
|
1755
|
+
dailyCounts.set(date, (dailyCounts.get(date) || 0) + 1);
|
|
1756
|
+
});
|
|
1757
|
+
return Array.from(dailyCounts.entries()).map(([date, count]) => ({
|
|
1758
|
+
date,
|
|
1759
|
+
incident_count: count,
|
|
1760
|
+
trend: count > 5 ? 'increasing' : 'stable'
|
|
1761
|
+
}));
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
catch (error) {
|
|
1765
|
+
return [{ error: 'Failed to analyze incident trends', message: String(error) }];
|
|
1766
|
+
}
|
|
1767
|
+
return [{ message: 'No incident data available for analysis' }];
|
|
1768
|
+
}
|
|
1769
|
+
async analyzeSystemHealthTrends(timeframe) {
|
|
1770
|
+
try {
|
|
1771
|
+
const criticalIncidents = await this.client.searchRecords('incident', 'priority=1^sys_created_onONToday@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)', 50);
|
|
1772
|
+
if (criticalIncidents.success && criticalIncidents.data) {
|
|
1773
|
+
const criticalData = Array.isArray(criticalIncidents.data) ? criticalIncidents.data : [criticalIncidents.data];
|
|
1774
|
+
return [{
|
|
1775
|
+
metric: 'critical_incidents',
|
|
1776
|
+
count: criticalData.length,
|
|
1777
|
+
health_indicator: criticalData.length > 3 ? 'at_risk' : 'stable',
|
|
1778
|
+
recent_issues: criticalData.slice(0, 3).map(inc => inc.short_description)
|
|
1779
|
+
}];
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
catch (error) {
|
|
1783
|
+
return [{ error: 'Failed to analyze system health trends', message: String(error) }];
|
|
1784
|
+
}
|
|
1785
|
+
return [{ message: 'No system health data available' }];
|
|
1786
|
+
}
|
|
1787
|
+
async analyzeResourceTrends(timeframe) {
|
|
1788
|
+
try {
|
|
1789
|
+
const requests = await this.client.searchRecords('sc_request', 'sys_created_onONToday@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)', 100);
|
|
1790
|
+
if (requests.success && requests.data) {
|
|
1791
|
+
const requestData = Array.isArray(requests.data) ? requests.data : [requests.data];
|
|
1792
|
+
return [{
|
|
1793
|
+
metric: 'request_volume',
|
|
1794
|
+
total_requests: requestData.length,
|
|
1795
|
+
resource_pressure: requestData.length > 20 ? 'high' : 'normal',
|
|
1796
|
+
trend: 'stable'
|
|
1797
|
+
}];
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
catch (error) {
|
|
1801
|
+
return [{ error: 'Failed to analyze resource trends', message: String(error) }];
|
|
1802
|
+
}
|
|
1803
|
+
return [{ message: 'No resource usage data available' }];
|
|
1804
|
+
}
|
|
1805
|
+
async analyzeUserImpactTrends(timeframe) {
|
|
1806
|
+
try {
|
|
1807
|
+
const userIncidents = await this.client.searchRecords('incident', 'caller_idISNOTEMPTY^sys_created_onONToday@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)', 100);
|
|
1808
|
+
if (userIncidents.success && userIncidents.data) {
|
|
1809
|
+
const incidentData = Array.isArray(userIncidents.data) ? userIncidents.data : [userIncidents.data];
|
|
1810
|
+
const impactCounts = new Map();
|
|
1811
|
+
incidentData.forEach(incident => {
|
|
1812
|
+
const impact = incident.impact || 'unknown';
|
|
1813
|
+
impactCounts.set(impact, (impactCounts.get(impact) || 0) + 1);
|
|
1814
|
+
});
|
|
1815
|
+
return [{
|
|
1816
|
+
metric: 'user_impact_distribution',
|
|
1817
|
+
high_impact: impactCounts.get('1') || 0,
|
|
1818
|
+
medium_impact: impactCounts.get('2') || 0,
|
|
1819
|
+
low_impact: impactCounts.get('3') || 0,
|
|
1820
|
+
total_affected_users: incidentData.length,
|
|
1821
|
+
impact_trend: (impactCounts.get('1') || 0) > 5 ? 'increasing' : 'stable'
|
|
1822
|
+
}];
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
catch (error) {
|
|
1826
|
+
return [{ error: 'Failed to analyze user impact trends', message: String(error) }];
|
|
1689
1827
|
}
|
|
1690
|
-
return
|
|
1828
|
+
return [{ message: 'No user impact data available' }];
|
|
1691
1829
|
}
|
|
1692
1830
|
async predictIncidentVolume(timeframe) {
|
|
1693
1831
|
// Get historical incident data
|