agentgui 1.0.423 → 1.0.425
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/lib/ws-handlers-session.js +29 -2
- package/package.json +1 -1
- package/server.js +3 -94
|
@@ -111,7 +111,8 @@ export function register(router, deps) {
|
|
|
111
111
|
if (!agent || agent.protocol !== 'acp') return { subAgents: [] };
|
|
112
112
|
try {
|
|
113
113
|
const data = await acpFetch(agent.acpPort || 8080, '/agents/search', {});
|
|
114
|
-
|
|
114
|
+
const list = Array.isArray(data) ? data : (data?.agents || []);
|
|
115
|
+
return { subAgents: list.map(a => ({ id: a.agent_id || a.id, name: a.metadata?.ref?.name || a.name || a.agent_id || a.id })) };
|
|
115
116
|
} catch (_) { return { subAgents: [] }; }
|
|
116
117
|
});
|
|
117
118
|
|
|
@@ -143,12 +144,21 @@ export function register(router, deps) {
|
|
|
143
144
|
} catch (_) {}
|
|
144
145
|
try {
|
|
145
146
|
const data = await acpFetch(port, '/agents/search', {});
|
|
147
|
+
const list = Array.isArray(data) ? data : (data?.agents || []);
|
|
146
148
|
const allModels = new Map();
|
|
147
|
-
for (const a of
|
|
149
|
+
for (const a of list) {
|
|
150
|
+
const agentId = a.agent_id || a.id;
|
|
151
|
+
const name = a.metadata?.ref?.name || a.name || agentId;
|
|
152
|
+
if (agentId && name) allModels.set(agentId, name);
|
|
148
153
|
for (const m of (a.metadata?.models || a.specs?.models || [])) {
|
|
149
154
|
const id = m.id || m;
|
|
150
155
|
if (id) allModels.set(id, m.name || m.label || id);
|
|
151
156
|
}
|
|
157
|
+
try {
|
|
158
|
+
const desc = await acpFetch(port, `/agents/${agentId}/descriptor`);
|
|
159
|
+
const enumVals = desc?.specs?.config?.properties?.model?.enum || desc?.specs?.input?.properties?.model?.enum || [];
|
|
160
|
+
for (const v of enumVals) allModels.set(v, v);
|
|
161
|
+
} catch (_) {}
|
|
152
162
|
}
|
|
153
163
|
if (allModels.size > 0) {
|
|
154
164
|
const models = Array.from(allModels.entries()).map(([id, label]) => ({ id, label }));
|
|
@@ -157,6 +167,23 @@ export function register(router, deps) {
|
|
|
157
167
|
}
|
|
158
168
|
} catch (_) {}
|
|
159
169
|
}
|
|
170
|
+
const acpAgents = discoveredAgents.filter(x => x.protocol === 'acp');
|
|
171
|
+
for (const acpAgent of acpAgents) {
|
|
172
|
+
const port = acpAgent.acpPort || 8080;
|
|
173
|
+
try {
|
|
174
|
+
const desc = await acpFetch(port, `/agents/${p.id}/descriptor`);
|
|
175
|
+
if (desc) {
|
|
176
|
+
const enumVals = desc?.specs?.config?.properties?.model?.enum || desc?.specs?.input?.properties?.model?.enum || [];
|
|
177
|
+
if (enumVals.length > 0) {
|
|
178
|
+
const models = enumVals.map(v => ({ id: v, label: v }));
|
|
179
|
+
modelCache.set(p.id, { models, ts: Date.now() });
|
|
180
|
+
return { models };
|
|
181
|
+
}
|
|
182
|
+
const name = desc?.metadata?.ref?.name;
|
|
183
|
+
if (name) { const models = [{ id: p.id, label: name }]; modelCache.set(p.id, { models, ts: Date.now() }); return { models }; }
|
|
184
|
+
}
|
|
185
|
+
} catch (_) {}
|
|
186
|
+
}
|
|
160
187
|
try {
|
|
161
188
|
const models = await getModelsForAgent(p.id);
|
|
162
189
|
modelCache.set(p.id, { models, ts: Date.now() });
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -568,18 +568,7 @@ async function getModelsForAgent(agentId) {
|
|
|
568
568
|
let models = null;
|
|
569
569
|
|
|
570
570
|
if (agentId === 'claude-code') {
|
|
571
|
-
|
|
572
|
-
{ id: 'haiku', label: 'Haiku (Default)' },
|
|
573
|
-
{ id: 'sonnet', label: 'Sonnet' },
|
|
574
|
-
{ id: 'opus', label: 'Opus' },
|
|
575
|
-
];
|
|
576
|
-
|
|
577
|
-
const apiModels = await fetchClaudeModelsFromAPI();
|
|
578
|
-
if (apiModels) {
|
|
579
|
-
models = [...hardcodedModels, ...apiModels.slice(1)];
|
|
580
|
-
} else {
|
|
581
|
-
models = hardcodedModels;
|
|
582
|
-
}
|
|
571
|
+
models = await fetchClaudeModelsFromAPI();
|
|
583
572
|
} else if (agentId === 'gemini') {
|
|
584
573
|
models = await fetchGeminiModelsFromAPI();
|
|
585
574
|
}
|
|
@@ -632,88 +621,8 @@ async function getModelsForAgent(agentId) {
|
|
|
632
621
|
}
|
|
633
622
|
}
|
|
634
623
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
'claude-code': [
|
|
638
|
-
{ id: 'haiku', label: 'Haiku (Default)' },
|
|
639
|
-
{ id: 'sonnet', label: 'Sonnet' },
|
|
640
|
-
{ id: 'opus', label: 'Opus' }
|
|
641
|
-
],
|
|
642
|
-
'gemini': [
|
|
643
|
-
{ id: 'gemini-1.5-pro', label: 'Gemini 1.5 Pro' },
|
|
644
|
-
{ id: 'gemini-1.5-flash', label: 'Gemini 1.5 Flash' },
|
|
645
|
-
{ id: 'gemini-2.0-pro', label: 'Gemini 2.0 Pro' },
|
|
646
|
-
{ id: 'gemini-2.0-flash', label: 'Gemini 2.0 Flash' }
|
|
647
|
-
],
|
|
648
|
-
'opencode': [
|
|
649
|
-
{ id: 'claude-sonnet-4-20250514', label: 'Claude Sonnet 4' },
|
|
650
|
-
{ id: 'claude-haiku-4-20250514', label: 'Claude Haiku 4' },
|
|
651
|
-
{ id: 'gpt-4-turbo', label: 'GPT-4 Turbo' },
|
|
652
|
-
{ id: 'gemini-pro', label: 'Gemini Pro' }
|
|
653
|
-
],
|
|
654
|
-
'kilo': [
|
|
655
|
-
{ id: 'claude-sonnet-4', label: 'Claude Sonnet 4' },
|
|
656
|
-
{ id: 'gemini-2.0-flash', label: 'Gemini 2.0 Flash' },
|
|
657
|
-
{ id: 'gpt-4', label: 'GPT-4' }
|
|
658
|
-
],
|
|
659
|
-
'goose': [
|
|
660
|
-
{ id: 'default', label: 'Default Model' },
|
|
661
|
-
{ id: 'goose-pro', label: 'Goose Pro' }
|
|
662
|
-
],
|
|
663
|
-
'openhands': [
|
|
664
|
-
{ id: 'default', label: 'Default Model' },
|
|
665
|
-
{ id: 'openhands-1', label: 'OpenHands 1' }
|
|
666
|
-
],
|
|
667
|
-
'augment': [
|
|
668
|
-
{ id: 'default', label: 'Default Model' },
|
|
669
|
-
{ id: 'augment-pro', label: 'Augment Pro' }
|
|
670
|
-
],
|
|
671
|
-
'cline': [
|
|
672
|
-
{ id: 'default', label: 'Default Model' },
|
|
673
|
-
{ id: 'cline-1', label: 'Cline 1' }
|
|
674
|
-
],
|
|
675
|
-
'kimi': [
|
|
676
|
-
{ id: 'default', label: 'Default Model' },
|
|
677
|
-
{ id: 'kimi-pro', label: 'Kimi Pro' }
|
|
678
|
-
],
|
|
679
|
-
'qwen': [
|
|
680
|
-
{ id: 'default', label: 'Default Model' },
|
|
681
|
-
{ id: 'qwen-7b', label: 'Qwen 7B' },
|
|
682
|
-
{ id: 'qwen-14b', label: 'Qwen 14B' }
|
|
683
|
-
],
|
|
684
|
-
'codex': [
|
|
685
|
-
{ id: 'default', label: 'Default Model' },
|
|
686
|
-
{ id: 'code-davinci-002', label: 'Code Davinci 002' },
|
|
687
|
-
{ id: 'code-cushman-001', label: 'Code Cushman 001' }
|
|
688
|
-
],
|
|
689
|
-
'mistral': [
|
|
690
|
-
{ id: 'default', label: 'Default Model' },
|
|
691
|
-
{ id: 'mistral-small', label: 'Mistral Small' },
|
|
692
|
-
{ id: 'mistral-medium', label: 'Mistral Medium' },
|
|
693
|
-
{ id: 'mistral-large', label: 'Mistral Large' }
|
|
694
|
-
],
|
|
695
|
-
'kiro': [
|
|
696
|
-
{ id: 'default', label: 'Default Model' },
|
|
697
|
-
{ id: 'kiro-1', label: 'Kiro 1' }
|
|
698
|
-
],
|
|
699
|
-
'fast-agent': [
|
|
700
|
-
{ id: 'default', label: 'Default Model' },
|
|
701
|
-
{ id: 'fast-agent-1', label: 'Fast Agent 1' }
|
|
702
|
-
]
|
|
703
|
-
};
|
|
704
|
-
|
|
705
|
-
if (fallbackModels[agentId]) {
|
|
706
|
-
const models = fallbackModels[agentId];
|
|
707
|
-
modelCache.set(agentId, { models, timestamp: Date.now() });
|
|
708
|
-
return models;
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
// Default fallback for any other agent
|
|
712
|
-
const defaultFallback = [
|
|
713
|
-
{ id: 'default', label: 'Default Model' }
|
|
714
|
-
];
|
|
715
|
-
modelCache.set(agentId, { models: defaultFallback, timestamp: Date.now() });
|
|
716
|
-
return defaultFallback;
|
|
624
|
+
modelCache.set(agentId, { models: [], timestamp: Date.now() });
|
|
625
|
+
return [];
|
|
717
626
|
}
|
|
718
627
|
|
|
719
628
|
const GEMINI_SCOPES = [
|