enhance_swarm 1.0.0
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.
- checksums.yaml +7 -0
- data/.enhance_swarm/agent_scripts/frontend_agent.md +39 -0
- data/.enhance_swarm/user_patterns.json +37 -0
- data/CHANGELOG.md +184 -0
- data/LICENSE +21 -0
- data/PRODUCTION_TEST_LOG.md +502 -0
- data/README.md +905 -0
- data/Rakefile +28 -0
- data/USAGE_EXAMPLES.md +477 -0
- data/examples/enhance_workflow.md +346 -0
- data/examples/rails_project.md +253 -0
- data/exe/enhance-swarm +30 -0
- data/lib/enhance_swarm/additional_commands.rb +299 -0
- data/lib/enhance_swarm/agent_communicator.rb +460 -0
- data/lib/enhance_swarm/agent_reviewer.rb +283 -0
- data/lib/enhance_swarm/agent_spawner.rb +462 -0
- data/lib/enhance_swarm/cleanup_manager.rb +245 -0
- data/lib/enhance_swarm/cli.rb +1592 -0
- data/lib/enhance_swarm/command_executor.rb +78 -0
- data/lib/enhance_swarm/configuration.rb +324 -0
- data/lib/enhance_swarm/control_agent.rb +307 -0
- data/lib/enhance_swarm/dependency_validator.rb +195 -0
- data/lib/enhance_swarm/error_recovery.rb +785 -0
- data/lib/enhance_swarm/generator.rb +194 -0
- data/lib/enhance_swarm/interrupt_handler.rb +512 -0
- data/lib/enhance_swarm/logger.rb +106 -0
- data/lib/enhance_swarm/mcp_integration.rb +85 -0
- data/lib/enhance_swarm/monitor.rb +28 -0
- data/lib/enhance_swarm/notification_manager.rb +444 -0
- data/lib/enhance_swarm/orchestrator.rb +313 -0
- data/lib/enhance_swarm/output_streamer.rb +281 -0
- data/lib/enhance_swarm/process_monitor.rb +266 -0
- data/lib/enhance_swarm/progress_tracker.rb +215 -0
- data/lib/enhance_swarm/project_analyzer.rb +612 -0
- data/lib/enhance_swarm/resource_manager.rb +177 -0
- data/lib/enhance_swarm/retry_handler.rb +40 -0
- data/lib/enhance_swarm/session_manager.rb +247 -0
- data/lib/enhance_swarm/signal_handler.rb +95 -0
- data/lib/enhance_swarm/smart_defaults.rb +708 -0
- data/lib/enhance_swarm/task_integration.rb +150 -0
- data/lib/enhance_swarm/task_manager.rb +174 -0
- data/lib/enhance_swarm/version.rb +5 -0
- data/lib/enhance_swarm/visual_dashboard.rb +555 -0
- data/lib/enhance_swarm/web_ui.rb +211 -0
- data/lib/enhance_swarm.rb +69 -0
- data/setup.sh +86 -0
- data/sig/enhance_swarm.rbs +4 -0
- data/templates/claude/CLAUDE.md +160 -0
- data/templates/claude/MCP.md +117 -0
- data/templates/claude/PERSONAS.md +114 -0
- data/templates/claude/RULES.md +221 -0
- data/test_builtin_functionality.rb +121 -0
- data/test_core_components.rb +156 -0
- data/test_real_claude_integration.rb +285 -0
- data/test_security.rb +150 -0
- data/test_smart_defaults.rb +155 -0
- data/test_task_integration.rb +173 -0
- data/test_web_ui.rb +245 -0
- data/web/assets/css/main.css +645 -0
- data/web/assets/js/kanban.js +499 -0
- data/web/assets/js/main.js +525 -0
- data/web/templates/dashboard.html.erb +226 -0
- data/web/templates/kanban.html.erb +193 -0
- metadata +293 -0
@@ -0,0 +1,226 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>EnhanceSwarm Dashboard</title>
|
7
|
+
<link rel="stylesheet" href="/assets/css/main.css">
|
8
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<nav class="navbar">
|
12
|
+
<div class="nav-brand">
|
13
|
+
<i class="fas fa-swatchbook"></i>
|
14
|
+
<span>EnhanceSwarm</span>
|
15
|
+
</div>
|
16
|
+
<div class="nav-links">
|
17
|
+
<a href="/" class="nav-link active">
|
18
|
+
<i class="fas fa-tachometer-alt"></i> Dashboard
|
19
|
+
</a>
|
20
|
+
<a href="/kanban" class="nav-link">
|
21
|
+
<i class="fas fa-columns"></i> Kanban
|
22
|
+
</a>
|
23
|
+
<a href="/agents" class="nav-link">
|
24
|
+
<i class="fas fa-robot"></i> Agents
|
25
|
+
</a>
|
26
|
+
<a href="/project" class="nav-link">
|
27
|
+
<i class="fas fa-project-diagram"></i> Project
|
28
|
+
</a>
|
29
|
+
<a href="/config" class="nav-link">
|
30
|
+
<i class="fas fa-cog"></i> Config
|
31
|
+
</a>
|
32
|
+
</div>
|
33
|
+
</nav>
|
34
|
+
|
35
|
+
<main class="main-content">
|
36
|
+
<div class="dashboard">
|
37
|
+
<header class="dashboard-header">
|
38
|
+
<h1>
|
39
|
+
<i class="fas fa-tachometer-alt"></i>
|
40
|
+
Dashboard
|
41
|
+
</h1>
|
42
|
+
<div class="dashboard-actions">
|
43
|
+
<button class="btn btn-primary" onclick="spawnAgent()">
|
44
|
+
<i class="fas fa-plus"></i> Spawn Agent
|
45
|
+
</button>
|
46
|
+
<button class="btn btn-secondary" onclick="refreshData()">
|
47
|
+
<i class="fas fa-sync"></i> Refresh
|
48
|
+
</button>
|
49
|
+
</div>
|
50
|
+
</header>
|
51
|
+
|
52
|
+
<div class="dashboard-grid">
|
53
|
+
<!-- Status Overview -->
|
54
|
+
<div class="card">
|
55
|
+
<div class="card-header">
|
56
|
+
<h3><i class="fas fa-chart-line"></i> Status Overview</h3>
|
57
|
+
</div>
|
58
|
+
<div class="card-body">
|
59
|
+
<div class="status-grid">
|
60
|
+
<div class="status-item" id="session-status">
|
61
|
+
<div class="status-icon">
|
62
|
+
<i class="fas fa-circle"></i>
|
63
|
+
</div>
|
64
|
+
<div class="status-info">
|
65
|
+
<span class="status-label">Session</span>
|
66
|
+
<span class="status-value">Loading...</span>
|
67
|
+
</div>
|
68
|
+
</div>
|
69
|
+
<div class="status-item" id="agents-status">
|
70
|
+
<div class="status-icon">
|
71
|
+
<i class="fas fa-robot"></i>
|
72
|
+
</div>
|
73
|
+
<div class="status-info">
|
74
|
+
<span class="status-label">Active Agents</span>
|
75
|
+
<span class="status-value">0</span>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
<div class="status-item" id="tasks-status">
|
79
|
+
<div class="status-icon">
|
80
|
+
<i class="fas fa-tasks"></i>
|
81
|
+
</div>
|
82
|
+
<div class="status-info">
|
83
|
+
<span class="status-label">Tasks</span>
|
84
|
+
<span class="status-value">0</span>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
</div>
|
88
|
+
</div>
|
89
|
+
</div>
|
90
|
+
|
91
|
+
<!-- Active Agents -->
|
92
|
+
<div class="card">
|
93
|
+
<div class="card-header">
|
94
|
+
<h3><i class="fas fa-robot"></i> Active Agents</h3>
|
95
|
+
</div>
|
96
|
+
<div class="card-body">
|
97
|
+
<div id="active-agents-list">
|
98
|
+
<div class="loading">Loading agents...</div>
|
99
|
+
</div>
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
|
103
|
+
<!-- Recent Tasks -->
|
104
|
+
<div class="card">
|
105
|
+
<div class="card-header">
|
106
|
+
<h3><i class="fas fa-list-alt"></i> Recent Tasks</h3>
|
107
|
+
<a href="/kanban" class="btn btn-small btn-outline">
|
108
|
+
<i class="fas fa-external-link-alt"></i> View All
|
109
|
+
</a>
|
110
|
+
</div>
|
111
|
+
<div class="card-body">
|
112
|
+
<div id="recent-tasks-list">
|
113
|
+
<div class="loading">Loading tasks...</div>
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
</div>
|
117
|
+
|
118
|
+
<!-- Quick Actions -->
|
119
|
+
<div class="card">
|
120
|
+
<div class="card-header">
|
121
|
+
<h3><i class="fas fa-bolt"></i> Quick Actions</h3>
|
122
|
+
</div>
|
123
|
+
<div class="card-body">
|
124
|
+
<div class="quick-actions">
|
125
|
+
<button class="quick-action-btn" onclick="enhanceProject()">
|
126
|
+
<i class="fas fa-magic"></i>
|
127
|
+
<span>Enhance Project</span>
|
128
|
+
</button>
|
129
|
+
<button class="quick-action-btn" onclick="analyzeProject()">
|
130
|
+
<i class="fas fa-search"></i>
|
131
|
+
<span>Analyze Project</span>
|
132
|
+
</button>
|
133
|
+
<button class="quick-action-btn" onclick="viewMonitoring()">
|
134
|
+
<i class="fas fa-chart-area"></i>
|
135
|
+
<span>Monitor Agents</span>
|
136
|
+
</button>
|
137
|
+
<button class="quick-action-btn" onclick="setupTasks()">
|
138
|
+
<i class="fas fa-clipboard-list"></i>
|
139
|
+
<span>Setup Tasks</span>
|
140
|
+
</button>
|
141
|
+
</div>
|
142
|
+
</div>
|
143
|
+
</div>
|
144
|
+
|
145
|
+
<!-- System Health -->
|
146
|
+
<div class="card">
|
147
|
+
<div class="card-header">
|
148
|
+
<h3><i class="fas fa-heartbeat"></i> System Health</h3>
|
149
|
+
</div>
|
150
|
+
<div class="card-body">
|
151
|
+
<div id="system-health">
|
152
|
+
<div class="loading">Checking system health...</div>
|
153
|
+
</div>
|
154
|
+
</div>
|
155
|
+
</div>
|
156
|
+
|
157
|
+
<!-- Project Info -->
|
158
|
+
<div class="card">
|
159
|
+
<div class="card-header">
|
160
|
+
<h3><i class="fas fa-info-circle"></i> Project Info</h3>
|
161
|
+
</div>
|
162
|
+
<div class="card-body">
|
163
|
+
<div id="project-info">
|
164
|
+
<div class="loading">Loading project information...</div>
|
165
|
+
</div>
|
166
|
+
</div>
|
167
|
+
</div>
|
168
|
+
</div>
|
169
|
+
</div>
|
170
|
+
</main>
|
171
|
+
|
172
|
+
<!-- Modals -->
|
173
|
+
<div id="spawn-agent-modal" class="modal">
|
174
|
+
<div class="modal-content">
|
175
|
+
<div class="modal-header">
|
176
|
+
<h3><i class="fas fa-robot"></i> Spawn New Agent</h3>
|
177
|
+
<button class="modal-close" onclick="closeModal('spawn-agent-modal')">
|
178
|
+
<i class="fas fa-times"></i>
|
179
|
+
</button>
|
180
|
+
</div>
|
181
|
+
<div class="modal-body">
|
182
|
+
<form id="spawn-agent-form">
|
183
|
+
<div class="form-group">
|
184
|
+
<label for="agent-role">Agent Role</label>
|
185
|
+
<select id="agent-role" name="role" required>
|
186
|
+
<option value="general">General</option>
|
187
|
+
<option value="frontend">Frontend</option>
|
188
|
+
<option value="backend">Backend</option>
|
189
|
+
<option value="ux">UX/Design</option>
|
190
|
+
<option value="qa">QA/Testing</option>
|
191
|
+
</select>
|
192
|
+
</div>
|
193
|
+
<div class="form-group">
|
194
|
+
<label for="agent-task">Task Description</label>
|
195
|
+
<textarea id="agent-task" name="task" rows="3" placeholder="Describe what this agent should work on..." required></textarea>
|
196
|
+
</div>
|
197
|
+
<div class="form-group">
|
198
|
+
<label class="checkbox-label">
|
199
|
+
<input type="checkbox" id="agent-worktree" name="worktree" checked>
|
200
|
+
<span class="checkmark"></span>
|
201
|
+
Use separate git worktree
|
202
|
+
</label>
|
203
|
+
</div>
|
204
|
+
</form>
|
205
|
+
</div>
|
206
|
+
<div class="modal-footer">
|
207
|
+
<button type="button" class="btn btn-secondary" onclick="closeModal('spawn-agent-modal')">
|
208
|
+
Cancel
|
209
|
+
</button>
|
210
|
+
<button type="submit" class="btn btn-primary" form="spawn-agent-form">
|
211
|
+
<i class="fas fa-rocket"></i> Spawn Agent
|
212
|
+
</button>
|
213
|
+
</div>
|
214
|
+
</div>
|
215
|
+
</div>
|
216
|
+
|
217
|
+
<script src="/assets/js/main.js"></script>
|
218
|
+
<script>
|
219
|
+
// Initialize dashboard
|
220
|
+
document.addEventListener('DOMContentLoaded', function() {
|
221
|
+
initializeDashboard();
|
222
|
+
startAutoRefresh();
|
223
|
+
});
|
224
|
+
</script>
|
225
|
+
</body>
|
226
|
+
</html>
|
@@ -0,0 +1,193 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>EnhanceSwarm - Kanban Board</title>
|
7
|
+
<link rel="stylesheet" href="/assets/css/main.css">
|
8
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
9
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.0/Sortable.min.css">
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
<nav class="navbar">
|
13
|
+
<div class="nav-brand">
|
14
|
+
<i class="fas fa-swatchbook"></i>
|
15
|
+
<span>EnhanceSwarm</span>
|
16
|
+
</div>
|
17
|
+
<div class="nav-links">
|
18
|
+
<a href="/" class="nav-link">
|
19
|
+
<i class="fas fa-tachometer-alt"></i> Dashboard
|
20
|
+
</a>
|
21
|
+
<a href="/kanban" class="nav-link active">
|
22
|
+
<i class="fas fa-columns"></i> Kanban
|
23
|
+
</a>
|
24
|
+
<a href="/agents" class="nav-link">
|
25
|
+
<i class="fas fa-robot"></i> Agents
|
26
|
+
</a>
|
27
|
+
<a href="/project" class="nav-link">
|
28
|
+
<i class="fas fa-project-diagram"></i> Project
|
29
|
+
</a>
|
30
|
+
<a href="/config" class="nav-link">
|
31
|
+
<i class="fas fa-cog"></i> Config
|
32
|
+
</a>
|
33
|
+
</div>
|
34
|
+
</nav>
|
35
|
+
|
36
|
+
<main class="main-content">
|
37
|
+
<div class="kanban-container">
|
38
|
+
<header class="kanban-header">
|
39
|
+
<h1>
|
40
|
+
<i class="fas fa-columns"></i>
|
41
|
+
Task Management
|
42
|
+
</h1>
|
43
|
+
<div class="kanban-actions">
|
44
|
+
<button class="btn btn-primary" onclick="createTask()">
|
45
|
+
<i class="fas fa-plus"></i> New Task
|
46
|
+
</button>
|
47
|
+
<button class="btn btn-secondary" onclick="refreshKanban()">
|
48
|
+
<i class="fas fa-sync"></i> Refresh
|
49
|
+
</button>
|
50
|
+
<button class="btn btn-outline" onclick="exportTasks()">
|
51
|
+
<i class="fas fa-download"></i> Export
|
52
|
+
</button>
|
53
|
+
</div>
|
54
|
+
</header>
|
55
|
+
|
56
|
+
<div class="kanban-stats">
|
57
|
+
<div class="stat-item">
|
58
|
+
<span class="stat-value" id="total-tasks">0</span>
|
59
|
+
<span class="stat-label">Total Tasks</span>
|
60
|
+
</div>
|
61
|
+
<div class="stat-item">
|
62
|
+
<span class="stat-value" id="active-tasks">0</span>
|
63
|
+
<span class="stat-label">In Progress</span>
|
64
|
+
</div>
|
65
|
+
<div class="stat-item">
|
66
|
+
<span class="stat-value" id="completed-tasks">0</span>
|
67
|
+
<span class="stat-label">Completed</span>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<div class="kanban-board" id="kanban-board">
|
72
|
+
<!-- Kanban columns will be dynamically generated -->
|
73
|
+
<div class="loading-kanban">
|
74
|
+
<i class="fas fa-spinner fa-spin"></i>
|
75
|
+
<p>Loading task board...</p>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
</div>
|
79
|
+
</main>
|
80
|
+
|
81
|
+
<!-- Task Creation Modal -->
|
82
|
+
<div id="create-task-modal" class="modal">
|
83
|
+
<div class="modal-content">
|
84
|
+
<div class="modal-header">
|
85
|
+
<h3><i class="fas fa-plus"></i> Create New Task</h3>
|
86
|
+
<button class="modal-close" onclick="closeModal('create-task-modal')">
|
87
|
+
<i class="fas fa-times"></i>
|
88
|
+
</button>
|
89
|
+
</div>
|
90
|
+
<div class="modal-body">
|
91
|
+
<form id="create-task-form">
|
92
|
+
<div class="form-group">
|
93
|
+
<label for="task-title">Task Title</label>
|
94
|
+
<input type="text" id="task-title" name="title" placeholder="Enter task title..." required>
|
95
|
+
</div>
|
96
|
+
<div class="form-group">
|
97
|
+
<label for="task-description">Description</label>
|
98
|
+
<textarea id="task-description" name="description" rows="4" placeholder="Describe the task in detail..."></textarea>
|
99
|
+
</div>
|
100
|
+
<div class="form-row">
|
101
|
+
<div class="form-group">
|
102
|
+
<label for="task-priority">Priority</label>
|
103
|
+
<select id="task-priority" name="priority">
|
104
|
+
<option value="low">Low</option>
|
105
|
+
<option value="medium" selected>Medium</option>
|
106
|
+
<option value="high">High</option>
|
107
|
+
<option value="critical">Critical</option>
|
108
|
+
</select>
|
109
|
+
</div>
|
110
|
+
<div class="form-group">
|
111
|
+
<label for="task-category">Category</label>
|
112
|
+
<select id="task-category" name="category">
|
113
|
+
<option value="feature">Feature</option>
|
114
|
+
<option value="bug">Bug Fix</option>
|
115
|
+
<option value="enhancement">Enhancement</option>
|
116
|
+
<option value="research">Research</option>
|
117
|
+
<option value="documentation">Documentation</option>
|
118
|
+
</select>
|
119
|
+
</div>
|
120
|
+
</div>
|
121
|
+
<div class="form-group">
|
122
|
+
<label for="task-agents">Recommended Agents</label>
|
123
|
+
<div class="checkbox-group">
|
124
|
+
<label class="checkbox-label">
|
125
|
+
<input type="checkbox" name="agents" value="frontend">
|
126
|
+
<span class="checkmark"></span>
|
127
|
+
Frontend
|
128
|
+
</label>
|
129
|
+
<label class="checkbox-label">
|
130
|
+
<input type="checkbox" name="agents" value="backend">
|
131
|
+
<span class="checkmark"></span>
|
132
|
+
Backend
|
133
|
+
</label>
|
134
|
+
<label class="checkbox-label">
|
135
|
+
<input type="checkbox" name="agents" value="ux">
|
136
|
+
<span class="checkmark"></span>
|
137
|
+
UX/Design
|
138
|
+
</label>
|
139
|
+
<label class="checkbox-label">
|
140
|
+
<input type="checkbox" name="agents" value="qa">
|
141
|
+
<span class="checkmark"></span>
|
142
|
+
QA/Testing
|
143
|
+
</label>
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</form>
|
147
|
+
</div>
|
148
|
+
<div class="modal-footer">
|
149
|
+
<button type="button" class="btn btn-secondary" onclick="closeModal('create-task-modal')">
|
150
|
+
Cancel
|
151
|
+
</button>
|
152
|
+
<button type="submit" class="btn btn-primary" form="create-task-form">
|
153
|
+
<i class="fas fa-plus"></i> Create Task
|
154
|
+
</button>
|
155
|
+
</div>
|
156
|
+
</div>
|
157
|
+
</div>
|
158
|
+
|
159
|
+
<!-- Task Details Modal -->
|
160
|
+
<div id="task-details-modal" class="modal">
|
161
|
+
<div class="modal-content">
|
162
|
+
<div class="modal-header">
|
163
|
+
<h3 id="task-details-title">Task Details</h3>
|
164
|
+
<button class="modal-close" onclick="closeModal('task-details-modal')">
|
165
|
+
<i class="fas fa-times"></i>
|
166
|
+
</button>
|
167
|
+
</div>
|
168
|
+
<div class="modal-body" id="task-details-body">
|
169
|
+
<!-- Task details will be populated dynamically -->
|
170
|
+
</div>
|
171
|
+
<div class="modal-footer">
|
172
|
+
<button type="button" class="btn btn-secondary" onclick="closeModal('task-details-modal')">
|
173
|
+
Close
|
174
|
+
</button>
|
175
|
+
<button type="button" class="btn btn-primary" onclick="editTask()">
|
176
|
+
<i class="fas fa-edit"></i> Edit Task
|
177
|
+
</button>
|
178
|
+
</div>
|
179
|
+
</div>
|
180
|
+
</div>
|
181
|
+
|
182
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.0/Sortable.min.js"></script>
|
183
|
+
<script src="/assets/js/main.js"></script>
|
184
|
+
<script src="/assets/js/kanban.js"></script>
|
185
|
+
<script>
|
186
|
+
// Initialize kanban board
|
187
|
+
document.addEventListener('DOMContentLoaded', function() {
|
188
|
+
initializeKanban();
|
189
|
+
loadKanbanData();
|
190
|
+
});
|
191
|
+
</script>
|
192
|
+
</body>
|
193
|
+
</html>
|