4 Commits

Author SHA1 Message Date
228eebf52b Implement P6 agent Run command: YAML parse → classify → execute with approval gates
- Full runbook execution loop: parse YAML, validate required variables, merge defaults
- Variable substitution via --var key=value CLI args
- Safety-gated execution: read-only auto-approved, modifying/destructive prompt on stdin
- Failure handling: abort, continue, retry with max_attempts
- Removed Verify subcommand (Ed25519 deferred to post-V1)
2026-03-01 04:15:25 +00:00
b41cdd1db9 Fix P6 agent: add serde_yaml dep, make modules public for integration tests 2026-03-01 03:13:26 +00:00
829e408e1e Add notification dispatchers (P3 Slack/Email/Webhook, P5 Slack), full YAML parser for P6
- P3 alert: NotificationDispatcher with Slack Block Kit, Resend email, generic webhook; severity-gated dispatch
- P5 cost: CostSlackNotifier with anomaly Block Kit (score, deviation, snooze/expected buttons)
- P6 run: Full YAML runbook parser with serde_yaml, variable substitution ({{var}}), failure actions, 7 tests
- P6 parser: validates non-empty steps, default timeout (300s), default abort on failure
2026-03-01 03:13:06 +00:00
57e7083986 Scaffold dd0c/run: Rust agent (classifier, executor, audit) + TypeScript SaaS
- Rust agent: clap CLI, command classifier (read-only/modifying/destructive), executor with approval gates, audit log entries
- Classifier: pattern-based safety classification for shell, AWS, kubectl, terraform/tofu commands
- 6 Rust tests: read-only, destructive, modifying, empty, terraform apply, tofu destroy
- SaaS backend: Fastify server, runbook CRUD API, approval API, Slack interactive handler
- Slack integration: signature verification, block_actions for approve/reject buttons
- PostgreSQL schema with RLS: runbooks, executions, audit_entries (append-only), agents
- Dual Dockerfiles: Rust multi-stage (agent), Node multi-stage (SaaS)
- Gitea Actions CI: Rust test+clippy, Node typecheck+test
- Fly.io config for SaaS
2026-03-01 03:03:29 +00:00