Commit Graph

34 Commits

Author SHA1 Message Date
723b7be84a change: send down proj context with pi tool/skills 2026-08-05 10:58:05 -04:00
bed74f9d33 Make /ralpi-reset select the loop to reset like resume 2026-08-03 20:18:54 -04:00
b9a12931fe fix: resume selection under-reports task totals with multiple loops
The resume prompt counted total/completed from progress.tasks, which only
records TOUCHED tasks (started/completed/failed) — never-started tasks were
silently missing, and file-checkbox completions weren't counted unless
markCompleted had run. With e.g. 10 tasks where 3 completed and 5 untouched,
it showed 3/5 done instead of 3/10 done.

- add countPRDResumeStats (src/utils.ts): total from parseTaskFile of the
  PRD source; completed = progress completions ∪ PRD checkbox completions,
  deduped by task id; failed from progress. Falls back to touched-task
  counts when the source file is missing/unparseable.
- selectPRDToResume (index.ts) uses the helper instead of Object.keys().
- tests/resume-stats.test.ts: 4 regression tests.

Includes pre-existing uncommitted changes: index.ts tab-reformat (matches
src/ style) and package.json version bump 0.4.2 -> 0.4.3.
2026-08-03 16:31:09 -04:00
f9b57ec2ed fix flaky resume behavior 2026-08-02 23:36:35 -04:00
9f1250d1a1 fix: ralpi-plan properly loads task-manager prompt 2026-08-02 16:43:08 -04:00
7253e51fb9 feat: use stored review on resume if interrupted 2026-07-31 09:57:51 -04:00
284b3720af breaking:drop command part path 2026-07-31 09:57:40 -04:00
d7c3962bc8 fix: include prompt in ralpi-plan 2026-07-30 08:39:02 -04:00
6223ac84a5 feat: register subcommands, finalize-on-resume, reuse loop snapshot
- Register /ralpi-run, /ralpi-plan, /ralpi-resume, /ralpi-reset as
  separate Pi commands (dash namespace). /ralpi kept as back-compat
  dispatcher.
- /ralpi-resume now reuses mode + loop options from loop-active.json
  so interrupted loops resume non-interactively (only prompts when no
  snapshot exists).
- Add finalizeCommittedWorktrees in worktree.ts; resumeLoop calls it at
  start to merge already-completed task branches into main (the classic
  interrupted-between-commit-and-merge crash window), leaving dirty/
  conflicted worktrees for re-run.
- Switch process.cwd() -> ctx.cwd in all command handlers.
2026-07-28 15:14:11 -04:00
a0973ae1d2 fix: resume no longer clears worktrees 2026-07-22 23:30:31 -04:00
74c9ead7af fix: review fires for all tasks — commit then review committed diff, merge on pass
Previous flow reviewed uncommitted changes, so when a task agent
self-committed its work the review was silently skipped (no uncommitted
changes → review loop body never entered). This caused reviews to fire
inconsistently across tasks.

New review-gated flow (when autoReview is on):
1. Execute task
2. Ensure committed — commit session fallback when the agent didn't
   self-commit (handles both self-commit and no-commit agents)
3. Review the COMPLETE task diff (baseRef..HEAD) captured before
   execution, so the reviewer sees all commits not just the latest
4. On fail → re-execute with feedback → commit → re-review (same
   baseRef, so reviewer sees complete state including fixes)
5. On pass → merge worktree (all changes already committed)

Commit is now mandated when autoReview is on (autoCommit forced true,
not asked at startup). autoCommit only asked when autoReview is off.

Add captureGitHead + getCommitRangeDiff helpers to utils.ts. Switch
review prompt from buildReviewPromptUncommitted to buildReviewPrompt
(reviewing committed changes, not uncommitted).
2026-07-22 18:29:29 -04:00
0ef540ed47 feat: review-gated loop triggers on autoReview alone, ask review before commit at startup
- Review now runs whenever autoReview is enabled (not only when both
  autoCommit && autoReview). On fail, the task re-executes with review
  feedback injected and loops until pass or maxReviewRetries exhausted.
- Commit after a passing review is gated by autoCommit; review-only mode
  leaves changes uncommitted for manual inspection.
- Remove legacy post-commit review path and unused imports
  (buildReviewPrompt, getLatestCommitDiff).
- Reorder selectLoopOptions: ask autoReview first, then saveReviews,
  then autoCommit (reworded to 'commit after a passing review' when
  review is enabled).
