- Removed priority lines from various TODO markdown files - Added new admin.md for grokkit admin tool - Updated README.md with new entry
73 lines
2.2 KiB
Markdown
73 lines
2.2 KiB
Markdown
# `grokkit agent` make integration
|
|
|
|
**Description**: Wrappers for Makefile targets (test/lint/build/cover). Enables Grok to run/verify builds mid-agent workflow (e.g., "edit, test, fix loops").
|
|
|
|
## Problem It Solves
|
|
|
|
Agent edits code but can't auto-verify compilation/tests—manual `make test` context-switch.
|
|
|
|
## Benefits
|
|
|
|
- **Automated verification**: Post-edit `make test` + analyze failures.
|
|
- **Dry-runs**: Preview `make build` output.
|
|
- **Safe**: Whitelisted targets, timeout, project-dir.
|
|
- **Parse results**: Extract pass/fail, coverage, errors for next agent step.
|
|
- **Workflow**: "Refactor → test → fix → commit".
|
|
|
|
## Agent Tool Examples
|
|
|
|
```
|
|
grokkit agent "Fix lint errors in cmd/, run make lint to verify, then test"
|
|
# Grok: edits → make lint → "All green!" → make test → fixes failures
|
|
```
|
|
|
|
```
|
|
grokkit agent "Benchmark changes before commit"
|
|
# Grok: make test-cover → "Coverage drop 2%" → optimizations
|
|
```
|
|
|
|
## High-Level Implementation
|
|
|
|
1. **Detect**: `test -f Makefile` or `make --version`.
|
|
2. **Tool schemas**:
|
|
- `run_target(target: string) → {output: string, success: bool}`
|
|
- `dry_run(target: string) → simulated_output`
|
|
3. **Wrappers** in `internal/tools/make.go`:
|
|
```go
|
|
func RunTarget(ctx context.Context, args map[string]any) (string, error)
|
|
```
|
|
4. **Agent integration**: Tool call → parse stdout → feed to Grok ("Tests failed: fix?").
|
|
5. **Safety**:
|
|
- Whitelist: test, lint, build, test-cover, install.
|
|
- 300s timeout.
|
|
- No sudo/privileged.
|
|
- Config: `[tools.make.enabled]`.
|
|
6. **Parsing**: Grep for "PASS/FAIL", coverage %.
|
|
|
|
## Flags / Config
|
|
|
|
| Key | Description |
|
|
|-----|-------------|
|
|
| `tools.make.enabled` | Enable make tools |
|
|
| `tools.make.timeout` | Per-target timeout (s) |
|
|
|
|
## Implementation Notes
|
|
|
|
- **Commands**: `make TARGET` (no args).
|
|
- **Extend agent**: Loop includes make calls post-edit.
|
|
- **Errors**: MakeError with output.
|
|
- **Tests**: Mock exec, table-driven (success/fail outputs).
|
|
- **Effort**: Low (~120 LOC). Std exec + parsing.
|
|
- **Prereq**: Makefile present.
|
|
|
|
## ROI
|
|
|
|
**High**. Agent verification loop:
|
|
|
|
| Stage | Covered |
|
|
|-------|---------|
|
|
| Edit | `agent` ✓ |
|
|
| Verify | **make** ← new |
|
|
| Repo/log | tea/cnotes |
|
|
|
|
Instant feedback elevates agent reliability. |