orquesta-agent 0.2.26 → 0.2.27
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/daemon.d.ts.map +1 -1
- package/dist/daemon.js +1 -26
- package/dist/daemon.js.map +1 -1
- package/dist/executor.d.ts +4 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +23 -5
- package/dist/executor.js.map +1 -1
- package/dist/index.js +36 -49
- package/dist/index.js.map +1 -1
- package/dist/socketio-transport.d.ts +1 -0
- package/dist/socketio-transport.d.ts.map +1 -1
- package/dist/socketio-transport.js +2 -2
- package/dist/socketio-transport.js.map +1 -1
- package/dist/supabase.d.ts +1 -0
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js.map +1 -1
- package/dist/ui/manager.d.ts.map +1 -1
- package/dist/ui/manager.js +19 -80
- package/dist/ui/manager.js.map +1 -1
- package/dist/ui/public/app.js +90 -87
- package/dist/ui/public/index.html +20 -0
- package/dist/ui/public/style.css +2 -49
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +0 -6
- package/dist/ui/server.js.map +1 -1
- package/package.json +1 -1
package/dist/ui/public/app.js
CHANGED
|
@@ -4,9 +4,8 @@ const API_BASE = '/api'
|
|
|
4
4
|
let agents = []
|
|
5
5
|
let systemInfo = null
|
|
6
6
|
let editingAgentId = null
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const logIntervals = new Map()
|
|
7
|
+
let logsAgentId = null
|
|
8
|
+
let logsInterval = null
|
|
10
9
|
|
|
11
10
|
// Load system info
|
|
12
11
|
async function loadSystemInfo() {
|
|
@@ -14,9 +13,11 @@ async function loadSystemInfo() {
|
|
|
14
13
|
const res = await fetch(`${API_BASE}/system`)
|
|
15
14
|
systemInfo = await res.json()
|
|
16
15
|
|
|
16
|
+
// Update UI
|
|
17
17
|
document.getElementById('version').textContent = `v${systemInfo.version}`
|
|
18
18
|
document.getElementById('platform').textContent = systemInfo.platform
|
|
19
19
|
|
|
20
|
+
// Claude CLI status
|
|
20
21
|
const claudeStatus = document.getElementById('claude-status')
|
|
21
22
|
if (systemInfo.hasClaudeCli) {
|
|
22
23
|
if (systemInfo.claudeAuth?.authenticated) {
|
|
@@ -28,6 +29,7 @@ async function loadSystemInfo() {
|
|
|
28
29
|
claudeStatus.innerHTML = `<span class="badge danger">✗ Not installed</span>`
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
// Orquesta CLI status
|
|
31
33
|
const orquestaStatus = document.getElementById('orquesta-status')
|
|
32
34
|
if (systemInfo.hasOrquestaCli) {
|
|
33
35
|
orquestaStatus.innerHTML = `<span class="badge success">✓ Installed</span>`
|
|
@@ -50,17 +52,12 @@ async function loadAgents() {
|
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
// Render agents list
|
|
55
|
+
// Render agents list
|
|
54
56
|
function renderAgents() {
|
|
55
57
|
const container = document.getElementById('agents-container')
|
|
56
58
|
const emptyState = document.getElementById('empty-state')
|
|
57
59
|
|
|
58
60
|
if (agents.length === 0) {
|
|
59
|
-
// Stop all log intervals
|
|
60
|
-
for (const [id, interval] of logIntervals) {
|
|
61
|
-
clearInterval(interval)
|
|
62
|
-
logIntervals.delete(id)
|
|
63
|
-
}
|
|
64
61
|
emptyState.style.display = 'block'
|
|
65
62
|
container.innerHTML = ''
|
|
66
63
|
container.appendChild(emptyState)
|
|
@@ -69,7 +66,7 @@ function renderAgents() {
|
|
|
69
66
|
|
|
70
67
|
emptyState.style.display = 'none'
|
|
71
68
|
container.innerHTML = agents.map(agent => `
|
|
72
|
-
<div class="agent-card"
|
|
69
|
+
<div class="agent-card">
|
|
73
70
|
<div class="agent-header">
|
|
74
71
|
<div class="agent-title">
|
|
75
72
|
<span class="status-dot ${agent.status}"></span>
|
|
@@ -124,90 +121,18 @@ function renderAgents() {
|
|
|
124
121
|
<span class="icon">▶️</span> Start
|
|
125
122
|
</button>
|
|
126
123
|
`}
|
|
127
|
-
${
|
|
124
|
+
<button class="btn btn-sm btn-secondary" onclick="viewLogs('${agent.id}', '${escapeHtml(agent.name)}')">
|
|
125
|
+
<span class="icon">📄</span> Logs
|
|
126
|
+
</button>
|
|
128
127
|
<button class="btn btn-sm btn-secondary" onclick="editAgent('${agent.id}')">
|
|
129
128
|
<span class="icon">✏️</span> Edit
|
|
130
129
|
</button>
|
|
131
130
|
<button class="btn btn-sm btn-danger" onclick="deleteAgent('${agent.id}', '${escapeHtml(agent.name)}')">
|
|
132
131
|
<span class="icon">🗑️</span> Delete
|
|
133
132
|
</button>
|
|
134
|
-
` : ''}
|
|
135
|
-
</div>
|
|
136
|
-
|
|
137
|
-
<!-- Inline logs panel (always visible) -->
|
|
138
|
-
<div class="agent-logs">
|
|
139
|
-
<div class="agent-logs-header">
|
|
140
|
-
<span>📄 Logs</span>
|
|
141
|
-
<div class="agent-logs-actions">
|
|
142
|
-
<button class="btn btn-sm btn-secondary" onclick="clearAgentLogs('${agent.id}')">🗑️ Clear</button>
|
|
143
|
-
</div>
|
|
144
|
-
</div>
|
|
145
|
-
<pre class="logs-panel" id="logs-${agent.id}"></pre>
|
|
146
133
|
</div>
|
|
147
134
|
</div>
|
|
148
135
|
`).join('')
|
|
149
|
-
|
|
150
|
-
// Start/sync log auto-refresh for each agent
|
|
151
|
-
for (const agent of agents) {
|
|
152
|
-
// Load logs immediately
|
|
153
|
-
refreshLogs(agent.id)
|
|
154
|
-
|
|
155
|
-
// Set up auto-refresh if not already running
|
|
156
|
-
if (!logIntervals.has(agent.id)) {
|
|
157
|
-
const interval = setInterval(() => refreshLogs(agent.id), 2000)
|
|
158
|
-
logIntervals.set(agent.id, interval)
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Clear intervals for agents no longer in list
|
|
163
|
-
for (const [id, interval] of logIntervals) {
|
|
164
|
-
if (!agents.find(a => a.id === id)) {
|
|
165
|
-
clearInterval(interval)
|
|
166
|
-
logIntervals.delete(id)
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Refresh logs for a single agent (inline panel)
|
|
172
|
-
async function refreshLogs(id) {
|
|
173
|
-
const panel = document.getElementById(`logs-${id}`)
|
|
174
|
-
if (!panel) return
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
const res = await fetch(`${API_BASE}/agents/${id}/logs?lines=200`)
|
|
178
|
-
const data = await res.json()
|
|
179
|
-
const newContent = data.logs.join('\n')
|
|
180
|
-
|
|
181
|
-
// Only update DOM if content changed (avoid scroll jump)
|
|
182
|
-
if (panel.textContent !== newContent) {
|
|
183
|
-
const atBottom = panel.scrollHeight - panel.scrollTop <= panel.clientHeight + 20
|
|
184
|
-
panel.textContent = newContent
|
|
185
|
-
if (atBottom) {
|
|
186
|
-
panel.scrollTop = panel.scrollHeight
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
} catch (err) {
|
|
190
|
-
// Ignore fetch errors (agent may be starting up)
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Clear agent logs
|
|
195
|
-
async function clearAgentLogs(id) {
|
|
196
|
-
if (!confirm('Clear all logs for this agent?')) return
|
|
197
|
-
|
|
198
|
-
try {
|
|
199
|
-
const res = await fetch(`${API_BASE}/agents/${id}/logs`, { method: 'DELETE' })
|
|
200
|
-
const data = await res.json()
|
|
201
|
-
|
|
202
|
-
if (!res.ok) {
|
|
203
|
-
alert(`Failed to clear logs: ${data.error}`)
|
|
204
|
-
return
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
refreshLogs(id)
|
|
208
|
-
} catch (err) {
|
|
209
|
-
alert(`Failed to clear logs: ${err.message}`)
|
|
210
|
-
}
|
|
211
136
|
}
|
|
212
137
|
|
|
213
138
|
// Start agent
|
|
@@ -330,12 +255,14 @@ async function saveAgent(event) {
|
|
|
330
255
|
try {
|
|
331
256
|
let res
|
|
332
257
|
if (editingAgentId) {
|
|
258
|
+
// Update existing agent
|
|
333
259
|
res = await fetch(`${API_BASE}/agents/${editingAgentId}`, {
|
|
334
260
|
method: 'PUT',
|
|
335
261
|
headers: { 'Content-Type': 'application/json' },
|
|
336
262
|
body: JSON.stringify(formData),
|
|
337
263
|
})
|
|
338
264
|
} else {
|
|
265
|
+
// Create new agent
|
|
339
266
|
res = await fetch(`${API_BASE}/agents`, {
|
|
340
267
|
method: 'POST',
|
|
341
268
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -357,6 +284,74 @@ async function saveAgent(event) {
|
|
|
357
284
|
}
|
|
358
285
|
}
|
|
359
286
|
|
|
287
|
+
// View logs
|
|
288
|
+
function viewLogs(id, name) {
|
|
289
|
+
logsAgentId = id
|
|
290
|
+
document.getElementById('logs-title').textContent = `Logs: ${name}`
|
|
291
|
+
document.getElementById('logs-modal').classList.add('active')
|
|
292
|
+
loadLogs()
|
|
293
|
+
|
|
294
|
+
// Auto-refresh logs every 2 seconds
|
|
295
|
+
logsInterval = setInterval(() => {
|
|
296
|
+
if (document.getElementById('logs-autoscroll').checked) {
|
|
297
|
+
loadLogs()
|
|
298
|
+
}
|
|
299
|
+
}, 2000)
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Load logs
|
|
303
|
+
async function loadLogs() {
|
|
304
|
+
if (!logsAgentId) return
|
|
305
|
+
|
|
306
|
+
try {
|
|
307
|
+
const res = await fetch(`${API_BASE}/agents/${logsAgentId}/logs?lines=200`)
|
|
308
|
+
const data = await res.json()
|
|
309
|
+
|
|
310
|
+
const logsContent = document.getElementById('logs-content')
|
|
311
|
+
logsContent.textContent = data.logs.join('\n')
|
|
312
|
+
|
|
313
|
+
// Auto-scroll to bottom if enabled
|
|
314
|
+
if (document.getElementById('logs-autoscroll').checked) {
|
|
315
|
+
logsContent.scrollTop = logsContent.scrollHeight
|
|
316
|
+
}
|
|
317
|
+
} catch (err) {
|
|
318
|
+
console.error('Failed to load logs:', err)
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// Clear logs
|
|
323
|
+
async function clearLogs() {
|
|
324
|
+
if (!logsAgentId) return
|
|
325
|
+
|
|
326
|
+
if (!confirm('Are you sure you want to clear all logs for this agent?')) {
|
|
327
|
+
return
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
try {
|
|
331
|
+
const res = await fetch(`${API_BASE}/agents/${logsAgentId}/logs`, { method: 'DELETE' })
|
|
332
|
+
const data = await res.json()
|
|
333
|
+
|
|
334
|
+
if (!res.ok) {
|
|
335
|
+
alert(`Failed to clear logs: ${data.error}`)
|
|
336
|
+
return
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
loadLogs()
|
|
340
|
+
} catch (err) {
|
|
341
|
+
alert(`Failed to clear logs: ${err.message}`)
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Close logs modal
|
|
346
|
+
function closeLogsModal() {
|
|
347
|
+
document.getElementById('logs-modal').classList.remove('active')
|
|
348
|
+
if (logsInterval) {
|
|
349
|
+
clearInterval(logsInterval)
|
|
350
|
+
logsInterval = null
|
|
351
|
+
}
|
|
352
|
+
logsAgentId = null
|
|
353
|
+
}
|
|
354
|
+
|
|
360
355
|
// Utility: Escape HTML
|
|
361
356
|
function escapeHtml(text) {
|
|
362
357
|
const div = document.createElement('div')
|
|
@@ -396,13 +391,21 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
396
391
|
// Agent form submit
|
|
397
392
|
document.getElementById('agent-form').addEventListener('submit', saveAgent)
|
|
398
393
|
|
|
399
|
-
//
|
|
394
|
+
// Logs controls
|
|
395
|
+
document.getElementById('logs-refresh').addEventListener('click', loadLogs)
|
|
396
|
+
document.getElementById('logs-clear').addEventListener('click', clearLogs)
|
|
397
|
+
|
|
398
|
+
// Auto-refresh agents every 5 seconds
|
|
400
399
|
setInterval(loadAgents, 5000)
|
|
401
400
|
})
|
|
402
401
|
|
|
403
|
-
// Close
|
|
402
|
+
// Close modals on background click
|
|
404
403
|
window.addEventListener('click', (e) => {
|
|
405
404
|
if (e.target.classList.contains('modal')) {
|
|
406
405
|
e.target.classList.remove('active')
|
|
406
|
+
if (e.target.id === 'logs-modal' && logsInterval) {
|
|
407
|
+
clearInterval(logsInterval)
|
|
408
|
+
logsInterval = null
|
|
409
|
+
}
|
|
407
410
|
}
|
|
408
411
|
})
|
|
@@ -117,6 +117,26 @@
|
|
|
117
117
|
</div>
|
|
118
118
|
</div>
|
|
119
119
|
|
|
120
|
+
<!-- Modal: Logs Viewer -->
|
|
121
|
+
<div id="logs-modal" class="modal">
|
|
122
|
+
<div class="modal-content modal-large">
|
|
123
|
+
<div class="modal-header">
|
|
124
|
+
<h2 id="logs-title">Agent Logs</h2>
|
|
125
|
+
<button class="modal-close" onclick="closeLogsModal()">×</button>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="modal-body">
|
|
128
|
+
<div class="logs-controls">
|
|
129
|
+
<button id="logs-refresh" class="btn btn-secondary btn-sm">🔄 Refresh</button>
|
|
130
|
+
<button id="logs-clear" class="btn btn-secondary btn-sm">🗑️ Clear Logs</button>
|
|
131
|
+
<label class="checkbox-label">
|
|
132
|
+
<input type="checkbox" id="logs-autoscroll" checked>
|
|
133
|
+
<span>Auto-scroll</span>
|
|
134
|
+
</label>
|
|
135
|
+
</div>
|
|
136
|
+
<pre id="logs-content" class="logs-content"></pre>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
120
140
|
</div>
|
|
121
141
|
|
|
122
142
|
<script src="app.js"></script>
|
package/dist/ui/public/style.css
CHANGED
|
@@ -188,56 +188,9 @@ body {
|
|
|
188
188
|
|
|
189
189
|
/* Agents Container */
|
|
190
190
|
.agents-container {
|
|
191
|
-
display:
|
|
192
|
-
flex-direction: column;
|
|
191
|
+
display: grid;
|
|
193
192
|
gap: 16px;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
/* Inline Logs Panel */
|
|
197
|
-
.agent-logs {
|
|
198
|
-
margin-top: 16px;
|
|
199
|
-
border-top: 1px solid #e0e0e0;
|
|
200
|
-
padding-top: 12px;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.agent-logs-header {
|
|
204
|
-
display: flex;
|
|
205
|
-
justify-content: space-between;
|
|
206
|
-
align-items: center;
|
|
207
|
-
margin-bottom: 8px;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.agent-logs-header span {
|
|
211
|
-
font-size: 12px;
|
|
212
|
-
font-weight: 600;
|
|
213
|
-
color: #6c757d;
|
|
214
|
-
text-transform: uppercase;
|
|
215
|
-
letter-spacing: 0.5px;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
.agent-logs-actions {
|
|
219
|
-
display: flex;
|
|
220
|
-
gap: 6px;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.logs-panel {
|
|
224
|
-
background: #1e1e1e;
|
|
225
|
-
color: #d4d4d4;
|
|
226
|
-
padding: 12px 16px;
|
|
227
|
-
border-radius: 6px;
|
|
228
|
-
font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
|
|
229
|
-
font-size: 12px;
|
|
230
|
-
line-height: 1.5;
|
|
231
|
-
height: 200px;
|
|
232
|
-
overflow-y: auto;
|
|
233
|
-
white-space: pre-wrap;
|
|
234
|
-
word-wrap: break-word;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
.logs-panel:empty::before {
|
|
238
|
-
content: 'No logs yet...';
|
|
239
|
-
color: #555;
|
|
240
|
-
font-style: italic;
|
|
193
|
+
grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
|
|
241
194
|
}
|
|
242
195
|
|
|
243
196
|
/* Agent Card */
|
package/dist/ui/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2PxF"}
|
package/dist/ui/server.js
CHANGED
|
@@ -13,12 +13,6 @@ export async function startServer(options, version) {
|
|
|
13
13
|
// Middleware
|
|
14
14
|
app.use(cors());
|
|
15
15
|
app.use(express.json());
|
|
16
|
-
// Disable caching for the UI so updates are always picked up
|
|
17
|
-
app.use((req, res, next) => {
|
|
18
|
-
res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
|
|
19
|
-
res.setHeader('Pragma', 'no-cache');
|
|
20
|
-
next();
|
|
21
|
-
});
|
|
22
16
|
app.use(express.static(path.join(__dirname, 'public')));
|
|
23
17
|
// System info endpoint
|
|
24
18
|
app.get('/api/system', (req, res) => {
|
package/dist/ui/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,OAA8B,MAAM,SAAS,CAAA;AACpD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAEL,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE9F,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAQ1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAsB,EAAE,OAAe;IACvE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;IAErB,aAAa;IACb,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACf,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACvB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"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"}
|