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.
@@ -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 = 'not installed'
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 = 'installed'
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 = 'not installed'
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
- <div class="logo">O</div>
17
- <h1>Agent Manager <span id="version">v0.0.0</span></h1>
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
- <!-- CLI Status -->
55
- <div class="status-row" id="status-row">
56
- <div class="status-chip">
57
- <span class="dot" id="claude-dot"></span>
58
- <span>Claude CLI: <strong id="claude-label">checking...</strong></span>
59
- </div>
60
- <div class="status-chip">
61
- <span class="dot" id="orquesta-dot"></span>
62
- <span>Orquesta CLI: <strong id="orquesta-label">checking...</strong></span>
63
- </div>
64
- <div class="status-chip">
65
- <span class="dot" id="node-dot"></span>
66
- <span>Node: <strong id="node-label">checking...</strong></span>
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 &mdash; 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 &mdash; 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>&middot;</span>
174
+ <a href="https://orquesta.live/docs" target="_blank" rel="noopener">Docs</a>
175
+ <span>&middot;</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>
@@ -57,31 +57,27 @@ body {
57
57
  gap: 14px;
58
58
  }
59
59
 
60
- .logo {
61
- width: 36px;
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: 600;
66
+ font-weight: 700;
76
67
  color: var(--text-primary);
77
- letter-spacing: -0.02em;
68
+ letter-spacing: -0.03em;
69
+ line-height: 1;
78
70
  }
79
71
 
80
- .header h1 span {
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
- font-size: 14px;
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
- /* ── Status Row (CLIs) ──────────────────────────────── */
155
- .status-row {
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
- .status-chip {
163
- display: inline-flex;
164
- align-items: center;
165
- gap: 6px;
166
- padding: 6px 14px;
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: 20px;
170
- font-size: 13px;
171
- color: var(--text-secondary);
173
+ border-radius: var(--radius);
174
+ padding: 14px 16px;
175
+ transition: border-color 0.2s;
172
176
  }
173
177
 
174
- .status-chip .dot {
175
- width: 7px;
176
- height: 7px;
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
- .status-chip .dot.on { background: var(--green); box-shadow: 0 0 6px var(--green-glow); }
181
- .status-chip .dot.off { background: var(--red); }
182
- .status-chip .dot.warn { background: var(--yellow); }
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; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orquesta-agent",
3
- "version": "0.2.54",
3
+ "version": "0.2.55",
4
4
  "description": "Local agent for Orquesta - connects your VM to the Orquesta dashboard",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",