michael-agent 1.0.2__tar.gz → 1.0.4__tar.gz

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.
Files changed (44) hide show
  1. michael_agent-1.0.4/MANIFEST.in +4 -0
  2. {michael_agent-1.0.2 → michael_agent-1.0.4}/PKG-INFO +1 -1
  3. michael_agent-1.0.4/michael_agent/dashboard/static/styles.css +311 -0
  4. michael_agent-1.0.4/michael_agent/dashboard/templates/career_portal.html +482 -0
  5. michael_agent-1.0.4/michael_agent/dashboard/templates/dashboard.html +807 -0
  6. michael_agent-1.0.4/michael_agent/dashboard/templates/jd_creation.html +318 -0
  7. michael_agent-1.0.4/michael_agent/dashboard/templates/resume_scoring.html +1032 -0
  8. michael_agent-1.0.4/michael_agent/dashboard/templates/upload_resume.html +411 -0
  9. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent.egg-info/PKG-INFO +1 -1
  10. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent.egg-info/SOURCES.txt +7 -0
  11. {michael_agent-1.0.2 → michael_agent-1.0.4}/setup.py +1 -1
  12. {michael_agent-1.0.2 → michael_agent-1.0.4}/README.md +0 -0
  13. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/__init__.py +0 -0
  14. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/config/__init__.py +0 -0
  15. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/config/settings.py +0 -0
  16. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/dashboard/__init__.py +0 -0
  17. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/dashboard/app.py +0 -0
  18. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/dashboard/static/__init__.py +0 -0
  19. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/dashboard/templates/__init__.py +0 -0
  20. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/__init__.py +0 -0
  21. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/graph_builder.py +0 -0
  22. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/__init__.py +0 -0
  23. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/assessment_handler.py +0 -0
  24. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/jd_generator.py +0 -0
  25. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/jd_poster.py +0 -0
  26. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/question_generator.py +0 -0
  27. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/recruiter_notifier.py +0 -0
  28. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/resume_analyzer.py +0 -0
  29. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/resume_ingestor.py +0 -0
  30. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/langgraph_workflow/nodes/sentiment_analysis.py +0 -0
  31. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/main.py +0 -0
  32. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/monitor.py +0 -0
  33. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/__init__.py +0 -0
  34. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/email_utils.py +0 -0
  35. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/id_mapper.py +0 -0
  36. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/jd_utils.py +0 -0
  37. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/lms_api.py +0 -0
  38. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/logging_utils.py +0 -0
  39. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/monitor_utils.py +0 -0
  40. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent/utils/node_tracer.py +0 -0
  41. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent.egg-info/dependency_links.txt +0 -0
  42. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent.egg-info/requires.txt +0 -0
  43. {michael_agent-1.0.2 → michael_agent-1.0.4}/michael_agent.egg-info/top_level.txt +0 -0
  44. {michael_agent-1.0.2 → michael_agent-1.0.4}/setup.cfg +0 -0
@@ -0,0 +1,4 @@
1
+ include README.md
2
+ recursive-include michael_agent/dashboard/templates *
3
+ recursive-include michael_agent/dashboard/static *
4
+ recursive-include michael_agent/requirements.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: michael_agent
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: SmartRecruitAgent - A recruitment automation library
5
5
  Home-page: https://github.com/yourusername/agent
6
6
  Author: Michael Jone
