summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-03-08 21:09:02 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-03-08 21:09:02 +0000
commitc6e4f9bbfdaa83efc7b6931fb9cc8c39efe44fd3 (patch)
tree0e5b87420ce48ad37b6b1b285579796bbca6e21f
parentf0329108dac294be199f53102afafbe1c5c9ab97 (diff)
feat(web): remove Agent and Model selection from UI
As the system now automatically classifies and assigns the best agent and model per task, manual selection is no longer required and has been removed from New Task, Edit Task, and Template forms.
-rw-r--r--web/app.js31
-rw-r--r--web/index.html18
2 files changed, 2 insertions, 47 deletions
diff --git a/web/app.js b/web/app.js
index 6da2f0e..f96f70e 100644
--- a/web/app.js
+++ b/web/app.js
@@ -519,21 +519,6 @@ function createEditForm(task) {
form.appendChild(makeField('Description', 'textarea', { name: 'description', rows: '2', value: task.description || '' }));
form.appendChild(makeField('Instructions', 'textarea', { name: 'instructions', rows: '4', value: a.instructions || '' }));
- const typeLabel = document.createElement('label');
- typeLabel.textContent = 'Agent Type';
- const typeSel = document.createElement('select');
- typeSel.name = 'type';
- for (const val of ['claude', 'gemini']) {
- const opt = document.createElement('option');
- opt.value = val;
- opt.textContent = val.charAt(0).toUpperCase() + val.slice(1);
- if (val === (a.type || 'claude')) opt.selected = true;
- typeSel.appendChild(opt);
- }
- typeLabel.appendChild(typeSel);
- form.appendChild(typeLabel);
-
- form.appendChild(makeField('Model', 'input', { type: 'text', name: 'model', value: a.model || 'sonnet' }));
form.appendChild(makeField('Project Directory', 'input', { type: 'text', name: 'project_dir', value: a.project_dir || a.working_dir || '', placeholder: '/path/to/repo' }));
form.appendChild(makeField('Max Budget (USD)', 'input', { type: 'number', name: 'max_budget_usd', step: '0.01', value: a.max_budget_usd != null ? String(a.max_budget_usd) : '1.00' }));
form.appendChild(makeField('Timeout', 'input', { type: 'text', name: 'timeout', value: formatDurationForInput(task.timeout) || '15m', placeholder: '15m' }));
@@ -584,8 +569,6 @@ async function handleEditSave(taskId, form, saveBtn) {
name: get('name'),
description: get('description'),
agent: {
- type: get('type'),
- model: get('model'),
instructions: get('instructions'),
project_dir: get('project_dir'),
max_budget_usd: parseFloat(get('max_budget_usd')),
@@ -1066,14 +1049,12 @@ function buildValidatePayload() {
const f = document.getElementById('task-form');
const name = f.querySelector('[name="name"]').value;
const instructions = f.querySelector('[name="instructions"]').value;
- const project_dir = f.querySelector('[name="project_dir"]').value;
- const model = f.querySelector('[name="model"]').value;
- const type = f.querySelector('[name="type"]').value;
+ const project_dir = f.querySelector('#project-select').value;
const allowedToolsEl = f.querySelector('[name="allowed_tools"]');
const allowed_tools = allowedToolsEl
? allowedToolsEl.value.split(',').map(s => s.trim()).filter(Boolean)
: [];
- return { name, agent: { type, instructions, project_dir, model, allowed_tools } };
+ return { name, agent: { instructions, project_dir, allowed_tools } };
}
function renderValidationResult(result) {
@@ -1195,8 +1176,6 @@ async function createTask(formData) {
name: formData.get('name'),
description: '',
agent: {
- type: formData.get('type'),
- model: formData.get('model'),
instructions: formData.get('instructions'),
project_dir: workingDir,
max_budget_usd: parseFloat(formData.get('max_budget_usd')),
@@ -1240,8 +1219,6 @@ async function saveTemplate(formData) {
name: formData.get('name'),
description: formData.get('description'),
agent: {
- type: formData.get('type'),
- model: formData.get('model'),
instructions: formData.get('instructions'),
project_dir: formData.get('project_dir'),
max_budget_usd: parseFloat(formData.get('max_budget_usd')),
@@ -2106,10 +2083,6 @@ if (typeof document !== 'undefined') document.addEventListener('DOMContentLoaded
document.getElementById('new-project-input').value = pDir;
}
}
- if (result.agent && result.agent.model)
- f.querySelector('[name="model"]').value = result.agent.model;
- if (result.agent && result.agent.type)
- f.querySelector('[name="type"]').value = result.agent.type;
if (result.agent && result.agent.max_budget_usd != null)
f.querySelector('[name="max_budget_usd"]').value = result.agent.max_budget_usd;
if (result.timeout)
diff --git a/web/index.html b/web/index.html
index ae6c6d2..ad79cee 100644
--- a/web/index.html
+++ b/web/index.html
@@ -79,15 +79,6 @@
</button>
<div id="validate-result" hidden></div>
</div>
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
- <label>Agent Type
- <select name="type">
- <option value="claude" selected>Claude</option>
- <option value="gemini">Gemini</option>
- </select>
- </label>
- <label>Model <input name="model" value="sonnet" placeholder="e.g. sonnet, gemini-2.0-flash"></label>
- </div>
<label>Max Budget (USD) <input name="max_budget_usd" type="number" step="0.01" value="1.00"></label>
<label>Timeout <input name="timeout" value="15m"></label>
<label>Priority
@@ -109,15 +100,6 @@
<h2>New Template</h2>
<label>Name <input name="name" required></label>
<label>Description <textarea name="description" rows="2"></textarea></label>
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
- <label>Agent Type
- <select name="type">
- <option value="claude" selected>Claude</option>
- <option value="gemini">Gemini</option>
- </select>
- </label>
- <label>Model <input name="model" value="sonnet" placeholder="e.g. sonnet, gemini-2.0-flash"></label>
- </div>
<label>Instructions <textarea name="instructions" rows="6" required></textarea></label>
<label>Project Directory <input name="project_dir" placeholder="/path/to/repo"></label>
<label>Max Budget (USD) <input name="max_budget_usd" type="number" step="0.01" value="1.00"></label>