Repository navigation
feat(cli): agent ok reports whether Taskless is out of date - #606
Conversation
|
@claude /review |
|
Claude finished @theCodeDrift's task in 4m 3s —— View job Review completeReview mode: incremental — read 0 prior review thread(s) before reviewing.
Findings[New] Real network call in a unit test ( [New] Leftover stale doc comment ( What looked solid
|
|
@claude /review |
|
Claude finished @theCodeDrift's task in 2m 23s —— View job Review completeReview mode: incremental — read 2 prior review thread(s) before reviewing. Both prior threads are unresolved and carry no
Findings[Unchanged since last review] Real network call in a unit test ( [Unchanged since last review] Leftover stale doc comment ( Nothing new was found beyond these two still-open items. The rest of the diff — |
Both findings are fixed in 4ec21c2. Every — AI Coding Agent |
taskless agent okis the first Taskless command of every session, so it is where an agent learns whether the environment needs updating. It is now a recipe, and a localcheckreports the same thing.What changes
agent okis a recipe (packages/cli/src/agent/ok.md). It renders the standard header and the one-command-per-call paragraph, but not the fetch-time directive, because it runs once per session. Its body is one of two passages, filled in from the state measured when it's fetched:!in Claude Code, or in another terminal), not to run them, and to runagent okagain once the user has.src/install/freshness.ts, shared byagent okandcheck:@taskless/clior@taskless/cli-nightly).inforeports.infoandinitreport, with the same wording.src/install/latest-version.ts): it asks only the npm registry's dist-tags endpoint, with a 1s timeout. The answer is accepted only if it's a strict semantic version, because it ends up in a command the user runs. If the lookup fails it says nothing. It's skipped in CI, whenNO_UPDATE_NOTIFIERis set, and onselfbuilds. A jsDelivr race was measured and rejected, so no other host is involved.check, outside CI, measures alongside the scan and adds one single-line notice, in text and in--jsonnotices. It never changes the results or the exit code, and underNO_UPDATE_NOTIFIERit adds nothing.NO_UPDATE_NOTIFIER=1, so no test reaches the registry. The lookup's own tests clear it and stubfetch.agent okreads.taskless/but never writes to it, and it always exits 0. The command line is unchanged, so the permission rulesinitwrites still match.Size
About 1600 lines added, roughly a third of them OpenSpec artifacts: the change itself plus the specs it merges on archive. The hand-written code and tests come in under the ~1200-line guideline.
Our own rules, reconciled and guarded
Running this change against our own repo showed the dogfood tree was behind. It recorded our rules against ast-grep 0.45.2 and Vale 3.18.0, and hadn't changed since 2026-08-29 (
869dd49a), while the CLI bundles 0.51.0 and 3.24.0. Nothing refused, becausepnpm clisetsTASKLESS_ALLOW_VERSION_MISMATCHES=1, which also lifts the engine gate. Sopnpm linthad been running the house-style rules on engines they were never reconciled against.updaterecipe from 0.11.0 to 0.13.4. None of our 14 rules has a shape the ledger flags.validateandverifypass on the bundled engines, andupdate --rulesstamped 0.13.4 with no rewrites needed. Only.taskless/taskless.jsonchanged.dogfood-scaffold-current.test.tsnow fails when our rules are recorded against engines the CLI doesn't bundle, or when an automatic rule rewrite is pending. The failure message names the fix. So the PR that bumps an engine has to reconcile our rules, the same way the existing check makes the PR that adds a migration apply it. I confirmed it fails on the oldtaskless.jsonwith the actionable message.This deliberately doesn't assert
reconcile.required, because that also turns true on every plain version bump, which would make the automatic Version Packages PR red on every release.Checks
pnpm typecheckandpnpm lintpass. The dogfoodcheckthat lint runs printed the new notice for this repo, which really is behind (it records CLI 0.11.2). That matchespnpm cli info.pnpm cli agent ok, run here and in an empty directory, renders the out-of-date and up-to-date passages respectively. Both exit 0, and the empty directory gets no.taskless/.OpenSpec change
agent-ok-update-noticeis archived on this branch.