feat(cli): add --lock-timeout flag for SQLite busy_timeout control (#536)

Implements single-shot mode improvements for Windows and Docker scenarios:

- Add --lock-timeout global flag (default 30s, 0 = fail immediately)
- Add config file support: lock-timeout: 100ms
- Parameterize SQLite busy_timeout via NewWithTimeout() function
- In --sandbox mode: default lock-timeout to 100ms
- In --sandbox mode: skip FlushManager creation (no background goroutines)

This addresses bd.exe hanging on Windows and locking conflicts when
using beads across host + Docker containers.

Closes: bd-59er, bd-r4od, bd-dh8a

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-12-13 18:07:00 -08:00
parent 45328d6bfe
commit fc23dca7fb
4 changed files with 845 additions and 808 deletions

View File

@@ -83,6 +83,7 @@ func Initialize() error {
v.SetDefault("db", "")
v.SetDefault("actor", "")
v.SetDefault("issue-prefix", "")
v.SetDefault("lock-timeout", "30s")
// Additional environment variables (not prefixed with BD_)
// These are bound explicitly for backward compatibility