- Update types.ts doc comments and README to reflect new semantics.
2026-07-22 17:43:57 -04:00
9fcf944cb5 feat: per prd worktrees 2026-07-22 16:37:02 -04:00
0034272c54 feat: better branch titles 2026-07-22 11:17:24 -04:00
46da29ee22 feat: separate workspaces per parallel execution 2026-07-20 12:27:22 -04:00
519b12b3d9 follow-up restructure.
- loop until review pass
- review now comes prior to commit
2026-07-20 10:29:15 -04:00
6aa3f6bd9f feat: persist full review output to disk and render in expandable view
Review text was truncated to 500 chars in the chat message body with no
way to access the full content — once a review exceeded that limit it was
lost from the UI. Now the full review body is rendered in the expanded
(Ctrl+O) view like the implementation tool-call tree, and can optionally
be persisted to disk per-loop.

Changes:
- Add saveReviews config flag + reviewsDir path option
- Add loop-start prompt to opt into saving reviews to disk when
  auto-review is enabled (skipped when explicitly set in YAML)
- Pass full reviewText via message details instead of inlining a slice
- Extend ralpi-progress renderer to show full review body when expanded,
  dim hint to expand when collapsed
- Add saveReviewToFile() writing to .ralpi/reviews/<prdKey>/<taskId>.md,
  mirroring the per-loop reflections layout so many loops don't collide
2026-07-17 16:03:53 -04:00
087c64ff18 fix: context overflow, retry, and reflection isolation
- Cap commit diffs in review/commit prompts at 50KB to prevent
  context window overflow on follow-up sessions
- Skip skills catalog (noSkills) in commit/review follow-up sessions
  for leaner context
- Wire Pi's SettingsManager into runAgentSession so Pi's built-in
  retry (exponential backoff, provider retry) applies to ralpi
  sessions — removes ralpi's duplicate manual retry loop
- Remove maxRetries/retryDelayMs from ralpi config; rely on Pi's
  retry.* settings (with manual override support)
- Remove retries field from progress.json and incrementRetry() from
  ProgressTracker
- Add model failover to follow-up sessions (commit/review cycle
  through the model pool on connection errors)
- Namespace reflection files by PRD key under
  .ralpi/reflections/<prdKey>/ so task sets don't overwrite each
  other
- Skip loop-startup prompts for config fields explicitly set in YAML
- Remove (default) annotations from loop options prompts
- Default commitTimeoutMs/reviewTimeoutMs to 0 (inherit Pi defaults)
2026-07-17 09:02:44 -04:00
6c398eef64 live reporting commit requests, resume prints batching 2026-06-23 13:31:37 -04:00
85123b7755 fixed regressed parsing, tool sanitation 2026-06-08 20:34:16 -04:00
139bf3b3fb remove completed runs from live flow 2026-05-31 12:42:09 -04:00
424e2fa885 Add loop-active marker, YAML task file support, and auto-updating PRD checkboxes
- Persist loop-active state for widget re-instantiation after session reload
- Add YAML task file parsing and update support via yaml library
- Auto-update PRD source file checkboxes on task status changes
- Add batchRender callback for real-time parallel widget animation
- Normalize tabs-to-spaces indentation across source files
- Use padStart(2, '0') for ID formatting instead of hardcoded prefix
- Enable parallel execution for single-task DAG batches
2026-05-31 11:44:47 -04:00
e10ab719d0 stop manual registration 2026-05-31 09:11:29 -04:00
9f90ed4252 readme cleanup 2026-05-31 08:46:59 -04:00
3c01652b90 fix width exceeding, release prep 2026-05-31 08:19:21 -04:00
ab1e2eb430 inform on max configuration 2026-05-31 02:12:54 -04:00
925e37938b round robin 2026-05-31 01:57:52 -04:00
8e2e24d0e3 depend on pi defaults, and global yaml 2026-05-31 01:35:52 -04:00
ead5d9be3a reference updates 2026-05-30 23:54:11 -04:00
c7ab908bae proper parallelization 2026-05-30 20:46:05 -04:00
73d1ee1a47 dependency parsing broken 2026-05-30 20:35:02 -04:00
fcc0aa618e good! 2026-05-30 20:21:37 -04:00
919113430a ui cleanup 2026-05-30 20:05:18 -04:00
e6a8c8bedc almost 2026-05-30 19:37:17 -04:00