@@ -0,0 +1,311 @@
1
+ /* SmartRecruitAgent Dashboard Styles */
2
+
3
+ body {
4
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
5
+ background-color: #f5f7fa;
6
+ color: #333;
7
+ line-height: 1.6;
8
+ }
9
+
10
+ /* Card Styles */
11
+ .card {
12
+ border: none;
13
+ border-radius: 12px;
14
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
15
+ margin-bottom: 1.5rem;
16
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
17
+ }
18
+
19
+ .card:hover {
20
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
21
+ }
22
+
23
+ .card-header {
24
+ border-radius: 12px 12px 0 0;
25
+ font-weight: 600;
26
+ padding: 1rem 1.25rem;
27
+ background-image: linear-gradient(to right, #4a6cf7, #6e8efa);
28
+ color: white;
29
+ }
30
+
31
+ /* Node Status Styles */
32
+ .node-status {
33
+ background-color: #fff;
34
+ border-radius: 10px;
35
+ padding: 12px 16px;
36
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
37
+ margin-bottom: 12px;
38
+ border-left: 4px solid #e9ecef;
39
+ transition: all 0.2s ease;
40
+ }
41
+
42
+ .node-status:hover {
43
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
44
+ transform: translateX(3px);
45
+ }
46
+
47
+ .node-name {
48
+ font-weight: 600;
49
+ color: #2c3e50;
50
+ }
51
+
52
+ /* Log Container Styles */
53
+ .log-container {
54
+ max-height: 500px;
55
+ overflow-y: auto;
56
+ padding-right: 5px;
57
+ }
58
+
59
+ .log-container::-webkit-scrollbar {
60
+ width: 6px;
61
+ }
62
+
63
+ .log-container::-webkit-scrollbar-thumb {
64
+ background-color: rgba(0, 0, 0, 0.2);
65
+ border-radius: 10px;
66
+ }
67
+
68
+ .log-entry {
69
+ background-color: #fff;
70
+ border-radius: 8px;
71
+ padding: 12px;
72
+ border-left: 4px solid #ccc;
73
+ transition: all 0.2s ease;
74
+ margin-bottom: 10px;
75
+ }
76
+
77
+ .log-entry:hover {
78
+ background-color: #f8f9fa;
79
+ transform: translateY(-2px);
80
+ }
81
+
82
+ .log-message {
83
+ margin: 6px 0;
84
+ font-size: 0.9rem;
85
+ color: #495057;
86
+ }
87
+
88
+ /* Stat Card Styles */
89
+ .stat-card {
90
+ text-align: center;
91
+ padding: 20px;
92
+ background-color: #fff;
93
+ border-radius: 10px;
94
+ box-shadow: 0 3px 12px rgba(0, 0, 0, 0.06);
95
+ transition: all 0.3s ease;
96
+ height: 100%;
97
+ }
98
+
99
+ .stat-card:hover {
100
+ transform: translateY(-5px);
101
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
102
+ }
103
+
104
+ .stat-card h5 {
105
+ color: #6c757d;
106
+ font-size: 1rem;
107
+ font-weight: 500;
108
+ margin-bottom: 8px;
109
+ }
110
+
111
+ .stat-number {
112
+ font-size: 2.5rem;
113
+ font-weight: 700;
114
+ background: linear-gradient(45deg, #4a6cf7, #6e8efa);
115
+ -webkit-background-clip: text;
116
+ background-clip: text;
117
+ -webkit-text-fill-color: transparent;
118
+ margin-bottom: 0;
119
+ line-height: 1;
120
+ }
121
+
122
+ /* Header & Navigation */
123
+ header.bg-dark {
124
+ background: linear-gradient(to right, #1a2c4e, #2d4579) !important;
125
+ box-shadow: 0 2px 15px rgba(0, 0, 0, 0.15);
126
+ }
127
+
128
+ .nav-link {
129
+ position: relative;
130
+ font-weight: 500;
131
+ transition: color 0.2s ease;
132
+ }
133
+
134
+ .nav-link:after {
135
+ content: '';
136
+ position: absolute;
137
+ width: 0;
138
+ height: 2px;
139
+ bottom: 0;
140
+ left: 50%;
141
+ background-color: white;
142
+ transition: all 0.2s ease;
143
+ transform: translateX(-50%);
144
+ }
145
+
146
+ .nav-link:hover:after {
147
+ width: 80%;
148
+ }
149
+
150
+ #connection-status {
151
+ font-size: 0.8rem;
152
+ padding: 0.35rem 0.7rem;
153
+ border-radius: 20px;
154
+ font-weight: 500;
155
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
156
+ }
157
+
158
+ /* Improved Hierarchical Workflow Pipeline Styles */
159
+ .workflow-pipeline {
160
+ display: flex;
161
+ flex-direction: column;
162
+ gap: 15px;
163
+ padding: 20px 15px;
164
+ position: relative;
165
+ }
166
+
167
+ .pipeline-stage {
168
+ background-color: #ffffff;
169
+ border-radius: 10px;
170
+ padding: 20px;
171
+ transition: all 0.3s ease;
172
+ position: relative;
173
+ border-left: 4px solid #e9ecef;
174
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
175
+ }
176
+
177
+ .pipeline-stage.active {
178
+ border-left-color: #4a6cf7;
179
+ background-color: rgba(74, 108, 247, 0.03);
180
+ }
181
+
182
+ .pipeline-stage.completed {
183
+ border-left-color: #28a745;
184
+ }
185
+
186
+ .pipeline-stage.error {
187
+ border-left-color: #dc3545;
188
+ }
189
+
190
+ .pipeline-stage:hover {
191
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.1);
192
+ transform: translateY(-3px);
193
+ }
194
+
195
+ .pipeline-stage h5 {
196
+ font-weight: 600;
197
+ margin-bottom: 6px;
198
+ color: #2c3e50;
199
+ }
200
+
201
+ .pipeline-arrow {
202
+ position: relative;
203
+ text-align: center;
204
+ height: 25px;
205
+ margin: 2px 0;
206
+ }
207
+
208
+ .pipeline-arrow i {
209
+ position: relative;
210
+ background-color: #f5f7fa;
211
+ border-radius: 50%;
212
+ padding: 8px;
213
+ z-index: 2;
214
+ color: #6e8efa;
215
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
216
+ transition: all 0.3s ease;
217
+ }
218
+
219
+ .pipeline-arrow i:hover {
220
+ transform: scale(1.2);
221
+ color: #4a6cf7;
222
+ }
223
+
224
+ /* Stage Progress Styles */
225
+ .stage-progress {
226
+ height: 8px;
227
+ background-color: #e9ecef;
228
+ border-radius: 10px;
229
+ margin-top: 10px;
230
+ position: relative;
231
+ overflow: hidden;
232
+ }
233
+
234
+ .stage-progress::after {
235
+ content: '';
236
+ position: absolute;
237
+ top: 0;
238
+ left: 0;
239
+ height: 100%;
240
+ width: 0;
241
+ background-color: #4a6cf7;
242
+ border-radius: 10px;
243
+ transition: width 0.5s ease;
244
+ }
245
+
246
+ .stage-progress.in-progress::after {
247
+ width: var(--progress, 50%);
248
+ background: linear-gradient(to right, #4a6cf7, #6e8efa);
249
+ animation: progress-pulse 1.5s infinite;
250
+ }
251
+
252
+ .stage-progress.complete::after {
253
+ width: 100%;
254
+ background-color: #28a745;
255
+ }
256
+
257
+ .stage-progress.error::after {
258
+ width: 100%;
259
+ background-color: #dc3545;
260
+ }
261
+
262
+ /* Workflow Navigation */
263
+ .workflow-nav-link {
264
+ transition: all 0.3s ease;
265
+ border-radius: 6px;
266
+ border: 1px solid #dee2e6;
267
+ font-weight: 500;
268
+ }
269
+
270
+ .workflow-nav-link:hover {
271
+ background-color: #4a6cf7;
272
+ color: white;
273
+ border-color: #4a6cf7;
274
+ transform: translateY(-2px);
275
+ }
276
+
277
+ /* Custom Animations */
278
+ @keyframes pulse {
279
+ 0% { transform: scale(1); }
280
+ 50% { transform: scale(1.05); }
281
+ 100% { transform: scale(1); }
282
+ }
283
+
284
+ .pulse {
285
+ animation: pulse 1.5s infinite;
286
+ }
287
+
288
+ /* Responsive Adjustments */
289
+ @media (max-width: 768px) {
290
+ .card-header {
291
+ padding: 0.85rem;
292
+ }
293
+
294
+ .display-4 {
295
+ font-size: 1.8rem;
296
+ }
297
+
298
+ .stat-number {
299
+ font-size: 2rem;
300
+ }
301
+
302
+ .pipeline-stage {
303
+ padding: 15px;
304
+ }
305
+ }
306
+
307
+ @keyframes progress-pulse {
308
+ 0% { opacity: 0.7; }
309
+ 50% { opacity: 1; }
310
+ 100% { opacity: 0.7; }
311
+ }