orquesta-agent 0.2.54 → 0.2.55
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/ui/public/app.js +11 -7
- package/dist/ui/public/index.html +46 -15
- package/dist/ui/public/style.css +87 -35
- package/package.json +1 -1
package/dist/ui/public/app.js
CHANGED
|
@@ -72,29 +72,33 @@ async function loadSystemInfo() {
|
|
|
72
72
|
|
|
73
73
|
document.getElementById('version').textContent = `v${systemInfo.version}`
|
|
74
74
|
|
|
75
|
-
// Claude CLI
|
|
75
|
+
// Claude CLI mode
|
|
76
|
+
const claudeCard = document.getElementById('mode-claude')
|
|
76
77
|
const claudeDot = document.getElementById('claude-dot')
|
|
77
78
|
const claudeLabel = document.getElementById('claude-label')
|
|
78
79
|
if (systemInfo.hasClaudeCli && systemInfo.claudeAuth?.authenticated) {
|
|
79
80
|
claudeDot.className = 'dot on'
|
|
80
|
-
claudeLabel.textContent = systemInfo.claudeAuth.method
|
|
81
|
+
claudeLabel.textContent = `Ready (${systemInfo.claudeAuth.method})`
|
|
82
|
+
claudeCard.classList.add('active')
|
|
81
83
|
} else if (systemInfo.hasClaudeCli) {
|
|
82
84
|
claudeDot.className = 'dot warn'
|
|
83
|
-
claudeLabel.textContent = 'not authenticated'
|
|
85
|
+
claudeLabel.textContent = 'Installed but not authenticated'
|
|
84
86
|
} else {
|
|
85
87
|
claudeDot.className = 'dot off'
|
|
86
|
-
claudeLabel.textContent = '
|
|
88
|
+
claudeLabel.textContent = 'Not installed'
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
// Orquesta CLI
|
|
91
|
+
// Orquesta CLI mode (Batuta proxy)
|
|
92
|
+
const orqCard = document.getElementById('mode-orquesta')
|
|
90
93
|
const orqDot = document.getElementById('orquesta-dot')
|
|
91
94
|
const orqLabel = document.getElementById('orquesta-label')
|
|
92
95
|
if (systemInfo.hasOrquestaCli) {
|
|
93
96
|
orqDot.className = 'dot on'
|
|
94
|
-
orqLabel.textContent = '
|
|
97
|
+
orqLabel.textContent = 'Ready (Claude, GPT-4o, DeepSeek, Gemini...)'
|
|
98
|
+
orqCard.classList.add('active')
|
|
95
99
|
} else {
|
|
96
100
|
orqDot.className = 'dot off'
|
|
97
|
-
orqLabel.textContent = '
|
|
101
|
+
orqLabel.textContent = 'Not installed — npm i -g orquesta-cli'
|
|
98
102
|
}
|
|
99
103
|
|
|
100
104
|
// Node
|
|
@@ -13,8 +13,14 @@
|
|
|
13
13
|
<!-- Header -->
|
|
14
14
|
<header class="header">
|
|
15
15
|
<div class="header-left">
|
|
16
|
-
<
|
|
17
|
-
|
|
16
|
+
<svg class="logo-svg" width="32" height="32" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
17
|
+
<rect width="200" height="200" rx="40" fill="#8b5cf6"/>
|
|
18
|
+
<text x="100" y="140" text-anchor="middle" font-family="Inter,sans-serif" font-weight="700" font-size="130" fill="white">O</text>
|
|
19
|
+
</svg>
|
|
20
|
+
<div>
|
|
21
|
+
<h1>orquesta<span class="brand-dot">.</span>live</h1>
|
|
22
|
+
<div class="header-subtitle">Agent Manager <span id="version">v0.0.0</span></div>
|
|
23
|
+
</div>
|
|
18
24
|
</div>
|
|
19
25
|
<div class="header-right">
|
|
20
26
|
<button id="refresh-btn" class="btn">
|
|
@@ -51,19 +57,34 @@
|
|
|
51
57
|
</div>
|
|
52
58
|
</div>
|
|
53
59
|
|
|
54
|
-
<!--
|
|
55
|
-
<div class="
|
|
56
|
-
<div class="
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<
|
|
60
|
+
<!-- Execution Modes -->
|
|
61
|
+
<div class="modes-section">
|
|
62
|
+
<div class="modes-title">Execution Modes</div>
|
|
63
|
+
<div class="status-row" id="status-row">
|
|
64
|
+
<div class="mode-card" id="mode-claude">
|
|
65
|
+
<div class="mode-header">
|
|
66
|
+
<span class="dot" id="claude-dot"></span>
|
|
67
|
+
<strong>Claude CLI</strong>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="mode-desc">Anthropic API — full Claude Code capabilities</div>
|
|
70
|
+
<div class="mode-status" id="claude-label">checking...</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="mode-card" id="mode-orquesta">
|
|
73
|
+
<div class="mode-header">
|
|
74
|
+
<span class="dot" id="orquesta-dot"></span>
|
|
75
|
+
<strong>Orquesta CLI</strong>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="mode-desc">Batuta LLM Proxy — 22 models, zero config</div>
|
|
78
|
+
<div class="mode-status" id="orquesta-label">checking...</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="mode-card" id="mode-node">
|
|
81
|
+
<div class="mode-header">
|
|
82
|
+
<span class="dot" id="node-dot"></span>
|
|
83
|
+
<strong>Runtime</strong>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="mode-desc">Node.js environment</div>
|
|
86
|
+
<div class="mode-status" id="node-label">checking...</div>
|
|
87
|
+
</div>
|
|
67
88
|
</div>
|
|
68
89
|
</div>
|
|
69
90
|
|
|
@@ -146,6 +167,16 @@
|
|
|
146
167
|
</div>
|
|
147
168
|
</div>
|
|
148
169
|
|
|
170
|
+
<!-- Footer -->
|
|
171
|
+
<footer class="footer">
|
|
172
|
+
<a href="https://orquesta.live" target="_blank" rel="noopener">orquesta.live</a>
|
|
173
|
+
<span>·</span>
|
|
174
|
+
<a href="https://orquesta.live/docs" target="_blank" rel="noopener">Docs</a>
|
|
175
|
+
<span>·</span>
|
|
176
|
+
<a href="https://orquesta.live/dashboard" target="_blank" rel="noopener">Dashboard</a>
|
|
177
|
+
</footer>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
149
180
|
<script src="app.js"></script>
|
|
150
181
|
</body>
|
|
151
182
|
</html>
|
package/dist/ui/public/style.css
CHANGED
|
@@ -57,31 +57,27 @@ body {
|
|
|
57
57
|
gap: 14px;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
.logo {
|
|
61
|
-
|
|
62
|
-
height: 36px;
|
|
63
|
-
background: var(--accent);
|
|
64
|
-
border-radius: 8px;
|
|
65
|
-
display: flex;
|
|
66
|
-
align-items: center;
|
|
67
|
-
justify-content: center;
|
|
68
|
-
font-weight: 700;
|
|
69
|
-
font-size: 18px;
|
|
70
|
-
color: white;
|
|
60
|
+
.logo-svg {
|
|
61
|
+
flex-shrink: 0;
|
|
71
62
|
}
|
|
72
63
|
|
|
73
64
|
.header h1 {
|
|
74
65
|
font-size: 22px;
|
|
75
|
-
font-weight:
|
|
66
|
+
font-weight: 700;
|
|
76
67
|
color: var(--text-primary);
|
|
77
|
-
letter-spacing: -0.
|
|
68
|
+
letter-spacing: -0.03em;
|
|
69
|
+
line-height: 1;
|
|
78
70
|
}
|
|
79
71
|
|
|
80
|
-
.
|
|
72
|
+
.brand-dot {
|
|
73
|
+
color: var(--accent);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.header-subtitle {
|
|
77
|
+
font-size: 12px;
|
|
81
78
|
color: var(--text-muted);
|
|
82
79
|
font-weight: 400;
|
|
83
|
-
|
|
84
|
-
margin-left: 10px;
|
|
80
|
+
margin-top: 2px;
|
|
85
81
|
}
|
|
86
82
|
|
|
87
83
|
.header-right {
|
|
@@ -151,35 +147,70 @@ body {
|
|
|
151
147
|
margin-top: 6px;
|
|
152
148
|
}
|
|
153
149
|
|
|
154
|
-
/* ──
|
|
155
|
-
.
|
|
156
|
-
display: flex;
|
|
157
|
-
gap: 16px;
|
|
150
|
+
/* ── Execution Modes ────────────────────────────────── */
|
|
151
|
+
.modes-section {
|
|
158
152
|
margin-bottom: 28px;
|
|
159
|
-
flex-wrap: wrap;
|
|
160
153
|
}
|
|
161
154
|
|
|
162
|
-
.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
155
|
+
.modes-title {
|
|
156
|
+
font-size: 12px;
|
|
157
|
+
font-weight: 600;
|
|
158
|
+
color: var(--text-muted);
|
|
159
|
+
text-transform: uppercase;
|
|
160
|
+
letter-spacing: 0.05em;
|
|
161
|
+
margin-bottom: 10px;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.status-row {
|
|
165
|
+
display: grid;
|
|
166
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
167
|
+
gap: 12px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.mode-card {
|
|
167
171
|
background: var(--bg-card);
|
|
168
172
|
border: 1px solid var(--border);
|
|
169
|
-
border-radius:
|
|
170
|
-
|
|
171
|
-
|
|
173
|
+
border-radius: var(--radius);
|
|
174
|
+
padding: 14px 16px;
|
|
175
|
+
transition: border-color 0.2s;
|
|
172
176
|
}
|
|
173
177
|
|
|
174
|
-
.
|
|
175
|
-
|
|
176
|
-
|
|
178
|
+
.mode-card.active {
|
|
179
|
+
border-color: var(--accent);
|
|
180
|
+
background: var(--accent-glow);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.mode-header {
|
|
184
|
+
display: flex;
|
|
185
|
+
align-items: center;
|
|
186
|
+
gap: 8px;
|
|
187
|
+
margin-bottom: 4px;
|
|
188
|
+
font-size: 14px;
|
|
189
|
+
color: var(--text-primary);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.mode-header .dot {
|
|
193
|
+
width: 8px;
|
|
194
|
+
height: 8px;
|
|
177
195
|
border-radius: 50%;
|
|
196
|
+
flex-shrink: 0;
|
|
178
197
|
}
|
|
179
198
|
|
|
180
|
-
.
|
|
181
|
-
.
|
|
182
|
-
.
|
|
199
|
+
.mode-header .dot.on { background: var(--green); box-shadow: 0 0 6px var(--green-glow); }
|
|
200
|
+
.mode-header .dot.off { background: #52525b; }
|
|
201
|
+
.mode-header .dot.warn { background: var(--yellow); }
|
|
202
|
+
|
|
203
|
+
.mode-desc {
|
|
204
|
+
font-size: 11px;
|
|
205
|
+
color: var(--text-muted);
|
|
206
|
+
margin-bottom: 6px;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.mode-status {
|
|
210
|
+
font-size: 12px;
|
|
211
|
+
color: var(--text-secondary);
|
|
212
|
+
font-family: 'SF Mono', 'Fira Code', monospace;
|
|
213
|
+
}
|
|
183
214
|
|
|
184
215
|
/* ── Actions Bar ────────────────────────────────────── */
|
|
185
216
|
.actions-bar {
|
|
@@ -610,6 +641,27 @@ body {
|
|
|
610
641
|
.health-grid { grid-template-columns: 1fr; }
|
|
611
642
|
}
|
|
612
643
|
|
|
644
|
+
/* ── Footer ─────────────────────────────────────────── */
|
|
645
|
+
.footer {
|
|
646
|
+
text-align: center;
|
|
647
|
+
padding: 32px 0 16px;
|
|
648
|
+
font-size: 12px;
|
|
649
|
+
color: var(--text-muted);
|
|
650
|
+
display: flex;
|
|
651
|
+
justify-content: center;
|
|
652
|
+
gap: 8px;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.footer a {
|
|
656
|
+
color: var(--text-secondary);
|
|
657
|
+
text-decoration: none;
|
|
658
|
+
transition: color 0.15s;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.footer a:hover {
|
|
662
|
+
color: var(--accent);
|
|
663
|
+
}
|
|
664
|
+
|
|
613
665
|
/* ── Animations ─────────────────────────────────────── */
|
|
614
666
|
@keyframes spin { to { transform: rotate(360deg); } }
|
|
615
667
|
.spinning { animation: spin 1s linear infinite; }
|