@teneo-protocol/sdk 1.0.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +11 -2
- package/.github/CODEOWNERS +2 -0
- package/.github/ISSUE_TEMPLATE/01-bug.yml +85 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
- package/.github/workflows/claude-code-review.yml +8 -3
- package/.github/workflows/claude-reviewer.yml +6 -4
- package/.github/workflows/publish-npm.yml +9 -6
- package/.github/workflows/push-to-main.yml +1 -1
- package/.github/workflows/top-issue.yml +102 -0
- package/CHANGELOG.md +334 -0
- package/CONCEPTS.md +747 -0
- package/README.md +577 -54
- package/dist/constants.js +8 -8
- package/dist/constants.js.map +1 -1
- package/dist/core/websocket-client.d.ts +25 -1
- package/dist/core/websocket-client.d.ts.map +1 -1
- package/dist/core/websocket-client.js +74 -15
- package/dist/core/websocket-client.js.map +1 -1
- package/dist/formatters/response-formatter.js +4 -0
- package/dist/formatters/response-formatter.js.map +1 -1
- package/dist/handlers/message-handler-registry.js +2 -1
- package/dist/handlers/message-handler-registry.js.map +1 -1
- package/dist/handlers/message-handlers/agent-details-response-handler.d.ts +1666 -0
- package/dist/handlers/message-handlers/agent-details-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agent-details-response-handler.js +38 -0
- package/dist/handlers/message-handlers/agent-details-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/agent-room-operation-response-handler.d.ts +76 -0
- package/dist/handlers/message-handlers/agent-room-operation-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agent-room-operation-response-handler.js +67 -0
- package/dist/handlers/message-handlers/agent-room-operation-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/agent-selected-handler.d.ts +92 -38
- package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/agent-selected-handler.js +2 -5
- package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -1
- package/dist/handlers/message-handlers/agent-status-update-handler.d.ts +1687 -0
- package/dist/handlers/message-handlers/agent-status-update-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agent-status-update-handler.js +48 -0
- package/dist/handlers/message-handlers/agent-status-update-handler.js.map +1 -0
- package/dist/handlers/message-handlers/agents-list-handler.js +2 -5
- package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -1
- package/dist/handlers/message-handlers/all-agents-response-handler.d.ts +439 -0
- package/dist/handlers/message-handlers/all-agents-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/all-agents-response-handler.js +36 -0
- package/dist/handlers/message-handlers/all-agents-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-error-handler.d.ts +45 -31
- package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/auth-error-handler.js +2 -5
- package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -1
- package/dist/handlers/message-handlers/auth-message-handler.d.ts +6 -0
- package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/auth-message-handler.js +71 -10
- package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -1
- package/dist/handlers/message-handlers/auth-required-handler.d.ts +49 -31
- package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/auth-required-handler.js +2 -5
- package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -1
- package/dist/handlers/message-handlers/auth-success-handler.d.ts +6 -0
- package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/auth-success-handler.js +52 -9
- package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -1
- package/dist/handlers/message-handlers/base-handler.d.ts +4 -4
- package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/base-handler.js +3 -1
- package/dist/handlers/message-handlers/base-handler.js.map +1 -1
- package/dist/handlers/message-handlers/challenge-handler.d.ts +45 -31
- package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/challenge-handler.js +3 -2
- package/dist/handlers/message-handlers/challenge-handler.js.map +1 -1
- package/dist/handlers/message-handlers/error-message-handler.d.ts +49 -31
- package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/error-message-handler.js +2 -5
- package/dist/handlers/message-handlers/error-message-handler.js.map +1 -1
- package/dist/handlers/message-handlers/index.d.ts +11 -0
- package/dist/handlers/message-handlers/index.d.ts.map +1 -1
- package/dist/handlers/message-handlers/index.js +55 -1
- package/dist/handlers/message-handlers/index.js.map +1 -1
- package/dist/handlers/message-handlers/list-available-agents-handler.d.ts +1660 -0
- package/dist/handlers/message-handlers/list-available-agents-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/list-available-agents-handler.js +35 -0
- package/dist/handlers/message-handlers/list-available-agents-handler.js.map +1 -0
- package/dist/handlers/message-handlers/list-room-agents-handler.d.ts +1669 -0
- package/dist/handlers/message-handlers/list-room-agents-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/list-room-agents-handler.js +48 -0
- package/dist/handlers/message-handlers/list-room-agents-handler.js.map +1 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +2 -110
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/list-rooms-response-handler.js +4 -6
- package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -1
- package/dist/handlers/message-handlers/ping-pong-handler.d.ts +62 -58
- package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/ping-pong-handler.js +4 -10
- package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -1
- package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts +94 -0
- package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/rate-limit-notification-handler.js +35 -0
- package/dist/handlers/message-handlers/rate-limit-notification-handler.js.map +1 -0
- package/dist/handlers/message-handlers/regular-message-handler.d.ts +31 -29
- package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/regular-message-handler.js +4 -6
- package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -1
- package/dist/handlers/message-handlers/room-operation-response-handler.d.ts +328 -0
- package/dist/handlers/message-handlers/room-operation-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/room-operation-response-handler.js +89 -0
- package/dist/handlers/message-handlers/room-operation-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +53 -31
- package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/subscribe-response-handler.js +4 -6
- package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -1
- package/dist/handlers/message-handlers/task-quote-handler.d.ts +14 -0
- package/dist/handlers/message-handlers/task-quote-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/task-quote-handler.js +29 -0
- package/dist/handlers/message-handlers/task-quote-handler.js.map +1 -0
- package/dist/handlers/message-handlers/task-response-handler.js +2 -5
- package/dist/handlers/message-handlers/task-response-handler.js.map +1 -1
- package/dist/handlers/message-handlers/types.d.ts +21 -7
- package/dist/handlers/message-handlers/types.d.ts.map +1 -1
- package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +53 -31
- package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/unsubscribe-response-handler.js +4 -6
- package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -1
- package/dist/handlers/message-handlers/user-authenticated-handler.d.ts +40 -0
- package/dist/handlers/message-handlers/user-authenticated-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/user-authenticated-handler.js +28 -0
- package/dist/handlers/message-handlers/user-authenticated-handler.js.map +1 -0
- package/dist/handlers/message-handlers/user-count-handler.d.ts +49 -0
- package/dist/handlers/message-handlers/user-count-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/user-count-handler.js +31 -0
- package/dist/handlers/message-handlers/user-count-handler.js.map +1 -0
- package/dist/handlers/webhook-handler.d.ts +1 -1
- package/dist/handlers/webhook-handler.d.ts.map +1 -1
- package/dist/handlers/webhook-handler.js +14 -5
- package/dist/handlers/webhook-handler.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/managers/admin-manager.d.ts +116 -0
- package/dist/managers/admin-manager.d.ts.map +1 -0
- package/dist/managers/admin-manager.js +169 -0
- package/dist/managers/admin-manager.js.map +1 -0
- package/dist/managers/agent-registry.d.ts +52 -1
- package/dist/managers/agent-registry.d.ts.map +1 -1
- package/dist/managers/agent-registry.js +145 -6
- package/dist/managers/agent-registry.js.map +1 -1
- package/dist/managers/agent-room-manager.d.ts +216 -0
- package/dist/managers/agent-room-manager.d.ts.map +1 -0
- package/dist/managers/agent-room-manager.js +555 -0
- package/dist/managers/agent-room-manager.js.map +1 -0
- package/dist/managers/connection-manager.js +2 -0
- package/dist/managers/connection-manager.js.map +1 -1
- package/dist/managers/index.d.ts +4 -1
- package/dist/managers/index.d.ts.map +1 -1
- package/dist/managers/index.js +7 -1
- package/dist/managers/index.js.map +1 -1
- package/dist/managers/message-router.d.ts +56 -5
- package/dist/managers/message-router.d.ts.map +1 -1
- package/dist/managers/message-router.js +155 -8
- package/dist/managers/message-router.js.map +1 -1
- package/dist/managers/room-management-manager.d.ts +213 -0
- package/dist/managers/room-management-manager.d.ts.map +1 -0
- package/dist/managers/room-management-manager.js +442 -0
- package/dist/managers/room-management-manager.js.map +1 -0
- package/dist/managers/room-manager.d.ts +11 -9
- package/dist/managers/room-manager.d.ts.map +1 -1
- package/dist/managers/room-manager.js +14 -10
- package/dist/managers/room-manager.js.map +1 -1
- package/dist/payments/index.d.ts +5 -0
- package/dist/payments/index.d.ts.map +1 -0
- package/dist/payments/index.js +21 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/payments/payment-client.d.ts +74 -0
- package/dist/payments/payment-client.d.ts.map +1 -0
- package/dist/payments/payment-client.js +207 -0
- package/dist/payments/payment-client.js.map +1 -0
- package/dist/teneo-sdk.d.ts +467 -33
- package/dist/teneo-sdk.d.ts.map +1 -1
- package/dist/teneo-sdk.js +735 -26
- package/dist/teneo-sdk.js.map +1 -1
- package/dist/types/categories.d.ts +22 -0
- package/dist/types/categories.d.ts.map +1 -0
- package/dist/types/categories.js +40 -0
- package/dist/types/categories.js.map +1 -0
- package/dist/types/config.d.ts +134 -54
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +70 -9
- package/dist/types/config.js.map +1 -1
- package/dist/types/error-codes.d.ts +10 -0
- package/dist/types/error-codes.d.ts.map +1 -1
- package/dist/types/error-codes.js +12 -0
- package/dist/types/error-codes.js.map +1 -1
- package/dist/types/events.d.ts +176 -68
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/events.js +19 -1
- package/dist/types/events.js.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +57 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/messages.d.ts +22225 -2592
- package/dist/types/messages.d.ts.map +1 -1
- package/dist/types/messages.js +537 -28
- package/dist/types/messages.js.map +1 -1
- package/dist/utils/bounded-queue.d.ts.map +1 -1
- package/dist/utils/bounded-queue.js +5 -2
- package/dist/utils/bounded-queue.js.map +1 -1
- package/dist/utils/circuit-breaker.js +11 -4
- package/dist/utils/circuit-breaker.js.map +1 -1
- package/dist/utils/deduplication-cache.js +3 -1
- package/dist/utils/deduplication-cache.js.map +1 -1
- package/dist/utils/event-waiter.d.ts +3 -3
- package/dist/utils/event-waiter.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/pricing-resolver.d.ts +26 -0
- package/dist/utils/pricing-resolver.d.ts.map +1 -0
- package/dist/utils/pricing-resolver.js +85 -0
- package/dist/utils/pricing-resolver.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -1
- package/dist/utils/rate-limiter.js +6 -0
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/retry-policy.js +1 -0
- package/dist/utils/retry-policy.js.map +1 -1
- package/dist/utils/secure-private-key.js +3 -1
- package/dist/utils/secure-private-key.js.map +1 -1
- package/dist/utils/signature-verifier.d.ts.map +1 -1
- package/dist/utils/signature-verifier.js +3 -1
- package/dist/utils/signature-verifier.js.map +1 -1
- package/examples/.env.example +2 -2
- package/examples/agent-room-management-example.ts +335 -0
- package/examples/basic-usage.ts +3 -4
- package/examples/claude-agent-x-follower/.env.example +3 -3
- package/examples/claude-agent-x-follower/QUICKSTART.md +3 -3
- package/examples/claude-agent-x-follower/README.md +3 -3
- package/examples/claude-agent-x-follower/index.ts +120 -96
- package/examples/n8n-teneo/.env.example +3 -3
- package/examples/n8n-teneo/README.md +2 -2
- package/examples/n8n-teneo/index.ts +54 -44
- package/examples/nestjs-dashboard/.env.example +11 -0
- package/examples/nestjs-dashboard/README.md +297 -0
- package/examples/nestjs-dashboard/nest-cli.json +10 -0
- package/examples/nestjs-dashboard/package.json +44 -0
- package/examples/nestjs-dashboard/pnpm-lock.yaml +3079 -0
- package/examples/nestjs-dashboard/src/app.controller.ts +24 -0
- package/examples/nestjs-dashboard/src/app.module.ts +15 -0
- package/examples/nestjs-dashboard/src/main.ts +32 -0
- package/examples/nestjs-dashboard/src/public/dashboard.html +1144 -0
- package/examples/nestjs-dashboard/src/teneo/agents.controller.ts +54 -0
- package/examples/nestjs-dashboard/src/teneo/events.controller.ts +65 -0
- package/examples/nestjs-dashboard/src/teneo/messages.controller.ts +47 -0
- package/examples/nestjs-dashboard/src/teneo/rooms.controller.ts +258 -0
- package/examples/nestjs-dashboard/src/teneo/teneo.module.ts +13 -0
- package/examples/nestjs-dashboard/src/teneo/teneo.service.ts +484 -0
- package/examples/nestjs-dashboard/tsconfig.json +22 -0
- package/examples/openai-teneo/.env.example +3 -3
- package/examples/openai-teneo/README.md +3 -3
- package/examples/openai-teneo/index.ts +82 -71
- package/examples/production-dashboard/.env.example +3 -3
- package/examples/production-dashboard/README.md +90 -13
- package/examples/production-dashboard/public/dashboard.html +1173 -601
- package/examples/production-dashboard/server.ts +349 -7
- package/examples/room-management-example.ts +282 -0
- package/examples/usage/.env.example +2 -2
- package/examples/usage/01-connect.ts +3 -4
- package/examples/usage/02-list-agents.ts +2 -3
- package/examples/usage/03-pick-agent.ts +2 -3
- package/examples/usage/04-find-by-capability.ts +2 -3
- package/examples/usage/05-webhook-example.ts +2 -3
- package/examples/usage/06-simple-api-server.ts +2 -3
- package/examples/usage/07-event-listener.ts +2 -3
- package/examples/usage/README.md +1 -1
- package/examples/webhook-integration.ts +1 -1
- package/examples/x-influencer-battle-server.ts +2 -2
- package/package.json +12 -1
- package/src/core/websocket-client.test.ts +8 -3
- package/src/core/websocket-client.ts +58 -4
- package/src/formatters/response-formatter.test.ts +2 -0
- package/src/formatters/response-formatter.ts +3 -3
- package/src/handlers/message-handlers/agent-details-response-handler.ts +42 -0
- package/src/handlers/message-handlers/agent-room-operation-response-handler.ts +77 -0
- package/src/handlers/message-handlers/agent-status-update-handler.ts +52 -0
- package/src/handlers/message-handlers/all-agents-response-handler.ts +39 -0
- package/src/handlers/message-handlers/auth-message-handler.ts +78 -5
- package/src/handlers/message-handlers/auth-success-handler.ts +63 -6
- package/src/handlers/message-handlers/base-handler.ts +20 -7
- package/src/handlers/message-handlers/index.ts +53 -0
- package/src/handlers/message-handlers/list-available-agents-handler.ts +41 -0
- package/src/handlers/message-handlers/list-room-agents-handler.ts +58 -0
- package/src/handlers/message-handlers/list-rooms-response-handler.ts +4 -2
- package/src/handlers/message-handlers/rate-limit-notification-handler.ts +45 -0
- package/src/handlers/message-handlers/regular-message-handler.ts +3 -2
- package/src/handlers/message-handlers/room-operation-response-handler.ts +102 -0
- package/src/handlers/message-handlers/subscribe-response-handler.ts +12 -2
- package/src/handlers/message-handlers/task-quote-handler.ts +31 -0
- package/src/handlers/message-handlers/types.ts +41 -7
- package/src/handlers/message-handlers/unsubscribe-response-handler.ts +12 -2
- package/src/handlers/message-handlers/user-authenticated-handler.ts +31 -0
- package/src/handlers/message-handlers/user-count-handler.ts +34 -0
- package/src/handlers/webhook-handler.test.ts +3 -2
- package/src/handlers/webhook-handler.ts +13 -7
- package/src/index.ts +21 -0
- package/src/managers/admin-manager.ts +249 -0
- package/src/managers/agent-registry.test.ts +2 -1
- package/src/managers/agent-registry.ts +170 -2
- package/src/managers/agent-room-manager.ts +665 -0
- package/src/managers/index.ts +15 -1
- package/src/managers/message-router.ts +215 -17
- package/src/managers/room-management-manager.ts +520 -0
- package/src/managers/room-manager.ts +15 -20
- package/src/payments/index.ts +22 -0
- package/src/payments/payment-client.ts +240 -0
- package/src/teneo-sdk.ts +806 -30
- package/src/types/categories.ts +45 -0
- package/src/types/config.ts +80 -7
- package/src/types/error-codes.ts +14 -0
- package/src/types/events.test.ts +1 -0
- package/src/types/events.ts +67 -0
- package/src/types/index.ts +111 -0
- package/src/types/messages.test.ts +2 -1
- package/src/types/messages.ts +677 -42
- package/src/utils/bounded-queue.test.ts +1 -1
- package/src/utils/bounded-queue.ts +2 -1
- package/src/utils/circuit-breaker.test.ts +1 -1
- package/src/utils/deduplication-cache.test.ts +1 -1
- package/src/utils/event-waiter.test.ts +1 -1
- package/src/utils/event-waiter.ts +3 -3
- package/src/utils/index.ts +7 -0
- package/src/utils/logger.ts +8 -8
- package/src/utils/pricing-resolver.ts +128 -0
- package/src/utils/rate-limiter.test.ts +1 -1
- package/src/utils/rate-limiter.ts +1 -0
- package/src/utils/signature-verifier.test.ts +2 -2
- package/src/utils/signature-verifier.ts +3 -2
- package/tests/.env.example +7 -0
- package/tests/direct-agent-test.ts +151 -0
- package/tests/integration/real-server.test.ts +2 -0
- package/tests/integration/room-management.test.ts +516 -0
- package/tests/integration/websocket.test.ts +5 -2
- package/tests/payment-flow-test.ts +147 -0
- package/tests/unit/handlers/agent-room-operation-response-handler.test.ts +382 -0
- package/tests/unit/handlers/agent-status-update-handler.test.ts +403 -0
- package/tests/unit/handlers/auth-success-handler-rooms.test.ts +697 -0
- package/tests/unit/handlers/list-available-agents-handler.test.ts +248 -0
- package/tests/unit/handlers/list-room-agents-handler.test.ts +290 -0
- package/tests/unit/handlers/room-operation-response-handler.test.ts +500 -0
- package/tests/unit/managers/agent-room-manager.test.ts +527 -0
- package/tests/unit/managers/room-management-manager.test.ts +420 -0
- package/tsconfig.json +2 -2
- package/vitest.config.ts +1 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PaymentClient - Handles x402 payment header generation for quote-approve flow
|
|
3
|
+
*
|
|
4
|
+
* Creates x402 V2 payment headers for USDC payments on PEAQ network.
|
|
5
|
+
* Implements ERC-3009 TransferWithAuthorization signing using viem's EIP-712.
|
|
6
|
+
*/
|
|
7
|
+
import type { SecurePrivateKey } from "../utils/secure-private-key";
|
|
8
|
+
declare const USDC_CONTRACT = "0xbbA60da06c2c5424f03f7434542280FCAd453d10";
|
|
9
|
+
declare const PEAQ_NETWORK_CAIP2 = "eip155:3338";
|
|
10
|
+
export interface PaymentClientConfig {
|
|
11
|
+
network?: string;
|
|
12
|
+
asset?: string;
|
|
13
|
+
resourceUrl?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const USDC_DECIMALS = 6;
|
|
16
|
+
export declare const X402_VERSION = 2;
|
|
17
|
+
export declare const DEFAULT_PAYMENT_TIMEOUT_SECONDS = 60;
|
|
18
|
+
export declare const DEFAULT_PAY_TO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
19
|
+
export declare const DEFAULT_RPC_URL = "https://peaq.api.onfinality.io/public";
|
|
20
|
+
export type SupportedChain = "peaq";
|
|
21
|
+
export { USDC_CONTRACT, PEAQ_NETWORK_CAIP2 as PEAQ_CHAIN_ID };
|
|
22
|
+
/**
|
|
23
|
+
* Converts a WebSocket URL to an HTTP(S) URL for x402 resource specification.
|
|
24
|
+
* The x402 protocol requires HTTP URLs, not WebSocket URLs.
|
|
25
|
+
*
|
|
26
|
+
* @param wsUrl - WebSocket URL (wss:// or ws://)
|
|
27
|
+
* @returns HTTP URL (https:// or http://)
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* buildX402ResourceUrl("wss://api.teneo.com/ws") // "https://api.teneo.com/x402"
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildX402ResourceUrl(wsUrl: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Converts USDC human-readable amount to micro-units (6 decimals).
|
|
35
|
+
* @param usdc - Amount in USDC (e.g., 1.5)
|
|
36
|
+
* @returns Amount in micro-units (e.g., 1500000)
|
|
37
|
+
*/
|
|
38
|
+
export declare function usdcToUnits(usdc: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Converts micro-units to USDC human-readable amount.
|
|
41
|
+
* @param units - Amount in micro-units (e.g., 1500000)
|
|
42
|
+
* @returns Amount in USDC (e.g., 1.5)
|
|
43
|
+
*/
|
|
44
|
+
export declare function unitsToUsdc(units: number): number;
|
|
45
|
+
/**
|
|
46
|
+
* PaymentClient handles creation of x402 V2 payment headers
|
|
47
|
+
* for the quote-approve payment flow.
|
|
48
|
+
*/
|
|
49
|
+
export declare class PaymentClient {
|
|
50
|
+
private readonly secureKey;
|
|
51
|
+
private readonly walletAddress;
|
|
52
|
+
private readonly network;
|
|
53
|
+
private readonly asset;
|
|
54
|
+
private readonly resourceUrl;
|
|
55
|
+
constructor(secureKey: SecurePrivateKey, walletAddress: string, config?: PaymentClientConfig);
|
|
56
|
+
/**
|
|
57
|
+
* Creates an x402 V2 payment header for a specific amount and recipient.
|
|
58
|
+
*
|
|
59
|
+
* @param amountMicroUnits - Amount in micro-units (e.g., 1000 = 0.001 USDC)
|
|
60
|
+
* @param recipientAddress - Wallet address of the payment recipient (agent)
|
|
61
|
+
* @param resourceUrl - Optional override for x402 resource URL
|
|
62
|
+
* @returns Base64 encoded x402 V2 payment header
|
|
63
|
+
*/
|
|
64
|
+
createPaymentHeader(amountMicroUnits: number, recipientAddress: string, resourceUrl?: string): Promise<string>;
|
|
65
|
+
/**
|
|
66
|
+
* Get default x402 resource URL from WebSocket URL
|
|
67
|
+
*/
|
|
68
|
+
private getDefaultResourceUrl;
|
|
69
|
+
/**
|
|
70
|
+
* Gets the wallet address associated with this payment client.
|
|
71
|
+
*/
|
|
72
|
+
get address(): string;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=payment-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-client.d.ts","sourceRoot":"","sources":["../../src/payments/payment-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAuBpE,QAAA,MAAM,aAAa,+CAA+C,CAAC;AACnE,QAAA,MAAM,kBAAkB,gBAAgB,CAAC;AAczC,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AACnF,eAAO,MAAM,eAAe,0CAA0C,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,kBAAkB,IAAI,aAAa,EAAE,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAWD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGnC,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,mBAAwB;IASlC;;;;;;;OAOG;IACG,mBAAmB,CACvB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAgFlB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PaymentClient - Handles x402 payment header generation for quote-approve flow
|
|
4
|
+
*
|
|
5
|
+
* Creates x402 V2 payment headers for USDC payments on PEAQ network.
|
|
6
|
+
* Implements ERC-3009 TransferWithAuthorization signing using viem's EIP-712.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PaymentClient = exports.PEAQ_CHAIN_ID = exports.USDC_CONTRACT = exports.DEFAULT_RPC_URL = exports.DEFAULT_PAY_TO_ADDRESS = exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = exports.X402_VERSION = exports.USDC_DECIMALS = void 0;
|
|
10
|
+
exports.buildX402ResourceUrl = buildX402ResourceUrl;
|
|
11
|
+
exports.usdcToUnits = usdcToUnits;
|
|
12
|
+
exports.unitsToUsdc = unitsToUsdc;
|
|
13
|
+
const viem_1 = require("viem");
|
|
14
|
+
const accounts_1 = require("viem/accounts");
|
|
15
|
+
// PEAQ chain definition
|
|
16
|
+
const peaq = (0, viem_1.defineChain)({
|
|
17
|
+
id: 3338,
|
|
18
|
+
name: "peaq",
|
|
19
|
+
network: "peaq",
|
|
20
|
+
nativeCurrency: {
|
|
21
|
+
decimals: 18,
|
|
22
|
+
name: "PEAQ",
|
|
23
|
+
symbol: "PEAQ"
|
|
24
|
+
},
|
|
25
|
+
rpcUrls: {
|
|
26
|
+
default: {
|
|
27
|
+
http: ["https://peaq.api.onfinality.io/public"]
|
|
28
|
+
},
|
|
29
|
+
public: {
|
|
30
|
+
http: ["https://peaq.api.onfinality.io/public"]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
// USDC contract on PEAQ
|
|
35
|
+
const USDC_CONTRACT = "0xbbA60da06c2c5424f03f7434542280FCAd453d10";
|
|
36
|
+
exports.USDC_CONTRACT = USDC_CONTRACT;
|
|
37
|
+
const PEAQ_NETWORK_CAIP2 = "eip155:3338";
|
|
38
|
+
exports.PEAQ_CHAIN_ID = PEAQ_NETWORK_CAIP2;
|
|
39
|
+
// ERC-3009 TransferWithAuthorization EIP-712 types
|
|
40
|
+
const ERC3009_TYPES = {
|
|
41
|
+
TransferWithAuthorization: [
|
|
42
|
+
{ name: "from", type: "address" },
|
|
43
|
+
{ name: "to", type: "address" },
|
|
44
|
+
{ name: "value", type: "uint256" },
|
|
45
|
+
{ name: "validAfter", type: "uint256" },
|
|
46
|
+
{ name: "validBefore", type: "uint256" },
|
|
47
|
+
{ name: "nonce", type: "bytes32" }
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
// x402 constants
|
|
51
|
+
exports.USDC_DECIMALS = 6;
|
|
52
|
+
exports.X402_VERSION = 2;
|
|
53
|
+
exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = 60;
|
|
54
|
+
exports.DEFAULT_PAY_TO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
55
|
+
exports.DEFAULT_RPC_URL = "https://peaq.api.onfinality.io/public";
|
|
56
|
+
/**
|
|
57
|
+
* Converts a WebSocket URL to an HTTP(S) URL for x402 resource specification.
|
|
58
|
+
* The x402 protocol requires HTTP URLs, not WebSocket URLs.
|
|
59
|
+
*
|
|
60
|
+
* @param wsUrl - WebSocket URL (wss:// or ws://)
|
|
61
|
+
* @returns HTTP URL (https:// or http://)
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* buildX402ResourceUrl("wss://api.teneo.com/ws") // "https://api.teneo.com/x402"
|
|
65
|
+
*/
|
|
66
|
+
function buildX402ResourceUrl(wsUrl) {
|
|
67
|
+
const httpUrl = wsUrl.replace(/^wss:\/\//, "https://").replace(/^ws:\/\//, "http://");
|
|
68
|
+
// Replace /ws endpoint with /x402, or append /x402 if URL doesn't end with /ws
|
|
69
|
+
return /\/ws\/?$/.test(httpUrl)
|
|
70
|
+
? httpUrl.replace(/\/ws\/?$/, "/x402")
|
|
71
|
+
: httpUrl.replace(/\/?$/, "/x402");
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Converts USDC human-readable amount to micro-units (6 decimals).
|
|
75
|
+
* @param usdc - Amount in USDC (e.g., 1.5)
|
|
76
|
+
* @returns Amount in micro-units (e.g., 1500000)
|
|
77
|
+
*/
|
|
78
|
+
function usdcToUnits(usdc) {
|
|
79
|
+
return Math.round(usdc * 10 ** exports.USDC_DECIMALS);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Converts micro-units to USDC human-readable amount.
|
|
83
|
+
* @param units - Amount in micro-units (e.g., 1500000)
|
|
84
|
+
* @returns Amount in USDC (e.g., 1.5)
|
|
85
|
+
*/
|
|
86
|
+
function unitsToUsdc(units) {
|
|
87
|
+
return units / 10 ** exports.USDC_DECIMALS;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate a random 32-byte nonce as hex string
|
|
91
|
+
*/
|
|
92
|
+
function generateNonce() {
|
|
93
|
+
const randomBytes = new Uint8Array(32);
|
|
94
|
+
crypto.getRandomValues(randomBytes);
|
|
95
|
+
return (0, viem_1.toHex)(randomBytes);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* PaymentClient handles creation of x402 V2 payment headers
|
|
99
|
+
* for the quote-approve payment flow.
|
|
100
|
+
*/
|
|
101
|
+
class PaymentClient {
|
|
102
|
+
secureKey;
|
|
103
|
+
walletAddress;
|
|
104
|
+
network;
|
|
105
|
+
asset;
|
|
106
|
+
resourceUrl;
|
|
107
|
+
constructor(secureKey, walletAddress, config = {}) {
|
|
108
|
+
this.secureKey = secureKey;
|
|
109
|
+
this.walletAddress = walletAddress;
|
|
110
|
+
this.network = config.network ?? PEAQ_NETWORK_CAIP2;
|
|
111
|
+
this.asset = config.asset ?? USDC_CONTRACT;
|
|
112
|
+
this.resourceUrl = config.resourceUrl ?? "";
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Creates an x402 V2 payment header for a specific amount and recipient.
|
|
116
|
+
*
|
|
117
|
+
* @param amountMicroUnits - Amount in micro-units (e.g., 1000 = 0.001 USDC)
|
|
118
|
+
* @param recipientAddress - Wallet address of the payment recipient (agent)
|
|
119
|
+
* @param resourceUrl - Optional override for x402 resource URL
|
|
120
|
+
* @returns Base64 encoded x402 V2 payment header
|
|
121
|
+
*/
|
|
122
|
+
async createPaymentHeader(amountMicroUnits, recipientAddress, resourceUrl) {
|
|
123
|
+
const resource = resourceUrl || this.resourceUrl || this.getDefaultResourceUrl();
|
|
124
|
+
const amountStr = Math.round(amountMicroUnits).toString();
|
|
125
|
+
// Create payment header using the secure key
|
|
126
|
+
const header = await this.secureKey.use(async (privateKey) => {
|
|
127
|
+
const account = (0, accounts_1.privateKeyToAccount)(privateKey);
|
|
128
|
+
// Time bounds for the authorization (valid for 60 seconds)
|
|
129
|
+
const now = Math.floor(Date.now() / 1000);
|
|
130
|
+
const validAfter = now - 60; // Valid from 60 seconds ago
|
|
131
|
+
const validBefore = now + 60; // Valid until 60 seconds from now
|
|
132
|
+
const nonce = generateNonce();
|
|
133
|
+
// EIP-712 domain for USDC on PEAQ
|
|
134
|
+
const domain = {
|
|
135
|
+
name: "USDC",
|
|
136
|
+
version: "2",
|
|
137
|
+
chainId: BigInt(peaq.id),
|
|
138
|
+
verifyingContract: this.asset
|
|
139
|
+
};
|
|
140
|
+
// ERC-3009 TransferWithAuthorization message
|
|
141
|
+
const message = {
|
|
142
|
+
from: account.address,
|
|
143
|
+
to: recipientAddress,
|
|
144
|
+
value: BigInt(amountStr),
|
|
145
|
+
validAfter: BigInt(validAfter),
|
|
146
|
+
validBefore: BigInt(validBefore),
|
|
147
|
+
nonce: nonce
|
|
148
|
+
};
|
|
149
|
+
// Sign the EIP-712 typed data
|
|
150
|
+
const signature = await (0, accounts_1.signTypedData)({
|
|
151
|
+
privateKey: privateKey,
|
|
152
|
+
domain,
|
|
153
|
+
types: ERC3009_TYPES,
|
|
154
|
+
primaryType: "TransferWithAuthorization",
|
|
155
|
+
message
|
|
156
|
+
});
|
|
157
|
+
// Build V1 payload (authorization data)
|
|
158
|
+
const v1Payload = {
|
|
159
|
+
authorization: {
|
|
160
|
+
from: account.address,
|
|
161
|
+
to: recipientAddress,
|
|
162
|
+
value: amountStr,
|
|
163
|
+
validAfter: validAfter.toString(),
|
|
164
|
+
validBefore: validBefore.toString(),
|
|
165
|
+
nonce: nonce
|
|
166
|
+
},
|
|
167
|
+
signature: signature
|
|
168
|
+
};
|
|
169
|
+
// Build V2 payload (what the backend expects)
|
|
170
|
+
const v2Payload = {
|
|
171
|
+
x402Version: 2,
|
|
172
|
+
resource: {
|
|
173
|
+
url: resource,
|
|
174
|
+
description: "Teneo SDK payment",
|
|
175
|
+
mimeType: "application/json"
|
|
176
|
+
},
|
|
177
|
+
accepted: {
|
|
178
|
+
scheme: "exact",
|
|
179
|
+
network: this.network,
|
|
180
|
+
amount: amountStr,
|
|
181
|
+
asset: this.asset,
|
|
182
|
+
payTo: recipientAddress,
|
|
183
|
+
maxTimeoutSeconds: 60,
|
|
184
|
+
extra: { name: "USDC", version: "2" }
|
|
185
|
+
},
|
|
186
|
+
payload: v1Payload
|
|
187
|
+
};
|
|
188
|
+
return Buffer.from(JSON.stringify(v2Payload)).toString("base64");
|
|
189
|
+
});
|
|
190
|
+
return header;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get default x402 resource URL from WebSocket URL
|
|
194
|
+
*/
|
|
195
|
+
getDefaultResourceUrl() {
|
|
196
|
+
// Default fallback
|
|
197
|
+
return "https://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/x402";
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Gets the wallet address associated with this payment client.
|
|
201
|
+
*/
|
|
202
|
+
get address() {
|
|
203
|
+
return this.walletAddress;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.PaymentClient = PaymentClient;
|
|
207
|
+
//# sourceMappingURL=payment-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-client.js","sourceRoot":"","sources":["../../src/payments/payment-client.ts"],"names":[],"mappings":"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"}
|