Skip to content

feat(control-plane): request governed actions, including Paystack - #8

Merged
Goldokpa merged 1 commit into
mainfrom
feat/paystack-provider
Oct 27, 2026
Merged

Goldokpa merged 1 commit into
mainfrom
feat/paystack-provider

Conversation

@Goldokpa

Copy link
Copy Markdown
Collaborator

What

Adds two methods to ControlPlaneGateway:

  • request_capability(capability, provider, payload, idempotency_key) → POST /gateway/requests
  • get_capability_execution(execution_id) → GET /gateway/executions/{id} (the id is URL-encoded)

It also adds a new exported type, CapabilityProvider = Literal["stripe", "paystack", "github", "aws"].

Why

An agent should be able to ask for a payment, a payment link or a refund without ever holding the provider key. The control plane checks the grant, reserves any budget, waits for human approval where the grant requires it, then executes. Paystack is the payment rail for Nigerian merchants.

This mirrors requestCapability / getCapabilityExecution in the TypeScript SDK (identArk/identark-js#15), keeping the two SDKs at parity.

Scope

  • The AgentGateway protocol is unchanged. Only ControlPlaneGateway gains methods.
  • No new dependencies.
  • The README gains a short "Governed actions" example.

Checks

  • ruff check identark/ tests/ (current ruff): clean
  • mypy identark/: clean
  • pytest tests/unit/: 215 passed, including 2 new tests.
  • One pre-existing local failure, test_integrations_crewai.py::test_message_delta_only_sends_tail, also fails on clean main locally. It looks environment-specific; CI will settle it.

Note on pre-commit

The commit skipped two hooks that fail on clean main for reasons unrelated to this change:

  • The pinned ruff hook (v0.6.9) still has the ANN101 rule, which current ruff has removed. It flags every method in control_plane.py.
  • bandit -r flags existing eval uses in examples/ and asserts in tests/integration/.

Bandit passes on the files changed here. Gitleaks, the private-key check, ruff-format and mypy all ran and passed. Bumping the hook pins is worth its own PR.

Adds request_capability and get_capability_execution to
ControlPlaneGateway, calling the control plane's /gateway/requests and
/gateway/executions. The agent names the action and its parameters; the
provider key stays in IdentArk, and grants, budgets and human approval
apply before execution.

CapabilityProvider covers stripe, paystack, github and aws. Paystack is
the payment rail for Nigerian merchants: payment links, refunds and
transfers.

The AgentGateway protocol is unchanged. Mirrors requestCapability in the
TypeScript SDK.

Signed-off-by: Gold Okpa <okpagold@gmail.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying identark-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5f0709a
Status: ✅  Deploy successful!
Preview URL: https://8243ad71.identark-docs.pages.dev
Branch Preview URL: https://feat-paystack-provider.identark-docs.pages.dev

View logs

@Goldokpa
Goldokpa merged commit 3e892eb into main Oct 27, 2026
15 checks passed
@Goldokpa Goldokpa mentioned this pull request Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant