@herdctl/discord 0.0.1
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/dist/__tests__/auto-mode-handler.test.d.ts +2 -0
- package/dist/__tests__/auto-mode-handler.test.d.ts.map +1 -0
- package/dist/__tests__/auto-mode-handler.test.js +362 -0
- package/dist/__tests__/auto-mode-handler.test.js.map +1 -0
- package/dist/__tests__/discord-connector.test.d.ts +2 -0
- package/dist/__tests__/discord-connector.test.d.ts.map +1 -0
- package/dist/__tests__/discord-connector.test.js +958 -0
- package/dist/__tests__/discord-connector.test.js.map +1 -0
- package/dist/__tests__/error-handler.test.d.ts +2 -0
- package/dist/__tests__/error-handler.test.d.ts.map +1 -0
- package/dist/__tests__/error-handler.test.js +509 -0
- package/dist/__tests__/error-handler.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +152 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/logger.test.d.ts +2 -0
- package/dist/__tests__/logger.test.d.ts.map +1 -0
- package/dist/__tests__/logger.test.js +282 -0
- package/dist/__tests__/logger.test.js.map +1 -0
- package/dist/__tests__/mention-handler.test.d.ts +2 -0
- package/dist/__tests__/mention-handler.test.d.ts.map +1 -0
- package/dist/__tests__/mention-handler.test.js +547 -0
- package/dist/__tests__/mention-handler.test.js.map +1 -0
- package/dist/auto-mode-handler.d.ts +145 -0
- package/dist/auto-mode-handler.d.ts.map +1 -0
- package/dist/auto-mode-handler.js +211 -0
- package/dist/auto-mode-handler.js.map +1 -0
- package/dist/commands/__tests__/command-manager.test.d.ts +2 -0
- package/dist/commands/__tests__/command-manager.test.d.ts.map +1 -0
- package/dist/commands/__tests__/command-manager.test.js +307 -0
- package/dist/commands/__tests__/command-manager.test.js.map +1 -0
- package/dist/commands/__tests__/help.test.d.ts +2 -0
- package/dist/commands/__tests__/help.test.d.ts.map +1 -0
- package/dist/commands/__tests__/help.test.js +105 -0
- package/dist/commands/__tests__/help.test.js.map +1 -0
- package/dist/commands/__tests__/reset.test.d.ts +2 -0
- package/dist/commands/__tests__/reset.test.d.ts.map +1 -0
- package/dist/commands/__tests__/reset.test.js +140 -0
- package/dist/commands/__tests__/reset.test.js.map +1 -0
- package/dist/commands/__tests__/status.test.d.ts +2 -0
- package/dist/commands/__tests__/status.test.d.ts.map +1 -0
- package/dist/commands/__tests__/status.test.js +205 -0
- package/dist/commands/__tests__/status.test.js.map +1 -0
- package/dist/commands/command-manager.d.ts +66 -0
- package/dist/commands/command-manager.d.ts.map +1 -0
- package/dist/commands/command-manager.js +191 -0
- package/dist/commands/command-manager.js.map +1 -0
- package/dist/commands/help.d.ts +8 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +27 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/index.d.ts +12 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/reset.d.ts +9 -0
- package/dist/commands/reset.d.ts.map +1 -0
- package/dist/commands/reset.js +28 -0
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +102 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/types.d.ts +87 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +8 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/discord-connector.d.ts +154 -0
- package/dist/discord-connector.d.ts.map +1 -0
- package/dist/discord-connector.js +638 -0
- package/dist/discord-connector.js.map +1 -0
- package/dist/error-handler.d.ts +237 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +433 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/errors.d.ts +61 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +77 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +119 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +198 -0
- package/dist/logger.js.map +1 -0
- package/dist/mention-handler.d.ts +176 -0
- package/dist/mention-handler.d.ts.map +1 -0
- package/dist/mention-handler.js +236 -0
- package/dist/mention-handler.js.map +1 -0
- package/dist/session-manager/__tests__/errors.test.d.ts +2 -0
- package/dist/session-manager/__tests__/errors.test.d.ts.map +1 -0
- package/dist/session-manager/__tests__/errors.test.js +124 -0
- package/dist/session-manager/__tests__/errors.test.js.map +1 -0
- package/dist/session-manager/__tests__/session-manager.test.d.ts +2 -0
- package/dist/session-manager/__tests__/session-manager.test.d.ts.map +1 -0
- package/dist/session-manager/__tests__/session-manager.test.js +517 -0
- package/dist/session-manager/__tests__/session-manager.test.js.map +1 -0
- package/dist/session-manager/__tests__/types.test.d.ts +2 -0
- package/dist/session-manager/__tests__/types.test.d.ts.map +1 -0
- package/dist/session-manager/__tests__/types.test.js +169 -0
- package/dist/session-manager/__tests__/types.test.js.map +1 -0
- package/dist/session-manager/errors.d.ts +58 -0
- package/dist/session-manager/errors.d.ts.map +1 -0
- package/dist/session-manager/errors.js +70 -0
- package/dist/session-manager/errors.js.map +1 -0
- package/dist/session-manager/index.d.ts +11 -0
- package/dist/session-manager/index.d.ts.map +1 -0
- package/dist/session-manager/index.js +12 -0
- package/dist/session-manager/index.js.map +1 -0
- package/dist/session-manager/session-manager.d.ts +107 -0
- package/dist/session-manager/session-manager.d.ts.map +1 -0
- package/dist/session-manager/session-manager.js +347 -0
- package/dist/session-manager/session-manager.js.map +1 -0
- package/dist/session-manager/types.d.ts +167 -0
- package/dist/session-manager/types.d.ts.map +1 -0
- package/dist/session-manager/types.js +57 -0
- package/dist/session-manager/types.js.map +1 -0
- package/dist/types.d.ts +323 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/__tests__/formatting.test.d.ts +2 -0
- package/dist/utils/__tests__/formatting.test.d.ts.map +1 -0
- package/dist/utils/__tests__/formatting.test.js +571 -0
- package/dist/utils/__tests__/formatting.test.js.map +1 -0
- package/dist/utils/formatting.d.ts +211 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +305 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiscordConnector - Connects an agent to Discord
|
|
3
|
+
*
|
|
4
|
+
* Each agent has its own DiscordConnector instance with its own bot identity.
|
|
5
|
+
* The connector uses discord.js v14 to connect to the Discord gateway and
|
|
6
|
+
* handles connection lifecycle events.
|
|
7
|
+
*/
|
|
8
|
+
import { EventEmitter } from "events";
|
|
9
|
+
import { Client } from "discord.js";
|
|
10
|
+
import type { DiscordConnectorOptions, DiscordConnectorState, IDiscordConnector, DiscordConnectorEventMap, DiscordConnectorEventName } from "./types.js";
|
|
11
|
+
import { type ICommandManager } from "./commands/index.js";
|
|
12
|
+
import type { ISessionManager } from "./session-manager/index.js";
|
|
13
|
+
/**
|
|
14
|
+
* DiscordConnector class - Connects a single agent to Discord
|
|
15
|
+
*
|
|
16
|
+
* Each agent has its own connector instance with:
|
|
17
|
+
* - Its own discord.js Client
|
|
18
|
+
* - Its own bot token and identity
|
|
19
|
+
* - Connection lifecycle management
|
|
20
|
+
* - Event emission for monitoring
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const connector = new DiscordConnector({
|
|
25
|
+
* agentConfig,
|
|
26
|
+
* discordConfig: agentConfig.chat.discord,
|
|
27
|
+
* botToken: process.env.MY_BOT_TOKEN,
|
|
28
|
+
* fleetManager,
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* await connector.connect();
|
|
32
|
+
* console.log(`Connected as ${connector.getState().botUser?.username}`);
|
|
33
|
+
*
|
|
34
|
+
* // Later...
|
|
35
|
+
* await connector.disconnect();
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class DiscordConnector extends EventEmitter implements IDiscordConnector {
|
|
39
|
+
private readonly _agentConfig;
|
|
40
|
+
private readonly _discordConfig;
|
|
41
|
+
private readonly _botToken;
|
|
42
|
+
private readonly _fleetManager;
|
|
43
|
+
private readonly _logger;
|
|
44
|
+
private readonly _sessionManager;
|
|
45
|
+
private readonly _errorHandler;
|
|
46
|
+
private _client;
|
|
47
|
+
private _commandManager;
|
|
48
|
+
private _status;
|
|
49
|
+
private _connectedAt;
|
|
50
|
+
private _disconnectedAt;
|
|
51
|
+
private _reconnectAttempts;
|
|
52
|
+
private _lastError;
|
|
53
|
+
private _botUser;
|
|
54
|
+
private _rateLimitCount;
|
|
55
|
+
private _lastRateLimitAt;
|
|
56
|
+
private _rateLimitResetTime;
|
|
57
|
+
private _rateLimitResetTimer;
|
|
58
|
+
private _messagesReceived;
|
|
59
|
+
private _messagesSent;
|
|
60
|
+
private _messagesIgnored;
|
|
61
|
+
constructor(options: DiscordConnectorOptions);
|
|
62
|
+
/**
|
|
63
|
+
* Get the session manager instance
|
|
64
|
+
*/
|
|
65
|
+
get sessionManager(): ISessionManager;
|
|
66
|
+
/**
|
|
67
|
+
* Get the command manager instance (available after connect)
|
|
68
|
+
*/
|
|
69
|
+
get commandManager(): ICommandManager | null;
|
|
70
|
+
/**
|
|
71
|
+
* Name of the agent this connector is for
|
|
72
|
+
*/
|
|
73
|
+
get agentName(): string;
|
|
74
|
+
/**
|
|
75
|
+
* Get the discord.js Client instance (for testing)
|
|
76
|
+
*/
|
|
77
|
+
get client(): Client | null;
|
|
78
|
+
/**
|
|
79
|
+
* Connect to Discord gateway
|
|
80
|
+
*
|
|
81
|
+
* Creates a new discord.js Client and connects to the gateway.
|
|
82
|
+
* Registers event handlers for connection lifecycle events.
|
|
83
|
+
*
|
|
84
|
+
* @throws AlreadyConnectedError if already connected
|
|
85
|
+
* @throws DiscordConnectionError on connection failure
|
|
86
|
+
*/
|
|
87
|
+
connect(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Disconnect from Discord gateway
|
|
90
|
+
*
|
|
91
|
+
* Performs graceful shutdown by destroying the client.
|
|
92
|
+
* Does not throw on failure - logs errors and completes.
|
|
93
|
+
*/
|
|
94
|
+
disconnect(): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Check if currently connected to Discord
|
|
97
|
+
*
|
|
98
|
+
* @returns true if connected and ready, false otherwise
|
|
99
|
+
*/
|
|
100
|
+
isConnected(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get current connector state
|
|
103
|
+
*
|
|
104
|
+
* @returns Current state including connection status and metadata
|
|
105
|
+
*/
|
|
106
|
+
getState(): DiscordConnectorState;
|
|
107
|
+
/**
|
|
108
|
+
* Set up event handlers for the discord.js client
|
|
109
|
+
*/
|
|
110
|
+
private _setupEventHandlers;
|
|
111
|
+
/**
|
|
112
|
+
* Initialize and register slash commands
|
|
113
|
+
*/
|
|
114
|
+
private _initializeCommands;
|
|
115
|
+
/**
|
|
116
|
+
* Handle an incoming interaction (slash command)
|
|
117
|
+
*/
|
|
118
|
+
private _handleInteraction;
|
|
119
|
+
/**
|
|
120
|
+
* Handle an incoming message
|
|
121
|
+
*
|
|
122
|
+
* Determines if the message should be processed based on channel configuration
|
|
123
|
+
* and mention mode settings. If the message should be processed, builds
|
|
124
|
+
* conversation context and emits a 'message' event.
|
|
125
|
+
*
|
|
126
|
+
* For DMs:
|
|
127
|
+
* - DMs default to auto mode (no mention required)
|
|
128
|
+
* - Allowlist/blocklist filtering is applied
|
|
129
|
+
*
|
|
130
|
+
* For guild channels:
|
|
131
|
+
* - Mode is determined by channel configuration
|
|
132
|
+
* - Only configured channels are processed
|
|
133
|
+
*/
|
|
134
|
+
private _handleMessage;
|
|
135
|
+
/**
|
|
136
|
+
* Set bot presence based on configuration
|
|
137
|
+
*/
|
|
138
|
+
private _setPresence;
|
|
139
|
+
/**
|
|
140
|
+
* Handle rate limit events from discord.js REST client
|
|
141
|
+
*
|
|
142
|
+
* Discord.js automatically queues and retries requests when rate limited.
|
|
143
|
+
* This method tracks rate limit occurrences and emits events for monitoring.
|
|
144
|
+
*/
|
|
145
|
+
private _handleRateLimit;
|
|
146
|
+
/**
|
|
147
|
+
* Type-safe event emitter methods
|
|
148
|
+
*/
|
|
149
|
+
emit<K extends DiscordConnectorEventName>(event: K, payload: DiscordConnectorEventMap[K]): boolean;
|
|
150
|
+
on<K extends DiscordConnectorEventName>(event: K, listener: (payload: DiscordConnectorEventMap[K]) => void): this;
|
|
151
|
+
once<K extends DiscordConnectorEventName>(event: K, listener: (payload: DiscordConnectorEventMap[K]) => void): this;
|
|
152
|
+
off<K extends DiscordConnectorEventName>(event: K, listener: (payload: DiscordConnectorEventMap[K]) => void): this;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=discord-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-connector.d.ts","sourceRoot":"","sources":["../src/discord-connector.ts"],"names":[],"mappings":"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"}
|