@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,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AdminManager - Manages admin-only features
|
|
3
|
+
* Provides access to admin APIs like listing all agents, user counts, etc.
|
|
4
|
+
* Only available to users with admin privileges.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from "eventemitter3";
|
|
7
|
+
import { WebSocketClient } from "../core/websocket-client";
|
|
8
|
+
import { Logger, AdminAgentInfo, UserCountData } from "../types";
|
|
9
|
+
/**
|
|
10
|
+
* Events emitted by the AdminManager
|
|
11
|
+
*/
|
|
12
|
+
export interface AdminManagerEvents {
|
|
13
|
+
/** Emitted when user count is updated (broadcast to admins) */
|
|
14
|
+
user_count: (data: UserCountData) => void;
|
|
15
|
+
/** Emitted when admin status changes */
|
|
16
|
+
status_changed: (isAdmin: boolean) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Options for listing all agents (admin only)
|
|
20
|
+
*/
|
|
21
|
+
export interface ListAllAgentsOptions {
|
|
22
|
+
/** Filter string for agent search */
|
|
23
|
+
filter?: string;
|
|
24
|
+
/** Pagination offset */
|
|
25
|
+
offset?: number;
|
|
26
|
+
/** Number of agents to return (default: 50) */
|
|
27
|
+
limit?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Response from listing all agents
|
|
31
|
+
*/
|
|
32
|
+
export interface AllAgentsResult {
|
|
33
|
+
/** List of agents */
|
|
34
|
+
agents: AdminAgentInfo[];
|
|
35
|
+
/** Total number of agents matching filter */
|
|
36
|
+
total: number;
|
|
37
|
+
/** Current offset */
|
|
38
|
+
offset: number;
|
|
39
|
+
/** Page size */
|
|
40
|
+
limit: number;
|
|
41
|
+
/** Whether there are more agents to load */
|
|
42
|
+
hasMore: boolean;
|
|
43
|
+
/** Applied filter (if any) */
|
|
44
|
+
filter?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class AdminManager extends EventEmitter<AdminManagerEvents> {
|
|
47
|
+
private readonly wsClient;
|
|
48
|
+
private readonly logger;
|
|
49
|
+
private _isAdmin;
|
|
50
|
+
private readonly pendingListRequests;
|
|
51
|
+
private lastUserCount;
|
|
52
|
+
/** Default timeout for requests (30 seconds) */
|
|
53
|
+
private readonly requestTimeout;
|
|
54
|
+
constructor(wsClient: WebSocketClient, logger: Logger);
|
|
55
|
+
/**
|
|
56
|
+
* Whether the current user has admin privileges.
|
|
57
|
+
*/
|
|
58
|
+
get isAdmin(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Sets the admin status. Called internally after authentication.
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
setAdminStatus(isAdmin: boolean): void;
|
|
64
|
+
/**
|
|
65
|
+
* Lists all agents in the network (admin only).
|
|
66
|
+
* Returns paginated list of agents with full admin information.
|
|
67
|
+
*
|
|
68
|
+
* @param options - Pagination and filter options
|
|
69
|
+
* @returns Promise that resolves with agents list
|
|
70
|
+
* @throws {SDKError} If not connected or not an admin
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* if (sdk.admin?.isAdmin) {
|
|
75
|
+
* const result = await sdk.admin.listAllAgents({ limit: 20 });
|
|
76
|
+
* console.log(`Found ${result.total} agents`);
|
|
77
|
+
* result.agents.forEach(agent => {
|
|
78
|
+
* console.log(`${agent.agent_name}: verified=${agent.is_verified}, banned=${agent.is_banned}`);
|
|
79
|
+
* });
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
listAllAgents(options?: ListAllAgentsOptions): Promise<AllAgentsResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Gets the last received user count.
|
|
86
|
+
*
|
|
87
|
+
* @returns The last user count data, or null if not received yet
|
|
88
|
+
*/
|
|
89
|
+
getLastUserCount(): UserCountData | null;
|
|
90
|
+
/**
|
|
91
|
+
* Handles incoming all_agents_response message from server.
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
handleAllAgentsResponse(data: {
|
|
95
|
+
agents: AdminAgentInfo[];
|
|
96
|
+
total: number;
|
|
97
|
+
offset: number;
|
|
98
|
+
limit: number;
|
|
99
|
+
has_more: boolean;
|
|
100
|
+
filter?: string;
|
|
101
|
+
}, requestId?: string): void;
|
|
102
|
+
/**
|
|
103
|
+
* Handles incoming user_count message from server.
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
handleUserCount(data: UserCountData): void;
|
|
107
|
+
/**
|
|
108
|
+
* Clears all cached data and pending requests.
|
|
109
|
+
*/
|
|
110
|
+
clear(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Destroys the admin manager and cleans up resources.
|
|
113
|
+
*/
|
|
114
|
+
destroy(): void;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=admin-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-manager.d.ts","sourceRoot":"","sources":["../../src/managers/admin-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,wCAAwC;IACxC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD,qBAAa,YAAa,SAAQ,YAAY,CAAC,kBAAkB,CAAC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsD;IAC1F,OAAO,CAAC,aAAa,CAA8B;IAEnD,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM;IAMrD;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;OAGG;IACI,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAU7C;;;;;;;;;;;;;;;;;;OAkBG;IACU,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAsCxF;;;;OAIG;IACI,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAI/C;;;OAGG;IACI,uBAAuB,CAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EACD,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAoCP;;;OAGG;IACI,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAOjD;;OAEG;IACI,KAAK,IAAI,IAAI;IAWpB;;OAEG;IACI,OAAO,IAAI,IAAI;CAMvB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AdminManager - Manages admin-only features
|
|
4
|
+
* Provides access to admin APIs like listing all agents, user counts, etc.
|
|
5
|
+
* Only available to users with admin privileges.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AdminManager = void 0;
|
|
9
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
10
|
+
const events_1 = require("../types/events");
|
|
11
|
+
const error_codes_1 = require("../types/error-codes");
|
|
12
|
+
class AdminManager extends eventemitter3_1.EventEmitter {
|
|
13
|
+
wsClient;
|
|
14
|
+
logger;
|
|
15
|
+
_isAdmin = false;
|
|
16
|
+
pendingListRequests = new Map();
|
|
17
|
+
lastUserCount = null;
|
|
18
|
+
/** Default timeout for requests (30 seconds) */
|
|
19
|
+
requestTimeout = 30000;
|
|
20
|
+
constructor(wsClient, logger) {
|
|
21
|
+
super();
|
|
22
|
+
this.wsClient = wsClient;
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether the current user has admin privileges.
|
|
27
|
+
*/
|
|
28
|
+
get isAdmin() {
|
|
29
|
+
return this._isAdmin;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sets the admin status. Called internally after authentication.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
setAdminStatus(isAdmin) {
|
|
36
|
+
const changed = this._isAdmin !== isAdmin;
|
|
37
|
+
this._isAdmin = isAdmin;
|
|
38
|
+
if (changed) {
|
|
39
|
+
this.logger.info("AdminManager: Admin status changed", { isAdmin });
|
|
40
|
+
this.emit("status_changed", isAdmin);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Lists all agents in the network (admin only).
|
|
45
|
+
* Returns paginated list of agents with full admin information.
|
|
46
|
+
*
|
|
47
|
+
* @param options - Pagination and filter options
|
|
48
|
+
* @returns Promise that resolves with agents list
|
|
49
|
+
* @throws {SDKError} If not connected or not an admin
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* if (sdk.admin?.isAdmin) {
|
|
54
|
+
* const result = await sdk.admin.listAllAgents({ limit: 20 });
|
|
55
|
+
* console.log(`Found ${result.total} agents`);
|
|
56
|
+
* result.agents.forEach(agent => {
|
|
57
|
+
* console.log(`${agent.agent_name}: verified=${agent.is_verified}, banned=${agent.is_banned}`);
|
|
58
|
+
* });
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
async listAllAgents(options = {}) {
|
|
63
|
+
if (!this.wsClient.isConnected) {
|
|
64
|
+
throw new events_1.SDKError("Not connected to Teneo Protocol", error_codes_1.ErrorCode.NOT_CONNECTED);
|
|
65
|
+
}
|
|
66
|
+
if (!this._isAdmin) {
|
|
67
|
+
throw new events_1.SDKError("Admin privileges required", error_codes_1.ErrorCode.AUTH_ERROR);
|
|
68
|
+
}
|
|
69
|
+
const { filter, offset = 0, limit = 50 } = options;
|
|
70
|
+
this.logger.info("AdminManager: Listing all agents", { filter, offset, limit });
|
|
71
|
+
// Generate request ID
|
|
72
|
+
const requestId = `admin_list_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
73
|
+
// Send list_all_agents message
|
|
74
|
+
const message = {
|
|
75
|
+
type: "list_all_agents",
|
|
76
|
+
filter,
|
|
77
|
+
offset,
|
|
78
|
+
limit,
|
|
79
|
+
request_id: requestId
|
|
80
|
+
};
|
|
81
|
+
await this.wsClient.sendMessage(message);
|
|
82
|
+
// Wait for response
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
const timeout = setTimeout(() => {
|
|
85
|
+
this.pendingListRequests.delete(requestId);
|
|
86
|
+
reject(new events_1.SDKError("List agents request timed out", error_codes_1.ErrorCode.TIMEOUT_ERROR));
|
|
87
|
+
}, this.requestTimeout);
|
|
88
|
+
this.pendingListRequests.set(requestId, { resolve, reject, timeout });
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Gets the last received user count.
|
|
93
|
+
*
|
|
94
|
+
* @returns The last user count data, or null if not received yet
|
|
95
|
+
*/
|
|
96
|
+
getLastUserCount() {
|
|
97
|
+
return this.lastUserCount;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Handles incoming all_agents_response message from server.
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
handleAllAgentsResponse(data, requestId) {
|
|
104
|
+
this.logger.debug("AdminManager: Received agents list", {
|
|
105
|
+
count: data.agents.length,
|
|
106
|
+
total: data.total,
|
|
107
|
+
requestId
|
|
108
|
+
});
|
|
109
|
+
const result = {
|
|
110
|
+
agents: data.agents,
|
|
111
|
+
total: data.total,
|
|
112
|
+
offset: data.offset,
|
|
113
|
+
limit: data.limit,
|
|
114
|
+
hasMore: data.has_more,
|
|
115
|
+
filter: data.filter
|
|
116
|
+
};
|
|
117
|
+
// Resolve pending request - prefer matching by request_id if available
|
|
118
|
+
if (requestId && this.pendingListRequests.has(requestId)) {
|
|
119
|
+
// Exact match by request_id (preferred)
|
|
120
|
+
const pending = this.pendingListRequests.get(requestId);
|
|
121
|
+
clearTimeout(pending.timeout);
|
|
122
|
+
this.pendingListRequests.delete(requestId);
|
|
123
|
+
pending.resolve(result);
|
|
124
|
+
}
|
|
125
|
+
else if (this.pendingListRequests.size > 0) {
|
|
126
|
+
// Fallback to FIFO for backwards compatibility (when server doesn't echo request_id)
|
|
127
|
+
const pendingEntries = Array.from(this.pendingListRequests.entries());
|
|
128
|
+
const [fallbackRequestId, pending] = pendingEntries[0];
|
|
129
|
+
this.logger.warn("AdminManager: Using FIFO fallback for list agents correlation", {
|
|
130
|
+
pendingCount: pendingEntries.length
|
|
131
|
+
});
|
|
132
|
+
clearTimeout(pending.timeout);
|
|
133
|
+
this.pendingListRequests.delete(fallbackRequestId);
|
|
134
|
+
pending.resolve(result);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handles incoming user_count message from server.
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
141
|
+
handleUserCount(data) {
|
|
142
|
+
this.logger.debug("AdminManager: Received user count", { count: data.count });
|
|
143
|
+
this.lastUserCount = data;
|
|
144
|
+
this.emit("user_count", data);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Clears all cached data and pending requests.
|
|
148
|
+
*/
|
|
149
|
+
clear() {
|
|
150
|
+
// Clear pending requests
|
|
151
|
+
for (const [, pending] of this.pendingListRequests) {
|
|
152
|
+
clearTimeout(pending.timeout);
|
|
153
|
+
pending.reject(new events_1.SDKError("Admin manager cleared", error_codes_1.ErrorCode.SDK_DESTROYED));
|
|
154
|
+
}
|
|
155
|
+
this.pendingListRequests.clear();
|
|
156
|
+
this.lastUserCount = null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Destroys the admin manager and cleans up resources.
|
|
160
|
+
*/
|
|
161
|
+
destroy() {
|
|
162
|
+
this.logger.info("AdminManager: Destroying");
|
|
163
|
+
this.clear();
|
|
164
|
+
this._isAdmin = false;
|
|
165
|
+
this.removeAllListeners();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.AdminManager = AdminManager;
|
|
169
|
+
//# sourceMappingURL=admin-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-manager.js","sourceRoot":"","sources":["../../src/managers/admin-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,17 +3,27 @@
|
|
|
3
3
|
* Handles agent caching and queries
|
|
4
4
|
*/
|
|
5
5
|
import { EventEmitter } from "eventemitter3";
|
|
6
|
-
import { Agent, Logger } from "../types";
|
|
6
|
+
import { Agent, AgentCategory, Logger, AgentRoomInfo } from "../types";
|
|
7
7
|
import { SDKEvents } from "../types/events";
|
|
8
|
+
import { WebSocketClient } from "../core/websocket-client";
|
|
8
9
|
export declare class AgentRegistry extends EventEmitter<SDKEvents> {
|
|
9
10
|
private readonly logger;
|
|
10
11
|
private readonly agents;
|
|
11
12
|
private cachedAgents?;
|
|
12
13
|
private isAgentsCacheDirty;
|
|
14
|
+
private wsClient?;
|
|
13
15
|
private capabilityIndex;
|
|
14
16
|
private nameTokenIndex;
|
|
15
17
|
private statusIndex;
|
|
18
|
+
private categoryIndex;
|
|
19
|
+
private readonly pendingDetailsRequests;
|
|
20
|
+
private readonly detailsTimeout;
|
|
16
21
|
constructor(logger: Logger);
|
|
22
|
+
/**
|
|
23
|
+
* Sets the WebSocket client for making requests.
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
setWebSocketClient(wsClient: WebSocketClient): void;
|
|
17
27
|
/**
|
|
18
28
|
* Gets a cached list of all available agents in the network.
|
|
19
29
|
* Uses lazy caching with dirty flag for optimal performance.
|
|
@@ -95,6 +105,20 @@ export declare class AgentRegistry extends EventEmitter<SDKEvents> {
|
|
|
95
105
|
* ```
|
|
96
106
|
*/
|
|
97
107
|
findByStatus(status: string): ReadonlyArray<Agent>;
|
|
108
|
+
/**
|
|
109
|
+
* Finds all agents that have a specific category.
|
|
110
|
+
* Uses O(1) category index lookup instead of O(n) filtering.
|
|
111
|
+
*
|
|
112
|
+
* @param category - The category to search for
|
|
113
|
+
* @returns Read-only array of agents with the specified category
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const tradingAgents = agentRegistry.findByCategory('Trading');
|
|
118
|
+
* console.log(`Found ${tradingAgents.length} trading agents`);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
findByCategory(category: AgentCategory): ReadonlyArray<Agent>;
|
|
98
122
|
/**
|
|
99
123
|
* Updates the registry with a new list of agents.
|
|
100
124
|
* Merges with existing agents and marks cache as dirty.
|
|
@@ -124,6 +148,33 @@ export declare class AgentRegistry extends EventEmitter<SDKEvents> {
|
|
|
124
148
|
* ```
|
|
125
149
|
*/
|
|
126
150
|
updateAgent(agent: Agent): void;
|
|
151
|
+
/**
|
|
152
|
+
* Fetches detailed information about a specific agent from the server.
|
|
153
|
+
* Makes a request to the server for full agent details including capabilities,
|
|
154
|
+
* commands, pricing, and more.
|
|
155
|
+
*
|
|
156
|
+
* Multiple concurrent calls for the same agent will share the same request,
|
|
157
|
+
* avoiding redundant server calls and preventing race conditions.
|
|
158
|
+
*
|
|
159
|
+
* @param agentId - The unique identifier of the agent
|
|
160
|
+
* @returns Promise that resolves with full agent details
|
|
161
|
+
* @throws {SDKError} If not connected or request times out
|
|
162
|
+
* @throws {ValidationError} If agentId is invalid
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* const details = await agentRegistry.getAgentDetails('weather-agent-001');
|
|
167
|
+
* console.log(`Agent: ${details.agent_name}`);
|
|
168
|
+
* console.log(`Capabilities: ${details.capabilities?.length}`);
|
|
169
|
+
* console.log(`Status: ${details.status}`);
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
getAgentDetails(agentId: string): Promise<AgentRoomInfo>;
|
|
173
|
+
/**
|
|
174
|
+
* Handles incoming agent_details_response from server.
|
|
175
|
+
* @internal
|
|
176
|
+
*/
|
|
177
|
+
handleAgentDetails(agent: AgentRoomInfo): void;
|
|
127
178
|
/**
|
|
128
179
|
* Clears all agents from the registry.
|
|
129
180
|
* Removes all cached agents and marks cache as dirty.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/managers/agent-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/managers/agent-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAY3D,qBAAa,aAAc,SAAQ,YAAY,CAAC,SAAS,CAAC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IAGnC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAAyC;IAG9D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA4C;IACnF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,MAAM,EAAE,MAAM;IAK1B;;;OAGG;IACI,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI1D;;;;;;;;;;;;;OAaG;IACI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAOlD;;;;;;;;;;;;;;;;;OAiBG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS;IAQ7D;;;;;;;;;;;;;OAaG;IACI,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IAwBrE;;;;;;;;;;;;;;;OAeG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IAqCrD;;;;;;;;;;;;;OAaG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IAwBzD;;;;;;;;;;;;OAYG;IACI,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;IAoBpE;;;;;;;;;;;;;OAaG;IACI,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAW1C;;;;;;;;;;;;OAYG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMtC;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmDrE;;;OAGG;IACI,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAerD;;;;;;;;;OASG;IACI,KAAK,IAAI,IAAI;IAYpB;;;;;;;;;;OAUG;IACI,OAAO,IAAI,IAAI;IAMtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAqDpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc;CAMvB"}
|
|
@@ -6,18 +6,34 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.AgentRegistry = void 0;
|
|
8
8
|
const eventemitter3_1 = require("eventemitter3");
|
|
9
|
+
const events_1 = require("../types/events");
|
|
10
|
+
const error_codes_1 = require("../types/error-codes");
|
|
9
11
|
const validation_1 = require("../types/validation");
|
|
10
12
|
class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
13
|
+
logger;
|
|
14
|
+
agents = new Map();
|
|
15
|
+
cachedAgents;
|
|
16
|
+
isAgentsCacheDirty = true;
|
|
17
|
+
wsClient;
|
|
18
|
+
// PERF-3: Search indices for O(1) lookups
|
|
19
|
+
capabilityIndex = new Map();
|
|
20
|
+
nameTokenIndex = new Map();
|
|
21
|
+
statusIndex = new Map();
|
|
22
|
+
categoryIndex = new Map();
|
|
23
|
+
// Pending agent details requests
|
|
24
|
+
pendingDetailsRequests = new Map();
|
|
25
|
+
detailsTimeout = 30000; // 30 seconds
|
|
11
26
|
constructor(logger) {
|
|
12
27
|
super();
|
|
13
|
-
this.agents = new Map();
|
|
14
|
-
this.isAgentsCacheDirty = true;
|
|
15
|
-
// PERF-3: Search indices for O(1) lookups
|
|
16
|
-
this.capabilityIndex = new Map();
|
|
17
|
-
this.nameTokenIndex = new Map();
|
|
18
|
-
this.statusIndex = new Map();
|
|
19
28
|
this.logger = logger;
|
|
20
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Sets the WebSocket client for making requests.
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
setWebSocketClient(wsClient) {
|
|
35
|
+
this.wsClient = wsClient;
|
|
36
|
+
}
|
|
21
37
|
/**
|
|
22
38
|
* Gets a cached list of all available agents in the network.
|
|
23
39
|
* Uses lazy caching with dirty flag for optimal performance.
|
|
@@ -173,6 +189,35 @@ class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
|
173
189
|
.filter((agent) => agent !== undefined)
|
|
174
190
|
.map((agent) => ({ ...agent }));
|
|
175
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Finds all agents that have a specific category.
|
|
194
|
+
* Uses O(1) category index lookup instead of O(n) filtering.
|
|
195
|
+
*
|
|
196
|
+
* @param category - The category to search for
|
|
197
|
+
* @returns Read-only array of agents with the specified category
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const tradingAgents = agentRegistry.findByCategory('Trading');
|
|
202
|
+
* console.log(`Found ${tradingAgents.length} trading agents`);
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
findByCategory(category) {
|
|
206
|
+
// Ensure cache is up to date
|
|
207
|
+
if (this.isAgentsCacheDirty || !this.cachedAgents) {
|
|
208
|
+
this.rebuildCache();
|
|
209
|
+
}
|
|
210
|
+
// O(1) index lookup
|
|
211
|
+
const agentIds = this.categoryIndex.get(category);
|
|
212
|
+
if (!agentIds || agentIds.size === 0) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
// Map agent IDs to agent objects with defensive copies
|
|
216
|
+
return Array.from(agentIds)
|
|
217
|
+
.map((id) => this.agents.get(id))
|
|
218
|
+
.filter((agent) => agent !== undefined)
|
|
219
|
+
.map((agent) => ({ ...agent }));
|
|
220
|
+
}
|
|
176
221
|
/**
|
|
177
222
|
* Updates the registry with a new list of agents.
|
|
178
223
|
* Merges with existing agents and marks cache as dirty.
|
|
@@ -213,6 +258,84 @@ class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
|
213
258
|
this.agents.set(agent.id, agent);
|
|
214
259
|
this.isAgentsCacheDirty = true;
|
|
215
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Fetches detailed information about a specific agent from the server.
|
|
263
|
+
* Makes a request to the server for full agent details including capabilities,
|
|
264
|
+
* commands, pricing, and more.
|
|
265
|
+
*
|
|
266
|
+
* Multiple concurrent calls for the same agent will share the same request,
|
|
267
|
+
* avoiding redundant server calls and preventing race conditions.
|
|
268
|
+
*
|
|
269
|
+
* @param agentId - The unique identifier of the agent
|
|
270
|
+
* @returns Promise that resolves with full agent details
|
|
271
|
+
* @throws {SDKError} If not connected or request times out
|
|
272
|
+
* @throws {ValidationError} If agentId is invalid
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```typescript
|
|
276
|
+
* const details = await agentRegistry.getAgentDetails('weather-agent-001');
|
|
277
|
+
* console.log(`Agent: ${details.agent_name}`);
|
|
278
|
+
* console.log(`Capabilities: ${details.capabilities?.length}`);
|
|
279
|
+
* console.log(`Status: ${details.status}`);
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
async getAgentDetails(agentId) {
|
|
283
|
+
if (!this.wsClient || !this.wsClient.isConnected) {
|
|
284
|
+
throw new events_1.SDKError("Not connected to Teneo Protocol", error_codes_1.ErrorCode.NOT_CONNECTED);
|
|
285
|
+
}
|
|
286
|
+
// Validate agent ID
|
|
287
|
+
const validatedAgentId = validation_1.AgentIdSchema.parse(agentId);
|
|
288
|
+
// Check if there's already a pending request for this agent - reuse it
|
|
289
|
+
const existingRequest = this.pendingDetailsRequests.get(validatedAgentId);
|
|
290
|
+
if (existingRequest) {
|
|
291
|
+
this.logger.debug("AgentRegistry: Reusing pending request for agent details", {
|
|
292
|
+
agentId: validatedAgentId
|
|
293
|
+
});
|
|
294
|
+
return existingRequest.promise;
|
|
295
|
+
}
|
|
296
|
+
this.logger.info("AgentRegistry: Requesting agent details", { agentId: validatedAgentId });
|
|
297
|
+
// Send get_agent_details message
|
|
298
|
+
const message = {
|
|
299
|
+
type: "get_agent_details",
|
|
300
|
+
agent_id: validatedAgentId
|
|
301
|
+
};
|
|
302
|
+
await this.wsClient.sendMessage(message);
|
|
303
|
+
// Create promise with stored resolve/reject for later resolution
|
|
304
|
+
let resolvePromise;
|
|
305
|
+
let rejectPromise;
|
|
306
|
+
const promise = new Promise((resolve, reject) => {
|
|
307
|
+
resolvePromise = resolve;
|
|
308
|
+
rejectPromise = reject;
|
|
309
|
+
});
|
|
310
|
+
const timeout = setTimeout(() => {
|
|
311
|
+
this.pendingDetailsRequests.delete(validatedAgentId);
|
|
312
|
+
rejectPromise(new events_1.SDKError("Agent details request timed out", error_codes_1.ErrorCode.TIMEOUT_ERROR));
|
|
313
|
+
}, this.detailsTimeout);
|
|
314
|
+
this.pendingDetailsRequests.set(validatedAgentId, {
|
|
315
|
+
promise,
|
|
316
|
+
resolve: resolvePromise,
|
|
317
|
+
reject: rejectPromise,
|
|
318
|
+
timeout
|
|
319
|
+
});
|
|
320
|
+
return promise;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Handles incoming agent_details_response from server.
|
|
324
|
+
* @internal
|
|
325
|
+
*/
|
|
326
|
+
handleAgentDetails(agent) {
|
|
327
|
+
this.logger.debug("AgentRegistry: Received agent details", {
|
|
328
|
+
agentId: agent.agent_id,
|
|
329
|
+
agentName: agent.agent_name
|
|
330
|
+
});
|
|
331
|
+
// Resolve pending request
|
|
332
|
+
const pending = this.pendingDetailsRequests.get(agent.agent_id);
|
|
333
|
+
if (pending) {
|
|
334
|
+
clearTimeout(pending.timeout);
|
|
335
|
+
this.pendingDetailsRequests.delete(agent.agent_id);
|
|
336
|
+
pending.resolve(agent);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
216
339
|
/**
|
|
217
340
|
* Clears all agents from the registry.
|
|
218
341
|
* Removes all cached agents and marks cache as dirty.
|
|
@@ -226,6 +349,12 @@ class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
|
226
349
|
clear() {
|
|
227
350
|
this.agents.clear();
|
|
228
351
|
this.isAgentsCacheDirty = true;
|
|
352
|
+
// Clear pending requests
|
|
353
|
+
for (const [, pending] of this.pendingDetailsRequests) {
|
|
354
|
+
clearTimeout(pending.timeout);
|
|
355
|
+
pending.reject(new events_1.SDKError("Agent registry cleared", error_codes_1.ErrorCode.SDK_DESTROYED));
|
|
356
|
+
}
|
|
357
|
+
this.pendingDetailsRequests.clear();
|
|
229
358
|
}
|
|
230
359
|
/**
|
|
231
360
|
* Destroys the agent registry and cleans up resources.
|
|
@@ -257,6 +386,7 @@ class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
|
257
386
|
this.capabilityIndex.clear();
|
|
258
387
|
this.nameTokenIndex.clear();
|
|
259
388
|
this.statusIndex.clear();
|
|
389
|
+
this.categoryIndex.clear();
|
|
260
390
|
// Populate indices
|
|
261
391
|
for (const agent of this.agents.values()) {
|
|
262
392
|
// Index capabilities
|
|
@@ -283,6 +413,15 @@ class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
|
283
413
|
this.statusIndex.set(status, new Set());
|
|
284
414
|
}
|
|
285
415
|
this.statusIndex.get(status).add(agent.id);
|
|
416
|
+
// Index categories
|
|
417
|
+
if (agent.categories) {
|
|
418
|
+
for (const category of agent.categories) {
|
|
419
|
+
if (!this.categoryIndex.has(category)) {
|
|
420
|
+
this.categoryIndex.set(category, new Set());
|
|
421
|
+
}
|
|
422
|
+
this.categoryIndex.get(category).add(agent.id);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
286
425
|
}
|
|
287
426
|
this.isAgentsCacheDirty = false;
|
|
288
427
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/managers/agent-registry.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAA6C;
|
|
1
|
+
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/managers/agent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AgentRoomManager - Manages agent-room associations (v2.0.0)
|
|
3
3
|
* Allows room owners to control which agents are available in their rooms
|
|
4
|
-
* Implements caching with 5-minute TTL for performance
|
|
4
|
+
* Implements caching with 5-minute TTL and LRU eviction for performance
|
|
5
5
|
*/
|
|
6
6
|
import { EventEmitter } from "eventemitter3";
|
|
7
7
|
import { WebSocketClient } from "../core/websocket-client";
|
|
@@ -32,8 +32,6 @@ export declare class AgentRoomManager extends EventEmitter<SDKEvents> {
|
|
|
32
32
|
private readonly roomManagementManager;
|
|
33
33
|
private readonly roomAgentsCache;
|
|
34
34
|
private readonly availableAgentsCache;
|
|
35
|
-
private readonly roomAgentsCacheTime;
|
|
36
|
-
private readonly availableAgentsCacheTime;
|
|
37
35
|
constructor(wsClient: WebSocketClient, logger: Logger, roomManagementManager: RoomManagementManager);
|
|
38
36
|
/**
|
|
39
37
|
* Adds an agent to a room, making it available for interactions in that room.
|
|
@@ -203,10 +201,6 @@ export declare class AgentRoomManager extends EventEmitter<SDKEvents> {
|
|
|
203
201
|
* @internal
|
|
204
202
|
*/
|
|
205
203
|
cacheAvailableAgents(roomId: string, agents: AgentRoomInfo[]): void;
|
|
206
|
-
/**
|
|
207
|
-
* Checks if cache is still valid (within TTL)
|
|
208
|
-
*/
|
|
209
|
-
private isCacheValid;
|
|
210
204
|
/**
|
|
211
205
|
* Invalidates all caches for a specific room
|
|
212
206
|
*/
|