Merged
Conversation
a184849 to
ce1a245
Compare
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add semver dependency for version comparison - Add update-state.ts: cached update state with 4h TTL - Add update-check.ts: GitHub release checker with silent degradation - Add update-apply.ts: binary download/replace + VM update push - Add clawVersion/pendingClawUpdate fields to RegistryEntry - Export deployClaw from provision module Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add `clawctl update` command (check + download + re-exec for VM updates) - Add `--apply-vm` internal flag for the new binary to push claw to VMs - Add pre-command update hook with user prompt and per-version dismissal - Skip update check for update/daemon/completions commands and dev mode Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Runs migration chains for capabilities with version drift after a claw binary update. Skips capabilities where the version bump has no explicit migration (binary update is sufficient). Supports --json for structured output consumed by the host. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When a VM was stopped during a clawctl update, pendingClawUpdate is set. On next `clawctl start`, the new claw binary is pushed and `claw migrate` is run before notifying the daemon. Also removes unused tmpdir import from update-apply.ts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Running `clawctl-dev update` via bun would overwrite the bun binary itself with the clawctl release zip. Add a dev mode check (same as the pre-command hook) to bail early with a helpful message. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add Context section to TASK.md template. Expand Plan section to require design rationale (alternatives, trade-offs, rejected approaches) rather than just implementation steps. Clarify that Notes are for implementation-time discoveries, not design decisions. Add explicit guidance that plan mode plans must include all context needed for the TASK.md, since context is cleared before implementation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Keep the flag set so migrations are retried on next start. A future clawctl update may ship a fixed claw binary that unblocks it. This avoids bricking a setup if a migration has a bug. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The empty-array return from findMigrationPath is handled differently by runner.ts (falls through to re-provision) and migrate.ts (skips). Update the JSDoc to document both paths and note that explicit re-provisioning during updates should be a dedicated capability hook if ever needed, not a silent fallback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Simplify findMigrationPath JSDoc to just describe the function. Add a "Versioning and migrations" section to docs/capabilities.md that explains the two contexts (full provision vs binary update), when migrations are needed vs skipped, divergence risk, and the escape hatch (re-provision from scratch). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…Version - Move semver dependency from root to @clawctl/host-core where it's used - Wrap preAction update hook in try/catch so failures don't crash the user's command with a raw stack trace - Actually set clawVersion in the registry on successful update (was always left undefined despite the comment saying callers would set it) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5f764c0 to
9650088
Compare
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
clawctl updatedownloads the new binary, atomically replaces itself, then re-execs to push the new embeddedclawto running VMspendingClawUpdateflag, applied on nextclawctl startclaw migratecommand runs only capability migration chains (not full re-provisioning)clawctl-dev updatefrom overwriting the bun binarypendingClawUpdateset for retry — avoids bricking setupsTest plan
bun test)tsc --noEmit)eslint .)0.0.1, run any command, verify update prompt appearsclawctl updatedownloads, replaces, pushes claw to running VMpendingClawUpdateset, start, verify claw pushedclawctl-dev updateprints dev mode message and exits🤖 Generated with Claude Code