@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,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent category constants and Zod schemas
|
|
3
|
+
* Enables agents to be tagged with up to 2 categories for better discoverability
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Predefined agent categories for classification
|
|
10
|
+
*/
|
|
11
|
+
export const AGENT_CATEGORIES = [
|
|
12
|
+
"Trading",
|
|
13
|
+
"Finance",
|
|
14
|
+
"Crypto",
|
|
15
|
+
"Social Media",
|
|
16
|
+
"Lead Generation",
|
|
17
|
+
"E-Commerce",
|
|
18
|
+
"SEO",
|
|
19
|
+
"News",
|
|
20
|
+
"Real Estate",
|
|
21
|
+
"Travel",
|
|
22
|
+
"Automation",
|
|
23
|
+
"Developer Tools",
|
|
24
|
+
"AI",
|
|
25
|
+
"Integrations",
|
|
26
|
+
"Open Source",
|
|
27
|
+
"Jobs",
|
|
28
|
+
"Price Lists",
|
|
29
|
+
"Other"
|
|
30
|
+
] as const;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Maximum number of categories an agent can have
|
|
34
|
+
*/
|
|
35
|
+
export const MAX_CATEGORIES = 2;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Zod schema for validating a single agent category
|
|
39
|
+
*/
|
|
40
|
+
export const AgentCategorySchema = z.enum(AGENT_CATEGORIES);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* TypeScript type for a single agent category
|
|
44
|
+
*/
|
|
45
|
+
export type AgentCategory = z.infer<typeof AgentCategorySchema>;
|
package/src/types/config.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
import { ClientTypeSchema,
|
|
7
|
+
import { ClientTypeSchema, RoomInfoSchema, MessageTypeSchema, MessageType } from "./messages";
|
|
8
8
|
import { RetryStrategySchema, type RetryStrategy } from "../utils/retry-policy";
|
|
9
9
|
import type { SecurePrivateKey } from "../utils/secure-private-key";
|
|
10
10
|
|
|
@@ -118,7 +118,17 @@ export const SDKConfigSchema = z.object({
|
|
|
118
118
|
// Message deduplication (CB-4)
|
|
119
119
|
enableMessageDeduplication: z.boolean().optional(),
|
|
120
120
|
messageDedupeTtl: z.number().min(1000).max(3600000).optional(), // 1s to 1 hour
|
|
121
|
-
messageDedupMaxSize: z.number().min(1).max(100000).optional()
|
|
121
|
+
messageDedupMaxSize: z.number().min(1).max(100000).optional(),
|
|
122
|
+
|
|
123
|
+
// Quote-Approve Payment Flow (v2.2.0)
|
|
124
|
+
autoApproveQuotes: z.boolean().optional(),
|
|
125
|
+
maxPricePerRequest: z.number().min(0).optional(), // in micro-USDC
|
|
126
|
+
quoteTimeout: z.number().min(1000).max(120000).optional(), // 1s to 2 minutes
|
|
127
|
+
paymentNetwork: z
|
|
128
|
+
.string()
|
|
129
|
+
.regex(/^[a-z0-9-]+:\d+$/, "Must be valid CAIP-2 format")
|
|
130
|
+
.optional(),
|
|
131
|
+
paymentAsset: z.string().optional()
|
|
122
132
|
});
|
|
123
133
|
|
|
124
134
|
// Partial config for constructor
|
|
@@ -146,11 +156,16 @@ export const AuthenticationStateSchema = z.object({
|
|
|
146
156
|
isWhitelisted: z.boolean().optional(),
|
|
147
157
|
isAdmin: z.boolean().optional(),
|
|
148
158
|
nftVerified: z.boolean().optional(),
|
|
149
|
-
rooms: z.array(z.string()).optional(), // Room IDs for backward compatibility
|
|
150
|
-
roomObjects: z.array(
|
|
151
|
-
privateRoomId: z.string().optional(),
|
|
159
|
+
rooms: z.array(z.string()).optional(), // Room IDs for backward compatibility (deprecated)
|
|
160
|
+
roomObjects: z.array(RoomInfoSchema).optional(), // Full room objects from auth (v2.0.0: uses RoomInfo)
|
|
161
|
+
privateRoomId: z.string().optional(), // DEPRECATED: Single room ID (use privateRoomIds instead)
|
|
152
162
|
challenge: z.string().optional(),
|
|
153
|
-
challengeTimestamp: z.number().optional()
|
|
163
|
+
challengeTimestamp: z.number().optional(),
|
|
164
|
+
|
|
165
|
+
// NEW in v2.0.0: Room categorization
|
|
166
|
+
privateRoomIds: z.array(z.string()).optional(), // IDs of rooms user owns
|
|
167
|
+
sharedRoomIds: z.array(z.string()).optional(), // IDs of rooms user is member of
|
|
168
|
+
maxPrivateRooms: z.number().optional() // Max rooms user can create
|
|
154
169
|
});
|
|
155
170
|
|
|
156
171
|
// Webhook config schema
|
|
@@ -217,7 +232,13 @@ export const DEFAULT_CONFIG: PartialSDKConfig = SDKConfigSchema.partial().parse(
|
|
|
217
232
|
webhookTimeout: 10000,
|
|
218
233
|
enableMessageDeduplication: true, // Enable by default to prevent duplicates
|
|
219
234
|
messageDedupeTtl: 60000, // 60 seconds (1 minute)
|
|
220
|
-
messageDedupMaxSize: 10000 // 10k messages
|
|
235
|
+
messageDedupMaxSize: 10000, // 10k messages
|
|
236
|
+
|
|
237
|
+
// Quote-Approve Payment Flow (v2.2.0)
|
|
238
|
+
autoApproveQuotes: true, // Auto-approve quotes by default
|
|
239
|
+
quoteTimeout: 30000, // 30 seconds for quote responses
|
|
240
|
+
paymentNetwork: "eip155:3338", // PEAQ mainnet
|
|
241
|
+
paymentAsset: "0xbbA60da06c2c5424f03f7434542280FCAd453d10" // USDC on PEAQ
|
|
221
242
|
});
|
|
222
243
|
|
|
223
244
|
// Configuration validation with custom refinements
|
|
@@ -774,6 +795,58 @@ export class SDKConfigBuilder {
|
|
|
774
795
|
return this;
|
|
775
796
|
}
|
|
776
797
|
|
|
798
|
+
/**
|
|
799
|
+
* Configures payment settings for the quote-approve flow (v2.2.0).
|
|
800
|
+
* Controls how the SDK handles task pricing and payments.
|
|
801
|
+
*
|
|
802
|
+
* @param options - Payment configuration options
|
|
803
|
+
* @param options.autoApprove - Auto-approve and pay for quotes (default: true)
|
|
804
|
+
* @param options.maxPricePerRequest - Maximum price per request in micro-USDC (1000000 = 1 USDC)
|
|
805
|
+
* @param options.quoteTimeout - Timeout for quote responses in ms (default: 30000)
|
|
806
|
+
* @param options.network - Payment network in CAIP-2 format (default: "eip155:3338")
|
|
807
|
+
* @param options.asset - Payment asset (default: "USDC")
|
|
808
|
+
* @returns this builder for method chaining
|
|
809
|
+
*
|
|
810
|
+
* @example
|
|
811
|
+
* ```typescript
|
|
812
|
+
* // Auto-approve with price limit
|
|
813
|
+
* builder.withPayments({
|
|
814
|
+
* autoApprove: true,
|
|
815
|
+
* maxPricePerRequest: 1000000 // Max 1 USDC per request
|
|
816
|
+
* })
|
|
817
|
+
*
|
|
818
|
+
* // Manual approval mode
|
|
819
|
+
* builder.withPayments({ autoApprove: false })
|
|
820
|
+
* ```
|
|
821
|
+
*/
|
|
822
|
+
withPayments(options: {
|
|
823
|
+
autoApprove?: boolean;
|
|
824
|
+
maxPricePerRequest?: number;
|
|
825
|
+
quoteTimeout?: number;
|
|
826
|
+
network?: string;
|
|
827
|
+
asset?: string;
|
|
828
|
+
}): this {
|
|
829
|
+
if (options.autoApprove !== undefined) {
|
|
830
|
+
this.config.autoApproveQuotes = z.boolean().parse(options.autoApprove);
|
|
831
|
+
}
|
|
832
|
+
if (options.maxPricePerRequest !== undefined) {
|
|
833
|
+
this.config.maxPricePerRequest = z.number().min(0).parse(options.maxPricePerRequest);
|
|
834
|
+
}
|
|
835
|
+
if (options.quoteTimeout !== undefined) {
|
|
836
|
+
this.config.quoteTimeout = z.number().min(1000).max(120000).parse(options.quoteTimeout);
|
|
837
|
+
}
|
|
838
|
+
if (options.network !== undefined) {
|
|
839
|
+
this.config.paymentNetwork = z
|
|
840
|
+
.string()
|
|
841
|
+
.regex(/^[a-z0-9-]+:\d+$/)
|
|
842
|
+
.parse(options.network);
|
|
843
|
+
}
|
|
844
|
+
if (options.asset !== undefined) {
|
|
845
|
+
this.config.paymentAsset = z.string().parse(options.asset);
|
|
846
|
+
}
|
|
847
|
+
return this;
|
|
848
|
+
}
|
|
849
|
+
|
|
777
850
|
/**
|
|
778
851
|
* Builds and validates the final SDK configuration.
|
|
779
852
|
* Performs comprehensive validation including custom refinements (e.g., webhook security).
|
package/src/types/error-codes.ts
CHANGED
|
@@ -38,6 +38,20 @@ export enum ErrorCode {
|
|
|
38
38
|
// Rate limit
|
|
39
39
|
RATE_LIMIT = "RATE_LIMIT",
|
|
40
40
|
|
|
41
|
+
// Room Management errors (v2.0.0)
|
|
42
|
+
OPERATION_FAILED = "OPERATION_FAILED",
|
|
43
|
+
PERMISSION_DENIED = "PERMISSION_DENIED",
|
|
44
|
+
|
|
45
|
+
// Quote-Approve Payment errors (v2.2.0)
|
|
46
|
+
QUOTE_EXPIRED = "QUOTE_EXPIRED",
|
|
47
|
+
QUOTE_NOT_FOUND = "QUOTE_NOT_FOUND",
|
|
48
|
+
QUOTE_TIMEOUT = "QUOTE_TIMEOUT",
|
|
49
|
+
PRICE_LIMIT_EXCEEDED = "PRICE_LIMIT_EXCEEDED",
|
|
50
|
+
INVALID_PAYMENT_NETWORK = "INVALID_PAYMENT_NETWORK",
|
|
51
|
+
INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
|
|
52
|
+
PAYMENT_FAILED = "PAYMENT_FAILED",
|
|
53
|
+
PAYMENT_SIGNATURE_FAILED = "PAYMENT_SIGNATURE_FAILED",
|
|
54
|
+
|
|
41
55
|
// Generic timeout (for backward compatibility)
|
|
42
56
|
TIMEOUT_ERROR = "TIMEOUT_ERROR",
|
|
43
57
|
TIMEOUT = "TIMEOUT"
|
package/src/types/events.test.ts
CHANGED
|
@@ -231,6 +231,7 @@ describe("Error Classes", () => {
|
|
|
231
231
|
expect(isRecoverableError(regularError)).toBe(false);
|
|
232
232
|
|
|
233
233
|
const customError = { message: "Not an error object" };
|
|
234
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
235
|
expect(isRecoverableError(customError as any)).toBe(false);
|
|
235
236
|
});
|
|
236
237
|
});
|
package/src/types/events.ts
CHANGED
|
@@ -262,6 +262,21 @@ export class ConfigurationError extends SDKError {
|
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
+
/**
|
|
266
|
+
* Error thrown when payment operations fail (v2.2.0).
|
|
267
|
+
* Can occur when:
|
|
268
|
+
* - Payment signature creation fails
|
|
269
|
+
* - Price limit is exceeded
|
|
270
|
+
* - Insufficient balance
|
|
271
|
+
* - Invalid payment network
|
|
272
|
+
*/
|
|
273
|
+
export class PaymentError extends SDKError {
|
|
274
|
+
constructor(message: string, code: ErrorCode, details?: any) {
|
|
275
|
+
super(message, code, details, false);
|
|
276
|
+
this.name = "PaymentError";
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
265
280
|
// SDK Events interface with proper typing
|
|
266
281
|
export interface SDKEvents {
|
|
267
282
|
// Connection events
|
|
@@ -303,11 +318,63 @@ export interface SDKEvents {
|
|
|
303
318
|
"room:message": (roomId: string, message: z.infer<typeof BaseMessageSchema>) => void;
|
|
304
319
|
"room:list": (rooms: z.infer<typeof RoomInfoSchema>[]) => void;
|
|
305
320
|
|
|
321
|
+
// Room Management events (v2.0.0)
|
|
322
|
+
"room:created": (room: z.infer<typeof RoomInfoSchema>) => void;
|
|
323
|
+
"room:updated": (room: z.infer<typeof RoomInfoSchema>) => void;
|
|
324
|
+
"room:deleted": (roomId: string) => void;
|
|
325
|
+
"room:create_error": (error: Error) => void;
|
|
326
|
+
"room:update_error": (error: Error, roomId?: string) => void;
|
|
327
|
+
"room:delete_error": (error: Error, roomId?: string) => void;
|
|
328
|
+
|
|
329
|
+
// Agent Room Management events (v2.0.0)
|
|
330
|
+
"agent_room:agent_added": (roomId: string, agentId: string) => void;
|
|
331
|
+
"agent_room:agent_removed": (roomId: string, agentId: string) => void;
|
|
332
|
+
"agent_room:agents_listed": (roomId: string, agents: any[]) => void;
|
|
333
|
+
"agent_room:available_agents_listed": (agents: any[]) => void;
|
|
334
|
+
"agent_room:status_update": (data: {
|
|
335
|
+
roomId: string;
|
|
336
|
+
agentId: string;
|
|
337
|
+
status: string;
|
|
338
|
+
agent?: any;
|
|
339
|
+
}) => void;
|
|
340
|
+
"agent_room:add_error": (error: Error, roomId?: string) => void;
|
|
341
|
+
"agent_room:remove_error": (error: Error, roomId?: string) => void;
|
|
342
|
+
"agent_room:list_error": (error: Error, roomId?: string) => void;
|
|
343
|
+
"agent_room:list_available_error": (error: Error) => void;
|
|
344
|
+
|
|
306
345
|
// Coordinator events
|
|
307
346
|
"coordinator:processing": (userRequest: string) => void;
|
|
308
347
|
"coordinator:selected": (agentId: string, reasoning: string) => void;
|
|
309
348
|
"coordinator:error": (error: string) => void;
|
|
310
349
|
|
|
350
|
+
// Quote-Approve Payment events (v2.2.0)
|
|
351
|
+
"quote:received": (quote: any) => void;
|
|
352
|
+
"quote:expired": (taskId: string) => void;
|
|
353
|
+
"payment:blocked": (data: { agentId: string; agentPrice: number; maxPrice: number }) => void;
|
|
354
|
+
"payment:attached": (data: { agentId: string; amount: number; command: string }) => void;
|
|
355
|
+
"payment:error": (error: Error, agentId?: string) => void;
|
|
356
|
+
|
|
357
|
+
// Rate Limit events
|
|
358
|
+
rate_limit: (notification: {
|
|
359
|
+
title: string;
|
|
360
|
+
message: string;
|
|
361
|
+
ctaText?: string;
|
|
362
|
+
ctaLink?: string;
|
|
363
|
+
messageType: string;
|
|
364
|
+
limitType: string;
|
|
365
|
+
resetAt?: string;
|
|
366
|
+
}) => void;
|
|
367
|
+
|
|
368
|
+
// Admin events
|
|
369
|
+
"admin:user_count": (data: { count: number; timestamp?: string }) => void;
|
|
370
|
+
"admin:status_changed": (isAdmin: boolean) => void;
|
|
371
|
+
|
|
372
|
+
// User Presence events
|
|
373
|
+
"user:authenticated": (data: { wallet: string }) => void;
|
|
374
|
+
|
|
375
|
+
// User Preferences events
|
|
376
|
+
"preferences:updated": (data: { maxPricePerRequest?: number | null }) => void;
|
|
377
|
+
|
|
311
378
|
// Webhook events
|
|
312
379
|
"webhook:sent": (payload: any, url: string) => void;
|
|
313
380
|
"webhook:success": (response: any, url: string) => void;
|
package/src/types/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export {
|
|
|
14
14
|
|
|
15
15
|
// Supporting schemas
|
|
16
16
|
CapabilitySchema,
|
|
17
|
+
CommandPricingSchema,
|
|
17
18
|
CommandSchema,
|
|
18
19
|
RoomSchema,
|
|
19
20
|
AgentSchema,
|
|
@@ -40,6 +41,12 @@ export {
|
|
|
40
41
|
TaskResponseMessageSchema,
|
|
41
42
|
AgentSelectedMessageSchema,
|
|
42
43
|
|
|
44
|
+
// Quote-Approve Flow schemas (v2.2.0)
|
|
45
|
+
PricingInfoSchema,
|
|
46
|
+
RequestTaskMessageSchema,
|
|
47
|
+
TaskQuoteMessageSchema,
|
|
48
|
+
ConfirmTaskMessageSchema,
|
|
49
|
+
|
|
43
50
|
// System message schemas
|
|
44
51
|
AgentsListMessageSchema,
|
|
45
52
|
ErrorMessageSchema,
|
|
@@ -55,6 +62,33 @@ export {
|
|
|
55
62
|
RoomInfoSchema,
|
|
56
63
|
ListRoomsResponseSchema,
|
|
57
64
|
|
|
65
|
+
// Room Management schemas (v2.0.0)
|
|
66
|
+
CreateRoomMessageSchema,
|
|
67
|
+
UpdateRoomMessageSchema,
|
|
68
|
+
DeleteRoomMessageSchema,
|
|
69
|
+
RoomOperationResponseSchema,
|
|
70
|
+
RoomMemberInfoSchema,
|
|
71
|
+
AddRoomMemberMessageSchema,
|
|
72
|
+
RemoveRoomMemberMessageSchema,
|
|
73
|
+
ListRoomMembersMessageSchema,
|
|
74
|
+
RoomMembersResponseSchema,
|
|
75
|
+
RoomMemberOperationResponseSchema,
|
|
76
|
+
|
|
77
|
+
// Agent Room Management schemas (v2.0.0)
|
|
78
|
+
AgentRoomInfoSchema,
|
|
79
|
+
AddAgentToRoomMessageSchema,
|
|
80
|
+
RemoveAgentFromRoomMessageSchema,
|
|
81
|
+
ListRoomAgentsMessageSchema,
|
|
82
|
+
ListAvailableAgentsMessageSchema,
|
|
83
|
+
AgentStatusUpdateMessageSchema,
|
|
84
|
+
RoomAgentsResponseSchema,
|
|
85
|
+
AvailableAgentsResponseSchema,
|
|
86
|
+
AgentRoomOperationResponseSchema,
|
|
87
|
+
|
|
88
|
+
// Room Ping schemas (v2.0.0)
|
|
89
|
+
RoomPingMessageSchema,
|
|
90
|
+
RoomPongResponseSchema,
|
|
91
|
+
|
|
58
92
|
// Union schema
|
|
59
93
|
AnyMessageSchema,
|
|
60
94
|
|
|
@@ -65,6 +99,7 @@ export {
|
|
|
65
99
|
type AgentType,
|
|
66
100
|
type AgentStatus,
|
|
67
101
|
type Capability,
|
|
102
|
+
type CommandPricing,
|
|
68
103
|
type Command,
|
|
69
104
|
type Room,
|
|
70
105
|
type Agent,
|
|
@@ -82,6 +117,12 @@ export {
|
|
|
82
117
|
type TaskMessage,
|
|
83
118
|
type TaskResponseMessage,
|
|
84
119
|
type AgentSelectedMessage,
|
|
120
|
+
|
|
121
|
+
// Quote-Approve Flow types (v2.2.0)
|
|
122
|
+
type PricingInfo,
|
|
123
|
+
type RequestTaskMessage,
|
|
124
|
+
type TaskQuoteMessage,
|
|
125
|
+
type ConfirmTaskMessage,
|
|
85
126
|
type AgentsListMessage,
|
|
86
127
|
type ErrorMessage,
|
|
87
128
|
type PingMessage,
|
|
@@ -93,6 +134,64 @@ export {
|
|
|
93
134
|
type UnsubscribeResponse,
|
|
94
135
|
type RoomInfo,
|
|
95
136
|
type ListRoomsResponse,
|
|
137
|
+
|
|
138
|
+
// Room Management types (v2.0.0)
|
|
139
|
+
type CreateRoomMessage,
|
|
140
|
+
type UpdateRoomMessage,
|
|
141
|
+
type DeleteRoomMessage,
|
|
142
|
+
type RoomOperationResponse,
|
|
143
|
+
type RoomMemberInfo,
|
|
144
|
+
type AddRoomMemberMessage,
|
|
145
|
+
type RemoveRoomMemberMessage,
|
|
146
|
+
type ListRoomMembersMessage,
|
|
147
|
+
type RoomMembersResponse,
|
|
148
|
+
type RoomMemberOperationResponse,
|
|
149
|
+
|
|
150
|
+
// Agent Room Management types (v2.0.0)
|
|
151
|
+
type AgentRoomInfo,
|
|
152
|
+
type AddAgentToRoomMessage,
|
|
153
|
+
type RemoveAgentFromRoomMessage,
|
|
154
|
+
type ListRoomAgentsMessage,
|
|
155
|
+
type ListAvailableAgentsMessage,
|
|
156
|
+
type AgentStatusUpdateMessage,
|
|
157
|
+
type RoomAgentsResponse,
|
|
158
|
+
type AvailableAgentsResponse,
|
|
159
|
+
type AgentRoomOperationResponse,
|
|
160
|
+
|
|
161
|
+
// Room Ping types (v2.0.0)
|
|
162
|
+
type RoomPingMessage,
|
|
163
|
+
type RoomPongResponse,
|
|
164
|
+
|
|
165
|
+
// Admin types
|
|
166
|
+
AdminAgentInfoSchema,
|
|
167
|
+
ListAllAgentsMessageSchema,
|
|
168
|
+
AllAgentsResponseSchema,
|
|
169
|
+
UserCountDataSchema,
|
|
170
|
+
UserCountMessageSchema,
|
|
171
|
+
UserAuthenticatedMessageSchema,
|
|
172
|
+
RateLimitNotificationMessageSchema,
|
|
173
|
+
GetAgentDetailsMessageSchema,
|
|
174
|
+
AgentDetailsResponseMessageSchema,
|
|
175
|
+
type AdminAgentInfo,
|
|
176
|
+
type ListAllAgentsMessage,
|
|
177
|
+
type AllAgentsResponse,
|
|
178
|
+
type UserCountData,
|
|
179
|
+
type UserCountMessage,
|
|
180
|
+
type UserAuthenticatedMessage,
|
|
181
|
+
type RateLimitNotificationMessage,
|
|
182
|
+
type GetAgentDetailsMessage,
|
|
183
|
+
type AgentDetailsResponseMessage,
|
|
184
|
+
|
|
185
|
+
// User Preferences types
|
|
186
|
+
SetUserPreferencesDataSchema,
|
|
187
|
+
SetUserPreferencesMessageSchema,
|
|
188
|
+
UserPreferencesUpdatedDataSchema,
|
|
189
|
+
UserPreferencesUpdatedMessageSchema,
|
|
190
|
+
type SetUserPreferencesData,
|
|
191
|
+
type SetUserPreferencesMessage,
|
|
192
|
+
type UserPreferencesUpdatedData,
|
|
193
|
+
type UserPreferencesUpdatedMessage,
|
|
194
|
+
|
|
96
195
|
type AnyMessage,
|
|
97
196
|
|
|
98
197
|
// Type guards
|
|
@@ -114,6 +213,9 @@ export {
|
|
|
114
213
|
createSubscribe,
|
|
115
214
|
createUnsubscribe,
|
|
116
215
|
createListRooms,
|
|
216
|
+
createRequestTask,
|
|
217
|
+
createConfirmTask,
|
|
218
|
+
createSetUserPreferences,
|
|
117
219
|
|
|
118
220
|
// Validation helpers
|
|
119
221
|
validateMessage,
|
|
@@ -186,6 +288,7 @@ export {
|
|
|
186
288
|
ValidationError,
|
|
187
289
|
TimeoutError,
|
|
188
290
|
RateLimitError,
|
|
291
|
+
PaymentError,
|
|
189
292
|
|
|
190
293
|
// Validation helpers
|
|
191
294
|
validateEventData,
|
|
@@ -197,3 +300,11 @@ export { ErrorCode } from "./error-codes";
|
|
|
197
300
|
|
|
198
301
|
// Health status types
|
|
199
302
|
export { type HealthStatus } from "./health";
|
|
303
|
+
|
|
304
|
+
// Agent category types
|
|
305
|
+
export {
|
|
306
|
+
AGENT_CATEGORIES,
|
|
307
|
+
MAX_CATEGORIES,
|
|
308
|
+
AgentCategorySchema,
|
|
309
|
+
type AgentCategory
|
|
310
|
+
} from "./categories";
|
|
@@ -20,7 +20,8 @@ import {
|
|
|
20
20
|
describe("stringToBoolean transform", () => {
|
|
21
21
|
// Test stringToBoolean indirectly through RoomSchema which uses it for is_public and is_active
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
const createTestRoom = (is_public: unknown, is_active: unknown) => ({
|
|
24
25
|
id: "room-1",
|
|
25
26
|
name: "Test Room",
|
|
26
27
|
is_public,
|