snow-flow 3.4.16 → 3.4.17
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 +2 -2
- package/dist/mcp/servicenow-development-assistant-mcp.js +6 -6
- package/dist/mcp/servicenow-operations-mcp.js +1 -1
- package/dist/memory/snow-flow-memory-patterns.d.ts +33 -0
- package/dist/memory/snow-flow-memory-patterns.js +35 -0
- package/package.json +1 -1
- package/website/README.md +2 -2
- package/website/css/style.css +279 -0
- package/website/index.html +15 -344
- package/website/js/main.js +158 -2
- package/website/tools.js +887 -0
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 🏔️ Snow-Flow
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/snow-flow)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -702,4 +702,4 @@ Special thanks to:
|
|
|
702
702
|
|
|
703
703
|
**Built with ❤️ for ServiceNow developers by developers who understand the struggle.**
|
|
704
704
|
|
|
705
|
-
*Snow-Flow - Where ServiceNow development meets artificial intelligence.*
|
|
705
|
+
*Snow-Flow - Where ServiceNow development meets artificial intelligence.* 🏔️
|
|
@@ -12,7 +12,7 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
|
12
12
|
const servicenow_client_js_1 = require("../utils/servicenow-client.js");
|
|
13
13
|
const mcp_auth_middleware_js_1 = require("../utils/mcp-auth-middleware.js");
|
|
14
14
|
const mcp_config_manager_js_1 = require("../utils/mcp-config-manager.js");
|
|
15
|
-
const mcp_logger_js_1 = require("
|
|
15
|
+
const mcp_logger_js_1 = require("./shared/mcp-logger.js");
|
|
16
16
|
const widget_template_generator_js_1 = require("../utils/widget-template-generator.js");
|
|
17
17
|
const fs_1 = require("fs");
|
|
18
18
|
const path_1 = require("path");
|
|
@@ -20,7 +20,7 @@ const self_documenting_system_js_1 = require("../documentation/self-documenting-
|
|
|
20
20
|
const cost_optimization_engine_js_1 = require("../optimization/cost-optimization-engine.js");
|
|
21
21
|
const advanced_compliance_system_js_1 = require("../compliance/advanced-compliance-system.js");
|
|
22
22
|
const self_healing_system_js_1 = require("../healing/self-healing-system.js");
|
|
23
|
-
const
|
|
23
|
+
const queen_memory_system_js_1 = require("../queen/queen-memory-system.js");
|
|
24
24
|
class ServiceNowDevelopmentAssistantMCP {
|
|
25
25
|
constructor() {
|
|
26
26
|
this.memoryIndex = new Map();
|
|
@@ -41,12 +41,12 @@ class ServiceNowDevelopmentAssistantMCP {
|
|
|
41
41
|
async initializeSystems() {
|
|
42
42
|
try {
|
|
43
43
|
// Initialize systems synchronously during server startup
|
|
44
|
-
this.memorySystem = new
|
|
44
|
+
this.memorySystem = new queen_memory_system_js_1.QueenMemorySystem({
|
|
45
45
|
dbPath: './.snow-flow/data/intelligent-mcp.db',
|
|
46
46
|
cache: { enabled: true, maxSize: 100, ttl: 3600 },
|
|
47
47
|
ttl: { default: 3600, session: 7200, artifact: 86400, metric: 604800 }
|
|
48
48
|
});
|
|
49
|
-
await this.memorySystem.initialize();
|
|
49
|
+
// await this.memorySystem.initialize(); // QueenMemorySystem doesn't have initialize method
|
|
50
50
|
this.logger.info('Memory system initialized');
|
|
51
51
|
this.documentationSystem = new self_documenting_system_js_1.SelfDocumentingSystem(this.client, this.memorySystem);
|
|
52
52
|
this.costOptimizationEngine = new cost_optimization_engine_js_1.CostOptimizationEngine(this.client, this.memorySystem);
|
|
@@ -57,8 +57,8 @@ class ServiceNowDevelopmentAssistantMCP {
|
|
|
57
57
|
catch (error) {
|
|
58
58
|
this.logger.error('Failed to initialize systems:', error);
|
|
59
59
|
// Initialize minimal fallback systems
|
|
60
|
-
this.memorySystem = new
|
|
61
|
-
await this.memorySystem.initialize();
|
|
60
|
+
this.memorySystem = new queen_memory_system_js_1.QueenMemorySystem({ dbPath: './.snow-flow/data/intelligent-mcp.db' });
|
|
61
|
+
// await this.memorySystem.initialize(); // QueenMemorySystem doesn't have initialize method
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
setupHandlers() {
|
|
@@ -3284,7 +3284,7 @@ exports.ServiceNowOperationsMCP = ServiceNowOperationsMCP;
|
|
|
3284
3284
|
if (require.main === module) {
|
|
3285
3285
|
const server = new ServiceNowOperationsMCP();
|
|
3286
3286
|
server.run().catch((error) => {
|
|
3287
|
-
|
|
3287
|
+
console.error('Failed to start ServiceNow Operations MCP server:', error);
|
|
3288
3288
|
process.exit(1);
|
|
3289
3289
|
});
|
|
3290
3290
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snow-Flow Memory Patterns - Stub Implementation
|
|
3
|
+
* Minimal implementation to support Queen Memory System
|
|
4
|
+
*/
|
|
5
|
+
export declare class SnowFlowMemoryOrganizer {
|
|
6
|
+
static getWidgetMemoryStructure(name: string): {
|
|
7
|
+
key: string;
|
|
8
|
+
patterns: string[];
|
|
9
|
+
context: {
|
|
10
|
+
type: string;
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
static getFlowMemoryStructure(name: string): {
|
|
15
|
+
key: string;
|
|
16
|
+
patterns: string[];
|
|
17
|
+
context: {
|
|
18
|
+
type: string;
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
static getScriptMemoryStructure(name: string, scriptType?: string): {
|
|
23
|
+
key: string;
|
|
24
|
+
patterns: string[];
|
|
25
|
+
context: {
|
|
26
|
+
type: string;
|
|
27
|
+
name: string;
|
|
28
|
+
scriptType: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
static generateKey(category: string, type: string, name: string): string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=snow-flow-memory-patterns.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Snow-Flow Memory Patterns - Stub Implementation
|
|
4
|
+
* Minimal implementation to support Queen Memory System
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SnowFlowMemoryOrganizer = void 0;
|
|
8
|
+
class SnowFlowMemoryOrganizer {
|
|
9
|
+
static getWidgetMemoryStructure(name) {
|
|
10
|
+
return {
|
|
11
|
+
key: this.generateKey('artifacts', 'widget', name),
|
|
12
|
+
patterns: ['template', 'script', 'client_script'],
|
|
13
|
+
context: { type: 'widget', name }
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
static getFlowMemoryStructure(name) {
|
|
17
|
+
return {
|
|
18
|
+
key: this.generateKey('artifacts', 'flow', name),
|
|
19
|
+
patterns: ['actions', 'conditions', 'variables'],
|
|
20
|
+
context: { type: 'flow', name }
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
static getScriptMemoryStructure(name, scriptType = 'server') {
|
|
24
|
+
return {
|
|
25
|
+
key: this.generateKey('artifacts', 'script', name),
|
|
26
|
+
patterns: ['functions', 'variables', 'dependencies'],
|
|
27
|
+
context: { type: 'script', name, scriptType }
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
static generateKey(category, type, name) {
|
|
31
|
+
return `${category}:${type}:${name}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.SnowFlowMemoryOrganizer = SnowFlowMemoryOrganizer;
|
|
35
|
+
//# sourceMappingURL=snow-flow-memory-patterns.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snow-flow",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.17",
|
|
4
4
|
"description": "ServiceNow development framework with MCP server integration. Executes background scripts using ES5 JavaScript only (ServiceNow Rhino engine requirement). Provides 17 MCP servers for complete ServiceNow operations including widget deployment with coherence validation, table operations, script execution, machine learning, advanced features, and comprehensive platform management.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
package/website/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Snow-Flow Website
|
|
1
|
+
# Snow-Flow Website 🏔️
|
|
2
2
|
|
|
3
3
|
Official documentation website for Snow-Flow - Advanced ServiceNow Development Framework.
|
|
4
4
|
|
|
@@ -104,7 +104,7 @@ Edit the CSS variables in `css/style.css`:
|
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
### Logo
|
|
107
|
-
The logo uses emojis (
|
|
107
|
+
The logo uses emojis (🏔️). To change it, update all instances in:
|
|
108
108
|
- `index.html`
|
|
109
109
|
- `docs/api-full.html`
|
|
110
110
|
|
package/website/css/style.css
CHANGED
|
@@ -739,6 +739,285 @@ pre code {
|
|
|
739
739
|
margin-top: 1rem;
|
|
740
740
|
}
|
|
741
741
|
|
|
742
|
+
/* Dynamic MCP Cards */
|
|
743
|
+
.mcp-filter {
|
|
744
|
+
display: flex;
|
|
745
|
+
justify-content: center;
|
|
746
|
+
gap: 1rem;
|
|
747
|
+
margin-bottom: 2rem;
|
|
748
|
+
flex-wrap: wrap;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
.filter-btn {
|
|
752
|
+
padding: 0.5rem 1.5rem;
|
|
753
|
+
border: 2px solid var(--border-color);
|
|
754
|
+
background: white;
|
|
755
|
+
border-radius: 25px;
|
|
756
|
+
cursor: pointer;
|
|
757
|
+
font-weight: 500;
|
|
758
|
+
transition: all 0.3s ease;
|
|
759
|
+
font-size: 0.9rem;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
.filter-btn:hover {
|
|
763
|
+
border-color: var(--primary-color);
|
|
764
|
+
color: var(--primary-color);
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.filter-btn.active {
|
|
768
|
+
background: var(--primary-color);
|
|
769
|
+
border-color: var(--primary-color);
|
|
770
|
+
color: white;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
.mcp-grid-dynamic {
|
|
774
|
+
display: grid;
|
|
775
|
+
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
776
|
+
gap: 2rem;
|
|
777
|
+
margin-top: 2rem;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
.mcp-card-dynamic {
|
|
781
|
+
background: var(--card-bg);
|
|
782
|
+
border-radius: 15px;
|
|
783
|
+
box-shadow: var(--shadow-md);
|
|
784
|
+
overflow: hidden;
|
|
785
|
+
transition: all 0.3s ease;
|
|
786
|
+
border: 1px solid var(--border-color);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
.mcp-card-dynamic:hover {
|
|
790
|
+
transform: translateY(-5px);
|
|
791
|
+
box-shadow: var(--shadow-lg);
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
.mcp-card-dynamic.expanded {
|
|
795
|
+
box-shadow: var(--shadow-xl);
|
|
796
|
+
border-color: var(--primary-color);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
.mcp-card-header {
|
|
800
|
+
padding: 1.5rem;
|
|
801
|
+
display: flex;
|
|
802
|
+
justify-content: space-between;
|
|
803
|
+
align-items: flex-start;
|
|
804
|
+
border-bottom: 1px solid var(--border-color);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
.mcp-title {
|
|
808
|
+
flex: 1;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
.mcp-title h3 {
|
|
812
|
+
margin: 0 0 0.5rem 0;
|
|
813
|
+
color: var(--text-primary);
|
|
814
|
+
font-size: 1.2rem;
|
|
815
|
+
font-weight: 600;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
.mcp-badge {
|
|
819
|
+
background: var(--gradient-secondary);
|
|
820
|
+
color: white;
|
|
821
|
+
padding: 0.25rem 0.75rem;
|
|
822
|
+
border-radius: 20px;
|
|
823
|
+
font-size: 0.8rem;
|
|
824
|
+
font-weight: 600;
|
|
825
|
+
display: inline-block;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
.mcp-expand-btn {
|
|
829
|
+
background: none;
|
|
830
|
+
border: none;
|
|
831
|
+
cursor: pointer;
|
|
832
|
+
padding: 0.5rem;
|
|
833
|
+
border-radius: 50%;
|
|
834
|
+
transition: all 0.3s ease;
|
|
835
|
+
color: var(--text-secondary);
|
|
836
|
+
margin-left: 1rem;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.mcp-expand-btn:hover {
|
|
840
|
+
background: var(--light-bg);
|
|
841
|
+
color: var(--primary-color);
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
.mcp-expand-btn.expanded svg {
|
|
845
|
+
transform: rotate(180deg);
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
.mcp-expand-btn svg {
|
|
849
|
+
transition: transform 0.3s ease;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
.mcp-description {
|
|
853
|
+
padding: 0 1.5rem 1.5rem 1.5rem;
|
|
854
|
+
color: var(--text-secondary);
|
|
855
|
+
margin: 0;
|
|
856
|
+
line-height: 1.5;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
.mcp-tools-container {
|
|
860
|
+
border-top: 1px solid var(--border-color);
|
|
861
|
+
background: #f9fafb;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
.mcp-tools-grid {
|
|
865
|
+
padding: 1.5rem;
|
|
866
|
+
display: grid;
|
|
867
|
+
gap: 1rem;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
.tool-item {
|
|
871
|
+
background: white;
|
|
872
|
+
padding: 1rem;
|
|
873
|
+
border-radius: 8px;
|
|
874
|
+
border: 1px solid var(--border-color);
|
|
875
|
+
transition: all 0.2s ease;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
.tool-item:hover {
|
|
879
|
+
border-color: var(--primary-color);
|
|
880
|
+
box-shadow: 0 2px 8px rgba(0,102,204,0.1);
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
.tool-header {
|
|
884
|
+
margin-bottom: 0.5rem;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
.tool-name {
|
|
888
|
+
background: #f7fafc;
|
|
889
|
+
color: var(--primary-color);
|
|
890
|
+
padding: 0.25rem 0.5rem;
|
|
891
|
+
border-radius: 4px;
|
|
892
|
+
font-size: 0.9rem;
|
|
893
|
+
font-weight: 600;
|
|
894
|
+
border: 1px solid #e2e8f0;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
.tool-description {
|
|
898
|
+
color: var(--text-secondary);
|
|
899
|
+
margin: 0;
|
|
900
|
+
font-size: 0.9rem;
|
|
901
|
+
line-height: 1.4;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/* Enhanced Search */
|
|
905
|
+
.mcp-search {
|
|
906
|
+
transition: all 0.3s ease !important;
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
.mcp-search:focus {
|
|
910
|
+
outline: none;
|
|
911
|
+
border-color: var(--primary-color) !important;
|
|
912
|
+
box-shadow: 0 0 0 3px rgba(0,102,204,0.1) !important;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
/* Animation Classes */
|
|
916
|
+
@keyframes fadeIn {
|
|
917
|
+
from {
|
|
918
|
+
opacity: 0;
|
|
919
|
+
transform: translateY(10px);
|
|
920
|
+
}
|
|
921
|
+
to {
|
|
922
|
+
opacity: 1;
|
|
923
|
+
transform: translateY(0);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
.fadeIn {
|
|
928
|
+
animation: fadeIn 0.3s ease;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
/* Loading States */
|
|
932
|
+
.mcp-grid-dynamic.loading {
|
|
933
|
+
opacity: 0.6;
|
|
934
|
+
pointer-events: none;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
.mcp-grid-dynamic.loading::after {
|
|
938
|
+
content: "Loading tools...";
|
|
939
|
+
position: absolute;
|
|
940
|
+
top: 50%;
|
|
941
|
+
left: 50%;
|
|
942
|
+
transform: translate(-50%, -50%);
|
|
943
|
+
font-size: 1.2rem;
|
|
944
|
+
color: var(--text-secondary);
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
/* Tool Count Indicators */
|
|
948
|
+
.server-stats {
|
|
949
|
+
display: flex;
|
|
950
|
+
gap: 1rem;
|
|
951
|
+
margin-top: 1rem;
|
|
952
|
+
padding-top: 1rem;
|
|
953
|
+
border-top: 1px solid var(--border-color);
|
|
954
|
+
font-size: 0.9rem;
|
|
955
|
+
color: var(--text-light);
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
.stat-item {
|
|
959
|
+
display: flex;
|
|
960
|
+
align-items: center;
|
|
961
|
+
gap: 0.5rem;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
.stat-icon {
|
|
965
|
+
width: 16px;
|
|
966
|
+
height: 16px;
|
|
967
|
+
background: var(--gradient-secondary);
|
|
968
|
+
border-radius: 50%;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
/* Responsive Design for Dynamic Cards */
|
|
972
|
+
@media (max-width: 1024px) {
|
|
973
|
+
.mcp-grid-dynamic {
|
|
974
|
+
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
975
|
+
gap: 1.5rem;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
@media (max-width: 768px) {
|
|
980
|
+
.mcp-grid-dynamic {
|
|
981
|
+
grid-template-columns: 1fr;
|
|
982
|
+
gap: 1rem;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
.mcp-card-header {
|
|
986
|
+
padding: 1rem;
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
.mcp-description {
|
|
990
|
+
padding: 0 1rem 1rem 1rem;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
.mcp-tools-grid {
|
|
994
|
+
padding: 1rem;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
.mcp-filter {
|
|
998
|
+
gap: 0.5rem;
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
.filter-btn {
|
|
1002
|
+
padding: 0.4rem 1rem;
|
|
1003
|
+
font-size: 0.8rem;
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
@media (max-width: 480px) {
|
|
1008
|
+
.tool-item {
|
|
1009
|
+
padding: 0.75rem;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
.tool-name {
|
|
1013
|
+
font-size: 0.8rem;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
.tool-description {
|
|
1017
|
+
font-size: 0.85rem;
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
|
|
742
1021
|
/* Responsive Design */
|
|
743
1022
|
@media (max-width: 768px) {
|
|
744
1023
|
.nav-menu {
|