agentgui 1.0.461 → 1.0.463

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.
@@ -28,7 +28,7 @@ const cmpVer = (v1, v2) => { const [a,b] = [v1?.split('.')?.map(Number) || [], v
28
28
  export function checkToolStatus(toolId) {
29
29
  const tool = getTool(toolId);
30
30
  if (!tool) return null;
31
- const installed = isInstalled(tool) && fs.existsSync(tool.marker);
31
+ const installed = isInstalled(tool) || fs.existsSync(tool.marker);
32
32
  const version = installed ? detectVersion(tool.binary) : null;
33
33
  return { toolId, installed, version, timestamp: Date.now() };
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.461",
3
+ "version": "1.0.463",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "server.js",
package/static/index.html CHANGED
@@ -3169,7 +3169,9 @@
3169
3169
  </div>
3170
3170
  <div class="voice-input-section">
3171
3171
  <div class="voice-input-wrapper">
3172
- <select class="agent-selector voice-agent-selector" data-voice-agent-selector title="Select agent"></select>
3172
+ <select class="agent-selector voice-agent-selector" data-voice-agent-selector title="Select agent"></select>
3173
+ <select class="agent-selector voice-cli-selector" data-voice-cli-selector title="Select CLI tool"></select>
3174
+ <select class="agent-selector voice-model-selector" data-voice-model-selector title="Select model"></select>
3173
3175
  <div class="voice-transcript" id="voiceTranscript" data-placeholder="Tap mic and speak..."></div>
3174
3176
  <button class="voice-mic-btn" id="voiceMicBtn" title="Toggle recording" aria-label="Voice input">
3175
3177
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
@@ -360,7 +360,9 @@ class AgentGUIClient {
360
360
  this.ui.sendButton = document.querySelector('[data-send-button]');
361
361
  this.ui.cliSelector = document.querySelector('[data-cli-selector]');
362
362
  this.ui.agentSelector = document.querySelector('[data-agent-selector]');
363
- this.ui.modelSelector = document.querySelector('[data-model-selector]');
363
+ this.ui.modelSelector = document.querySelector('[data-model-selector]');
364
+ this.ui.voiceCliSelector = document.querySelector('[data-voice-cli-selector]');
365
+ this.ui.voiceModelSelector = document.querySelector('[data-voice-model-selector]');
364
366
 
365
367
  if (this.ui.cliSelector) {
366
368
  this.ui.cliSelector.addEventListener('change', () => {
@@ -1576,7 +1578,11 @@ class AgentGUIClient {
1576
1578
  this.wsManager.sendMessage({ type: 'subscribe', conversationId });
1577
1579
  }
1578
1580
 
1579
- const streamBody = { id: conversationId, content: prompt, agentId };
1581
+ let finalPrompt = prompt;
1582
+ if (subAgent && agentId === 'claude-code') {
1583
+ finalPrompt = `use ${subAgent} subagent to ${prompt}`;
1584
+ }
1585
+ const streamBody = { id: conversationId, content: finalPrompt, agentId };
1580
1586
  if (model) streamBody.model = model;
1581
1587
  if (subAgent) streamBody.subAgent = subAgent;
1582
1588
  let result;
@@ -1980,7 +1986,6 @@ class AgentGUIClient {
1980
1986
  this.loadModelsForAgent(agentId).then(() => {
1981
1987
  if (this.ui.modelSelector && model) {
1982
1988
  this.ui.modelSelector.value = model;
1983
- this.ui.modelSelector.disabled = true;
1984
1989
  }
1985
1990
  });
1986
1991
  }
@@ -26,7 +26,7 @@
26
26
  cursor: '#e6edf3',
27
27
  selectionBackground: '#3b4455'
28
28
  },
29
- convertEol: false,
29
+ convertEol: true,
30
30
  scrollback: 5000
31
31
  });
32
32
  fitAddon = new FitAddon.FitAddon();
@@ -125,6 +125,22 @@
125
125
  if (mainSelector.value) voiceSelector.value = mainSelector.value;
126
126
  }
127
127
 
128
+ function syncVoiceCliSelector() {
129
+ var voiceCliSelector = document.querySelector('[data-voice-cli-selector]');
130
+ var mainCliSelector = document.querySelector('[data-cli-selector]');
131
+ if (!voiceCliSelector || !mainCliSelector) return;
132
+ voiceCliSelector.innerHTML = mainCliSelector.innerHTML;
133
+ if (mainCliSelector.value) voiceCliSelector.value = mainCliSelector.value;
134
+ }
135
+
136
+ function syncVoiceModelSelector() {
137
+ var voiceModelSelector = document.querySelector('[data-voice-model-selector]');
138
+ var mainModelSelector = document.querySelector('[data-model-selector]');
139
+ if (!voiceModelSelector || !mainModelSelector) return;
140
+ voiceModelSelector.innerHTML = mainModelSelector.innerHTML;
141
+ if (mainModelSelector.value) voiceModelSelector.value = mainModelSelector.value;
142
+ }
143
+
128
144
  function setupAgentSelector() {
129
145
  var voiceSelector = document.querySelector('[data-voice-agent-selector]');
130
146
  if (!voiceSelector) return;
@@ -139,6 +155,36 @@
139
155
  });
140
156
  }
141
157
  window.addEventListener('agents-loaded', syncVoiceSelector);
158
+
159
+ var mainCliSelector = document.querySelector('[data-cli-selector]');
160
+ if (mainCliSelector) {
161
+ syncVoiceCliSelector();
162
+ mainCliSelector.addEventListener('change', function() {
163
+ var voiceCliSelector = document.querySelector('[data-voice-cli-selector]');
164
+ if (voiceCliSelector) voiceCliSelector.value = mainCliSelector.value;
165
+ });
166
+ var voiceCliSelector = document.querySelector('[data-voice-cli-selector]');
167
+ if (voiceCliSelector) {
168
+ voiceCliSelector.addEventListener('change', function() {
169
+ mainCliSelector.value = voiceCliSelector.value;
170
+ });
171
+ }
172
+ }
173
+
174
+ var mainModelSelector = document.querySelector('[data-model-selector]');
175
+ if (mainModelSelector) {
176
+ syncVoiceModelSelector();
177
+ mainModelSelector.addEventListener('change', function() {
178
+ var voiceModelSelector = document.querySelector('[data-voice-model-selector]');
179
+ if (voiceModelSelector) voiceModelSelector.value = mainModelSelector.value;
180
+ });
181
+ var voiceModelSelector = document.querySelector('[data-voice-model-selector]');
182
+ if (voiceModelSelector) {
183
+ voiceModelSelector.addEventListener('change', function() {
184
+ mainModelSelector.value = voiceModelSelector.value;
185
+ });
186
+ }
187
+ }
142
188
  }
143
189
 
144
190
  function setupTTSToggle() {