Skip to content

feat: add TaskMarket delegation plugin - #470

Open
a1271981054 wants to merge 1 commit into
OpenHands:mainfrom
a1271981054:codex/taskmarket-openhands-plugin
Open

feat: add TaskMarket delegation plugin#470
a1271981054 wants to merge 1 commit into
OpenHands:mainfrom
a1271981054:codex/taskmarket-openhands-plugin

Conversation

@a1271981054

@a1271981054 a1271981054 commented Aug 13, 2026

Copy link
Copy Markdown

Why

OpenHands agents can identify work that is better delegated to an external
worker, but the extensions registry does not currently provide a TaskMarket
workflow. This plugin adds a bounded integration while keeping payment and
result acceptance under explicit user control.

Summary

  • Add a taskmarket OpenHands plugin with a Python adapter for public task
    discovery, task status, and submission review.
  • Add a deterministic preview showing the exact description, reward, deadline,
    Base/USDC network, and a fee-buffered maximum-spend estimate.
  • Add a guarded create path that checks the first-party CLI's reported network
    and invokes taskmarket task create only after --confirm and a spend
    ceiling are supplied.
  • Never read the CLI keystore, automatically accept submissions, or retry an
    ambiguous payment response.

How to Test

uv run --group test pytest -q tests/
# 550 passed, 6 skipped

python plugins/taskmarket/scripts/taskmarket.py list \
  --status open --sort reward_desc --limit 5

python plugins/taskmarket/scripts/taskmarket.py preview \
  --description "Produce a tested report with reproducible evidence" \
  --reward 0.50 --duration 24 \
  --tags research,verification --max-spend-usdc 0.55

The live read smoke test returned the public TaskMarket task list. The
no-confirm create path returned confirmationRequired: true and did not
invoke the CLI.

Security and spending notes

  • The write path is restricted to the TaskMarket CLI's Base chain (8453) and
    does not implement a second wallet or payment mechanism.
  • A positive USDC reward, one to ten tags, and a maximum-spend ceiling are
    validated before any CLI call.
  • The adapter runs the read-only taskmarket deposit check first and rejects
    non-Base wallets.
  • A failed create returns retry: false; callers are instructed to inspect
    the live task and idempotency information before deciding what happened.
  • The plugin exposes status and submissions for human review only. It does
    not select winners, accept work, or evaluate submissions automatically.

HUMAN: Test record: the full suite, catalog check, and live read-only smoke tests were run locally; the no-confirm create path stayed unsubmitted.

HUMAN: I personally ran the focused tests, catalog validation, and the read-only live smoke; no payment or submission was performed by the plugin.

@github-actions github-actions Bot added the type: feat A new feature label Aug 13, 2026
@all-hands-bot

Copy link
Copy Markdown
Contributor

👋 This PR needs a couple of things fixed before OpenHands can review it:

  • the PR description's HUMAN: section needs at least 20 characters describing what you tested, not just the template placeholder

Push an update once this is addressed and this check re-runs automatically.

This is an automated check - no AI was used to generate this comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants