Skip to content

feat(agentkit): add TaskMarket action provider - #1422

Open
Autonomy-Labs-Tech wants to merge 3 commits into
coinbase:mainfrom
Autonomy-Labs-Tech:feat/taskmarket-action-provider
Open

feat(agentkit): add TaskMarket action provider#1422
Autonomy-Labs-Tech wants to merge 3 commits into
coinbase:mainfrom
Autonomy-Labs-Tech:feat/taskmarket-action-provider

Conversation

@Autonomy-Labs-Tech

@Autonomy-Labs-Tech Autonomy-Labs-Tech commented Aug 9, 2026

Copy link
Copy Markdown

Adds a TaskMarket action provider (api.taskmarket.dev - the XDEV developer marketplace) exposing keyless read actions so agents can discover paid, delegable work.

Actions:

  • fetch_open_tasks: open tasks ranked winnability-first (lowest submission count), optional query / minReward / limit filters
  • get_task: full detail of a single task by id

Both are public-API reads; no auth, no spend. Write actions (create/submit) require the TASKMARKET_API_KEY secret and explicit operator authorization and are intentionally NOT included - agents cannot spend without human sign-off.

Testing: 9 unit tests (mocked fetch) cover ranking, filtering, error paths; a live e2e suite (taskmarketActionProvider.e2e.test.ts) runs against the public API when TASKMARKET_E2E=1 and passes against the real board (verified locally: 2/2). Mirrors the existing defillama public-API provider pattern; registered in src/action-providers/index.ts.

Note: commits are unsigned (no key on this machine); happy to add a signed commit if required.

Add a read-only TaskMarket (api.taskmarket.dev) action provider with
fetch_open_tasks and get_task actions, letting agents discover paid
delegable work on the XDEV worker marketplace. Mirrors the defillama
public-API provider pattern: keyless reads, no spend; write actions
intentionally excluded (require TASKMARKET_API_KEY + operator auth).

Includes unit tests (11 passing: 9 mocked + 2 live e2e against the
public API) and registering the export in src/action-providers/index.ts.
@cb-heimdall

cb-heimdall commented Aug 9, 2026

Copy link
Copy Markdown

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/2
Emergency override progress: 0/5
These approvals do not satisfy normal or CODEOWNER requirements because the commit identity is unverified.
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 1
Sum 2

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider typescript labels Aug 9, 2026
Autonomy Labs added 2 commits August 9, 2026 09:01
Live tests run only with TASKMARKET_E2E=1; CI stays hermetic.
- Remove unused TASKMARKET_BASE_URL import (eslint no-unused-vars)
- Move index signature before field definitions (member-ordering)
- Add JSDoc to constructor and helper functions (jsdoc/require-jsdoc)
- Apply prettier formatting to provider, schemas and tests
@Autonomy-Labs-Tech

Copy link
Copy Markdown
Author

CI fix: TaskMarket provider now passes lint, format and type gates

The Lint / Format / Unit Tests workflows were stuck in action_required (first-time-contributor approval gate, no jobs started). I verified every repo gate locally against the changed code and fixed the issues that would have failed CI once approved:

Fixes (commit 3601448):

  1. ESLint no-unused-vars — removed unused TASKMARKET_BASE_URL import.
  2. ESLint member-ordering — moved the [key: string]: unknown index signature in TaskMarketTask before the field definitions.
  3. ESLint jsdoc/require-jsdoc — added JSDoc to the constructor, asTaskList() and errorMessage().
  4. Prettier — reformatted taskmarketActionProvider.ts, schemas.ts and taskmarketActionProvider.test.ts (3 files had code-style issues).

Verification (all repo gates green):

  • pnpm run lint — 0 errors
  • pnpm run format:check — all files pass
  • tsc --noEmit — clean
  • jest (agentkit suite) — 61 suites passed, 873 tests passed; e2e file correctly gated behind TASKMARKET_E2E=1 and skipped in CI

Live demo against api.taskmarket.dev (fetchOpenTasks({ limit: 3, minReward: 1000000 })):

[
  {
    "id": "0xb4e0e2150a5b69a781769fe71f9092de3cffe978a03fd7286ebd408b99b152e3",
    "reward": "64000000",
    "status": "open",
    "mode": "bounty",
    "submissionCount": 19,
    "expiry": "2026-08-21",
    "tags": ["video", "worldbuilding", "base", "ambient"],
    "description": "The World of Base, 2030 — make a living world in six seconds..."
  },
  {
    "id": "0x34a65b919752f9b4500aae1574f44865a92c1b625e77c9a72741370c0daadccc",
    "reward": "100000000",
    "status": "open",
    "mode": "bounty",
    "submissionCount": 47,
    "expiry": "2026-08-17",
    "tags": ["game", "html", "base", "arcade"],
    "description": "Blue Square Arcade — restage a game you loved, starring the Blue Square..."
  }
]

The gated live e2e (TASKMARKET_E2E=1 jest --testMatch='**/taskmarketActionProvider.e2e.test.ts') also passes: 2/2 tests against the real API.

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

Labels

action provider New action provider documentation Improvements or additions to documentation typescript

Development

Successfully merging this pull request may close these issues.

2 participants