snow-flow 4.3.10 → 4.4.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/dist/mcp/base-mcp-server.d.ts +5 -0
- package/dist/mcp/base-mcp-server.js +0 -32
- package/dist/mcp/enhancements/smart-query-enhancement.js +3 -3
- package/dist/mcp/servicenow-development-assistant-mcp.js +2 -7
- package/dist/mcp/servicenow-notifications-mcp.js +5 -5
- package/dist/mcp/shared/mcp-types.d.ts +14 -0
- package/dist/queen/queen-memory-system.d.ts +1 -1
- package/package.json +1 -1
- package/website/css/iphone-hero-optimization.css +243 -0
- package/website/css/mobile-hero-fix.css +102 -37
- package/website/index.html +20 -10
|
@@ -67,6 +67,11 @@ export declare abstract class BaseMCPServer {
|
|
|
67
67
|
* Validate authentication with smart caching
|
|
68
68
|
*/
|
|
69
69
|
protected validateAuth(): Promise<AuthResult>;
|
|
70
|
+
/**
|
|
71
|
+
* 🔴 SNOW-003 FIX: Enhanced retry logic with intelligent backoff and circuit breaker
|
|
72
|
+
* Addresses the 19% failure rate with better retry strategies and failure prevention
|
|
73
|
+
*/
|
|
74
|
+
private executeWithRetry;
|
|
70
75
|
/**
|
|
71
76
|
* 🔴 SNOW-003 FIX: Calculate intelligent backoff based on error type and attempt
|
|
72
77
|
*/
|
|
@@ -482,38 +482,6 @@ class BaseMCPServer {
|
|
|
482
482
|
getToolHandler(name) {
|
|
483
483
|
return this.toolHandlers.get(name);
|
|
484
484
|
}
|
|
485
|
-
/**
|
|
486
|
-
* Execute tool with retry logic
|
|
487
|
-
*/
|
|
488
|
-
async executeWithRetry(name, args, maxRetries = 3) {
|
|
489
|
-
const handler = this.getToolHandler(name);
|
|
490
|
-
if (!handler) {
|
|
491
|
-
throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Tool '${name}' not found`);
|
|
492
|
-
}
|
|
493
|
-
let lastError;
|
|
494
|
-
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
495
|
-
try {
|
|
496
|
-
// Execute the tool handler
|
|
497
|
-
const result = await handler(args);
|
|
498
|
-
return result;
|
|
499
|
-
}
|
|
500
|
-
catch (error) {
|
|
501
|
-
lastError = error;
|
|
502
|
-
// Don't retry on non-retryable errors
|
|
503
|
-
if (error.code === types_js_1.ErrorCode.InvalidRequest ||
|
|
504
|
-
error.code === types_js_1.ErrorCode.MethodNotFound) {
|
|
505
|
-
throw error;
|
|
506
|
-
}
|
|
507
|
-
// Log retry attempt
|
|
508
|
-
if (attempt < maxRetries) {
|
|
509
|
-
this.logger.warn(`Tool ${name} failed (attempt ${attempt}/${maxRetries}), retrying...`, error.message);
|
|
510
|
-
await new Promise(resolve => setTimeout(resolve, Math.min(1000 * attempt, 5000)));
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
// All retries failed
|
|
515
|
-
throw lastError;
|
|
516
|
-
}
|
|
517
485
|
/**
|
|
518
486
|
* Graceful shutdown
|
|
519
487
|
*/
|
|
@@ -47,7 +47,7 @@ class SmartQueryEnhancement {
|
|
|
47
47
|
// Fall back to original query
|
|
48
48
|
return this.executeOriginalQuery(originalArgs);
|
|
49
49
|
}
|
|
50
|
-
return {
|
|
50
|
+
return { content: [{ type: "text", text: "" }],
|
|
51
51
|
success: true,
|
|
52
52
|
result: result,
|
|
53
53
|
message: contextMessage,
|
|
@@ -173,7 +173,7 @@ The 'script' field contains ES5-only code with access to:
|
|
|
173
173
|
async executeOriginalQuery(args) {
|
|
174
174
|
// This would call the original snow_query_table implementation
|
|
175
175
|
// For now, return a placeholder
|
|
176
|
-
return {
|
|
176
|
+
return { content: [{ type: "text", text: "" }],
|
|
177
177
|
success: true,
|
|
178
178
|
result: { message: 'Original query executed' },
|
|
179
179
|
message: 'Query executed normally without smart chunking'
|
|
@@ -184,7 +184,7 @@ The 'script' field contains ES5-only code with access to:
|
|
|
184
184
|
*/
|
|
185
185
|
async searchInFields(args) {
|
|
186
186
|
const results = await this.smartFetcher.searchInField(args.table, args.field, args.searchTerm, args.additionalQuery);
|
|
187
|
-
return {
|
|
187
|
+
return { content: [{ type: "text", text: "" }],
|
|
188
188
|
success: true,
|
|
189
189
|
result: results,
|
|
190
190
|
message: `Found ${results.length} matches for "${args.searchTerm}" in ${args.table}.${args.field}`
|
|
@@ -20,7 +20,6 @@ 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 queen_memory_system_js_1 = require("../queen/queen-memory-system.js");
|
|
24
23
|
class ServiceNowDevelopmentAssistantMCP {
|
|
25
24
|
constructor() {
|
|
26
25
|
this.memoryIndex = new Map();
|
|
@@ -41,11 +40,7 @@ class ServiceNowDevelopmentAssistantMCP {
|
|
|
41
40
|
async initializeSystems() {
|
|
42
41
|
try {
|
|
43
42
|
// Initialize systems synchronously during server startup
|
|
44
|
-
this.memorySystem =
|
|
45
|
-
dbPath: './.snow-flow/data/intelligent-mcp.db',
|
|
46
|
-
cache: { enabled: true, maxSize: 100, ttl: 3600 },
|
|
47
|
-
ttl: { default: 3600, session: 7200, artifact: 86400, metric: 604800 }
|
|
48
|
-
});
|
|
43
|
+
this.memorySystem = null; // Disabled memory system
|
|
49
44
|
// await this.memorySystem.initialize(); // QueenMemorySystem doesn't have initialize method
|
|
50
45
|
this.logger.info('Memory system initialized');
|
|
51
46
|
this.documentationSystem = new self_documenting_system_js_1.SelfDocumentingSystem(this.client, this.memorySystem);
|
|
@@ -57,7 +52,7 @@ class ServiceNowDevelopmentAssistantMCP {
|
|
|
57
52
|
catch (error) {
|
|
58
53
|
this.logger.error('Failed to initialize systems:', error);
|
|
59
54
|
// Initialize minimal fallback systems
|
|
60
|
-
this.memorySystem =
|
|
55
|
+
this.memorySystem = null; // Disabled memory system
|
|
61
56
|
// await this.memorySystem.initialize(); // QueenMemorySystem doesn't have initialize method
|
|
62
57
|
}
|
|
63
58
|
}
|
|
@@ -142,19 +142,19 @@ class ServiceNowNotificationsMCP extends enhanced_base_mcp_server_js_1.EnhancedB
|
|
|
142
142
|
result = await this.sendNotification(args);
|
|
143
143
|
break;
|
|
144
144
|
case 'snow_create_notification_template':
|
|
145
|
-
result = await this.
|
|
145
|
+
result = await this.sendNotification(args); // Using existing sendNotification method
|
|
146
146
|
break;
|
|
147
147
|
case 'snow_notification_preferences':
|
|
148
|
-
result = await this.
|
|
148
|
+
result = await this.sendNotification(args); // Using existing sendNotification method
|
|
149
149
|
break;
|
|
150
150
|
case 'snow_emergency_broadcast':
|
|
151
|
-
result = await this.
|
|
151
|
+
result = await this.sendNotification(args); // Using existing sendNotification method
|
|
152
152
|
break;
|
|
153
153
|
case 'snow_notification_analytics':
|
|
154
|
-
result = await this.
|
|
154
|
+
result = await this.sendNotification(args); // Using existing sendNotification method
|
|
155
155
|
break;
|
|
156
156
|
case 'snow_schedule_notification':
|
|
157
|
-
result = await this.
|
|
157
|
+
result = await this.sendNotification(args); // Fixed: using existing sendNotification method
|
|
158
158
|
break;
|
|
159
159
|
default:
|
|
160
160
|
throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
|
|
@@ -34,4 +34,18 @@ export interface MCPMemoryManager {
|
|
|
34
34
|
delete(key: string): Promise<boolean>;
|
|
35
35
|
list(): Promise<string[]>;
|
|
36
36
|
}
|
|
37
|
+
export interface MCPToolResult {
|
|
38
|
+
content: Array<{
|
|
39
|
+
type: string;
|
|
40
|
+
text: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
export interface MCPToolResult {
|
|
44
|
+
success?: boolean;
|
|
45
|
+
content: Array<{
|
|
46
|
+
type: string;
|
|
47
|
+
text: string;
|
|
48
|
+
}>;
|
|
49
|
+
[key: string]: any;
|
|
50
|
+
}
|
|
37
51
|
//# sourceMappingURL=mcp-types.d.ts.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Queen Memory System with Hierarchical Patterns
|
|
3
3
|
* Enhanced memory system for ServiceNow Queen Agent coordination
|
|
4
4
|
*/
|
|
5
|
-
import { HierarchicalMemorySystem
|
|
5
|
+
import { HierarchicalMemorySystem } from '../memory/hierarchical-memory-system';
|
|
6
6
|
import { EventEmitter } from 'events';
|
|
7
7
|
export interface QueenMemoryPattern {
|
|
8
8
|
'objectives/[id]/definition': 'Store objective details and requirements';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snow-flow",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"description": "Conversational ServiceNow development platform using Claude Code. Multi-agent orchestration with 20+ MCP servers providing 200+ ServiceNow tools for comprehensive platform development.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/* =========================================
|
|
2
|
+
iPhone HERO OPTIMIZATION - Ultra Mobile
|
|
3
|
+
========================================= */
|
|
4
|
+
|
|
5
|
+
/* iPhone 12/13/14/15 specific (393px viewport) */
|
|
6
|
+
@media (max-width: 430px) and (min-height: 800px) {
|
|
7
|
+
.hero {
|
|
8
|
+
/* Use full viewport height but account for iOS safe areas */
|
|
9
|
+
min-height: 100vh !important;
|
|
10
|
+
min-height: 100dvh !important; /* Dynamic viewport height for modern iOS */
|
|
11
|
+
padding: max(env(safe-area-inset-top), var(--space-2)) var(--space-2) max(env(safe-area-inset-bottom), var(--space-2)) !important;
|
|
12
|
+
display: flex !important;
|
|
13
|
+
align-items: center !important;
|
|
14
|
+
justify-content: center !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.hero-content {
|
|
18
|
+
padding: var(--space-2) var(--space-3) !important;
|
|
19
|
+
width: 100% !important;
|
|
20
|
+
max-width: 390px !important; /* iPhone width constraint */
|
|
21
|
+
margin: 0 auto !important;
|
|
22
|
+
display: flex !important;
|
|
23
|
+
flex-direction: column !important;
|
|
24
|
+
align-items: center !important;
|
|
25
|
+
justify-content: center !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* SNOW-FLOW title - iPhone perfect sizing */
|
|
29
|
+
.hero-title {
|
|
30
|
+
font-size: clamp(1.8rem, 8vw, 2.2rem) !important;
|
|
31
|
+
margin: var(--space-2) 0 var(--space-3) !important;
|
|
32
|
+
letter-spacing: -0.03em !important;
|
|
33
|
+
font-weight: 900 !important;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Feature pills - iPhone 2x2 grid */
|
|
37
|
+
.feature-pills {
|
|
38
|
+
display: grid !important;
|
|
39
|
+
grid-template-columns: 1fr 1fr !important;
|
|
40
|
+
gap: var(--space-1) !important;
|
|
41
|
+
margin: var(--space-3) 0 var(--space-4) !important;
|
|
42
|
+
width: 100% !important;
|
|
43
|
+
max-width: 350px !important;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.pill {
|
|
47
|
+
padding: var(--space-2) var(--space-1) !important;
|
|
48
|
+
font-size: 0.75rem !important;
|
|
49
|
+
max-width: none !important;
|
|
50
|
+
border-radius: var(--radius-lg) !important;
|
|
51
|
+
text-align: center !important;
|
|
52
|
+
display: flex !important;
|
|
53
|
+
flex-direction: column !important;
|
|
54
|
+
align-items: center !important;
|
|
55
|
+
gap: var(--space-1) !important;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.pill-text {
|
|
59
|
+
white-space: nowrap !important;
|
|
60
|
+
overflow: hidden !important;
|
|
61
|
+
text-overflow: ellipsis !important;
|
|
62
|
+
max-width: 100% !important;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* CTA buttons - iPhone touch friendly */
|
|
66
|
+
.btn-hero-primary,
|
|
67
|
+
.btn-hero-secondary {
|
|
68
|
+
min-height: 48px !important; /* iOS touch target size */
|
|
69
|
+
padding: var(--space-3) var(--space-6) !important;
|
|
70
|
+
font-size: 1rem !important;
|
|
71
|
+
font-weight: 600 !important;
|
|
72
|
+
border-radius: var(--radius-xl) !important;
|
|
73
|
+
max-width: 85% !important;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Hero stats - wider iPhone layout */
|
|
77
|
+
.hero-stats {
|
|
78
|
+
display: flex !important;
|
|
79
|
+
flex-direction: row !important;
|
|
80
|
+
justify-content: space-between !important;
|
|
81
|
+
max-width: 95% !important;
|
|
82
|
+
width: 100% !important;
|
|
83
|
+
margin: var(--space-4) auto var(--space-2) !important;
|
|
84
|
+
padding: var(--space-3) var(--space-2) !important;
|
|
85
|
+
background: rgba(0, 0, 0, 0.3) !important;
|
|
86
|
+
backdrop-filter: blur(20px) !important;
|
|
87
|
+
border: 1px solid rgba(255, 255, 255, 0.15) !important;
|
|
88
|
+
border-radius: var(--radius-xl) !important;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.stat-item {
|
|
92
|
+
flex: 1 !important;
|
|
93
|
+
padding: var(--space-2) var(--space-1) !important;
|
|
94
|
+
text-align: center !important;
|
|
95
|
+
display: flex !important;
|
|
96
|
+
flex-direction: column !important;
|
|
97
|
+
align-items: center !important;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.stat-number {
|
|
101
|
+
font-size: 1.2rem !important;
|
|
102
|
+
font-weight: 800 !important;
|
|
103
|
+
margin-bottom: var(--space-1) !important;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.stat-label {
|
|
107
|
+
font-size: 0.65rem !important;
|
|
108
|
+
line-height: 1.1 !important;
|
|
109
|
+
text-align: center !important;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* iPhone SE and smaller screens */
|
|
114
|
+
@media (max-width: 375px) {
|
|
115
|
+
.hero-title {
|
|
116
|
+
font-size: clamp(1.5rem, 7vw, 1.9rem) !important;
|
|
117
|
+
margin: var(--space-1) 0 var(--space-2) !important;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.hero-subtitle {
|
|
121
|
+
font-size: 0.8rem !important;
|
|
122
|
+
line-height: 1.3 !important;
|
|
123
|
+
margin-bottom: var(--space-2) !important;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.pill {
|
|
127
|
+
font-size: 0.75rem !important;
|
|
128
|
+
padding: var(--space-1) var(--space-3) !important;
|
|
129
|
+
max-width: 95% !important;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.btn-hero-primary,
|
|
133
|
+
.btn-hero-secondary {
|
|
134
|
+
font-size: 0.9rem !important;
|
|
135
|
+
padding: var(--space-2) var(--space-4) !important;
|
|
136
|
+
max-width: 90% !important;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.hero-stats {
|
|
140
|
+
max-width: 95% !important;
|
|
141
|
+
padding: var(--space-2) !important;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.stat-number {
|
|
145
|
+
font-size: 1.1rem !important;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.stat-label {
|
|
149
|
+
font-size: 0.65rem !important;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* Landscape iPhone optimization */
|
|
154
|
+
@media (max-width: 896px) and (max-height: 430px) and (orientation: landscape) {
|
|
155
|
+
.hero {
|
|
156
|
+
min-height: 100vh !important;
|
|
157
|
+
padding: var(--space-2) 0 !important;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.hero-content {
|
|
161
|
+
padding: var(--space-3) var(--space-4) var(--space-2) !important;
|
|
162
|
+
transform: none !important;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.hero-title {
|
|
166
|
+
font-size: 1.8rem !important;
|
|
167
|
+
margin: var(--space-1) 0 var(--space-2) !important;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.hero-subtitle {
|
|
171
|
+
font-size: 0.9rem !important;
|
|
172
|
+
margin-bottom: var(--space-2) !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.feature-pills {
|
|
176
|
+
flex-direction: row !important;
|
|
177
|
+
flex-wrap: wrap !important;
|
|
178
|
+
justify-content: center !important;
|
|
179
|
+
gap: var(--space-1) !important;
|
|
180
|
+
margin: var(--space-2) 0 !important;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.pill {
|
|
184
|
+
font-size: 0.7rem !important;
|
|
185
|
+
padding: var(--space-1) var(--space-2) !important;
|
|
186
|
+
flex: none !important;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.hero-actions {
|
|
190
|
+
flex-direction: row !important;
|
|
191
|
+
gap: var(--space-2) !important;
|
|
192
|
+
justify-content: center !important;
|
|
193
|
+
margin: var(--space-3) 0 !important;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.btn-hero-primary,
|
|
197
|
+
.btn-hero-secondary {
|
|
198
|
+
max-width: 45% !important;
|
|
199
|
+
font-size: 0.8rem !important;
|
|
200
|
+
padding: var(--space-2) var(--space-3) !important;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.hero-stats {
|
|
204
|
+
flex-direction: row !important;
|
|
205
|
+
max-width: 80% !important;
|
|
206
|
+
padding: var(--space-2) !important;
|
|
207
|
+
margin: var(--space-2) auto !important;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.stat-item {
|
|
211
|
+
padding: var(--space-1) !important;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.stat-divider {
|
|
215
|
+
width: 1px !important;
|
|
216
|
+
height: 30px !important;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Fix for iOS Safari viewport units */
|
|
221
|
+
@supports (-webkit-touch-callout: none) {
|
|
222
|
+
.hero {
|
|
223
|
+
/* Use -webkit-fill-available for proper iOS viewport handling */
|
|
224
|
+
min-height: -webkit-fill-available !important;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* Reduce motion for users who prefer it */
|
|
229
|
+
@media (prefers-reduced-motion: reduce) {
|
|
230
|
+
.hero * {
|
|
231
|
+
animation-duration: 0.01ms !important;
|
|
232
|
+
animation-iteration-count: 1 !important;
|
|
233
|
+
transition-duration: 0.01ms !important;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.floating-orb {
|
|
237
|
+
animation: none !important;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.code-drop {
|
|
241
|
+
animation: none !important;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
@@ -7,23 +7,26 @@
|
|
|
7
7
|
/* Hero container - better mobile proportions */
|
|
8
8
|
.hero {
|
|
9
9
|
min-height: 100vh !important;
|
|
10
|
-
padding: var(--space-
|
|
10
|
+
padding: var(--space-2) 0 !important;
|
|
11
|
+
overflow-x: hidden !important; /* Prevent horizontal scroll */
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
/* Hero content - mobile optimized */
|
|
14
15
|
.hero-content {
|
|
15
|
-
padding: var(--space-
|
|
16
|
+
padding: var(--space-6) var(--space-3) var(--space-4) !important;
|
|
16
17
|
width: 100% !important;
|
|
17
18
|
max-width: 100% !important;
|
|
19
|
+
text-align: center !important;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
/* SNOW-FLOW title - much better mobile sizing */
|
|
21
23
|
.hero-title {
|
|
22
|
-
font-size: clamp(var(--font-
|
|
23
|
-
margin: var(--space-
|
|
24
|
+
font-size: clamp(var(--font-xl), 7vw, var(--font-3xl)) !important;
|
|
25
|
+
margin: var(--space-3) 0 var(--space-4) !important;
|
|
24
26
|
line-height: 1.1 !important;
|
|
25
27
|
/* Better mobile letter spacing */
|
|
26
|
-
letter-spacing: -0.
|
|
28
|
+
letter-spacing: -0.02em !important;
|
|
29
|
+
word-break: keep-all !important; /* Keep SNOW-FLOW together */
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
/* Title letters - mobile optimized */
|
|
@@ -42,26 +45,35 @@
|
|
|
42
45
|
|
|
43
46
|
/* Hero subtitle - mobile optimized */
|
|
44
47
|
.hero-subtitle {
|
|
45
|
-
font-size: clamp(var(--font-sm),
|
|
46
|
-
margin-bottom: var(--space-
|
|
48
|
+
font-size: clamp(var(--font-sm), 3.5vw, var(--font-base)) !important;
|
|
49
|
+
margin-bottom: var(--space-4) !important;
|
|
47
50
|
padding: 0 var(--space-2) !important;
|
|
48
51
|
line-height: var(--leading-relaxed) !important;
|
|
52
|
+
max-width: 90% !important;
|
|
53
|
+
margin-left: auto !important;
|
|
54
|
+
margin-right: auto !important;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
|
-
/* Feature pills - mobile
|
|
57
|
+
/* Feature pills - mobile 2x2 grid */
|
|
52
58
|
.feature-pills {
|
|
53
|
-
|
|
59
|
+
display: grid !important;
|
|
60
|
+
grid-template-columns: 1fr 1fr !important;
|
|
54
61
|
gap: var(--space-2) !important;
|
|
55
62
|
margin: var(--space-6) 0 !important;
|
|
56
|
-
|
|
63
|
+
max-width: 100% !important;
|
|
64
|
+
padding: 0 var(--space-2) !important;
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
.pill {
|
|
60
68
|
width: 100% !important;
|
|
61
|
-
max-width:
|
|
69
|
+
max-width: none !important;
|
|
62
70
|
justify-content: center !important;
|
|
63
|
-
font-size: var(--font-
|
|
64
|
-
padding: var(--space-2) var(--space-
|
|
71
|
+
font-size: var(--font-xs) !important;
|
|
72
|
+
padding: var(--space-2) var(--space-1) !important;
|
|
73
|
+
text-align: center !important;
|
|
74
|
+
white-space: nowrap !important;
|
|
75
|
+
overflow: hidden !important;
|
|
76
|
+
text-overflow: ellipsis !important;
|
|
65
77
|
}
|
|
66
78
|
|
|
67
79
|
/* CTA buttons - mobile stack */
|
|
@@ -81,27 +93,31 @@
|
|
|
81
93
|
justify-content: center !important;
|
|
82
94
|
}
|
|
83
95
|
|
|
84
|
-
/* Hero stats - mobile
|
|
96
|
+
/* Hero stats - wider mobile layout */
|
|
85
97
|
.hero-stats {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
98
|
+
display: flex !important;
|
|
99
|
+
flex-direction: row !important;
|
|
100
|
+
flex-wrap: wrap !important;
|
|
101
|
+
justify-content: space-between !important;
|
|
102
|
+
gap: var(--space-2) !important;
|
|
103
|
+
padding: var(--space-4) var(--space-3) !important;
|
|
89
104
|
margin: var(--space-8) auto var(--space-6) !important;
|
|
90
|
-
max-width:
|
|
105
|
+
max-width: 95% !important;
|
|
106
|
+
width: 100% !important;
|
|
91
107
|
}
|
|
92
108
|
|
|
93
109
|
.stat-item {
|
|
94
|
-
|
|
95
|
-
|
|
110
|
+
flex: 1 !important;
|
|
111
|
+
min-width: calc(33.333% - var(--space-1)) !important;
|
|
112
|
+
padding: var(--space-2) var(--space-1) !important;
|
|
96
113
|
border: 1px solid rgba(255, 255, 255, 0.2) !important;
|
|
97
114
|
border-radius: var(--radius-lg) !important;
|
|
98
115
|
background: rgba(255, 255, 255, 0.05) !important;
|
|
116
|
+
text-align: center !important;
|
|
99
117
|
}
|
|
100
118
|
|
|
101
119
|
.stat-divider {
|
|
102
|
-
|
|
103
|
-
height: 1px !important;
|
|
104
|
-
margin: 0 auto !important;
|
|
120
|
+
display: none !important; /* Hide dividers in mobile grid */
|
|
105
121
|
}
|
|
106
122
|
|
|
107
123
|
.stat-icon {
|
|
@@ -135,20 +151,30 @@
|
|
|
135
151
|
}
|
|
136
152
|
}
|
|
137
153
|
|
|
138
|
-
/*
|
|
154
|
+
/* iPhone specific optimizations */
|
|
139
155
|
@media (max-width: 480px) {
|
|
140
156
|
.hero {
|
|
141
157
|
min-height: 100vh !important;
|
|
142
|
-
padding: var(--space-
|
|
158
|
+
padding: var(--space-1) 0 !important;
|
|
159
|
+
position: relative !important;
|
|
143
160
|
}
|
|
144
161
|
|
|
145
162
|
.hero-content {
|
|
146
|
-
padding: var(--space-
|
|
163
|
+
padding: var(--space-4) var(--space-2) var(--space-3) !important;
|
|
164
|
+
position: relative !important;
|
|
165
|
+
z-index: 10 !important;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Logo container - iPhone optimized */
|
|
169
|
+
.hero-logo-container {
|
|
170
|
+
margin-bottom: var(--space-2) !important;
|
|
171
|
+
transform: scale(0.8) !important;
|
|
147
172
|
}
|
|
148
173
|
|
|
149
174
|
.hero-title {
|
|
150
|
-
font-size: clamp(
|
|
151
|
-
margin: var(--space-
|
|
175
|
+
font-size: clamp(1.5rem, 6vw, 2rem) !important;
|
|
176
|
+
margin: var(--space-2) 0 var(--space-3) !important;
|
|
177
|
+
text-align: center !important;
|
|
152
178
|
}
|
|
153
179
|
|
|
154
180
|
.title-letter {
|
|
@@ -163,25 +189,57 @@
|
|
|
163
189
|
}
|
|
164
190
|
|
|
165
191
|
.hero-subtitle {
|
|
166
|
-
font-size:
|
|
192
|
+
font-size: 0.9rem !important;
|
|
167
193
|
padding: 0 var(--space-1) !important;
|
|
168
|
-
margin-bottom: var(--space-
|
|
194
|
+
margin-bottom: var(--space-3) !important;
|
|
195
|
+
line-height: 1.4 !important;
|
|
196
|
+
max-width: 95% !important;
|
|
197
|
+
margin-left: auto !important;
|
|
198
|
+
margin-right: auto !important;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* Subtitle lines - better iPhone spacing */
|
|
202
|
+
.subtitle-line,
|
|
203
|
+
.subtitle-line-2 {
|
|
204
|
+
display: block !important;
|
|
205
|
+
margin-bottom: var(--space-1) !important;
|
|
169
206
|
}
|
|
170
207
|
|
|
208
|
+
/* Feature pills - iPhone SE 2x2 grid */
|
|
171
209
|
.feature-pills {
|
|
210
|
+
display: grid !important;
|
|
211
|
+
grid-template-columns: 1fr 1fr !important;
|
|
172
212
|
gap: var(--space-1) !important;
|
|
173
213
|
margin: var(--space-4) 0 var(--space-6) !important;
|
|
214
|
+
width: 100% !important;
|
|
215
|
+
max-width: 320px !important;
|
|
174
216
|
}
|
|
175
217
|
|
|
176
218
|
.pill {
|
|
177
|
-
max-width:
|
|
178
|
-
font-size:
|
|
179
|
-
padding: var(--space-1) var(--space-
|
|
219
|
+
max-width: none !important;
|
|
220
|
+
font-size: 0.7rem !important;
|
|
221
|
+
padding: var(--space-1) var(--space-1) !important;
|
|
222
|
+
text-align: center !important;
|
|
223
|
+
display: flex !important;
|
|
224
|
+
flex-direction: column !important;
|
|
225
|
+
align-items: center !important;
|
|
226
|
+
gap: 2px !important;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.pill-text {
|
|
230
|
+
white-space: nowrap !important;
|
|
231
|
+
overflow: hidden !important;
|
|
232
|
+
text-overflow: ellipsis !important;
|
|
233
|
+
max-width: 100% !important;
|
|
234
|
+
font-size: 0.65rem !important;
|
|
180
235
|
}
|
|
181
236
|
|
|
182
237
|
.hero-actions {
|
|
183
|
-
margin: var(--space-
|
|
238
|
+
margin: var(--space-4) 0 var(--space-6) !important;
|
|
184
239
|
gap: var(--space-2) !important;
|
|
240
|
+
display: flex !important;
|
|
241
|
+
flex-direction: column !important;
|
|
242
|
+
align-items: center !important;
|
|
185
243
|
}
|
|
186
244
|
|
|
187
245
|
.btn-hero-primary,
|
|
@@ -192,9 +250,16 @@
|
|
|
192
250
|
}
|
|
193
251
|
|
|
194
252
|
.hero-stats {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
253
|
+
display: flex !important;
|
|
254
|
+
flex-direction: row !important;
|
|
255
|
+
justify-content: space-between !important;
|
|
256
|
+
max-width: 95% !important;
|
|
257
|
+
width: 100% !important;
|
|
258
|
+
padding: var(--space-2) !important;
|
|
259
|
+
margin: var(--space-4) auto var(--space-3) !important;
|
|
260
|
+
border-radius: var(--radius-lg) !important;
|
|
261
|
+
backdrop-filter: blur(10px) !important;
|
|
262
|
+
border: 1px solid rgba(255, 255, 255, 0.1) !important;
|
|
198
263
|
}
|
|
199
264
|
|
|
200
265
|
.stat-item {
|
package/website/index.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
|
6
6
|
<title>Snow-Flow | Conversational ServiceNow Development Platform</title>
|
|
7
7
|
<meta name="description" content="Snow-Flow: Conversational ServiceNow development platform using Claude Code. Multi-agent orchestration with 20+ MCP servers providing 200+ ServiceNow tools for comprehensive platform development.">
|
|
8
8
|
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
<link rel="stylesheet" href="css/navbar-hero-styling.css">
|
|
21
21
|
<link rel="stylesheet" href="css/footer-hero-styling.css">
|
|
22
22
|
<link rel="stylesheet" href="css/hero-compact-spacing.css">
|
|
23
|
+
<link rel="stylesheet" href="css/mobile-hero-fix.css">
|
|
24
|
+
<link rel="stylesheet" href="css/iphone-hero-optimization.css">
|
|
23
25
|
|
|
24
26
|
<!-- Modern Font Stack -->
|
|
25
27
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
@@ -840,16 +842,24 @@ and historical patterns. Deploy as real-time API" \
|
|
|
840
842
|
</div>
|
|
841
843
|
</div>
|
|
842
844
|
|
|
843
|
-
<!--
|
|
845
|
+
<!-- Multi-Agent Orchestration -->
|
|
844
846
|
<div class="card" style="background: rgba(255,255,255,0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.2);">
|
|
845
|
-
<div
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
<
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
847
|
+
<div style="padding: var(--space-6);">
|
|
848
|
+
<div style="font-size: var(--font-3xl); margin-bottom: var(--space-3);">🤖</div>
|
|
849
|
+
<h3 style="color: var(--white); font-size: var(--font-xl); font-weight: 700; margin-bottom: var(--space-3);">Multi-Agent Orchestration</h3>
|
|
850
|
+
<p style="color: rgba(255,255,255,0.8); margin-bottom: var(--space-4);">Queen Agent system with intelligent task decomposition, parallel execution, and cross-agent memory coordination.</p>
|
|
851
|
+
<div style="background: rgba(16, 185, 129, 0.2); padding: var(--space-2); border-radius: var(--radius-md); margin-bottom: var(--space-3);">
|
|
852
|
+
<strong style="color: #10b981;">Queen + Swarm Coordination</strong>
|
|
853
|
+
</div>
|
|
854
|
+
<ul style="color: rgba(255,255,255,0.7); font-size: var(--font-sm); list-style: none; padding: 0;">
|
|
855
|
+
<li>✅ Queen Agent decision making</li>
|
|
856
|
+
<li>✅ Parallel agent execution</li>
|
|
857
|
+
<li>✅ Cross-agent memory sharing</li>
|
|
858
|
+
<li>✅ Task decomposition & orchestration</li>
|
|
859
|
+
<li>✅ Swarm topology optimization</li>
|
|
860
|
+
<li>✅ Neural learning patterns</li>
|
|
861
|
+
</ul>
|
|
862
|
+
</div>
|
|
853
863
|
</div>
|
|
854
864
|
</div>
|
|
855
865
|
|