Files
MOPAC/internal/intake/demo.go
T
mrcharles aefa73aa90 harness: LiteLLM client, Redmine intake, REPORT writeback, gated bash tool
OpenAI-compatible chat client for the LiteLLM proxy (base_url normalization,
Bearer auth, retry/backoff on 429/5xx/transport, usage accounting) - stdlib
http only. Intake lists issues in scope from /issues.json with the task
class read from a configurable custom field. Writeback lands each turn as
REPORT-<vertical>-<task>-<ts>.md plus REPORT-latest.md (atomic rename) with
model/tier/token telemetry. The bash tool ports maki's permission semantics
without tree-sitter: segment-by-segment compound-command checks, deny beats
allow, word-boundary "cmd *" matching, $()/backtick/subshell denied, output
truncation, per-command timeout with process-group cleanup.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-28 19:20:57 -05:00

20 lines
515 B
Go

package intake
import (
"git.knownelement.com/reachableceo/MOPAC/harness/internal/config"
"git.knownelement.com/reachableceo/MOPAC/harness/internal/task"
)
// DemoTask builds the MVP demo issue from the [demo] config section: the
// smoke path that exercises the whole loop (intake -> turn -> REPORT) without
// needing a reachable Redmine.
func DemoTask(d config.DemoConfig) task.Task {
return task.Task{
ID: d.ID,
Subject: d.Subject,
Prompt: d.Prompt,
Class: d.Class,
Source: "demo",
}
}