diff --git a/.beads/.gitignore b/.beads/.gitignore deleted file mode 100644 index eb82c48..0000000 --- a/.beads/.gitignore +++ /dev/null @@ -1,72 +0,0 @@ -# Dolt database (managed by Dolt, not git) -dolt/ - -# Runtime files -bd.sock -bd.sock.startlock -sync-state.json -last-touched -.exclusive-lock - -# Daemon runtime (lock, log, pid) -daemon.* - -# Interactions log (runtime, not versioned) -interactions.jsonl - -# Push state (runtime, per-machine) -push-state.json - -# Lock files (various runtime locks) -*.lock - -# Credential key (encryption key for federation peer auth — never commit) -.beads-credential-key - -# Local version tracking (prevents upgrade notification spam after git ops) -.local_version - -# Worktree redirect file (contains relative path to main repo's .beads/) -# Must not be committed as paths would be wrong in other clones -redirect - -# Sync state (local-only, per-machine) -# These files are machine-specific and should not be shared across clones -.sync.lock -export-state/ -export-state.json - -# Ephemeral store (SQLite - wisps/molecules, intentionally not versioned) -ephemeral.sqlite3 -ephemeral.sqlite3-journal -ephemeral.sqlite3-wal -ephemeral.sqlite3-shm - -# Dolt server management (auto-started by bd) -dolt-server.pid -dolt-server.log -dolt-server.lock -dolt-server.port -dolt-server.activity - -# Corrupt backup directories (created by bd doctor --fix recovery) -*.corrupt.backup/ - -# Backup data (auto-exported JSONL, local-only) -backup/ - -# Per-project environment file (Dolt connection config, GH#2520) -.env - -# Legacy files (from pre-Dolt versions) -*.db -*.db?* -*.db-journal -*.db-wal -*.db-shm -db.sqlite -bd.db -# NOTE: Do NOT add negation patterns here. -# They would override fork protection in .git/info/exclude. -# Config files (metadata.json, config.yaml) are tracked by git by default -# since no pattern above ignores them. diff --git a/.beads/README.md b/.beads/README.md deleted file mode 100644 index 50f281f..0000000 --- a/.beads/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Beads - AI-Native Issue Tracking - -Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code. - -## What is Beads? - -Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git. - -**Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads) - -## Quick Start - -### Essential Commands - -```bash -# Create new issues -bd create "Add user authentication" - -# View all issues -bd list - -# View issue details -bd show - -# Update issue status -bd update --status in_progress -bd update --status done - -# Sync with git remote -bd sync -``` - -### Working with Issues - -Issues in Beads are: -- **Git-native**: Stored in `.beads/issues.jsonl` and synced like code -- **AI-friendly**: CLI-first design works perfectly with AI coding agents -- **Branch-aware**: Issues can follow your branch workflow -- **Always in sync**: Auto-syncs with your commits - -## Why Beads? - -✨ **AI-Native Design** -- Built specifically for AI-assisted development workflows -- CLI-first interface works seamlessly with AI coding agents -- No context switching to web UIs - -🚀 **Developer Focused** -- Issues live in your repo, right next to your code -- Works offline, syncs when you push -- Fast, lightweight, and stays out of your way - -🔧 **Git Integration** -- Automatic sync with git commits -- Branch-aware issue tracking -- Intelligent JSONL merge resolution - -## Get Started with Beads - -Try Beads in your own projects: - -```bash -# Install Beads -curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash - -# Initialize in your repo -bd init - -# Create your first issue -bd create "Try out Beads" -``` - -## Learn More - -- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs) -- **Quick Start Guide**: Run `bd quickstart` -- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples) - ---- - -*Beads: Issue tracking that moves at the speed of thought* ⚡ diff --git a/.beads/config.yaml b/.beads/config.yaml deleted file mode 100644 index 4c3e774..0000000 --- a/.beads/config.yaml +++ /dev/null @@ -1,52 +0,0 @@ -# Beads Configuration File -# This file configures default behavior for all bd commands in this repository -# All settings can also be set via environment variables (BD_* prefix) -# or overridden with command-line flags - -# Issue prefix for this repository (used by bd init) -# If not set, bd init will auto-detect from directory name -# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc. -# issue-prefix: "" - -# Use no-db mode: load from JSONL, write back after each command -# When true, bd will use .beads/issues.jsonl as the source of truth -# instead of the Dolt database -# no-db: false - -# Enable JSON output by default -# json: false - -# Default actor for audit trails (overridden by BD_ACTOR or --actor) -# actor: "" - -# Debounce interval for auto-flush (can also use BEADS_FLUSH_DEBOUNCE) -# flush-debounce: "5s" - -# Export events (audit trail) to .beads/events.jsonl on each flush/sync -# When enabled, new events are appended incrementally using a high-water mark. -# Use 'bd export --events' to trigger manually regardless of this setting. -# events-export: false - -# Git branch for beads commits (bd sync will commit to this branch) -# IMPORTANT: Set this for team projects so all clones use the same sync branch. -# This setting persists across clones (unlike database config which is gitignored). -# Can also use BEADS_SYNC_BRANCH env var for local override. -# If not set, bd sync will require you to run 'bd config set sync.branch '. -# sync-branch: "beads-sync" - -# Multi-repo configuration (experimental - bd-307) -# Allows hydrating from multiple repositories and routing writes to the correct JSONL -# repos: -# primary: "." # Primary repo (where this database lives) -# additional: # Additional repos to hydrate from (read-only) -# - ~/beads-planning # Personal planning repo -# - ~/work-planning # Work planning repo - -# Integration settings (access with 'bd config get/set') -# These are stored in the database, not in this file: -# - jira.url -# - jira.project -# - linear.url -# - linear.api-key -# - github.org -# - github.repo diff --git a/.beads/dolt-backup-state.json b/.beads/dolt-backup-state.json deleted file mode 100644 index 6f38981..0000000 --- a/.beads/dolt-backup-state.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "last_sync": "2026-05-04T02:02:18.677980026Z", - "duration": "20.148657ms" -} \ No newline at end of file diff --git a/.beads/dolt-backup.json b/.beads/dolt-backup.json deleted file mode 100644 index af554a5..0000000 --- a/.beads/dolt-backup.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "backup_url": "file:///tmp/devloop-beads-backup", - "backup_name": "default", - "created_at": "2026-05-04T02:02:05.569697804Z" -} \ No newline at end of file diff --git a/.beads/hooks/post-checkout b/.beads/hooks/post-checkout deleted file mode 100755 index 9b5a906..0000000 --- a/.beads/hooks/post-checkout +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env sh -# bd-shim v1 -# bd-hooks-version: 0.53.0 -# -# bd (beads) post-checkout hook - thin shim -# -# This shim delegates to 'bd hooks run post-checkout' which contains -# the actual hook logic. This pattern ensures hook behavior is always -# in sync with the installed bd version - no manual updates needed. -# -# The 'bd hooks run' command supports: -# - Guard against frequent firing (only imports if JSONL changed) -# - Per-worktree state tracking -# - Dolt branch-then-merge pattern -# - Hook chaining configuration - -# Check if bd is available -if ! command -v bd >/dev/null 2>&1; then - # Silently skip - post-checkout is called frequently - exit 0 -fi - -exec bd hooks run post-checkout "$@" diff --git a/.beads/hooks/post-merge b/.beads/hooks/post-merge deleted file mode 100755 index e003aa6..0000000 --- a/.beads/hooks/post-merge +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env sh -# bd-shim v1 -# bd-hooks-version: 0.53.0 -# -# bd (beads) post-merge hook - thin shim -# -# This shim delegates to 'bd hooks run post-merge' which contains -# the actual hook logic. This pattern ensures hook behavior is always -# in sync with the installed bd version - no manual updates needed. -# -# The 'bd hooks run' command supports: -# - Branch-then-merge pattern for Dolt (cell-level conflict resolution) -# - Per-worktree state tracking -# - Hook chaining configuration - -# Check if bd is available -if ! command -v bd >/dev/null 2>&1; then - echo "Warning: bd command not found in PATH, skipping post-merge hook" >&2 - echo " Install bd: brew install beads" >&2 - echo " Or add bd to your PATH" >&2 - exit 0 -fi - -exec bd hooks run post-merge "$@" diff --git a/.beads/hooks/pre-commit b/.beads/hooks/pre-commit deleted file mode 100755 index 4dc9931..0000000 --- a/.beads/hooks/pre-commit +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env sh -# bd-shim v2 -# bd-hooks-version: 0.53.0 -# -# bd (beads) pre-commit hook — thin shim -# -# Delegates to 'bd hooks run pre-commit' which contains the actual hook logic. -# This pattern ensures hook behavior is always in sync with the installed -# bd version — no manual updates needed. -# -# The 'bd hooks run' command supports: -# - Per-worktree export state tracking -# - Dolt in-process export (no lock deadlocks) -# - Sync-branch routing -# - Hook chaining configuration - -# Check if bd is available -if ! command -v bd >/dev/null 2>&1; then - echo "Warning: bd command not found in PATH, skipping pre-commit hook" >&2 - echo " Install bd: brew install beads" >&2 - echo " Or add bd to your PATH" >&2 - exit 0 -fi - -exec bd hooks run pre-commit "$@" diff --git a/.beads/hooks/pre-push b/.beads/hooks/pre-push deleted file mode 100755 index 133c209..0000000 --- a/.beads/hooks/pre-push +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env sh -# bd-shim v1 -# bd-hooks-version: 0.53.0 -# -# bd (beads) pre-push hook - thin shim -# -# This shim delegates to 'bd hooks run pre-push' which contains -# the actual hook logic. This pattern ensures hook behavior is always -# in sync with the installed bd version - no manual updates needed. - -# Check if bd is available -if ! command -v bd >/dev/null 2>&1; then - echo "Warning: bd command not found in PATH, skipping pre-push hook" >&2 - echo " Install bd: brew install beads" >&2 - echo " Or add bd to your PATH" >&2 - exit 0 -fi - -exec bd hooks run pre-push "$@" diff --git a/.beads/hooks/prepare-commit-msg b/.beads/hooks/prepare-commit-msg deleted file mode 100755 index 316ab46..0000000 --- a/.beads/hooks/prepare-commit-msg +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env sh -# bd-shim v1 -# bd-hooks-version: 0.48.0 -# -# bd (beads) prepare-commit-msg hook - thin shim -# -# This shim delegates to 'bd hooks run prepare-commit-msg' which contains -# the actual hook logic. This pattern ensures hook behavior is always -# in sync with the installed bd version - no manual updates needed. -# -# Arguments: -# $1 = path to the commit message file -# $2 = source of commit message (message, template, merge, squash, commit) -# $3 = commit SHA-1 (if -c, -C, or --amend) - -# Check if bd is available -if ! command -v bd >/dev/null 2>&1; then - echo "Warning: bd command not found in PATH, skipping prepare-commit-msg hook" >&2 - echo " Install bd: brew install beads" >&2 - echo " Or add bd to your PATH" >&2 - exit 0 -fi - -exec bd hooks run prepare-commit-msg "$@" diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl deleted file mode 100644 index 646e929..0000000 --- a/.beads/interactions.jsonl +++ /dev/null @@ -1,7 +0,0 @@ -{"id":"int-7230a6ae","kind":"field_change","created_at":"2026-05-04T04:43:24.260954052Z","actor":"Daniel Vianna","issue_id":"devloop-hrb","extra":{"field":"status","new_value":"in_progress","old_value":"open"}} -{"id":"int-0600ed25","kind":"field_change","created_at":"2026-05-04T04:44:14.236762188Z","actor":"Daniel Vianna","issue_id":"devloop-hrb","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Documented in README and behavior reference"}} -{"id":"int-76f6d530","kind":"field_change","created_at":"2026-05-04T04:54:41.658928411Z","actor":"Daniel Vianna","issue_id":"devloop-a2l","extra":{"field":"status","new_value":"in_progress","old_value":"open"}} -{"id":"int-a662fcf5","kind":"field_change","created_at":"2026-05-04T04:55:43.073552254Z","actor":"Daniel Vianna","issue_id":"devloop-a2l","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"0.9.0 changelog section prepared for release"}} -{"id":"int-86654cff","kind":"field_change","created_at":"2026-05-04T05:04:02.094983141Z","actor":"Daniel Vianna","issue_id":"devloop-wmg","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Enabled main branch protection requiring pull requests and enforcing admins"}} -{"id":"int-3b68e9b9","kind":"field_change","created_at":"2026-05-04T05:04:29.856512342Z","actor":"Daniel Vianna","issue_id":"devloop-kdf","extra":{"field":"status","new_value":"in_progress","old_value":"open"}} -{"id":"int-0be816e4","kind":"field_change","created_at":"2026-05-04T05:04:47.817970487Z","actor":"Daniel Vianna","issue_id":"devloop-kdf","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Updated release workflow to softprops/action-gh-release v3.0.0"}} diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl deleted file mode 100644 index 748d73a..0000000 --- a/.beads/issues.jsonl +++ /dev/null @@ -1,14 +0,0 @@ -{"id":"devloop-0nx","title":"Define project docs, AGENTS, and roadmap","description":"Add README, PLAN, and repository-specific AGENTS guidance for the standalone tool.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:15:00Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T01:27:27Z","closed_at":"2026-03-24T01:27:27Z","close_reason":"Closed"} -{"id":"devloop-8km","title":"Implement config and workflow engine","description":"Load config, watch paths, classify events, and execute ordered workflows against named processes and hooks.","status":"closed","priority":2,"issue_type":"feature","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:15:00Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed","dependencies":[{"issue_id":"devloop-8km","depends_on_id":"devloop-0nx","type":"blocks","created_at":"2026-03-24T12:15:07Z","created_by":"Daniel Vianna","metadata":"{}"}]} -{"id":"devloop-c6l","title":"Polish 0.8.0 release docs and test ergonomics","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-04-08T07:12:58Z","created_by":"Daniel Vianna","updated_at":"2026-04-08T07:20:27Z","closed_at":"2026-04-08T07:20:27Z","close_reason":"Closed"} -{"id":"devloop-d81","title":"Move real client config out of devloop examples","description":"Keep only generic examples in devloop and move the working blog config into the client repository root.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:31:27Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:39:07Z","closed_at":"2026-03-24T02:39:07Z","close_reason":"Kept only generic examples in devloop and moved the working blog config into the client repo root."} -{"id":"devloop-dxz","title":"Use changelog-driven GitHub release notes and backfill old releases","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-04-08T08:18:49Z","created_by":"Daniel Vianna","updated_at":"2026-04-08T08:26:59Z","closed_at":"2026-04-08T08:26:59Z","close_reason":"Closed"} -{"id":"devloop-dzy","title":"Make client hook paths repo-relative","description":"Resolve devloop config command paths relative to the client repo or config, not the tool checkout.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:16:34Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:22:17Z","closed_at":"2026-03-24T02:22:17Z","close_reason":"Closed"} -{"id":"devloop-mml","title":"Address roborev findings on state ownership and client-specific URL composition","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:44:51Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:53:31Z","closed_at":"2026-03-24T02:53:31Z","close_reason":"Shared session state is now owned in memory, generic state templating replaced blog-specific derivation, redundant writes are skipped, and the review job was addressed."} -{"id":"devloop-nmu","title":"Add blog client example and verification","description":"Create example config/hooks for the blog repo and verify the tool runs against it.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:15:00Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed","dependencies":[{"issue_id":"devloop-nmu","depends_on_id":"devloop-8km","type":"blocks","created_at":"2026-03-24T12:15:07Z","created_by":"Daniel Vianna","metadata":"{}"}]} -{"id":"devloop-s2h","title":"Bootstrap configurable dev-loop engine MVP","description":"Create a standalone Rust CLI in /tmp/devloop with config-driven file watching, process supervision, workflows, hooks, and documentation. Use the blog repo as the first client.","status":"open","priority":2,"issue_type":"epic","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:14:54Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T01:14:54Z","dependencies":[{"issue_id":"devloop-s2h","depends_on_id":"devloop-nmu","type":"blocks","created_at":"2026-03-24T12:15:07Z","created_by":"Daniel Vianna","metadata":"{}"}]} -{"id":"devloop-ufx","title":"Add client adapter for dynamic tunnel url consumption","description":"The blog app still treats SITE_URL as startup-only state. Add a client-side integration pattern that reads devloop state dynamically so tunnel restarts affect rendered metadata.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:27:27Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed"} -{"id":"devloop-uog","title":"Add watcher regression smoke test and poll backend fallback","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-04-08T05:45:33Z","created_by":"Daniel Vianna","updated_at":"2026-04-08T06:46:22Z","closed_at":"2026-04-08T06:46:22Z","close_reason":"Closed"} -{"id":"devloop-vxg","title":"Support process-emitted state updates","description":"Long-running processes such as cloudflared need a first-class way to publish readiness and state into the engine instead of relying on wrapper scripts mutating the session file.","status":"closed","priority":2,"issue_type":"feature","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:27:27Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed"} -{"id":"devloop-w34","title":"Support workflow composition to reduce repeated setup steps","description":"Add a generic way for one workflow to reuse another so client configs can avoid duplicating repeated step sequences such as wait-for-tunnel plus templated write_state composition.","status":"closed","priority":3,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:53:31Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T03:01:13Z","closed_at":"2026-03-24T03:01:13Z","close_reason":"Added reusable run_workflow steps, validated nested workflow recursion and missing references, and updated the generic example."} -{"id":"devloop-y2l","title":"Fix repeated literal file edit watch flakiness","description":"A Rust integration smoke test now reproduces missed workflow triggers during repeated edits to the same watched file. Fix the watch pipeline so the smoke test passes deterministically without sleeps.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-04-08T06:23:10Z","created_by":"Daniel Vianna","updated_at":"2026-04-08T06:46:22Z","closed_at":"2026-04-08T06:46:22Z","close_reason":"Closed"} diff --git a/.beads/metadata.json b/.beads/metadata.json deleted file mode 100644 index 4d00e84..0000000 --- a/.beads/metadata.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "database": "dolt", - "backend": "dolt", - "dolt_mode": "embedded", - "dolt_database": "beads_devloop", - "project_id": "c77ed6d5-2ff6-43aa-aada-aab14edfcda0" -} \ No newline at end of file diff --git a/.claude/settings.json b/.claude/settings.json index 963a538..29432a1 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,26 +1,34 @@ { "hooks": { - "PreCompact": [ + "SessionEnd": [ { "hooks": [ { - "command": "bd prime", + "args": [ + "attention-hook", + "end" + ], + "command": "kata", "type": "command" } ], - "matcher": "" + "matcher": "logout|prompt_input_exit|bypass_permissions_disabled|other" } ], "SessionStart": [ { "hooks": [ { - "command": "bd prime", + "args": [ + "attention-hook", + "start" + ], + "command": "kata", "type": "command" } ], - "matcher": "" + "matcher": "startup|resume|clear" } ] } -} \ No newline at end of file +}