findWorkflowInParents() and discoverProjectWorkflows() now check for .git
(directory or file) after scanning the current directory for workflows and
before moving to the parent. This prevents traversal from escaping the
repository root and picking up unrelated .workflow/ directories in parent
directories.
Both .git as a directory (normal clone) and .git as a file (git worktree)
are treated as boundaries.
Fixes#168
Closes#147. Changes default behavior of `uwf thread list` to show only
active threads (idle + running). Adds `--all` flag to opt into the
previous full-list behavior. Explicit `--status` still wins over `--all`.
- cmdThreadList gains a `showAll: boolean` parameter (default false)
- CLI registers `--all` option and passes it through
- Test suite includes new `default behavior (issue #147)` describe block
covering 9 scenarios; existing tests updated where they implicitly
relied on the old "show everything" behavior
- README, cli-reference, and usage-reference updated to document the
new default and the `--all` flag
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Re-runs the head step's agent with a supplementary prompt and replaces
the head step (rewires new step's prev to old head's prev) instead of
appending. Skips moderator re-route — the role of the head step is
reused.
Fixes#144
BREAKING: All workflow YAML files must update $START._ to $START.new + $START.resume.
The resume edge prompt replaces the previously hardcoded resume message.
- evaluate.ts: remove START_ROLE/START_STATUS special case, use $status like all nodes
- thread.ts: resolveEvaluateArgs passes 'new', cmdThreadResume passes 'resume'
- validate.ts: reject '_' everywhere (no longer valid)
- validate-semantic.ts: require 'new' and 'resume' edges on $START
- All workflow YAMLs and test fixtures updated
Fixes#101
When --agent is passed to uwf thread exec, try config.agents[alias]
first (e.g. 'hermes' → config.agents.hermes = {command: 'uwf-hermes'}),
then fall back to parseAgentOverride for raw command names.
Also change eval CLI default --agent from 'hermes' to 'uwf-hermes'
so it works without config alias lookup.
Refs #91
Instead of hardcoding workflow as empty string for completed/cancelled
threads, use resolveWorkflowFromHead to get the actual workflow hash
from the CAS chain, consistent with active thread handling.
Closes#46
uwf thread resume now supports completed threads:
- Evaluates workflow graph from $START to find first role
- Clears completed state (status → idle, completedAt → null)
- Builds resume prompt with supplement context
- Full CAS chain preserved for rich context
Suspended resume behavior unchanged.
Cancelled/idle threads still rejected.
425 tests pass.
Part of #39, closes#43
- store.ts: all threads in @uwf/thread/* with status tag
- Remove HISTORY_VAR_PREFIX, ThreadHistoryLine, deleteThread
- Add loadActiveThreads, loadHistoryThreads, completeThread
- Add migrateHistoryVarsToThreadVars migration
- thread.ts: replace deleteThread+addHistoryEntry with completeThread
- shared.ts: remove findHistoryEntry fallback
- Update all tests for unified storage model
422 tests pass.
Part of #39, closes#41, closes#42