26 Commits

Author SHA1 Message Date
David Blass cfd38d82fc refactor delegation system, add PR summary comments, and improve code quality (#334)
* refactor delegation system and add PR summary comments

Delegation system:
- replace mode-based delegation with select_mode → delegate two-step flow
- orchestrator crafts self-contained subagent prompts (clean context — no system/repo/event instructions leak)
- add role-based tool filtering via FastMCP authenticate hook (?role=subagent hides orchestrator-only tools)
- add select_mode tool for orchestrator guidance per mode
- add ask_question tool for lightweight research subagents
- extract shared subagent lifecycle into subagent.ts (create, complete, stdout, instructions)
- route set_output to per-subagent state when activeSubagentId is set
- track per-subagent state (SubagentState Map) replacing boolean delegationActive flag
- capture and aggregate AgentUsage across all agents (claude, codex, gemini, opencode)
- write usage summary table to GitHub job summary
- block built-in subagent spawning (Task for Claude, Task(*) for Cursor)
- increase activity timeout from 60s to 300s (subagent thinking phases)
- fix gh CLI misguidance in system prompt — explicitly forbid usage

PR summary comments:
- add prSummaryComment trigger (DB schema + migrations + Zod + UI toggle)
- dispatch mini-effort summary job alongside PR review on pr.created
- add update_pull_request_body MCP tool
- add defaultEffort option to webhook dispatch

Hardening:
- rewrite delegate/selectMode tests with simulated state management
- add toolFiltering.test.ts for role extraction, canAccess, set_output routing
- remove non-null assertions for PULLFROG_TEMP_DIR (proper error throws)
- use fetchWithRetry for direct tarball downloads
- DRY fix for rate limit check in test runner

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: add type keyword to Effort import in handleWebhook.ts

Co-authored-by: Cursor <cursoragent@cursor.com>

* clean up delegation system, improve code quality across the codebase

- simplify delegate tool to instructions + effort params with subagent lifecycle in subagent.ts
- add select_mode and ask_question orchestrator-only tools with canAccess filtering
- replace delegate.test.ts/selectMode.test.ts with toolFiltering.test.ts (live MCP integration)
- add set_output routing for subagent context and AgentUsage tracking across all agents
- add PR summary comment trigger (schema, UI, webhook dispatch with silent flag)
- add update_pull_request_body MCP tool
- fix changed-agents.sh to always include claude canary for non-agent action changes
- fix cursor pagination bug in getSelectedInstallationReposPage
- remove destructuring patterns, inline type definitions, and unsafe type casts
- replace non-null assertions with explicit checks in install.ts
- convert multi-param functions to single param objects (postCleanup, runActionLocal, etc.)
- use isHttpError helper in API routes instead of catch-any patterns
- add adhoc test fixtures for delegation scenarios (context isolation, error handling, synthesis, etc.)

Co-authored-by: Cursor <cursoragent@cursor.com>

* no subagent mutation, one mcp per subagent

* address review feedback: parallel-safe usage tracking, subagent isolation, minor improvements

* fix subagent state isolation: replace Object.freeze with shallow copy

Object.freeze throws TypeErrors when subagent tools (checkout_pr,
report_progress) write scalar properties to toolState. A shallow copy
achieves the same isolation for scalar fields while allowing tools to
work normally. Shared references (subagents Map, usageEntries array)
remain shared for coordination.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
2026-02-22 14:12:43 +00:00
Colin McDonnell 2d2d31adfa Code style (#97)
* Cleanup

* fix: populate deny array before assigning to config, add CursorCliConfig type

* Fix deny array ordering and add CursorCliConfig type

Move deny array population before config declaration to avoid
relying on reference semantics. Add proper type interface for
the CLI config object.

---------

Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
2026-01-15 22:06:53 +00:00
Colin McDonnell 75b429ceca Update cli 2026-01-15 01:01:58 +00:00
pullfrog[bot] 71feba0a76 fix: prevent log.writeSummary from overwriting reportProgress content (#87)
* fix: prevent log.writeSummary from overwriting reportProgress content

The run summary was showing logs instead of the final reportProgress content
because log.writeSummary() was called after reportProgress. Now
log.writeSummary() checks if the summary was already overwritten by
reportProgress and skips if so.

Fixes #86

* refactor: replace dynamic import with static import in cli.ts

Replace unnecessary dynamic import of wasSummaryOverwritten with
static import. No circular dependency exists since comment.ts doesn't
import from cli.ts.

* Fix run summary writing

---------

Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
Co-authored-by: Colin McDonnell <colinmcd94@gmail.com>
2026-01-15 00:55:42 +00:00
Robin Tail 0c03428488 feat: Using table() in summaryTable() when not running in CI. 2026-01-12 09:49:01 +01:00
Colin McDonnell 2dea842981 Write diff to file 2025-12-22 14:20:42 -08:00
Colin McDonnell e9a585ce47 Improve debug logging for reviews. v0.0.150 2025-12-22 13:50:39 -08:00
Colin McDonnell d5bec7499b Update review process 2025-12-21 22:23:18 -08:00
Colin McDonnell 1f1c1602c5 Flesh out debug logs 2025-12-17 13:11:44 -08:00
Colin McDonnell def7ee0303 Fix logging 2025-12-17 11:49:05 -08:00
Colin McDonnell 53f6f18352 Fix debug logging 2025-12-17 10:44:49 -08:00
Colin McDonnell a2f6b938de Fix log 2025-12-16 19:01:13 -08:00
Colin McDonnell 114c0b5632 Clean up log.group 2025-12-16 18:55:05 -08:00
Colin McDonnell 46f1e34cd4 Fix prompt truncation 2025-12-09 19:51:27 -08:00
Colin McDonnell 5b5df2bdca Truncate prompt 2025-12-08 20:06:03 -08:00
David Blass 1a882a11b8 centralize env management via createAgentEnv 2025-11-26 16:35:52 -05:00
Colin McDonnell 782902d899 Add logging to Gemini 2025-11-21 15:22:25 -08:00
Colin McDonnell 6ba92cb9d8 standardize tool call logging 2025-11-21 15:22:25 -08:00
Colin McDonnell b6bfcb0cca improve cursor tool call logs 2025-11-21 15:22:25 -08:00
Colin McDonnell c703ecc4f4 Fix MCP discovery 2025-11-19 17:13:14 -08:00
David Blass 7e0dcd5374 tool call logging, centralized temp dir 2025-11-19 18:26:15 -05:00
Shawn Morreau 7aaebe9584 add more codex logic 2025-11-12 19:22:48 -05:00
David Blass 15732d126d start working on passthrough logging for bash 2025-11-05 19:27:37 -05:00
David Blass 15a7154aea improve logging 2025-10-31 01:58:43 -04:00
David Blass ab2d762658 update action, iterate on logging 2025-10-31 00:46:40 -04:00
David Blass 876663cd1a improve logging, remove act 2025-10-31 00:25:02 -04:00