Skip to content

refactor: consolidate daemon/autonomous into squads run #587

@kokevidaurre

Description

@kokevidaurre

Problem

Three execution systems that don't compose:

  • daemon.ts (488 lines) — dead code, never registered
  • autonomous.ts (796 lines) — cron-based daemon, no intelligence, no cognition
  • runAutopilot() in run.ts (~300 lines) — intelligent scoring, but foreground only

Solution

One command, two modes:

  • squads run — daemon mode (autonomous, intelligent scheduling, runs forever)
  • squads run <target> — single execution (one squad/agent, then exit)

Daemon mode (squads run)

Composes cron routines (from autonomous) + intelligence scoring (from autopilot):

every 60s tick:
  1. Evaluate cron routines from SQUAD.md → spawn matching
  2. Every N minutes (--interval): score all squads → dispatch top-scoring
  3. After each dispatch: grade outcomes, push cognition signals, check PR reviews
  4. Budget/quota gate before any spawn → auto-pause if exceeded

Flags

squads run                            # daemon: runs forever
squads run --once                     # daemon: one cycle, exit
squads run --interval 15 --budget 50  # daemon: custom settings
squads run --stop                     # stop running daemon
squads run --status                   # show daemon status
squads run --pause                    # pause without stopping
squads run engineering                # single: run squad, exit
squads run engineering/code-review    # single: run agent, exit

What to keep from each system

From autonomous.ts: cron evaluation, persistent cooldowns (JSON), detached daemon + PID, pause/resume + auto-pause, agent timeout enforcement, logging

From runAutopilot(): scoreSquads() intelligence, full squad loop dispatch (scanner→lead→worker→verifier), cognition cycle, role-based agent classification, conversation mode, budget tracking, Slack notifications

From daemon.ts: outcome grading (A-F), phantom detection (<30s = skip), PR review feedback loop

File changes

File Action
daemon.ts Delete (dead code)
autonomous.ts Delete (absorbed into run.ts)
run.ts Refactor: clean runAutopilot() + absorb cron/cooldowns/PID/pause
cli.ts Remove autonomous + daemon registration
cron.ts, squad-loop.ts, cognition.ts Keep as-is

Net impact

~1,284 lines deleted (488 + 796), ~200 lines added to run.ts. Net ~1,000 lines cleaner. One system, one mental model. Dispatch always via squads run <target> subprocess — full conversation depth, context injection, cognition signals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions