drove 0.1.2

Versioned, declarative agent workspaces
load("drove/reactors.star", "reactor")

scaffold = task(
    "scaffold",
    check = ["bash", ".context/bin/scaffold.sh", "--check"],
    run = ["bash", ".context/bin/scaffold.sh"],
    inputs = [".context/bin/scaffold.sh"],
)
protect_log = task(
    "protect-log",
    check = ["protect-log.sh", "--status"],
    run = ["protect-log.sh"],
    auto = False,
)

control = workspace("control", panes = [
    herdr.tab("coordinator", split = herdr.DOWN, ratios = [0.5], panes = [
        caller_pane("controller"),
        pane("eventlog", serve = ["eventlog-view.sh", "-f"]),
    ]),
    herdr.tab("monitor: system + agents", panes = [
        pane("agentmon", serve = any_of(["agentmon", "--since", "launch"], ["htop"])),
    ]),
])

maintenance = workspace("maintenance", panes = [
    herdr.tab("lazygit", panes = [pane("gitlog", serve = any_of(["lazygit"], ["bash"]))]),
    reactor("commit", agent = "cursor-committer", model = "composer-2.5-fast",
            script = "cursor-commit-reactor.sh"),
    reactor("doc-sync", agent = "doc-worker", model = "sonnet",
            script = "doc-sync-reactor.sh", after = ["commit-reactor"]),
])

files = workspace("files", panes = [
    herdr.tab("files", panes = [pane("spiceedit", serve = any_of(["spiceedit"], ["bash"]))]),
])

default = profile("default", workspaces = [control, maintenance, files], tasks = [scaffold, protect_log])
profile("core", extends = default, without = [files])
profile("monitoring", session = "drove-mon", workspaces = [control])