Skip to content

feat: port typed REST client from @keepergate/core#1

Open
mandatedisrael wants to merge 1 commit into
mainfrom
feat/build-v1
Open

feat: port typed REST client from @keepergate/core#1
mandatedisrael wants to merge 1 commit into
mainfrom
feat/build-v1

Conversation

@mandatedisrael
Copy link
Copy Markdown

Summary

Initial implementation of @keeperhub/sdk: a straight port of @keepergate/core from the ETHGlobal Open Agent 2026 hackathon prototype, with the data. template-resolution workaround stripped (now fixed upstream).

What's in the port

  • KeeperHubClient — typed HTTP client with pollUntilDone and bounded retries
  • DirectExecutor — one-shot read/write executor with isReadResult discriminator
  • WorkflowTool — end-to-end create + execute + poll convenience wrapper
  • extractTriggerInputFields — inferred input schema for trigger-typed inputs

Tests

Unit tests ported to vitest to match the existing setup (24/24 passing):

  • test/template-refs.test.ts — 18 cases including pathological inputs
  • test/discriminator.test.ts — 4 cases for isReadResult
  • test/poll-timeout.test.ts — 2 cases (timeout + happy path) using injected fetch

Local validation

  • npm install — clean
  • npm run type-check — no errors
  • npm run build — ESM + CJS + .d.ts all emitted
  • npm test — 24/24 passing

Test plan

  • CI passes on the PR
  • After merge: bump package.json version and npm publish manually for the first release
  • Configure trusted publisher on npmjs.com for tag-driven releases going forward

Initial implementation of @KeeperHub/sdk: lands the typed
client, direct executor, workflow tool, and trigger-input
inference from the ETHGlobal hackathon prototype.

- KeeperHubClient with pollUntilDone + bounded retries
- DirectExecutor with read/write discriminator
- WorkflowTool for end-to-end create-execute-poll flows
- extractTriggerInputFields for SDK input schema inference
- Unit tests ported to vitest (24/24 passing)
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