5
1
Fork
You've already forked hence
0

feat/spawn-subsystem #5

Merged
hugooconnor merged 7 commits from feat/spawn-subsystem into main 2026年02月17日 12:19:48 +01:00

Implement hence spawn and hence watch commands for automated multi-agent task execution with git worktree isolation.

  • hence spawn — full lifecycle: claim task, create isolated git worktree, assemble context prompt, launch agent via PTY, evaluate results (confidence scoring + diff analysis), merge back into integration branch
  • hence watch — poll plan for state changes, optionally auto-spawn agents for ready tasks with --spawn
  • Provider registry with 21 agent CLIs sourced from emdash (claude, codex, qwen, gemini, cursor, copilot, amp, etc.) with per-provider field tests
  • SQLite-backed agent memory persistence (~/.hence/memory.db)
  • flock-based plan file locking with S-expression crash recovery
  • Lifecycle scripts support (.hence.json — setup, run, teardown, evaluate checks)
  • Context engineering pipeline: 4-layer priority (plan meta > agent memory > repo context > live events) with token budgeting
  • Merge coordinator with file-locked sequential merges and conflict detection

229 tests (173 unit + 31 existing integration + 25 new spawn integration). All additive — no existing code modified beyond wiring new commands into the CLI dispatch.

Spec: REQ-005-spawn.md

Implement hence spawn and hence watch commands for automated multi-agent task execution with git worktree isolation. - hence spawn — full lifecycle: claim task, create isolated git worktree, assemble context prompt, launch agent via PTY, evaluate results (confidence scoring + diff analysis), merge back into integration branch - hence watch — poll plan for state changes, optionally auto-spawn agents for ready tasks with --spawn - Provider registry with 21 agent CLIs sourced from emdash (claude, codex, qwen, gemini, cursor, copilot, amp, etc.) with per-provider field tests - SQLite-backed agent memory persistence (~/.hence/memory.db) - flock-based plan file locking with S-expression crash recovery - Lifecycle scripts support (.hence.json — setup, run, teardown, evaluate checks) - Context engineering pipeline: 4-layer priority (plan meta > agent memory > repo context > live events) with token budgeting - Merge coordinator with file-locked sequential merges and conflict detection 229 tests (173 unit + 31 existing integration + 25 new spawn integration). All additive — no existing code modified beyond wiring new commands into the CLI dispatch. Spec: REQ-005-spawn.md
Add `hence spawn` and `hence watch` commands for multi-agent task
execution with git worktree isolation, PTY-based agent management,
context engineering pipeline, and confidence-scored evaluation.
New modules:
- providers: 22+ agent registry with auto-detection
- container: git worktree isolation, PTY management, prompt delivery,
 lifecycle scripts
- context: 4-layer constructor, evaluator with diff analysis, merge
 coordinator with file-locked sequential merges
- afs: SQLite-backed agent memory persistence
- filelock: flock-based plan file locking with crash recovery
206 tests (150 unit + 31 existing integration + 25 new spawn integration)
Spec: REQ-005-spawn.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(providers): align registry with emdash source of truth
Some checks failed
ci/woodpecker/push/ci Pipeline failed
19a182c0ff
Remove fabricated provider fields that were not lifted from
emdash/src/shared/providers/registry.ts:
- claude: remove invented initial_prompt_flag "-p" (emdash has empty)
- 10 providers: clear use_keystroke_injection (only amp and opencode
 have it in emdash)
- continue-dev: rename ID to "continue" to match emdash
- aider: remove entirely (not in emdash registry)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 30 provider tests (21 per-provider field checks + 9 structural):
- Exact provider count (21) matches emdash registry
- All emdash IDs present, no extra providers added
- Only amp and opencode have keystroke injection
- Per-provider: cli, auto_approve_flag, initial_prompt_flag,
 resume_flag, default_args verified against emdash source
Update doc comments to remove reference to removed aider provider.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: add spawn and watch commands to README
Some checks failed
ci/woodpecker/push/ci Pipeline failed
f49a85ebf3
Update architecture diagram to show spawn/watch flow. Add Agent Spawn
section to commands table with all flags. Add spawn/watch usage examples.
Update LLM Agents section with automated spawn workflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
style: apply rustfmt formatting
Some checks failed
ci/woodpecker/push/ci Pipeline failed
95b5cc9875
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: resolve all CI lint errors (-D warnings)
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline failed
8ba437fd16
- Remove unused pub use re-exports in providers/mod.rs
- Add #[allow(dead_code)] for public APIs not yet wired internally
- Collapse nested if statements (clippy::collapsible_if)
- Use rfind instead of filter().last() (clippy::double_ended_iterator_last)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Merge branch 'main' into feat/spawn-subsystem
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
428382834d
hugooconnor deleted branch feat/spawn-subsystem 2026年02月17日 12:19:52 +01:00
Sign in to join this conversation.
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
anuna/hence!5
Reference in a new issue
anuna/hence
No description provided.
Delete branch "feat/spawn-subsystem"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?