flock-core 0.4.540__py3-none-any.whl → 0.4.541__py3-none-any.whl
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.
Potentially problematic release.
This version of flock-core might be problematic. Click here for more details.
- flock/core/logging/live_capture.py +137 -0
- flock/webapp/app/api/agent_management.py +8 -12
- flock/webapp/app/api/execution.py +4 -8
- flock/webapp/app/api/flock_management.py +4 -8
- flock/webapp/app/api/registry_viewer.py +1 -2
- flock/webapp/app/chat.py +14 -17
- flock/webapp/app/main.py +84 -58
- flock/webapp/app/theme_mapper.py +1 -2
- flock/webapp/run.py +4 -0
- flock/webapp/static/css/layout.css +239 -4
- flock/webapp/templates/base.html +192 -3
- flock/webapp/templates/partials/_live_logs.html +13 -0
- {flock_core-0.4.540.dist-info → flock_core-0.4.541.dist-info}/METADATA +1 -1
- {flock_core-0.4.540.dist-info → flock_core-0.4.541.dist-info}/RECORD +17 -15
- {flock_core-0.4.540.dist-info → flock_core-0.4.541.dist-info}/WHEEL +0 -0
- {flock_core-0.4.540.dist-info → flock_core-0.4.541.dist-info}/entry_points.txt +0 -0
- {flock_core-0.4.540.dist-info → flock_core-0.4.541.dist-info}/licenses/LICENSE +0 -0
|
@@ -29,7 +29,11 @@ main.main-content {
|
|
|
29
29
|
margin-top: 3.5rem;
|
|
30
30
|
background-color: var(--pico-background-color);
|
|
31
31
|
/* ensure footer does not overlap scrolling content */
|
|
32
|
-
padding-bottom:
|
|
32
|
+
padding-bottom: 3.75rem;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
body.logs-expanded main.main-content {
|
|
36
|
+
padding-bottom: 18rem;
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
/* ---------- Footer ---------- */
|
|
@@ -40,7 +44,238 @@ footer.main-footer {
|
|
|
40
44
|
width: 100%;
|
|
41
45
|
background-color: var(--pico-card-background-color);
|
|
42
46
|
border-top: 1px solid var(--pico-muted-border-color);
|
|
43
|
-
padding: 0.
|
|
44
|
-
text-align: center;
|
|
47
|
+
padding: 0.15rem 1.25rem 0.2rem;
|
|
45
48
|
z-index: 1000;
|
|
46
|
-
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
gap: 0.18rem;
|
|
52
|
+
align-items: stretch;
|
|
53
|
+
box-sizing: border-box;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
.footer-bar {
|
|
58
|
+
display: flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
gap: 0.25rem;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.live-log-toggle-link {
|
|
64
|
+
border: none;
|
|
65
|
+
background: none;
|
|
66
|
+
color: var(--pico-color-primary, #2e8aea);
|
|
67
|
+
font-size: 0.78rem;
|
|
68
|
+
font-weight: 500;
|
|
69
|
+
padding: 0;
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
text-decoration: underline;
|
|
72
|
+
margin-left: auto;
|
|
73
|
+
line-height: 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.live-log-toggle-link:hover,
|
|
77
|
+
.live-log-toggle-link:focus-visible {
|
|
78
|
+
color: var(--pico-color-primary-contrast, #75b6ff);
|
|
79
|
+
text-decoration: none;
|
|
80
|
+
outline: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* ---------- Live log footer panel ---------- */
|
|
84
|
+
.live-log-wrapper {
|
|
85
|
+
width: 100%;
|
|
86
|
+
max-width: none;
|
|
87
|
+
background-color: var(--pico-muted-background-color, rgba(0, 0, 0, 0.04));
|
|
88
|
+
border-radius: 0.6rem;
|
|
89
|
+
padding: 0.8rem 1rem 1rem;
|
|
90
|
+
box-shadow: inset 0 0 0 1px var(--pico-muted-border-color);
|
|
91
|
+
display: none;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
gap: 0.65rem;
|
|
94
|
+
min-height: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
footer.main-footer.expanded .live-log-wrapper {
|
|
98
|
+
display: flex;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.live-log-header {
|
|
102
|
+
display: flex;
|
|
103
|
+
justify-content: space-between;
|
|
104
|
+
align-items: flex-start;
|
|
105
|
+
gap: 0.75rem;
|
|
106
|
+
font-size: 0.8rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.live-log-title-group {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-direction: column;
|
|
112
|
+
gap: 0.2rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.live-log-actions {
|
|
116
|
+
display: flex;
|
|
117
|
+
align-items: center;
|
|
118
|
+
gap: 0.75rem;
|
|
119
|
+
flex-wrap: wrap;
|
|
120
|
+
justify-content: flex-end;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.live-log-filter {
|
|
124
|
+
display: flex;
|
|
125
|
+
align-items: center;
|
|
126
|
+
gap: 0.35rem;
|
|
127
|
+
font-size: 0.72rem;
|
|
128
|
+
margin: 0;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.live-log-option {
|
|
132
|
+
display: flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
gap: 0.35rem;
|
|
135
|
+
cursor: pointer;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.live-log-filter input[type="checkbox"],
|
|
139
|
+
.live-log-option input[type="checkbox"] {
|
|
140
|
+
margin: 0;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.live-log-title {
|
|
144
|
+
font-weight: 600;
|
|
145
|
+
letter-spacing: 0.03em;
|
|
146
|
+
text-transform: uppercase;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.live-log-hint {
|
|
150
|
+
color: var(--pico-muted-color, #778089);
|
|
151
|
+
font-size: 0.72rem;
|
|
152
|
+
font-style: italic;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.live-log-panel {
|
|
156
|
+
flex: 1 1 auto;
|
|
157
|
+
max-height: 220px;
|
|
158
|
+
overflow-y: auto;
|
|
159
|
+
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
|
|
160
|
+
font-size: 0.78rem;
|
|
161
|
+
line-height: 1.35;
|
|
162
|
+
background-color: var(--pico-card-background-color);
|
|
163
|
+
border: 1px solid var(--pico-muted-border-color);
|
|
164
|
+
border-radius: 0.45rem;
|
|
165
|
+
padding: 0.5rem 0.6rem;
|
|
166
|
+
min-height: 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.live-log-buttons {
|
|
170
|
+
display: flex;
|
|
171
|
+
align-items: center;
|
|
172
|
+
gap: 0.5rem;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.live-log-action-button {
|
|
176
|
+
border: 1px solid var(--pico-muted-border-color);
|
|
177
|
+
background: var(--pico-card-background-color);
|
|
178
|
+
color: var(--pico-color-text, inherit);
|
|
179
|
+
border-radius: 0.45rem;
|
|
180
|
+
padding: 0.25rem 0.7rem;
|
|
181
|
+
font-size: 0.72rem;
|
|
182
|
+
cursor: pointer;
|
|
183
|
+
transition: background 0.2s ease, border-color 0.2s ease;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.live-log-action-button:hover,
|
|
187
|
+
.live-log-action-button:focus-visible {
|
|
188
|
+
border-color: var(--pico-color-primary, #2e8aea);
|
|
189
|
+
background: rgba(46, 138, 234, 0.08);
|
|
190
|
+
outline: none;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.live-log-entries {
|
|
194
|
+
display: flex;
|
|
195
|
+
flex-direction: column;
|
|
196
|
+
gap: 0.3rem;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.live-log-entry {
|
|
200
|
+
display: flex;
|
|
201
|
+
gap: 0.75rem;
|
|
202
|
+
align-items: baseline;
|
|
203
|
+
white-space: pre-wrap;
|
|
204
|
+
word-break: break-word;
|
|
205
|
+
min-height: 1.1em;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.live-log-entry.stdout .live-log-stream {
|
|
209
|
+
color: var(--pico-color-primary, #2e8aea);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.live-log-entry.stderr .live-log-stream {
|
|
213
|
+
color: var(--pico-color-danger, #e5534b);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.live-log-time {
|
|
217
|
+
color: var(--pico-muted-color, #858b94);
|
|
218
|
+
font-size: 0.72rem;
|
|
219
|
+
min-width: 3.5rem;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.live-log-stream {
|
|
223
|
+
font-weight: 600;
|
|
224
|
+
font-size: 0.72rem;
|
|
225
|
+
min-width: 3.8rem;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.live-log-text {
|
|
229
|
+
flex: 1 1 auto;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.live-log-empty {
|
|
233
|
+
color: var(--pico-muted-color, #858b94);
|
|
234
|
+
font-style: italic;
|
|
235
|
+
font-size: 0.78rem;
|
|
236
|
+
text-align: center;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
body.logs-maximized {
|
|
240
|
+
overflow: hidden;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
footer.main-footer.maximized {
|
|
244
|
+
top: 0;
|
|
245
|
+
bottom: 0;
|
|
246
|
+
height: auto;
|
|
247
|
+
padding: 1.4rem 2rem;
|
|
248
|
+
gap: 1rem;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
footer.main-footer.maximized .footer-bar {
|
|
252
|
+
align-items: flex-start;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
footer.main-footer.maximized .live-log-wrapper {
|
|
256
|
+
flex: 1 1 auto;
|
|
257
|
+
min-height: 0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
footer.main-footer.maximized .live-log-panel {
|
|
261
|
+
max-height: none;
|
|
262
|
+
flex: 1 1 auto;
|
|
263
|
+
min-height: 0;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
footer.main-footer.maximized .live-log-wrapper {
|
|
267
|
+
display: flex;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.footer-meta {
|
|
271
|
+
font-size: 0.72rem;
|
|
272
|
+
color: var(--pico-muted-color, #6f7782);
|
|
273
|
+
text-align: center;
|
|
274
|
+
flex: 1;
|
|
275
|
+
margin: 0;
|
|
276
|
+
line-height: 1;
|
|
277
|
+
display: flex;
|
|
278
|
+
align-items: center;
|
|
279
|
+
justify-content: center;
|
|
280
|
+
min-height: 1.45rem;
|
|
281
|
+
}
|
flock/webapp/templates/base.html
CHANGED
|
@@ -80,8 +80,52 @@
|
|
|
80
80
|
</template>
|
|
81
81
|
</div>
|
|
82
82
|
|
|
83
|
-
<footer class="main-footer">
|
|
84
|
-
<
|
|
83
|
+
<footer class="main-footer" data-expanded="false" data-maximized="false">
|
|
84
|
+
<div class="footer-bar">
|
|
85
|
+
<small class="footer-meta">Built with FastAPI, HTMX, Pico.CSS by 🤍 white duck 🦆 - Theme: {{ active_theme_name | default('default') }}</small>
|
|
86
|
+
<button id="live-log-toggle" class="live-log-toggle-link" type="button" aria-expanded="false" aria-controls="live-log-panel">
|
|
87
|
+
Show logs
|
|
88
|
+
</button>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="live-log-wrapper" hidden>
|
|
91
|
+
<div class="live-log-header">
|
|
92
|
+
<div class="live-log-title-group">
|
|
93
|
+
<span class="live-log-title">Live CLI Logs</span>
|
|
94
|
+
<span class="live-log-hint">Mirrors recent stdout/stderr output</span>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="live-log-actions">
|
|
97
|
+
<form id="live-log-filter-form" class="live-log-filter" onsubmit="return false;">
|
|
98
|
+
<label class="live-log-option">
|
|
99
|
+
<input type="checkbox" name="hide_polling" value="1" checked>
|
|
100
|
+
Hide poll requests
|
|
101
|
+
</label>
|
|
102
|
+
</form>
|
|
103
|
+
<label class="live-log-option" for="live-log-autoscroll">
|
|
104
|
+
<input type="checkbox" id="live-log-autoscroll" checked>
|
|
105
|
+
Auto-scroll
|
|
106
|
+
</label>
|
|
107
|
+
<div class="live-log-buttons">
|
|
108
|
+
<button id="live-log-copy" type="button" class="live-log-action-button" title="Copy visible logs" aria-label="Copy logs to clipboard">
|
|
109
|
+
Copy
|
|
110
|
+
</button>
|
|
111
|
+
<button id="live-log-maximize" type="button" class="live-log-action-button" aria-pressed="false">
|
|
112
|
+
Maximize
|
|
113
|
+
</button>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
<div
|
|
118
|
+
id="live-log-panel"
|
|
119
|
+
class="live-log-panel"
|
|
120
|
+
hx-get="{{ url_for('htmx_live_cli_logs') }}"
|
|
121
|
+
hx-trigger="refresh"
|
|
122
|
+
hx-swap="innerHTML"
|
|
123
|
+
hx-target="this"
|
|
124
|
+
hx-include="#live-log-filter-form"
|
|
125
|
+
>
|
|
126
|
+
<div class="live-log-empty">Collecting CLI output...</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
85
129
|
</footer>
|
|
86
130
|
|
|
87
131
|
<script>
|
|
@@ -138,6 +182,151 @@
|
|
|
138
182
|
});
|
|
139
183
|
</script>
|
|
140
184
|
{# Global Toast Handler - identical to the one in chat.html #}
|
|
185
|
+
<script>
|
|
186
|
+
document.addEventListener('DOMContentLoaded', function () {
|
|
187
|
+
var footer = document.querySelector('.main-footer');
|
|
188
|
+
var toggleBtn = document.getElementById('live-log-toggle');
|
|
189
|
+
var wrapper = footer ? footer.querySelector('.live-log-wrapper') : null;
|
|
190
|
+
var panel = document.getElementById('live-log-panel');
|
|
191
|
+
var filterForm = document.getElementById('live-log-filter-form');
|
|
192
|
+
var autoScrollCheckbox = document.getElementById('live-log-autoscroll');
|
|
193
|
+
var maximizeBtn = document.getElementById('live-log-maximize');
|
|
194
|
+
var copyBtn = document.getElementById('live-log-copy');
|
|
195
|
+
var AUTO_SCROLL_STORAGE_KEY = 'flock.liveLogs.autoScroll';
|
|
196
|
+
var storageAvailable = false;
|
|
197
|
+
|
|
198
|
+
try {
|
|
199
|
+
if (window.localStorage) {
|
|
200
|
+
var probeKey = '__flock_live_log_probe__';
|
|
201
|
+
localStorage.setItem(probeKey, '1');
|
|
202
|
+
localStorage.removeItem(probeKey);
|
|
203
|
+
storageAvailable = true;
|
|
204
|
+
}
|
|
205
|
+
} catch (err) {
|
|
206
|
+
storageAvailable = false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (!footer || !toggleBtn || !wrapper || !panel) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
var collapsedTrigger = 'refresh';
|
|
214
|
+
var expandedTrigger = 'refresh, every 2s, change from:#live-log-filter-form';
|
|
215
|
+
|
|
216
|
+
if (autoScrollCheckbox && storageAvailable) {
|
|
217
|
+
var stored = localStorage.getItem(AUTO_SCROLL_STORAGE_KEY);
|
|
218
|
+
if (stored === 'true' || stored === 'false') {
|
|
219
|
+
autoScrollCheckbox.checked = stored === 'true';
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function updateLayout(expanded) {
|
|
224
|
+
if (!expanded) {
|
|
225
|
+
updateMaximize(false);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
footer.classList.toggle('expanded', expanded);
|
|
229
|
+
document.body.classList.toggle('logs-expanded', expanded);
|
|
230
|
+
footer.dataset.expanded = expanded ? 'true' : 'false';
|
|
231
|
+
toggleBtn.setAttribute('aria-expanded', String(expanded));
|
|
232
|
+
toggleBtn.textContent = expanded ? 'Hide logs' : 'Show logs';
|
|
233
|
+
wrapper.hidden = !expanded;
|
|
234
|
+
panel.setAttribute('hx-trigger', expanded ? expandedTrigger : collapsedTrigger);
|
|
235
|
+
|
|
236
|
+
if (window.htmx) {
|
|
237
|
+
if (typeof window.htmx.stopPolling === 'function') {
|
|
238
|
+
window.htmx.stopPolling(panel);
|
|
239
|
+
}
|
|
240
|
+
if (expanded) {
|
|
241
|
+
window.htmx.process(panel);
|
|
242
|
+
window.htmx.trigger(panel, 'refresh');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function updateMaximize(maximized) {
|
|
248
|
+
footer.classList.toggle('maximized', maximized);
|
|
249
|
+
document.body.classList.toggle('logs-maximized', maximized);
|
|
250
|
+
footer.dataset.maximized = maximized ? 'true' : 'false';
|
|
251
|
+
if (maximizeBtn) {
|
|
252
|
+
maximizeBtn.setAttribute('aria-pressed', String(maximized));
|
|
253
|
+
maximizeBtn.textContent = maximized ? 'Minimize' : 'Maximize';
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (maximized) {
|
|
257
|
+
if (!footer.classList.contains('expanded')) {
|
|
258
|
+
updateLayout(true);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
requestAnimationFrame(function () {
|
|
262
|
+
if (!autoScrollCheckbox || autoScrollCheckbox.checked) {
|
|
263
|
+
panel.scrollTop = panel.scrollHeight;
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
updateLayout(false);
|
|
270
|
+
|
|
271
|
+
toggleBtn.addEventListener('click', function () {
|
|
272
|
+
var expanded = !footer.classList.contains('expanded');
|
|
273
|
+
updateLayout(expanded);
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
if (maximizeBtn) {
|
|
277
|
+
maximizeBtn.addEventListener('click', function () {
|
|
278
|
+
var maximized = footer.classList.contains('maximized');
|
|
279
|
+
updateMaximize(!maximized);
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (copyBtn && navigator.clipboard && navigator.clipboard.writeText) {
|
|
284
|
+
copyBtn.addEventListener('click', function () {
|
|
285
|
+
var text = panel.innerText.trim();
|
|
286
|
+
if (!text) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
navigator.clipboard.writeText(text).then(function () {
|
|
291
|
+
if (typeof triggerEvent === 'function') {
|
|
292
|
+
triggerEvent('showGlobalToast', { type: 'success', message: 'Logs copied to clipboard.' });
|
|
293
|
+
} else {
|
|
294
|
+
document.body.dispatchEvent(new CustomEvent('showGlobalToast', { detail: { type: 'success', message: 'Logs copied to clipboard.' } }));
|
|
295
|
+
}
|
|
296
|
+
}).catch(function () {
|
|
297
|
+
document.body.dispatchEvent(new CustomEvent('showGlobalToast', { detail: { type: 'error', message: 'Unable to copy logs.' } }));
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
} else if (copyBtn) {
|
|
301
|
+
copyBtn.disabled = true;
|
|
302
|
+
copyBtn.title = 'Clipboard API unavailable in this browser.';
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (autoScrollCheckbox && storageAvailable) {
|
|
306
|
+
autoScrollCheckbox.addEventListener('change', function () {
|
|
307
|
+
localStorage.setItem(AUTO_SCROLL_STORAGE_KEY, String(autoScrollCheckbox.checked));
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (window.htmx) {
|
|
312
|
+
document.body.addEventListener('htmx:afterSwap', function (event) {
|
|
313
|
+
if (event.target === panel) {
|
|
314
|
+
if (!autoScrollCheckbox || autoScrollCheckbox.checked) {
|
|
315
|
+
panel.scrollTop = panel.scrollHeight;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
if (filterForm) {
|
|
322
|
+
filterForm.addEventListener('change', function () {
|
|
323
|
+
if (window.htmx && footer.classList.contains('expanded')) {
|
|
324
|
+
window.htmx.trigger(panel, 'refresh');
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
</script>
|
|
141
330
|
<script>
|
|
142
331
|
document.body.addEventListener('showGlobalToast', function (event) {
|
|
143
332
|
const detail = event.detail;
|
|
@@ -197,4 +386,4 @@
|
|
|
197
386
|
</script>
|
|
198
387
|
</body>
|
|
199
388
|
|
|
200
|
-
</html>
|
|
389
|
+
</html>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{% if logs %}
|
|
2
|
+
<div class="live-log-entries">
|
|
3
|
+
{% for entry in logs %}
|
|
4
|
+
<div class="live-log-entry {{ entry.css_class }}">
|
|
5
|
+
<span class="live-log-time">{{ entry.time_display }}</span>
|
|
6
|
+
<span class="live-log-stream">{{ entry.stream_label }}</span>
|
|
7
|
+
<span class="live-log-text">{{ entry.text }}</span>
|
|
8
|
+
</div>
|
|
9
|
+
{% endfor %}
|
|
10
|
+
</div>
|
|
11
|
+
{% else %}
|
|
12
|
+
<div class="live-log-empty">No CLI output captured yet.</div>
|
|
13
|
+
{% endif %}
|
|
@@ -56,6 +56,7 @@ flock/core/execution/opik_executor.py,sha256=tl2Ti9NM_9WtcjXvJ0c7up-syRNq_OsLmiu
|
|
|
56
56
|
flock/core/execution/temporal_executor.py,sha256=dHcb0xuzPFWU_wbwTgI7glLNyyppei93Txs2sapjhaw,6283
|
|
57
57
|
flock/core/interpreter/python_interpreter.py,sha256=4-wRsxC6-gToEdRr_pp-n2idWwe_Y2zN0o3TbzUPhy0,26632
|
|
58
58
|
flock/core/logging/__init__.py,sha256=xn5fC-8IgsdIv0ywe_cICK1KVhTrVD8t-jYORg0ETUA,155
|
|
59
|
+
flock/core/logging/live_capture.py,sha256=ur1mLAUd5mb4BvqppK1gvjDvbxMdaxgH_9SrQESzQ7o,4451
|
|
59
60
|
flock/core/logging/logging.py,sha256=VyBsin-3q8UQ0DY-K72t8FtrGJQbUwIfzxaC7rIWMvQ,19820
|
|
60
61
|
flock/core/logging/telemetry.py,sha256=Trssqx02SBovTL843YwY3L-ZGj3KvcfMHLMU7Syk8L0,6561
|
|
61
62
|
flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
|
|
@@ -490,21 +491,21 @@ flock/tools/text_tools.py,sha256=mMQ8tkyYDxIorqqzl9ccGyWYjrSynYiYFIeP9qypfdg,224
|
|
|
490
491
|
flock/tools/web_tools.py,sha256=h44L5rknxGw1mVnFTYO-z0xwUr5ctOvMiJBIfeq56UE,2555
|
|
491
492
|
flock/tools/zendesk_tools.py,sha256=1uNHMvfjmbxkrJoBsXS5jDaOCeEcOEDQUKoGYFODj3o,19007
|
|
492
493
|
flock/webapp/__init__.py,sha256=YtRbbyciN3Z2oMB9fdXZuvM3e49R8m2mY5qHLDoapRA,37
|
|
493
|
-
flock/webapp/run.py,sha256=
|
|
494
|
+
flock/webapp/run.py,sha256=58oUBp8Bumhtigof6Q0nKbkI-vUai0r67qmzEfKZ1CA,9241
|
|
494
495
|
flock/webapp/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
495
|
-
flock/webapp/app/chat.py,sha256=
|
|
496
|
+
flock/webapp/app/chat.py,sha256=cGdmwJ6ME9zS61nR9Iuy1ujtL6nTyuxmsuEwn3WWm70,30848
|
|
496
497
|
flock/webapp/app/config.py,sha256=lqmneujnNZk-EFJV5cWpvxkqisxH3T3zT_YOI0JYThE,4809
|
|
497
498
|
flock/webapp/app/dependencies.py,sha256=JUcwY1N6SZplU141lMN2wk9dOC9er5HCedrKTJN9wJk,5533
|
|
498
|
-
flock/webapp/app/main.py,sha256=
|
|
499
|
+
flock/webapp/app/main.py,sha256=fLOi5INA3FwaV-r_500RtkEB1MDhVYgKjr0jGz9c0js,60220
|
|
499
500
|
flock/webapp/app/middleware.py,sha256=5gkM-gqD7C6-JrsoTB1_UWpf05JI1N8KIWajn60QZk0,5721
|
|
500
501
|
flock/webapp/app/models_ui.py,sha256=vrEBLbhEp6FziAgBSFOLT1M7ckwadsTdT7qus5_NduE,329
|
|
501
|
-
flock/webapp/app/theme_mapper.py,sha256=
|
|
502
|
+
flock/webapp/app/theme_mapper.py,sha256=WctP0aFWrASeb9jBRtpmjgHcmMR57J9ibaa6XLZA6r8,34294
|
|
502
503
|
flock/webapp/app/utils.py,sha256=RF8DMKKAj1XPmm4txUdo2OdswI1ATQ7cqUm6G9JFDzA,2942
|
|
503
504
|
flock/webapp/app/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
504
|
-
flock/webapp/app/api/agent_management.py,sha256=
|
|
505
|
-
flock/webapp/app/api/execution.py,sha256=
|
|
506
|
-
flock/webapp/app/api/flock_management.py,sha256=
|
|
507
|
-
flock/webapp/app/api/registry_viewer.py,sha256=
|
|
505
|
+
flock/webapp/app/api/agent_management.py,sha256=1RtTLpGYH4OE5gsKJ2WxAQ8OshZw3Qb32exL88fR-YQ,10426
|
|
506
|
+
flock/webapp/app/api/execution.py,sha256=VI23d1UZegweXzMzkfvq_Lui0FWsVx4iqbOza1naJpA,18348
|
|
507
|
+
flock/webapp/app/api/flock_management.py,sha256=q81wjz0kHFyhREoxNRCKqCiaSQT8rQ4DwmaRo9ddJbU,4865
|
|
508
|
+
flock/webapp/app/api/registry_viewer.py,sha256=jb8rOm3U9CGJmeKMuSMU5CC66dtmdSLOGRJnFTEw1qY,1020
|
|
508
509
|
flock/webapp/app/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
509
510
|
flock/webapp/app/services/feedback_file_service.py,sha256=6WYJjml8lt_ULH5vq7JSWrPQPvUSLvp91qMBt-_tg5Q,9376
|
|
510
511
|
flock/webapp/app/services/flock_service.py,sha256=Gmv4XFszqVOdnE4MYsVhvBCYNDiLzzgRmIMGwaUU2OU,15134
|
|
@@ -514,10 +515,10 @@ flock/webapp/app/templates/theme_mapper.html,sha256=z8ZY7nmk6PiUGzD_-px7wSXcEnuB
|
|
|
514
515
|
flock/webapp/static/css/chat.css,sha256=Njc9gXfQzbXMrqtFJH2Yda-IQlwNPd2z4apXxzfA0sY,8169
|
|
515
516
|
flock/webapp/static/css/components.css,sha256=WnicEHy3ptPzggKmyG9_oZp3X30EMJBUW3KEXaiUCUE,6018
|
|
516
517
|
flock/webapp/static/css/header.css,sha256=E9MgItZCk34S65NfMJ001ZsRz4oyFSJex8KvINMtCn0,1043
|
|
517
|
-
flock/webapp/static/css/layout.css,sha256=
|
|
518
|
+
flock/webapp/static/css/layout.css,sha256=gubuFBGH2kF31tbBae4GHP5XPikfLINwJgIjrLnOtdA,6224
|
|
518
519
|
flock/webapp/static/css/sidebar.css,sha256=gCwLTAiIvmHGksm0rHDpMsOGCDKBMxqx_aEc8ZQcQF8,3066
|
|
519
520
|
flock/webapp/static/css/two-pane.css,sha256=dTrCm5y3odO105Pt_yHtAl3uzUSy2fqDSCEC_jxeEDM,1181
|
|
520
|
-
flock/webapp/templates/base.html,sha256
|
|
521
|
+
flock/webapp/templates/base.html,sha256=ztecfPFD4_fRdvlweirMNrQWo4r9C6jU634Bd9yR9Jo,18569
|
|
521
522
|
flock/webapp/templates/chat.html,sha256=kz1No9tZfOt6eFzI1KNmfYrSglWIr9bxkGZDEaBH9oc,7506
|
|
522
523
|
flock/webapp/templates/chat_settings.html,sha256=eUHOOEt52jW8DxAMM6jLOPPsdHMdhiQzKuEdgeT0BOI,930
|
|
523
524
|
flock/webapp/templates/flock_editor.html,sha256=Zlo-jLbNZshsxvC9vFDnqWNxdJiKelITlsvX5CAl4RI,547
|
|
@@ -544,6 +545,7 @@ flock/webapp/templates/partials/_flock_file_list.html,sha256=3F1RE1EaeRSQeyIWeA2
|
|
|
544
545
|
flock/webapp/templates/partials/_flock_properties_form.html,sha256=kUHoxB6_C_R9nMDD_ClLRDL_9zQ6E8gFCrlkEkqcUYo,2904
|
|
545
546
|
flock/webapp/templates/partials/_flock_upload_form.html,sha256=IK4Kk_82z3m9zlutKak58NBj9PMpTGXtTmeiPSoJVy0,965
|
|
546
547
|
flock/webapp/templates/partials/_header_flock_status.html,sha256=reNB4Prsu9lObz5tFhGk3AMe4bNw92gDJZUKABVaVBM,158
|
|
548
|
+
flock/webapp/templates/partials/_live_logs.html,sha256=B0D_Y3-WXPEUwE-AAFkP0IiyIw0rD5vwIO0Dp30bIGU,438
|
|
547
549
|
flock/webapp/templates/partials/_load_manager_view.html,sha256=lu_2yKJcBPF8yZEeA0rnCPpYODieVfQgjq8HzKoPTzs,2950
|
|
548
550
|
flock/webapp/templates/partials/_registry_table.html,sha256=z4EW5G3DTknymBeSlpL2PZLcb2143P35upMnmHFfeJs,715
|
|
549
551
|
flock/webapp/templates/partials/_registry_viewer_content.html,sha256=rF3jFxP6mNkuf-nRRG_a0S8wWL4gdgoMRgxfpQGy0P4,3067
|
|
@@ -563,8 +565,8 @@ flock/workflow/agent_execution_activity.py,sha256=hLqWEWsxwTgjsE9wvBejf3pN2TdIfU
|
|
|
563
565
|
flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
|
|
564
566
|
flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
|
|
565
567
|
flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
|
|
566
|
-
flock_core-0.4.
|
|
567
|
-
flock_core-0.4.
|
|
568
|
-
flock_core-0.4.
|
|
569
|
-
flock_core-0.4.
|
|
570
|
-
flock_core-0.4.
|
|
568
|
+
flock_core-0.4.541.dist-info/METADATA,sha256=sKIt_GB6E2T_Zq4c4QE4PdMT7cFSTKmk7v8yAQBzt98,22800
|
|
569
|
+
flock_core-0.4.541.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
570
|
+
flock_core-0.4.541.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
571
|
+
flock_core-0.4.541.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
572
|
+
flock_core-0.4.541.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|