agent_harness -> rein_aharness (package + all imports), CLI command agent-harness -> rein-aharness, Docker image tag, k8s namespace/labels/ names, Makefile targets, deploy script env var/paths. In-repo identity strings (hub event source, metrics harness field, default assignee, argparse prog name, commit author identity) updated to match. Historical documents left untouched on purpose: docs/adr/ADR-001-agent-harness-architecture.md, docs/architecture.md (dated v0.1 snapshot), workplans/HARNESS-WP-0001 (completed under the old name), and the SSH host alias "forgejo-agent-harness" (external ~/.ssh/config entry, not owned here). Verified: 47/47 tests pass, CLI runs correctly from a fresh venv, `make image` builds and the resulting container runs correctly. deploy/README.md gained an explicit rename cutover checklist for what this session cannot safely do unattended -- moving the host-side secrets dir and checkout on railiance01, and not deleting the old k8s namespace until the new one is confirmed working. The actual live cutover (running that checklist against the real Railiance deployment) is not attempted here -- real production surgery on binky-control's live automation, needs the operator present. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
85 lines
2.7 KiB
Markdown
85 lines
2.7 KiB
Markdown
# Task intake (HARNESS-WP-0001-T03)
|
|
|
|
activity-core emits tasks via IssueSink → `POST /issues/` on **issue-core**.
|
|
rein-aharness **consumes** them by polling the same service:
|
|
|
|
```
|
|
activity-core (cron/rule)
|
|
→ IssueCoreRestSink POST /issues/
|
|
→ issue-core backend (sqlite / gitea)
|
|
→ rein-aharness poll/claim GET+PATCH /issues/
|
|
→ run_task (profile + budget + persona + session)
|
|
→ PATCH close + hub progress + .kaizen/metrics
|
|
```
|
|
|
|
`TaskExecutorWorkflow` stays a stub (activity-core INTENT); execution lives here.
|
|
|
|
## Mail path (server / Railiance)
|
|
|
|
```
|
|
rein-aharness mail-scan # deterministic IMAP (AppRole)
|
|
rein-aharness mail-triage # llm-connect HTTP → JSON → apply mail-log + commit
|
|
```
|
|
|
|
Requires `LLM_CONNECT_URL` (e.g. in-cluster
|
|
`http://llm-connect.activity-core.svc.cluster.local:8080`). Optional:
|
|
`MAIL_TRIAGE_MODEL`, `MAIL_TRIAGE_MAX_TOKENS`, `MAIL_TRIAGE_MAX_ROWS`.
|
|
**No Claude CLI** on the host.
|
|
|
|
## issue-core worker API
|
|
|
|
| Method | Path | Role |
|
|
|--------|------|------|
|
|
| POST | `/issues/` | Ingest (activity-core) |
|
|
| GET | `/issues/?state=open&label=automated` | Poll queue |
|
|
| GET | `/issues/{id}` | Fetch one |
|
|
| PATCH | `/issues/{id}` | Claim (`in_progress` + assignee) or `closed` |
|
|
|
|
Auth: `Authorization: Bearer $ISSUE_CORE_API_KEY` or `X-API-Key`.
|
|
|
|
## CLI
|
|
|
|
```bash
|
|
export ISSUE_CORE_URL=http://127.0.0.1:8765 # or in-cluster service
|
|
export ISSUE_CORE_API_KEY=…
|
|
export AGENT_HARNESS_REPO_MAP='{"binky-control":"/home/tegwick/binky-control"}'
|
|
|
|
# Peek / claim without executing
|
|
rein-aharness poll
|
|
rein-aharness poll --no-claim
|
|
|
|
# Claim → run → close (or reopen on failure)
|
|
rein-aharness run --from-issue-core
|
|
|
|
# Local dev (unchanged)
|
|
rein-aharness run --task-file examples/task-hello-sandbox.json --no-hub
|
|
```
|
|
|
|
## Label filter
|
|
|
|
Default: issues must carry the **`automated`** label (matches activity-core
|
|
binky definitions). Override:
|
|
|
|
```bash
|
|
export AGENT_HARNESS_INTAKE_LABELS=automated,harness # ALL required
|
|
```
|
|
|
|
## Agent + completion event mapping
|
|
|
|
From `activity_definition_id` or labels:
|
|
|
|
| Hint | Instance agent | completion_event_type |
|
|
|------|----------------|------------------------|
|
|
| `binky-daily-rhythm` / `rhythm` | `coach` | `binky_daily_brief` |
|
|
| `binky-weekly-mail-intake` / `mail-intake` | `mail-triage` | `binky_mail_intake` |
|
|
| `binky-weekly-review-prep` / `weekly-review` | `review-prep` | `binky_weekly_review` |
|
|
| else | `coach` | `executor_run` |
|
|
|
|
Instance policy (`tool_profile`, `budget`, `lane`) still comes from the
|
|
target repo's `.kaizen/schedule.yml`.
|
|
|
|
## Repo path resolution
|
|
|
|
1. Absolute/expanded path if it is already a git repo
|
|
2. `AGENT_HARNESS_REPO_MAP` JSON
|
|
3. Search `AGENT_HARNESS_REPO_ROOTS` (default `~:~/work`) for the slug
|