Skip to content

v1.46.0 ·

One sentence instead of a cron job

The problem

The v1.45.0 driver only moves when something calls it: the user must write a JSON file by hand, understand a "tick", and install a cron job. The user wants to say "/aidlc do the next 3 items" and have it happen, pick settings from a list at setup, and stop it with one command. The driver also lives in this repository's scripts/, so no other project can use it.

How it could be solved

Three decisions shaped it, each about what one request to the agent should set in motion. The first was what keeps the work moving. A scheduler would have meant the very setup the user asked never to touch again, so a run is a single background process: it starts when the user asks and ends when its work is done. What this gives up is surviving a restart. Rebooting the machine ends the run, and asking again picks up where it left off.

The second was when a run is finished. Asked for three items, it starts no more than three and ends once each has been released or put on hold. Asked for everything, it ends when nothing is ready and nothing is still under way. An item whose release broke halfway counts as neither, so the run stays up but idle, and the status shows why. That can leave a run waiting until someone looks. But calling the run done, or trying the release again, would paper over a half-finished release, and that is a person's to sort out. Stopping works the other way round: it means stop now, not never again. Agents already working are left to finish, and the next request to run clears the stop.

The third was which settings setup may pick. Every question comes as a short list with one answer marked as recommended. One answer is never filled in quietly: how much the unattended agent may do on the machine. The full-access option says so in its name, and when there is no terminal to ask on and no answer was passed in, setup refuses instead of guessing. The release step became a setting too, so a project without this repository's release tools can still use it: items are merged and closed, and nothing is published.

How AIDLC solves it

Autopilot becomes a command anyone can run, not a script only this repository has. A user says "do the next 3 items" and the agent starts one background loop, then tells them how to watch it and how to stop it.

Minor, not patch: a new command (aidlc autopilot), a new init flag and two new skills. Nothing a user had is removed. scripts/autopilot.mjs goes, but it lived in this repository only and was never part of a published package.

Changes

  • packages/cli/src/autopilot/ — the v1.45.0 driver moved here from scripts/autopilot/ and ported to TypeScript (state.ts, driver.ts), plus presets.ts (setup choices) and run.ts (the background loop). The release step is now the configured release_command; with none, an item is merged, pulled and closed.
  • packages/cli/src/commands/autopilot.ts — setup, run, stop, status, tick.
  • packages/cli/src/commands/init.ts — --autopilot runs setup after init.
  • packages/cli/src/menu/roster.ts — the new command is accounted for.
  • packages/content/skills/84-autopilot.md, 85-autopilot-stop.md — the two skills; 03-entry-point.md routes to them.
  • scripts/autopilot-release.sh — this repository's release step; scripts/autopilot.mjs and scripts/autopilot/ removed.
  • Regenerated skills across all adapters and packages/website/src/data/cli-reference.json.