<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claudomator.git/internal/api/scripts.go, branch story/task-project-fk</title>
<subtitle>claudomator — task automation server
</subtitle>
<id>https://git.terst.org/claudomator.git/atom?h=story%2Ftask-project-fk</id>
<link rel='self' href='https://git.terst.org/claudomator.git/atom?h=story%2Ftask-project-fk'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/'/>
<updated>2026-03-14T00:39:22+00:00</updated>
<entry>
<title>feat: add agent selector to UI and support direct agent assignment</title>
<updated>2026-03-14T00:39:22+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-14T00:39:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=2ee988ccc04c09ceb6de7cdb75c94114e85d01b9'/>
<id>urn:sha1:2ee988ccc04c09ceb6de7cdb75c94114e85d01b9</id>
<content type='text'>
- Added an agent selector (Auto, Claude, Gemini) to the Start Next Task button.
- Updated the backend to pass query parameters as environment variables to scripts.
- Modified the executor pool to skip classification when a specific agent is requested.
- Added --agent flag to claudomator start command.
- Updated tests to cover the new functionality.
</content>
</entry>
<entry>
<title>api: generic ScriptRegistry; collapse script endpoints</title>
<updated>2026-03-08T20:40:21+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-08T20:40:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=181a37698410b68e00a885593b6f2b7acf21f4b4'/>
<id>urn:sha1:181a37698410b68e00a885593b6f2b7acf21f4b4</id>
<content type='text'>
Replace hardcoded handleStartNextTask/handleDeploy with a single
handleScript handler keyed by name from a ScriptRegistry map.
Scripts are now configured via Server.SetScripts() rather than
individual setter fields.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>recover: restore untracked work from recovery branch (no Gemini changes)</title>
<updated>2026-03-06T23:55:07+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-06T23:55:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=fd42a54d96fcd3342941caaeb61a4b0d5d3f1b4f'/>
<id>urn:sha1:fd42a54d96fcd3342941caaeb61a4b0d5d3f1b4f</id>
<content type='text'>
Recovered files with no Claude→Agent contamination:
- docs/adr/002-task-state-machine.md
- internal/api/logs.go/logs_test.go: task-level log streaming endpoint
- internal/api/validate.go/validate_test.go: POST /api/tasks/validate
- internal/api/server_test.go, storage/db_test.go: expanded test coverage
- scripts/reset-failed-tasks, reset-running-tasks
- web/app.js, index.html, style.css: frontend improvements
- web/test/: active-tasks-tab, delete-button, filter-tabs, sort-tasks tests

Manually applied from server.go diff (skipping Claude→Agent rename):
- taskLogStore field + validateCmdPath field
- DELETE /api/tasks/{id} route + handleDeleteTask
- GET /api/tasks/{id}/logs/stream route
- POST /api/tasks/{id}/resume route + handleResumeTimedOutTask
- handleCancelTask: allow cancelling PENDING/QUEUED tasks directly

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Rescue work from claudomator-work: question/answer, ratelimit, start-next-task</title>
<updated>2026-03-05T18:51:50+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-05T18:51:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=cf83444a9d341ae362e65a9f995100c69176887c'/>
<id>urn:sha1:cf83444a9d341ae362e65a9f995100c69176887c</id>
<content type='text'>
Merges features developed in /site/doot.terst.org/claudomator-work (a
stale clone) into the canonical repo:

- executor: QuestionRegistry for human-in-the-loop answers, rate limit
  detection and exponential backoff retry (ratelimit.go, question.go)
- executor/claude.go: process group isolation (SIGKILL orphans on cancel),
  os.Pipe for reliable stdout drain, backoff retry on rate limits
- api/scripts.go: POST /api/scripts/start-next-task handler
- api/server.go: startNextTaskScript field, answer-question route,
  BroadcastQuestion for WebSocket question events
- web: Cancel/Restart buttons, question banner UI, log viewer, validate
  section, WebSocket auto-connect

All tests pass.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
