summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/index.html11
-rw-r--r--web/test/start-next-task.test.mjs21
2 files changed, 28 insertions, 4 deletions
diff --git a/web/index.html b/web/index.html
index d56dcb3..19cba2c 100644
--- a/web/index.html
+++ b/web/index.html
@@ -11,8 +11,15 @@
<body>
<header>
<h1>Claudomator</h1>
- <button id="btn-start-next" class="btn-secondary">Start Next</button>
- <button id="btn-new-task" class="btn-primary">New Task</button>
+ <div class="header-actions">
+ <select id="select-agent" class="agent-selector">
+ <option value="auto">Auto</option>
+ <option value="claude">Claude</option>
+ <option value="gemini">Gemini</option>
+ </select>
+ <button id="btn-start-next" class="btn-secondary">Start Next</button>
+ <button id="btn-new-task" class="btn-primary">New Task</button>
+ </div>
</header>
<nav class="tab-bar">
<button class="tab active" data-tab="queue" title="Queue">⏳</button>
diff --git a/web/test/start-next-task.test.mjs b/web/test/start-next-task.test.mjs
index 6863f7e..eaf3087 100644
--- a/web/test/start-next-task.test.mjs
+++ b/web/test/start-next-task.test.mjs
@@ -9,8 +9,11 @@ import assert from 'node:assert/strict';
// Returns {output, exit_code} on HTTP 2xx
// Throws on HTTP error
-async function startNextTask(basePath, fetchFn) {
- const res = await fetchFn(`${basePath}/api/scripts/start-next-task`, { method: 'POST' });
+async function startNextTask(basePath, fetchFn, agent) {
+ const url = agent && agent !== 'auto'
+ ? `${basePath}/api/scripts/start-next-task?agent=${agent}`
+ : `${basePath}/api/scripts/start-next-task`;
+ const res = await fetchFn(url, { method: 'POST' });
if (!res.ok) {
let msg = `HTTP ${res.status}`;
try { const body = await res.json(); msg = body.error || msg; } catch {}
@@ -35,6 +38,20 @@ describe('startNextTask', () => {
assert.equal(captured.opts.method, 'POST');
});
+ it('appends agent as query parameter when provided', async () => {
+ let captured = null;
+ const mockFetch = (url, opts) => {
+ captured = { url, opts };
+ return Promise.resolve({
+ ok: true,
+ json: () => Promise.resolve({ output: 'claudomator start --agent claude abc-123\n', exit_code: 0 }),
+ });
+ };
+
+ await startNextTask('http://localhost:8484', mockFetch, 'claude');
+ assert.equal(captured.url, 'http://localhost:8484/api/scripts/start-next-task?agent=claude');
+ });
+
it('returns output and exit_code on success', async () => {
const mockFetch = () => Promise.resolve({
ok: true,