Files
openhuman/docs/dev-workflow-plan.md
T

7.1 KiB

Dev Workflow — Autonomous Issue Crusher

Vision

An autonomous developer agent that runs on a schedule, picks GitHub issues assigned to the user, and raises PRs automatically. Users configure everything from a settings page — repo, fork/upstream, target branch, and frequency.


Phase 1 — Config UI DONE

PR: tinyhumansai/openhuman#2703 Branch: feat/dev-workflow-panel

What was built

  • Settings panel at Settings > Advanced > Dev Workflow
  • Pre-checks GitHub connection via Composio listConnections()
  • Fetches user's repos via composio_execute('GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER')
  • Auto-detects forks → shows upstream repo info
  • Fetches branches from upstream via composio_execute('GITHUB_LIST_BRANCHES')
  • Schedule presets: 30min, 1hr, 2hr, 6hr, daily
  • Config saved to localStorage (temporary — Phase 2 moves to core)
  • All UI strings internationalized via t() with 37 i18n keys

What was also fixed

  • Updated 5 outdated Composio GitHub tool slugs in the curated catalog (tools.rs)
  • Removed 3 deprecated tools no longer in Composio's catalog
  • Added listGithubRepos() wrapper and ComposioGithubReposResponse types to composioApi.ts

Files created/modified

File Action
app/src/components/settings/panels/DevWorkflowPanel.tsx Created
app/src/pages/Settings.tsx Route added
app/src/components/settings/panels/DeveloperOptionsPanel.tsx Nav link added
app/src/components/settings/hooks/useSettingsNavigation.ts Route type + breadcrumbs
app/src/lib/composio/composioApi.ts listGithubRepos() wrapper
app/src/lib/composio/types.ts ComposioGithubRepo, ComposioGithubReposResponse
app/src/lib/i18n/en.ts + all locale chunks i18n keys
src/openhuman/memory_sync/composio/providers/github/tools.rs Slug fixes
src/openhuman/memory_sync/composio/providers/github/provider.rs Slug refs
src/openhuman/memory_sync/composio/providers/github/sync.rs Comment refs
src/openhuman/memory_sync/composio/providers/github/tests.rs Test assertions

Phase 2 — Wire Config to Execution

Blocked on: tinyhumansai/openhuman#2707 (codegraph + skills registry)

2a. Create Dev Workflow skill definition

Create a bundled skill at src/openhuman/agent/agents/dev_workflow/ (or skills/dev_workflow/):

skill.toml:

id = "dev_workflow"
display_name = "Dev Workflow"
when_to_use = "Autonomous developer — picks GitHub issues assigned to the user and raises pull requests."
temperature = 0.3
max_iterations = 30
sandbox_mode = "sandboxed"

[model]
hint = "coding"

[tools]
named = [
  "shell", "file_read", "file_write", "git_operations",
  "grep", "glob", "list", "edit", "apply_patch",
  "web_fetch", "composio"
]

[[inputs]]
name = "repo"
description = "Fork repo full name (e.g. user/repo)"
required = true

[[inputs]]
name = "upstream"
description = "Upstream repo full name (e.g. org/repo)"
required = true

[[inputs]]
name = "target_branch"
description = "Branch to raise PRs against"
required = true

[[inputs]]
name = "fork_owner"
description = "GitHub username of the fork owner"
required = true

SKILL.md: (the agent's instructions)

You are an autonomous developer agent. Your job is to pick a GitHub issue and deliver a PR.

## Per-run workflow

1. **Pick issue**: Use Composio GITHUB_LIST_REPOSITORY_ISSUES on the upstream repo,
   filtered to issues assigned to the user. Pick the oldest open issue with no linked PR.
2. **Clone & branch**: Clone the fork repo. Add upstream as remote. Fetch target branch.
   Create branch `dev-workflow/<issue-number>-<slug>` off upstream's target branch.
3. **Index**: Use codegraph_index to build a retrieval index of the repo.
4. **Implement**: Read the issue carefully. Use codegraph_search to find relevant files.
   Implement a minimal, correct fix/feature. Follow existing code style.
5. **Test**: Detect and run available test commands. Fix failures before proceeding.
6. **Push**: Commit with `Fixes #<number>`. Push branch to fork remote.
7. **Open PR**: Use Composio GITHUB_CREATE_A_PULL_REQUEST against upstream's target branch.
   Include issue link, summary, and test results.

## Rules
- One PR per run. After opening the PR, stop.
- If no suitable issue exists, exit cleanly.
- Never force-push. Never push to upstream directly.
- If too large/risky, comment on the issue and skip.

2b. Add cron_add RPC

Not blocked on #2707 — can be done now.

The cron_add logic exists in the agent tool (src/openhuman/tools/impl/cron/add.rs) but isn't exposed as an RPC controller. Need to add it to src/openhuman/cron/schemas.rs.

Changes:

  • src/openhuman/cron/schemas.rs — Add "add" controller with inputs: name, schedule, prompt, session_target, model, agent_id, delivery, delete_after_run
  • app/src/utils/tauriCommands/cron.ts — Add openhumanCronAdd() wrapper
  • app/src/utils/tauriCommands/index.ts — Re-export

2c. Wire Save → Cron + Skill

Update DevWorkflowPanel.tsx save handler:

  • When user clicks "Save Configuration" → call openhumanCronAdd() with:
    • name: "dev-workflow-<repo>"
    • schedule: { kind: 'cron', expr: selectedSchedule }
    • agent_id: "dev_workflow"
    • prompt: "Run dev_workflow for repo ${repo}. Upstream: ${upstream}. Target: ${branch}. Fork owner: ${forkOwner}."
    • delivery: { mode: 'proactive' }
  • Remove localStorage — config lives in the cron job
  • Show active cron job status instead of localStorage-based summary

Phase 3 — Execution Polish

Agent execution improvements

  • Smarter issue picking: filter by labels, skip issues with existing PRs
  • Git worktree support: don't pollute the user's working tree
  • Codegraph integration: use codegraph_index + codegraph_search for file discovery
  • Test detection: auto-detect npm test, cargo test, pytest, etc.

Error handling

  • Retry on transient failures (network, rate limits)
  • Skip issues that are too complex (>N files changed)
  • Comment on skipped issues explaining why

Delivery & notifications

  • delivery.mode = 'proactive' → shows in the active chat channel
  • Notification when PR is opened
  • Summary of what was done

UI enhancements

  • Show run history in the Dev Workflow panel
  • Show active/paused status
  • Manual trigger button ("Run now")
  • View logs from past runs

Dependency Graph

Phase 1 (Config UI)     ──── ✅ DONE
        │
        ▼
Phase 2a (Skill def)    ──── Blocked on #2707
Phase 2b (cron_add RPC) ──── NOT blocked, can start now
        │
        ▼
Phase 2c (Wire save)    ──── Blocked on 2a + 2b
        │
        ▼
Phase 3 (Polish)        ──── Blocked on Phase 2

Item Link Status
Config UI openhuman#2703 Open (draft)
Codegraph + Skills openhuman#2707 Open (draft)
Backend repo endpoint tinyhumansai/backend#842 Open