agentgui 1.0.938 → 1.0.940

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.
Files changed (45) hide show
  1. package/AGENTS.md +10 -0
  2. package/lib/claude-runner-agents.js +25 -0
  3. package/lib/ws-handlers-util.js +27 -1
  4. package/package.json +1 -1
  5. package/site/app/index.html +63 -4
  6. package/site/app/js/app.js +322 -103
  7. package/site/app/js/backend.js +24 -22
  8. package/site/app/vendor/anentrypoint-design/247420.css +5216 -0
  9. package/site/app/vendor/anentrypoint-design/247420.js +247 -0
  10. package/site/app/vendor/cdn/dompurify.js +9 -0
  11. package/site/app/vendor/cdn/fonts/1291de6d401a.woff2 +0 -0
  12. package/site/app/vendor/cdn/fonts/1ba89a87e0b8.woff2 +0 -0
  13. package/site/app/vendor/cdn/fonts/3644d51c507b.woff2 +0 -0
  14. package/site/app/vendor/cdn/fonts/4b91d2650dc2.woff2 +0 -0
  15. package/site/app/vendor/cdn/fonts/530d036ba64a.woff2 +0 -0
  16. package/site/app/vendor/cdn/fonts/570a2bdd8f8b.woff2 +0 -0
  17. package/site/app/vendor/cdn/fonts/5dd6d880fee9.woff2 +0 -0
  18. package/site/app/vendor/cdn/fonts/62de9143afe3.woff2 +0 -0
  19. package/site/app/vendor/cdn/fonts/64884efa2f11.woff2 +0 -0
  20. package/site/app/vendor/cdn/fonts/68cd7063be2e.woff2 +0 -0
  21. package/site/app/vendor/cdn/fonts/6c252abcf99b.woff2 +0 -0
  22. package/site/app/vendor/cdn/fonts/71e69e06516a.woff2 +0 -0
  23. package/site/app/vendor/cdn/fonts/9ea68c62083f.woff2 +0 -0
  24. package/site/app/vendor/cdn/fonts/c010f9b7d6b2.woff2 +0 -0
  25. package/site/app/vendor/cdn/fonts/d69723fc74be.woff2 +0 -0
  26. package/site/app/vendor/cdn/fonts/fonts.css +459 -0
  27. package/site/app/vendor/cdn/marked.js +8 -0
  28. package/site/app/vendor/cdn/prismjs/components/prism-bash.min.js +1 -0
  29. package/site/app/vendor/cdn/prismjs/components/prism-clike.min.js +1 -0
  30. package/site/app/vendor/cdn/prismjs/components/prism-core.min.js +1 -0
  31. package/site/app/vendor/cdn/prismjs/components/prism-css.min.js +1 -0
  32. package/site/app/vendor/cdn/prismjs/components/prism-diff.min.js +1 -0
  33. package/site/app/vendor/cdn/prismjs/components/prism-go.min.js +1 -0
  34. package/site/app/vendor/cdn/prismjs/components/prism-javascript.min.js +1 -0
  35. package/site/app/vendor/cdn/prismjs/components/prism-json.min.js +1 -0
  36. package/site/app/vendor/cdn/prismjs/components/prism-jsx.min.js +1 -0
  37. package/site/app/vendor/cdn/prismjs/components/prism-markdown.min.js +1 -0
  38. package/site/app/vendor/cdn/prismjs/components/prism-markup.min.js +1 -0
  39. package/site/app/vendor/cdn/prismjs/components/prism-python.min.js +1 -0
  40. package/site/app/vendor/cdn/prismjs/components/prism-rust.min.js +1 -0
  41. package/site/app/vendor/cdn/prismjs/components/prism-sql.min.js +1 -0
  42. package/site/app/vendor/cdn/prismjs/components/prism-toml.min.js +1 -0
  43. package/site/app/vendor/cdn/prismjs/components/prism-tsx.min.js +1 -0
  44. package/site/app/vendor/cdn/prismjs/components/prism-typescript.min.js +1 -0
  45. package/site/app/vendor/cdn/prismjs/components/prism-yaml.min.js +1 -0
@@ -203,12 +203,28 @@ function addSessionListener(sessionId, fn) {
203
203
 
204
204
  // ---------- Agents / models (WS) ----------
205
205
 
206
- export async function listModels(base) {
206
+ export async function listAgents(base) {
207
207
  const { agents } = await wsCall(base, 'agents.list', {});
208
- // Compatibility shape: app.js expects an array of {id, name?, ...}
209
208
  return agents || [];
210
209
  }
211
210
 
211
+ export async function listActiveChats(base) {
212
+ try { const { sessions } = await wsCall(base, 'chat.active', {}); return sessions || []; }
213
+ catch { return []; }
214
+ }
215
+
216
+ export async function cancelChat(base, sessionId) {
217
+ return wsCall(base, 'chat.cancel', { sessionId });
218
+ }
219
+
220
+ export async function listAgentModels(base, agentId) {
221
+ if (!agentId) return [];
222
+ try {
223
+ const { models } = await wsCall(base, 'agents.models', { id: agentId });
224
+ return models || [];
225
+ } catch { return []; }
226
+ }
227
+
212
228
  // ---------- Streaming chat (WS) ----------
213
229
  //
214
230
  // Yields events of shape:
@@ -218,29 +234,15 @@ export async function listModels(base) {
218
234
  // { type: 'error', error: '...' }
219
235
  //
220
236
  // Caller signature kept compatible with the previous HTTP/SSE impl.
221
- export async function* streamChat(base, { model, messages, signal, agentId, resumeSid }) {
222
- // The last user message is the prompt; agentgui's claude-runner doesn't
223
- // accept a full message list it spawns the agent for a single prompt.
224
- // For multi-turn, the agent's own session/resume handles continuity.
237
+ export async function* streamChat(base, { model, messages, signal, agentId, resumeSid, cwd }) {
238
+ // The last user message is the prompt; agentgui's claude-runner spawns the
239
+ // agent for a single prompt. Multi-turn continuity is the agent's own resume.
225
240
  const last = messages[messages.length - 1];
226
241
  const content = last?.content || '';
227
242
  if (!content) return;
228
243
 
229
- // app.js treats the "model" picker as the agent picker (selects from
230
- // agents.list ids). If no explicit agentId is given, model IS the agent.
231
- // If `model` looks like a real model id (has a slash), keep it as model
232
- // and default agent to claude-code.
233
- let resolvedAgentId = agentId;
234
- let resolvedModel = model;
235
- if (!resolvedAgentId) {
236
- if (!model || /^[a-z][a-z0-9-]*$/.test(model)) {
237
- // Bare slug — treat as agentId.
238
- resolvedAgentId = model || 'claude-code';
239
- resolvedModel = undefined;
240
- } else {
241
- resolvedAgentId = 'claude-code';
242
- }
243
- }
244
+ const resolvedAgentId = agentId || 'claude-code';
245
+ const resolvedModel = model || undefined;
244
246
 
245
247
  // Queue events here; the async iterator pulls from it.
246
248
  const queue = [];
@@ -252,7 +254,7 @@ export async function* streamChat(base, { model, messages, signal, agentId, resu
252
254
  // Kick off the chat on the server.
253
255
  let started;
254
256
  try {
255
- started = await wsCall(base, 'chat.sendMessage', { content, agentId: resolvedAgentId, model: resolvedModel, resumeSid });
257
+ started = await wsCall(base, 'chat.sendMessage', { content, agentId: resolvedAgentId, model: resolvedModel, resumeSid, cwd });
256
258
  } catch (e) {
257
259
  yield { type: 'error', error: e.message };
258
260
  return;