agent-tasks 1.6.5 → 1.6.7
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 +181 -181
- package/dist/domain/rules.js +46 -46
- package/dist/domain/tasks.js +13 -13
- package/dist/domain/tasks.js.map +1 -1
- package/dist/storage/database.js +102 -102
- package/dist/transport/ws.js +6 -6
- package/dist/ui/app.js +9 -5
- package/dist/ui/index.html +165 -165
- package/dist/ui/styles.css +2512 -2512
- package/package.json +84 -84
package/dist/ui/index.html
CHANGED
|
@@ -1,165 +1,165 @@
|
|
|
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>agent-tasks</title>
|
|
7
|
-
<link
|
|
8
|
-
rel="icon"
|
|
9
|
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect x='2' y='3' width='8' height='26' rx='2' fill='%235d8da8'/><rect x='12' y='3' width='8' height='26' rx='2' fill='%235d8da8' opacity='.6'/><rect x='22' y='3' width='8' height='26' rx='2' fill='%235d8da8' opacity='.3'/></svg>"
|
|
10
|
-
/>
|
|
11
|
-
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
12
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
13
|
-
<link
|
|
14
|
-
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
|
|
15
|
-
rel="stylesheet"
|
|
16
|
-
/>
|
|
17
|
-
<link
|
|
18
|
-
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap"
|
|
19
|
-
rel="stylesheet"
|
|
20
|
-
/>
|
|
21
|
-
<link rel="stylesheet" href="styles.css" />
|
|
22
|
-
</head>
|
|
23
|
-
<body>
|
|
24
|
-
<header role="banner">
|
|
25
|
-
<div class="header-left">
|
|
26
|
-
<span class="material-symbols-outlined brand-icon">view_kanban</span>
|
|
27
|
-
<h1>agent-tasks</h1>
|
|
28
|
-
<span class="version" id="version"></span>
|
|
29
|
-
<span
|
|
30
|
-
id="connection-status"
|
|
31
|
-
class="status-badge disconnected"
|
|
32
|
-
role="status"
|
|
33
|
-
aria-live="polite"
|
|
34
|
-
>Connecting</span
|
|
35
|
-
>
|
|
36
|
-
</div>
|
|
37
|
-
<div class="header-right">
|
|
38
|
-
<div class="stats" id="stats" aria-live="polite" aria-atomic="true"></div>
|
|
39
|
-
<button id="cleanup-btn" class="icon-btn" title="Clean up" aria-label="Clean up old tasks">
|
|
40
|
-
<span class="material-symbols-outlined">mop</span>
|
|
41
|
-
</button>
|
|
42
|
-
<button id="theme-toggle" class="icon-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
43
|
-
<span class="material-symbols-outlined theme-icon">dark_mode</span>
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
</header>
|
|
47
|
-
|
|
48
|
-
<div class="filter-bar" id="filter-bar" role="search" aria-label="Task filters">
|
|
49
|
-
<div class="filter-group">
|
|
50
|
-
<span class="material-symbols-outlined filter-icon" aria-hidden="true">filter_list</span>
|
|
51
|
-
<input
|
|
52
|
-
type="text"
|
|
53
|
-
id="filter-search"
|
|
54
|
-
class="filter-input"
|
|
55
|
-
placeholder="Search tasks... (/ or Ctrl+K)"
|
|
56
|
-
autocomplete="off"
|
|
57
|
-
aria-label="Search tasks"
|
|
58
|
-
/>
|
|
59
|
-
<select id="filter-project" class="filter-select" aria-label="Filter by project">
|
|
60
|
-
<option value="">All projects</option>
|
|
61
|
-
</select>
|
|
62
|
-
<select id="filter-assignee" class="filter-select" aria-label="Filter by assignee">
|
|
63
|
-
<option value="">All assignees</option>
|
|
64
|
-
</select>
|
|
65
|
-
<select id="filter-priority" class="filter-select" aria-label="Filter by minimum priority">
|
|
66
|
-
<option value="">Any priority</option>
|
|
67
|
-
<option value="1">P1+</option>
|
|
68
|
-
<option value="3">P3+</option>
|
|
69
|
-
<option value="5">P5+</option>
|
|
70
|
-
<option value="10">P10+</option>
|
|
71
|
-
</select>
|
|
72
|
-
</div>
|
|
73
|
-
<div class="filter-chips" id="filter-chips"></div>
|
|
74
|
-
</div>
|
|
75
|
-
|
|
76
|
-
<div class="board-wrapper" id="board-wrapper">
|
|
77
|
-
<main id="board" class="kanban-board" role="region" aria-label="Task board"></main>
|
|
78
|
-
|
|
79
|
-
<aside id="side-panel" class="side-panel" role="complementary" aria-label="Task details">
|
|
80
|
-
<div class="panel-header" id="panel-header-content"></div>
|
|
81
|
-
<div class="panel-body" id="panel-body"></div>
|
|
82
|
-
</aside>
|
|
83
|
-
</div>
|
|
84
|
-
|
|
85
|
-
<div id="loading-overlay" class="loading-overlay" aria-label="Loading">
|
|
86
|
-
<div class="loading-spinner"></div>
|
|
87
|
-
<div class="loading-text">Connecting to agent-tasks...</div>
|
|
88
|
-
</div>
|
|
89
|
-
|
|
90
|
-
<div
|
|
91
|
-
id="task-modal"
|
|
92
|
-
class="modal-overlay"
|
|
93
|
-
hidden
|
|
94
|
-
role="dialog"
|
|
95
|
-
aria-modal="true"
|
|
96
|
-
aria-labelledby="modal-title"
|
|
97
|
-
>
|
|
98
|
-
<div class="modal">
|
|
99
|
-
<div class="modal-header">
|
|
100
|
-
<h2 id="modal-title"></h2>
|
|
101
|
-
<button class="icon-btn modal-close" id="modal-close-btn" aria-label="Close dialog">
|
|
102
|
-
×
|
|
103
|
-
</button>
|
|
104
|
-
</div>
|
|
105
|
-
<div id="modal-body" class="modal-body"></div>
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
|
|
109
|
-
<div id="cleanup-modal" class="modal-overlay hidden" role="dialog" aria-modal="true">
|
|
110
|
-
<div class="modal" style="max-width: 420px">
|
|
111
|
-
<div class="modal-header">
|
|
112
|
-
<h2>
|
|
113
|
-
<span
|
|
114
|
-
class="material-symbols-outlined"
|
|
115
|
-
style="font-size: 20px; vertical-align: middle; margin-right: 6px"
|
|
116
|
-
>mop</span
|
|
117
|
-
>Clean Up
|
|
118
|
-
</h2>
|
|
119
|
-
<button class="icon-btn modal-close" id="cleanup-close-btn" aria-label="Close">
|
|
120
|
-
×
|
|
121
|
-
</button>
|
|
122
|
-
</div>
|
|
123
|
-
<div class="modal-body">
|
|
124
|
-
<p style="color: var(--text-muted); margin-bottom: 12px">
|
|
125
|
-
Remove old tasks and stale data:
|
|
126
|
-
</p>
|
|
127
|
-
<div class="cleanup-options">
|
|
128
|
-
<button id="cleanup-completed" class="cleanup-option">
|
|
129
|
-
<span class="material-symbols-outlined">auto_delete</span>
|
|
130
|
-
<div>
|
|
131
|
-
<strong>Purge completed</strong>
|
|
132
|
-
<span>Remove all completed and cancelled tasks</span>
|
|
133
|
-
</div>
|
|
134
|
-
</button>
|
|
135
|
-
<button id="cleanup-everything" class="cleanup-option cleanup-option-danger">
|
|
136
|
-
<span class="material-symbols-outlined">delete_forever</span>
|
|
137
|
-
<div>
|
|
138
|
-
<strong>Purge everything</strong>
|
|
139
|
-
<span>Remove ALL tasks regardless of status</span>
|
|
140
|
-
</div>
|
|
141
|
-
</button>
|
|
142
|
-
</div>
|
|
143
|
-
</div>
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
|
-
|
|
147
|
-
<div id="toast-container" class="toast-container" aria-live="polite"></div>
|
|
148
|
-
|
|
149
|
-
<script src="https://cdn.jsdelivr.net/npm/marked@15/marked.min.js"></script>
|
|
150
|
-
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script>
|
|
151
|
-
<link
|
|
152
|
-
rel="stylesheet"
|
|
153
|
-
href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github.min.css"
|
|
154
|
-
media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
|
|
155
|
-
/>
|
|
156
|
-
<link
|
|
157
|
-
rel="stylesheet"
|
|
158
|
-
href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github-dark.min.css"
|
|
159
|
-
media="(prefers-color-scheme: dark)"
|
|
160
|
-
/>
|
|
161
|
-
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js"></script>
|
|
162
|
-
<script src="morphdom.min.js"></script>
|
|
163
|
-
<script src="app.js"></script>
|
|
164
|
-
</body>
|
|
165
|
-
</html>
|
|
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>agent-tasks</title>
|
|
7
|
+
<link
|
|
8
|
+
rel="icon"
|
|
9
|
+
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect x='2' y='3' width='8' height='26' rx='2' fill='%235d8da8'/><rect x='12' y='3' width='8' height='26' rx='2' fill='%235d8da8' opacity='.6'/><rect x='22' y='3' width='8' height='26' rx='2' fill='%235d8da8' opacity='.3'/></svg>"
|
|
10
|
+
/>
|
|
11
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
12
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
13
|
+
<link
|
|
14
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
|
|
15
|
+
rel="stylesheet"
|
|
16
|
+
/>
|
|
17
|
+
<link
|
|
18
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap"
|
|
19
|
+
rel="stylesheet"
|
|
20
|
+
/>
|
|
21
|
+
<link rel="stylesheet" href="styles.css" />
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
<header role="banner">
|
|
25
|
+
<div class="header-left">
|
|
26
|
+
<span class="material-symbols-outlined brand-icon">view_kanban</span>
|
|
27
|
+
<h1>agent-tasks</h1>
|
|
28
|
+
<span class="version" id="version"></span>
|
|
29
|
+
<span
|
|
30
|
+
id="connection-status"
|
|
31
|
+
class="status-badge disconnected"
|
|
32
|
+
role="status"
|
|
33
|
+
aria-live="polite"
|
|
34
|
+
>Connecting</span
|
|
35
|
+
>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="header-right">
|
|
38
|
+
<div class="stats" id="stats" aria-live="polite" aria-atomic="true"></div>
|
|
39
|
+
<button id="cleanup-btn" class="icon-btn" title="Clean up" aria-label="Clean up old tasks">
|
|
40
|
+
<span class="material-symbols-outlined">mop</span>
|
|
41
|
+
</button>
|
|
42
|
+
<button id="theme-toggle" class="icon-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
43
|
+
<span class="material-symbols-outlined theme-icon">dark_mode</span>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
</header>
|
|
47
|
+
|
|
48
|
+
<div class="filter-bar" id="filter-bar" role="search" aria-label="Task filters">
|
|
49
|
+
<div class="filter-group">
|
|
50
|
+
<span class="material-symbols-outlined filter-icon" aria-hidden="true">filter_list</span>
|
|
51
|
+
<input
|
|
52
|
+
type="text"
|
|
53
|
+
id="filter-search"
|
|
54
|
+
class="filter-input"
|
|
55
|
+
placeholder="Search tasks... (/ or Ctrl+K)"
|
|
56
|
+
autocomplete="off"
|
|
57
|
+
aria-label="Search tasks"
|
|
58
|
+
/>
|
|
59
|
+
<select id="filter-project" class="filter-select" aria-label="Filter by project">
|
|
60
|
+
<option value="">All projects</option>
|
|
61
|
+
</select>
|
|
62
|
+
<select id="filter-assignee" class="filter-select" aria-label="Filter by assignee">
|
|
63
|
+
<option value="">All assignees</option>
|
|
64
|
+
</select>
|
|
65
|
+
<select id="filter-priority" class="filter-select" aria-label="Filter by minimum priority">
|
|
66
|
+
<option value="">Any priority</option>
|
|
67
|
+
<option value="1">P1+</option>
|
|
68
|
+
<option value="3">P3+</option>
|
|
69
|
+
<option value="5">P5+</option>
|
|
70
|
+
<option value="10">P10+</option>
|
|
71
|
+
</select>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="filter-chips" id="filter-chips"></div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<div class="board-wrapper" id="board-wrapper">
|
|
77
|
+
<main id="board" class="kanban-board" role="region" aria-label="Task board"></main>
|
|
78
|
+
|
|
79
|
+
<aside id="side-panel" class="side-panel" role="complementary" aria-label="Task details">
|
|
80
|
+
<div class="panel-header" id="panel-header-content"></div>
|
|
81
|
+
<div class="panel-body" id="panel-body"></div>
|
|
82
|
+
</aside>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<div id="loading-overlay" class="loading-overlay" aria-label="Loading">
|
|
86
|
+
<div class="loading-spinner"></div>
|
|
87
|
+
<div class="loading-text">Connecting to agent-tasks...</div>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div
|
|
91
|
+
id="task-modal"
|
|
92
|
+
class="modal-overlay"
|
|
93
|
+
hidden
|
|
94
|
+
role="dialog"
|
|
95
|
+
aria-modal="true"
|
|
96
|
+
aria-labelledby="modal-title"
|
|
97
|
+
>
|
|
98
|
+
<div class="modal">
|
|
99
|
+
<div class="modal-header">
|
|
100
|
+
<h2 id="modal-title"></h2>
|
|
101
|
+
<button class="icon-btn modal-close" id="modal-close-btn" aria-label="Close dialog">
|
|
102
|
+
×
|
|
103
|
+
</button>
|
|
104
|
+
</div>
|
|
105
|
+
<div id="modal-body" class="modal-body"></div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div id="cleanup-modal" class="modal-overlay hidden" role="dialog" aria-modal="true">
|
|
110
|
+
<div class="modal" style="max-width: 420px">
|
|
111
|
+
<div class="modal-header">
|
|
112
|
+
<h2>
|
|
113
|
+
<span
|
|
114
|
+
class="material-symbols-outlined"
|
|
115
|
+
style="font-size: 20px; vertical-align: middle; margin-right: 6px"
|
|
116
|
+
>mop</span
|
|
117
|
+
>Clean Up
|
|
118
|
+
</h2>
|
|
119
|
+
<button class="icon-btn modal-close" id="cleanup-close-btn" aria-label="Close">
|
|
120
|
+
×
|
|
121
|
+
</button>
|
|
122
|
+
</div>
|
|
123
|
+
<div class="modal-body">
|
|
124
|
+
<p style="color: var(--text-muted); margin-bottom: 12px">
|
|
125
|
+
Remove old tasks and stale data:
|
|
126
|
+
</p>
|
|
127
|
+
<div class="cleanup-options">
|
|
128
|
+
<button id="cleanup-completed" class="cleanup-option">
|
|
129
|
+
<span class="material-symbols-outlined">auto_delete</span>
|
|
130
|
+
<div>
|
|
131
|
+
<strong>Purge completed</strong>
|
|
132
|
+
<span>Remove all completed and cancelled tasks</span>
|
|
133
|
+
</div>
|
|
134
|
+
</button>
|
|
135
|
+
<button id="cleanup-everything" class="cleanup-option cleanup-option-danger">
|
|
136
|
+
<span class="material-symbols-outlined">delete_forever</span>
|
|
137
|
+
<div>
|
|
138
|
+
<strong>Purge everything</strong>
|
|
139
|
+
<span>Remove ALL tasks regardless of status</span>
|
|
140
|
+
</div>
|
|
141
|
+
</button>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div id="toast-container" class="toast-container" aria-live="polite"></div>
|
|
148
|
+
|
|
149
|
+
<script src="https://cdn.jsdelivr.net/npm/marked@15/marked.min.js"></script>
|
|
150
|
+
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script>
|
|
151
|
+
<link
|
|
152
|
+
rel="stylesheet"
|
|
153
|
+
href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github.min.css"
|
|
154
|
+
media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
|
|
155
|
+
/>
|
|
156
|
+
<link
|
|
157
|
+
rel="stylesheet"
|
|
158
|
+
href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github-dark.min.css"
|
|
159
|
+
media="(prefers-color-scheme: dark)"
|
|
160
|
+
/>
|
|
161
|
+
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js"></script>
|
|
162
|
+
<script src="morphdom.min.js"></script>
|
|
163
|
+
<script src="app.js"></script>
|
|
164
|
+
</body>
|
|
165
|
+
</html>
|