@teneo-protocol/sdk 2.0.0 → 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 +1 -0
- package/.github/workflows/push-to-main.yml +1 -1
- package/.github/workflows/top-issue.yml +102 -0
- package/CHANGELOG.md +69 -0
- package/CONCEPTS.md +747 -0
- package/README.md +178 -8
- package/dist/constants.js +8 -8
- package/dist/constants.js.map +1 -1
- package/dist/core/websocket-client.d.ts +15 -3
- package/dist/core/websocket-client.d.ts.map +1 -1
- package/dist/core/websocket-client.js +52 -13
- 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.map +1 -1
- package/dist/handlers/message-handlers/agent-room-operation-response-handler.js +2 -5
- package/dist/handlers/message-handlers/agent-room-operation-response-handler.js.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 +783 -0
- package/dist/handlers/message-handlers/agent-status-update-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/agent-status-update-handler.js +2 -5
- package/dist/handlers/message-handlers/agent-status-update-handler.js.map +1 -1
- 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.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.map +1 -1
- package/dist/handlers/message-handlers/auth-message-handler.js +6 -5
- package/dist/handlers/message-handlers/auth-message-handler.js.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.map +1 -1
- package/dist/handlers/message-handlers/auth-success-handler.js +6 -5
- 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.js +3 -2
- package/dist/handlers/message-handlers/challenge-handler.js.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 +6 -0
- package/dist/handlers/message-handlers/index.d.ts.map +1 -1
- package/dist/handlers/message-handlers/index.js +33 -1
- package/dist/handlers/message-handlers/index.js.map +1 -1
- package/dist/handlers/message-handlers/list-available-agents-handler.d.ts +783 -0
- package/dist/handlers/message-handlers/list-available-agents-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/list-available-agents-handler.js +2 -5
- package/dist/handlers/message-handlers/list-available-agents-handler.js.map +1 -1
- package/dist/handlers/message-handlers/list-room-agents-handler.d.ts +783 -0
- package/dist/handlers/message-handlers/list-room-agents-handler.d.ts.map +1 -1
- package/dist/handlers/message-handlers/list-room-agents-handler.js +2 -5
- package/dist/handlers/message-handlers/list-room-agents-handler.js.map +1 -1
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +2 -199
- 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.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.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.map +1 -1
- package/dist/handlers/message-handlers/room-operation-response-handler.js +2 -5
- package/dist/handlers/message-handlers/room-operation-response-handler.js.map +1 -1
- 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 -9
- package/dist/handlers/message-handlers/types.d.ts.map +1 -1
- 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 +1 -7
- package/dist/managers/agent-room-manager.d.ts.map +1 -1
- package/dist/managers/agent-room-manager.js +83 -36
- package/dist/managers/agent-room-manager.js.map +1 -1
- package/dist/managers/connection-manager.js +2 -0
- package/dist/managers/connection-manager.js.map +1 -1
- package/dist/managers/index.d.ts +2 -1
- package/dist/managers/index.d.ts.map +1 -1
- package/dist/managers/index.js +3 -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.map +1 -1
- package/dist/managers/room-management-manager.js +9 -7
- package/dist/managers/room-management-manager.js.map +1 -1
- package/dist/managers/room-manager.d.ts +7 -5
- 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 +135 -21
- package/dist/teneo-sdk.d.ts.map +1 -1
- package/dist/teneo-sdk.js +268 -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 +79 -8
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +62 -5
- package/dist/types/config.js.map +1 -1
- package/dist/types/error-codes.d.ts +8 -0
- package/dist/types/error-codes.d.ts.map +1 -1
- package/dist/types/error-codes.js +9 -0
- package/dist/types/error-codes.js.map +1 -1
- package/dist/types/events.d.ts +44 -0
- 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 +33 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/messages.d.ts +11219 -423
- package/dist/types/messages.d.ts.map +1 -1
- package/dist/types/messages.js +249 -7
- 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 +1 -1
- package/examples/agent-room-management-example.ts +10 -9
- package/examples/basic-usage.ts +3 -4
- package/examples/claude-agent-x-follower/.env.example +1 -1
- package/examples/claude-agent-x-follower/QUICKSTART.md +2 -2
- package/examples/claude-agent-x-follower/README.md +2 -2
- package/examples/claude-agent-x-follower/index.ts +120 -96
- package/examples/n8n-teneo/.env.example +1 -1
- package/examples/n8n-teneo/README.md +1 -1
- 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 +1 -1
- package/examples/openai-teneo/README.md +2 -2
- package/examples/openai-teneo/index.ts +82 -71
- package/examples/production-dashboard/.env.example +1 -1
- package/examples/production-dashboard/README.md +1 -1
- package/examples/production-dashboard/server.ts +2 -2
- package/examples/room-management-example.ts +5 -8
- package/examples/usage/.env.example +1 -1
- 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/webhook-integration.ts +1 -1
- package/examples/x-influencer-battle-server.ts +2 -2
- package/package.json +4 -1
- package/src/core/websocket-client.test.ts +8 -3
- package/src/core/websocket-client.ts +36 -6
- 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 +2 -8
- package/src/handlers/message-handlers/agent-status-update-handler.ts +3 -9
- package/src/handlers/message-handlers/all-agents-response-handler.ts +39 -0
- package/src/handlers/message-handlers/auth-message-handler.ts +5 -0
- package/src/handlers/message-handlers/auth-success-handler.ts +6 -1
- package/src/handlers/message-handlers/base-handler.ts +20 -7
- package/src/handlers/message-handlers/index.ts +34 -0
- package/src/handlers/message-handlers/list-room-agents-handler.ts +2 -5
- 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 +3 -6
- 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 +37 -9
- 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 +98 -42
- package/src/managers/index.ts +13 -1
- package/src/managers/message-router.ts +215 -17
- package/src/managers/room-management-manager.ts +4 -7
- package/src/managers/room-manager.ts +11 -15
- package/src/payments/index.ts +22 -0
- package/src/payments/payment-client.ts +240 -0
- package/src/teneo-sdk.ts +302 -27
- package/src/types/categories.ts +45 -0
- package/src/types/config.ts +70 -2
- package/src/types/error-codes.ts +10 -0
- package/src/types/events.test.ts +1 -0
- package/src/types/events.ts +43 -0
- package/src/types/index.ts +56 -0
- package/src/types/messages.test.ts +2 -1
- package/src/types/messages.ts +307 -5
- 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 +10 -8
- package/tests/integration/websocket.test.ts +4 -1
- package/tests/payment-flow-test.ts +147 -0
- package/tests/unit/handlers/agent-room-operation-response-handler.test.ts +17 -29
- package/tests/unit/handlers/agent-status-update-handler.test.ts +2 -6
- package/tests/unit/handlers/auth-success-handler-rooms.test.ts +1 -3
- package/tests/unit/handlers/list-available-agents-handler.test.ts +4 -12
- package/tests/unit/handlers/list-room-agents-handler.test.ts +2 -6
- package/tests/unit/handlers/room-operation-response-handler.test.ts +9 -36
- package/tests/unit/managers/agent-room-manager.test.ts +9 -16
- package/tests/unit/managers/room-management-manager.test.ts +21 -39
- package/tsconfig.json +2 -2
- package/vitest.config.ts +1 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# Teneo SDK - NestJS Dashboard Example
|
|
2
|
+
|
|
3
|
+
A comprehensive NestJS example demonstrating how to integrate the Teneo Protocol SDK into a NestJS application.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- ✅ **Interactive Dashboard**: Real-time web UI for monitoring and control
|
|
8
|
+
- ✅ **NestJS Integration**: Proper module/service/controller architecture
|
|
9
|
+
- ✅ **SDK Lifecycle Management**: Automatic initialization and cleanup
|
|
10
|
+
- ✅ **WebSocket Connection**: Auto-reconnection with exponential backoff
|
|
11
|
+
- ✅ **Authentication**: Ethereum wallet authentication with encrypted keys
|
|
12
|
+
- ✅ **Message Handling**: Send messages and direct commands to agents
|
|
13
|
+
- ✅ **Room Management**: Create, update, delete, and manage rooms
|
|
14
|
+
- ✅ **Agent Management**: Search agents by capability, name, or status
|
|
15
|
+
- ✅ **Agent-Room Management**: Add/remove agents from rooms with caching
|
|
16
|
+
- ✅ **Health Monitoring**: Health and metrics endpoints
|
|
17
|
+
- ✅ **TypeScript**: Fully typed with TypeScript
|
|
18
|
+
- ✅ **REST API**: Complete REST API for all SDK operations
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
- Node.js 18 or higher
|
|
23
|
+
- pnpm (recommended) or npm
|
|
24
|
+
- Ethereum wallet with private key
|
|
25
|
+
- Access to a Teneo Protocol server
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cd examples/nestjs-dashboard
|
|
31
|
+
pnpm install
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
1. Copy the example environment file:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cp .env.example .env
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
2. Edit `.env` and configure your settings:
|
|
43
|
+
|
|
44
|
+
```env
|
|
45
|
+
# Teneo SDK Configuration
|
|
46
|
+
WS_URL=wss://your-teneo-server.com/ws
|
|
47
|
+
PRIVATE_KEY=your_ethereum_private_key_here
|
|
48
|
+
WALLET_ADDRESS=your_ethereum_wallet_address_here
|
|
49
|
+
|
|
50
|
+
# Signature Verification (optional)
|
|
51
|
+
ENABLE_SIGNATURE_VERIFICATION=false
|
|
52
|
+
TRUSTED_ADDRESSES=0x1234...,0x5678...
|
|
53
|
+
|
|
54
|
+
# Server Configuration
|
|
55
|
+
PORT=3002
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Running the Application
|
|
59
|
+
|
|
60
|
+
### Development Mode (with hot reload)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pnpm start:dev
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Production Mode
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Build
|
|
70
|
+
pnpm build
|
|
71
|
+
|
|
72
|
+
# Run
|
|
73
|
+
pnpm start:prod
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Debug Mode
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pnpm start:debug
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## API Endpoints
|
|
83
|
+
|
|
84
|
+
### Health & Status
|
|
85
|
+
|
|
86
|
+
- `GET /` - Application status
|
|
87
|
+
- `GET /health` - SDK health check
|
|
88
|
+
- `GET /metrics` - Detailed metrics
|
|
89
|
+
|
|
90
|
+
### Messages
|
|
91
|
+
|
|
92
|
+
- `POST /api/messages` - Send a message
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"content": "Hello agents!",
|
|
96
|
+
"room": "room-id",
|
|
97
|
+
"waitForResponse": false
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
- `POST /api/messages/direct-command` - Send direct command to agent
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"agent": "agent-id",
|
|
105
|
+
"command": "execute task",
|
|
106
|
+
"room": "room-id"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Agents
|
|
111
|
+
|
|
112
|
+
- `GET /api/agents` - List all agents
|
|
113
|
+
- `GET /api/agents/search/capability/:capability` - Find agents by capability
|
|
114
|
+
- `GET /api/agents/search/name/:name` - Find agents by name
|
|
115
|
+
- `GET /api/agents/search/status/:status` - Find agents by status
|
|
116
|
+
|
|
117
|
+
### Rooms
|
|
118
|
+
|
|
119
|
+
- `GET /api/rooms` - List all rooms
|
|
120
|
+
- `GET /api/rooms/list` - List detailed room information
|
|
121
|
+
- `GET /api/rooms/available` - List available rooms for messaging
|
|
122
|
+
- `GET /api/rooms/owned` - List owned rooms
|
|
123
|
+
- `GET /api/rooms/shared` - List shared rooms
|
|
124
|
+
- `GET /api/rooms/limit` - Get room limit info
|
|
125
|
+
- `POST /api/rooms` - Create a new room
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"name": "My Room",
|
|
129
|
+
"description": "A room for testing"
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
- `PUT /api/rooms/:id` - Update a room
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"name": "Updated Name",
|
|
136
|
+
"description": "Updated description"
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
- `DELETE /api/rooms/:id` - Delete a room
|
|
140
|
+
- `POST /api/rooms/join` - Join a room
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"roomId": "room-id"
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
- `POST /api/rooms/leave` - Leave a room
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"roomId": "room-id"
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Agent-Room Management
|
|
154
|
+
|
|
155
|
+
- `GET /api/rooms/:id/agents` - List agents in a room
|
|
156
|
+
- `GET /api/rooms/:id/available-agents` - List available agents for a room
|
|
157
|
+
- `POST /api/rooms/:roomId/agents/:agentId` - Add agent to room
|
|
158
|
+
- `DELETE /api/rooms/:roomId/agents/:agentId` - Remove agent from room
|
|
159
|
+
- `GET /api/rooms/:roomId/agents/:agentId/check` - Check if agent is in room
|
|
160
|
+
- `GET /api/rooms/:id/agents/count` - Get agent count for room
|
|
161
|
+
- `POST /api/rooms/:id/cache/invalidate` - Invalidate room agent cache
|
|
162
|
+
|
|
163
|
+
## Architecture
|
|
164
|
+
|
|
165
|
+
### Module Structure
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
src/
|
|
169
|
+
├── app.module.ts # Root module
|
|
170
|
+
├── app.controller.ts # Root controller
|
|
171
|
+
├── main.ts # Application entry point
|
|
172
|
+
└── teneo/
|
|
173
|
+
├── teneo.module.ts # Teneo module
|
|
174
|
+
├── teneo.service.ts # SDK service with lifecycle
|
|
175
|
+
├── messages.controller.ts # Message handling
|
|
176
|
+
├── agents.controller.ts # Agent operations
|
|
177
|
+
└── rooms.controller.ts # Room management
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Service Lifecycle
|
|
181
|
+
|
|
182
|
+
The `TeneoService` implements NestJS lifecycle hooks:
|
|
183
|
+
|
|
184
|
+
- `onModuleInit()`: Initializes and connects the SDK
|
|
185
|
+
- `onModuleDestroy()`: Gracefully disconnects and cleans up the SDK
|
|
186
|
+
|
|
187
|
+
This ensures proper resource management and graceful shutdowns.
|
|
188
|
+
|
|
189
|
+
## Example Usage
|
|
190
|
+
|
|
191
|
+
### Using curl
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Check health
|
|
195
|
+
curl http://localhost:3002/health
|
|
196
|
+
|
|
197
|
+
# Send a message
|
|
198
|
+
curl -X POST http://localhost:3002/api/messages \
|
|
199
|
+
-H "Content-Type: application/json" \
|
|
200
|
+
-d '{
|
|
201
|
+
"content": "What is the weather?",
|
|
202
|
+
"room": "general",
|
|
203
|
+
"waitForResponse": true
|
|
204
|
+
}'
|
|
205
|
+
|
|
206
|
+
# List agents
|
|
207
|
+
curl http://localhost:3002/api/agents
|
|
208
|
+
|
|
209
|
+
# Find agents by capability
|
|
210
|
+
curl http://localhost:3002/api/agents/search/capability/weather
|
|
211
|
+
|
|
212
|
+
# Create a room
|
|
213
|
+
curl -X POST http://localhost:3002/api/rooms \
|
|
214
|
+
-H "Content-Type: application/json" \
|
|
215
|
+
-d '{
|
|
216
|
+
"name": "My Private Room",
|
|
217
|
+
"description": "A room for my personal agents"
|
|
218
|
+
}'
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Using the SDK in Your NestJS App
|
|
222
|
+
|
|
223
|
+
To integrate the Teneo SDK into your own NestJS application:
|
|
224
|
+
|
|
225
|
+
1. Copy the `teneo/` directory to your `src/` folder
|
|
226
|
+
2. Import `TeneoModule` in your app module:
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
import { Module } from '@nestjs/common';
|
|
230
|
+
import { ConfigModule } from '@nestjs/config';
|
|
231
|
+
import { TeneoModule } from './teneo/teneo.module';
|
|
232
|
+
|
|
233
|
+
@Module({
|
|
234
|
+
imports: [
|
|
235
|
+
ConfigModule.forRoot({
|
|
236
|
+
isGlobal: true,
|
|
237
|
+
}),
|
|
238
|
+
TeneoModule,
|
|
239
|
+
],
|
|
240
|
+
})
|
|
241
|
+
export class AppModule {}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
3. Inject `TeneoService` into your controllers or services:
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
import { Injectable } from '@nestjs/common';
|
|
248
|
+
import { TeneoService } from './teneo/teneo.service';
|
|
249
|
+
|
|
250
|
+
@Injectable()
|
|
251
|
+
export class MyService {
|
|
252
|
+
constructor(private readonly teneoService: TeneoService) {}
|
|
253
|
+
|
|
254
|
+
async doSomething() {
|
|
255
|
+
const agents = this.teneoService.getAgents();
|
|
256
|
+
// ... use the SDK
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Troubleshooting
|
|
262
|
+
|
|
263
|
+
### SDK not connecting
|
|
264
|
+
|
|
265
|
+
- Verify your `WS_URL` is correct
|
|
266
|
+
- Check that your `PRIVATE_KEY` and `WALLET_ADDRESS` are valid
|
|
267
|
+
- Ensure you have network access to the Teneo server
|
|
268
|
+
|
|
269
|
+
### TypeScript errors
|
|
270
|
+
|
|
271
|
+
- Make sure all dependencies are installed: `pnpm install`
|
|
272
|
+
- Check that TypeScript version is compatible (5.x)
|
|
273
|
+
|
|
274
|
+
### Module not found errors
|
|
275
|
+
|
|
276
|
+
- Verify the path to the SDK in `teneo.service.ts` is correct
|
|
277
|
+
- The example expects the SDK to be built at `../../../../dist/index.js`
|
|
278
|
+
- If your setup is different, adjust the import path
|
|
279
|
+
|
|
280
|
+
## Production Considerations
|
|
281
|
+
|
|
282
|
+
1. **Environment Variables**: Use proper secret management in production
|
|
283
|
+
2. **Error Handling**: Add proper error handling and logging
|
|
284
|
+
3. **Rate Limiting**: Consider adding rate limiting to API endpoints
|
|
285
|
+
4. **Authentication**: Add authentication/authorization to your endpoints
|
|
286
|
+
5. **Monitoring**: Set up proper monitoring and alerting
|
|
287
|
+
6. **Graceful Shutdown**: The service handles graceful shutdowns automatically
|
|
288
|
+
|
|
289
|
+
## Learn More
|
|
290
|
+
|
|
291
|
+
- [Teneo Protocol Documentation](https://docs.teneo.pro)
|
|
292
|
+
- [NestJS Documentation](https://docs.nestjs.com)
|
|
293
|
+
- [Teneo SDK Documentation](../../README.md)
|
|
294
|
+
|
|
295
|
+
## License
|
|
296
|
+
|
|
297
|
+
MIT
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@teneo/nestjs-dashboard-example",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "NestJS dashboard example for Teneo Protocol SDK",
|
|
5
|
+
"private": true,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"start": "nest start",
|
|
8
|
+
"start:dev": "nest start --watch",
|
|
9
|
+
"start:debug": "nest start --debug --watch",
|
|
10
|
+
"build": "nest build",
|
|
11
|
+
"start:prod": "node dist/main"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@nestjs/common": "^11.1.9",
|
|
15
|
+
"@nestjs/config": "^4.0.2",
|
|
16
|
+
"@nestjs/core": "^11.1.9",
|
|
17
|
+
"@nestjs/platform-express": "^11.1.9",
|
|
18
|
+
"@types/body-parser": "^1.19.6",
|
|
19
|
+
"dotenv": "^16.4.0",
|
|
20
|
+
"reflect-metadata": "^0.2.2"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@nestjs/cli": "^11.0.12",
|
|
24
|
+
"@types/express": "^5.0.5",
|
|
25
|
+
"@types/node": "^24.10.1",
|
|
26
|
+
"ts-node": "^10.9.2",
|
|
27
|
+
"typescript": "^5.9.3"
|
|
28
|
+
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18.0.0"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"teneo",
|
|
34
|
+
"sdk",
|
|
35
|
+
"dashboard",
|
|
36
|
+
"nestjs",
|
|
37
|
+
"websocket",
|
|
38
|
+
"ai",
|
|
39
|
+
"agents",
|
|
40
|
+
"example"
|
|
41
|
+
],
|
|
42
|
+
"author": "Teneo",
|
|
43
|
+
"license": "MIT"
|
|
44
|
+
}
|