@hybridaione/hybridclaw 0.2.1 → 0.2.2

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.
Files changed (105) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +47 -15
  3. package/container/package-lock.json +2 -2
  4. package/container/package.json +1 -1
  5. package/container/src/browser-tools.ts +1 -1
  6. package/container/src/index.ts +243 -14
  7. package/container/src/token-usage.ts +18 -2
  8. package/container/src/tools.ts +339 -1
  9. package/container/src/types.ts +28 -2
  10. package/dist/agent.d.ts +2 -2
  11. package/dist/agent.d.ts.map +1 -1
  12. package/dist/agent.js +2 -2
  13. package/dist/agent.js.map +1 -1
  14. package/dist/channels/discord/attachments.d.ts +9 -0
  15. package/dist/channels/discord/attachments.d.ts.map +1 -0
  16. package/dist/channels/discord/attachments.js +245 -0
  17. package/dist/channels/discord/attachments.js.map +1 -0
  18. package/dist/channels/discord/delivery.d.ts +31 -0
  19. package/dist/channels/discord/delivery.d.ts.map +1 -0
  20. package/dist/channels/discord/delivery.js +60 -0
  21. package/dist/channels/discord/delivery.js.map +1 -0
  22. package/dist/channels/discord/inbound.d.ts +20 -0
  23. package/dist/channels/discord/inbound.d.ts.map +1 -0
  24. package/dist/channels/discord/inbound.js +44 -0
  25. package/dist/channels/discord/inbound.js.map +1 -0
  26. package/dist/channels/discord/mentions.d.ts +14 -0
  27. package/dist/channels/discord/mentions.d.ts.map +1 -0
  28. package/dist/channels/discord/mentions.js +118 -0
  29. package/dist/channels/discord/mentions.js.map +1 -0
  30. package/dist/channels/discord/runtime.d.ts +22 -0
  31. package/dist/channels/discord/runtime.d.ts.map +1 -0
  32. package/dist/channels/discord/runtime.js +972 -0
  33. package/dist/channels/discord/runtime.js.map +1 -0
  34. package/dist/channels/discord/stream.d.ts +32 -0
  35. package/dist/channels/discord/stream.d.ts.map +1 -0
  36. package/dist/channels/discord/stream.js +196 -0
  37. package/dist/channels/discord/stream.js.map +1 -0
  38. package/dist/channels/discord/tool-actions.d.ts +31 -0
  39. package/dist/channels/discord/tool-actions.d.ts.map +1 -0
  40. package/dist/channels/discord/tool-actions.js +268 -0
  41. package/dist/channels/discord/tool-actions.js.map +1 -0
  42. package/dist/container-runner.d.ts +2 -2
  43. package/dist/container-runner.d.ts.map +1 -1
  44. package/dist/container-runner.js +12 -2
  45. package/dist/container-runner.js.map +1 -1
  46. package/dist/discord.basic.test.d.ts +2 -0
  47. package/dist/discord.basic.test.d.ts.map +1 -0
  48. package/dist/discord.basic.test.js +38 -0
  49. package/dist/discord.basic.test.js.map +1 -0
  50. package/dist/discord.d.ts +5 -44
  51. package/dist/discord.d.ts.map +1 -1
  52. package/dist/discord.js +3 -1468
  53. package/dist/discord.js.map +1 -1
  54. package/dist/gateway-service.d.ts +7 -1
  55. package/dist/gateway-service.d.ts.map +1 -1
  56. package/dist/gateway-service.js +111 -2
  57. package/dist/gateway-service.js.map +1 -1
  58. package/dist/gateway-service.media-routing.test.d.ts +2 -0
  59. package/dist/gateway-service.media-routing.test.d.ts.map +1 -0
  60. package/dist/gateway-service.media-routing.test.js +29 -0
  61. package/dist/gateway-service.media-routing.test.js.map +1 -0
  62. package/dist/gateway-types.d.ts +8 -0
  63. package/dist/gateway-types.d.ts.map +1 -1
  64. package/dist/gateway-types.js.map +1 -1
  65. package/dist/gateway.js +5 -2
  66. package/dist/gateway.js.map +1 -1
  67. package/dist/health.d.ts.map +1 -1
  68. package/dist/health.js +1 -1
  69. package/dist/health.js.map +1 -1
  70. package/dist/heartbeat.d.ts.map +1 -1
  71. package/dist/heartbeat.js +2 -0
  72. package/dist/heartbeat.js.map +1 -1
  73. package/dist/token-efficiency.basic.test.d.ts +2 -0
  74. package/dist/token-efficiency.basic.test.d.ts.map +1 -0
  75. package/dist/token-efficiency.basic.test.js +29 -0
  76. package/dist/token-efficiency.basic.test.js.map +1 -0
  77. package/dist/token-efficiency.d.ts.map +1 -1
  78. package/dist/token-efficiency.js +18 -1
  79. package/dist/token-efficiency.js.map +1 -1
  80. package/dist/types.d.ts +23 -1
  81. package/dist/types.d.ts.map +1 -1
  82. package/package.json +10 -2
  83. package/src/agent.ts +11 -1
  84. package/src/channels/discord/attachments.ts +282 -0
  85. package/src/channels/discord/delivery.ts +99 -0
  86. package/src/channels/discord/inbound.ts +72 -0
  87. package/src/channels/discord/mentions.ts +130 -0
  88. package/src/{discord.ts → channels/discord/runtime.ts} +77 -615
  89. package/src/{discord-stream.ts → channels/discord/stream.ts} +2 -2
  90. package/src/channels/discord/tool-actions.ts +332 -0
  91. package/src/container-runner.ts +24 -1
  92. package/src/gateway-service.ts +125 -1
  93. package/src/gateway-types.ts +8 -0
  94. package/src/gateway.ts +5 -5
  95. package/src/health.ts +2 -1
  96. package/src/heartbeat.ts +2 -0
  97. package/src/token-efficiency.ts +17 -1
  98. package/src/types.ts +27 -1
  99. package/tests/discord.basic.test.ts +43 -0
  100. package/tests/gateway-service.media-routing.test.ts +33 -0
  101. package/tests/token-efficiency.basic.test.ts +32 -0
  102. package/vitest.e2e.config.ts +15 -0
  103. package/vitest.integration.config.ts +15 -0
  104. package/vitest.live.config.ts +16 -0
  105. package/vitest.unit.config.ts +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/channels/discord/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { AttachmentBuilder, type Message as DiscordMessage } from 'discord.js';
2
+ export interface DiscordStreamOptions {
3
+ maxChars?: number;
4
+ maxLines?: number;
5
+ editIntervalMs?: number;
6
+ onFirstMessage?: () => void;
7
+ }
8
+ export declare class DiscordStreamManager {
9
+ private readonly sourceMessage;
10
+ private readonly channel;
11
+ private readonly maxChars;
12
+ private readonly maxLines;
13
+ private readonly editIntervalMs;
14
+ private readonly onFirstMessage?;
15
+ private readonly messages;
16
+ private sentChunks;
17
+ private content;
18
+ private lastEditAt;
19
+ private flushTimer;
20
+ private opQueue;
21
+ private closed;
22
+ constructor(sourceMessage: DiscordMessage, options?: DiscordStreamOptions);
23
+ hasSentMessages(): boolean;
24
+ append(delta: string): Promise<void>;
25
+ finalize(finalText: string, files?: AttachmentBuilder[]): Promise<void>;
26
+ fail(errorText: string): Promise<void>;
27
+ discard(): Promise<void>;
28
+ private enqueue;
29
+ private scheduleFlush;
30
+ private sync;
31
+ }
32
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/channels/discord/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,OAAO,IAAI,cAAc,EAC/B,MAAM,YAAY,CAAC;AAuBpB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AA2CD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAa;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB;IASzE,eAAe,IAAI,OAAO;IAI1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASpC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAavE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBxB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,aAAa;YAWP,IAAI;CA2DnB"}
@@ -0,0 +1,196 @@
1
+ import { chunkMessage } from '../../chunk.js';
2
+ import { logger } from '../../logger.js';
3
+ const DEFAULT_MAX_CHARS = 1_800;
4
+ const DEFAULT_MAX_LINES = 20;
5
+ const DEFAULT_EDIT_INTERVAL_MS = 1_200;
6
+ const RETRY_MAX_ATTEMPTS = 3;
7
+ const RETRY_BASE_DELAY_MS = 500;
8
+ function isRetryableDiscordError(error) {
9
+ const maybe = error;
10
+ const status = maybe.status ?? maybe.httpStatus;
11
+ return status === 429 || (typeof status === 'number' && status >= 500 && status <= 599);
12
+ }
13
+ function extractRetryDelayMs(error, fallbackMs) {
14
+ const maybe = error;
15
+ const retryAfterSeconds = maybe.retryAfter ?? maybe.data?.retry_after;
16
+ if (typeof retryAfterSeconds === 'number' && Number.isFinite(retryAfterSeconds) && retryAfterSeconds > 0) {
17
+ return Math.max(50, Math.ceil(retryAfterSeconds * 1_000));
18
+ }
19
+ const jitter = Math.floor(Math.random() * 250);
20
+ return fallbackMs + jitter;
21
+ }
22
+ async function withDiscordRetry(label, run) {
23
+ let attempt = 0;
24
+ let delayMs = RETRY_BASE_DELAY_MS;
25
+ while (true) {
26
+ attempt += 1;
27
+ try {
28
+ return await run();
29
+ }
30
+ catch (error) {
31
+ if (attempt >= RETRY_MAX_ATTEMPTS || !isRetryableDiscordError(error)) {
32
+ throw error;
33
+ }
34
+ const waitMs = extractRetryDelayMs(error, delayMs);
35
+ logger.warn({ label, attempt, waitMs, error }, 'Discord request failed; retrying');
36
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
37
+ delayMs = Math.min(delayMs * 2, 4_000);
38
+ }
39
+ }
40
+ }
41
+ export class DiscordStreamManager {
42
+ sourceMessage;
43
+ channel;
44
+ maxChars;
45
+ maxLines;
46
+ editIntervalMs;
47
+ onFirstMessage;
48
+ messages = [];
49
+ sentChunks = [];
50
+ content = '';
51
+ lastEditAt = 0;
52
+ flushTimer = null;
53
+ opQueue = Promise.resolve();
54
+ closed = false;
55
+ constructor(sourceMessage, options) {
56
+ this.sourceMessage = sourceMessage;
57
+ this.channel = sourceMessage.channel;
58
+ this.maxChars = Math.max(200, options?.maxChars ?? DEFAULT_MAX_CHARS);
59
+ this.maxLines = Math.max(4, options?.maxLines ?? DEFAULT_MAX_LINES);
60
+ this.editIntervalMs = Math.max(250, options?.editIntervalMs ?? DEFAULT_EDIT_INTERVAL_MS);
61
+ this.onFirstMessage = options?.onFirstMessage;
62
+ }
63
+ hasSentMessages() {
64
+ return this.messages.length > 0;
65
+ }
66
+ append(delta) {
67
+ if (this.closed)
68
+ return Promise.resolve();
69
+ if (!delta)
70
+ return Promise.resolve();
71
+ this.content += delta;
72
+ return this.enqueue(async () => {
73
+ await this.sync(false);
74
+ });
75
+ }
76
+ finalize(finalText, files) {
77
+ if (this.closed)
78
+ return Promise.resolve();
79
+ this.content = finalText;
80
+ if (this.flushTimer) {
81
+ clearTimeout(this.flushTimer);
82
+ this.flushTimer = null;
83
+ }
84
+ return this.enqueue(async () => {
85
+ await this.sync(true, files);
86
+ this.closed = true;
87
+ });
88
+ }
89
+ fail(errorText) {
90
+ if (this.closed)
91
+ return Promise.resolve();
92
+ this.content = this.content
93
+ ? `${this.content}\n\n${errorText}`
94
+ : errorText;
95
+ if (this.flushTimer) {
96
+ clearTimeout(this.flushTimer);
97
+ this.flushTimer = null;
98
+ }
99
+ return this.enqueue(async () => {
100
+ await this.sync(true);
101
+ this.closed = true;
102
+ });
103
+ }
104
+ discard() {
105
+ if (this.flushTimer) {
106
+ clearTimeout(this.flushTimer);
107
+ this.flushTimer = null;
108
+ }
109
+ this.closed = true;
110
+ return this.enqueue(async () => {
111
+ for (const message of this.messages) {
112
+ try {
113
+ await withDiscordRetry('delete', () => message.delete());
114
+ }
115
+ catch (error) {
116
+ logger.debug({ error }, 'Failed to delete partial streamed message');
117
+ }
118
+ }
119
+ this.messages.length = 0;
120
+ this.sentChunks = [];
121
+ this.content = '';
122
+ });
123
+ }
124
+ enqueue(task) {
125
+ this.opQueue = this.opQueue
126
+ .then(task)
127
+ .catch((error) => {
128
+ logger.warn({ error }, 'Discord stream operation failed');
129
+ });
130
+ return this.opQueue;
131
+ }
132
+ scheduleFlush() {
133
+ if (this.flushTimer || this.closed)
134
+ return;
135
+ const waitMs = Math.max(0, this.editIntervalMs - (Date.now() - this.lastEditAt));
136
+ this.flushTimer = setTimeout(() => {
137
+ this.flushTimer = null;
138
+ void this.enqueue(async () => {
139
+ await this.sync(false);
140
+ });
141
+ }, waitMs);
142
+ }
143
+ async sync(forceLastEdit, files) {
144
+ const chunks = chunkMessage(this.content, {
145
+ maxChars: this.maxChars,
146
+ maxLines: this.maxLines,
147
+ });
148
+ if (chunks.length === 0) {
149
+ if (files && files.length > 0) {
150
+ const fallback = 'Attached files:';
151
+ const sent = await withDiscordRetry('reply', () => this.sourceMessage.reply({ content: fallback, files }));
152
+ this.messages.push(sent);
153
+ this.sentChunks.push(fallback);
154
+ this.onFirstMessage?.();
155
+ }
156
+ return;
157
+ }
158
+ for (let i = 0; i < chunks.length; i += 1) {
159
+ const chunk = chunks[i];
160
+ const isLast = i === chunks.length - 1;
161
+ if (i >= this.messages.length) {
162
+ const sent = i === 0
163
+ ? await withDiscordRetry('reply', () => this.sourceMessage.reply({ content: chunk }))
164
+ : await withDiscordRetry('send', () => this.channel.send({ content: chunk }));
165
+ this.messages.push(sent);
166
+ this.sentChunks.push(chunk);
167
+ this.onFirstMessage?.();
168
+ continue;
169
+ }
170
+ if (this.sentChunks[i] === chunk)
171
+ continue;
172
+ const elapsed = Date.now() - this.lastEditAt;
173
+ if (isLast && !forceLastEdit && elapsed < this.editIntervalMs) {
174
+ this.scheduleFlush();
175
+ continue;
176
+ }
177
+ await withDiscordRetry('edit', () => this.messages[i].edit({ content: chunk }));
178
+ this.sentChunks[i] = chunk;
179
+ this.lastEditAt = Date.now();
180
+ }
181
+ if (this.messages.length > chunks.length) {
182
+ for (let i = this.messages.length - 1; i >= chunks.length; i -= 1) {
183
+ await withDiscordRetry('delete', () => this.messages[i].delete());
184
+ }
185
+ this.messages.splice(chunks.length);
186
+ this.sentChunks = this.sentChunks.slice(0, chunks.length);
187
+ }
188
+ if (files && files.length > 0) {
189
+ const lastIndex = chunks.length - 1;
190
+ await withDiscordRetry('edit', () => this.messages[lastIndex].edit({ content: chunks[lastIndex], files }));
191
+ this.sentChunks[lastIndex] = chunks[lastIndex];
192
+ this.lastEditAt = Date.now();
193
+ }
194
+ }
195
+ }
196
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/channels/discord/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Client } from 'discord.js';
2
+ export type DiscordToolAction = 'read' | 'member-info' | 'channel-info';
3
+ export interface DiscordToolActionRequest {
4
+ action: DiscordToolAction;
5
+ channelId?: string;
6
+ guildId?: string;
7
+ userId?: string;
8
+ username?: string;
9
+ user?: string;
10
+ memberId?: string;
11
+ limit?: number;
12
+ before?: string;
13
+ after?: string;
14
+ around?: string;
15
+ }
16
+ export interface CachedDiscordPresenceActivity {
17
+ type: number;
18
+ name: string;
19
+ state: string | null;
20
+ details: string | null;
21
+ }
22
+ export interface CachedDiscordPresence {
23
+ status: string;
24
+ activities: CachedDiscordPresenceActivity[];
25
+ }
26
+ export interface DiscordToolActionDependencies {
27
+ requireDiscordClientReady: () => Client;
28
+ getDiscordPresence: (userId: string) => CachedDiscordPresence | undefined;
29
+ }
30
+ export declare function createDiscordToolActionRunner(deps: DiscordToolActionDependencies): (request: DiscordToolActionRequest) => Promise<Record<string, unknown>>;
31
+ //# sourceMappingURL=tool-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-actions.d.ts","sourceRoot":"","sources":["../../../src/channels/discord/tool-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,YAAY,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;AAExE,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,6BAA6B,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,6BAA6B;IAC5C,yBAAyB,EAAE,MAAM,MAAM,CAAC;IACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,qBAAqB,GAAG,SAAS,CAAC;CAC3E;AA2RD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,6BAA6B,GAAG,CAClF,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAapC"}
@@ -0,0 +1,268 @@
1
+ function sanitizeDiscordId(rawValue, label) {
2
+ const value = (rawValue || '').trim();
3
+ if (!/^\d{16,22}$/.test(value)) {
4
+ throw new Error(`${label} must be a Discord snowflake id.`);
5
+ }
6
+ return value;
7
+ }
8
+ function normalizeDiscordUserLookupQuery(rawValue) {
9
+ const trimmed = (rawValue || '').trim();
10
+ if (!trimmed)
11
+ return '';
12
+ const mentionMatch = trimmed.match(/^<@!?(\d{16,22})>$/);
13
+ if (mentionMatch)
14
+ return mentionMatch[1];
15
+ const prefixedId = trimmed.match(/^(?:user:|discord:)?(\d{16,22})$/i);
16
+ if (prefixedId)
17
+ return prefixedId[1];
18
+ return trimmed.replace(/^@+/, '').trim();
19
+ }
20
+ function scoreGuildMemberForLookup(member, query) {
21
+ const q = query.toLowerCase();
22
+ const username = member.user.username?.toLowerCase() || '';
23
+ const globalName = member.user.globalName?.toLowerCase() || '';
24
+ const nickname = member.nickname?.toLowerCase() || '';
25
+ const displayName = member.displayName?.toLowerCase() || '';
26
+ const candidates = [username, globalName, nickname, displayName].filter(Boolean);
27
+ let score = 0;
28
+ if (candidates.some((value) => value === q))
29
+ score += 3;
30
+ if (candidates.some((value) => value.includes(q)))
31
+ score += 1;
32
+ if (!member.user.bot)
33
+ score += 1;
34
+ return score;
35
+ }
36
+ async function resolveGuildMemberIdFromLookup(params) {
37
+ const activeClient = params.requireDiscordClientReady();
38
+ const guildId = sanitizeDiscordId(params.guildId, 'guildId');
39
+ const normalized = normalizeDiscordUserLookupQuery(params.rawUser);
40
+ if (!normalized) {
41
+ throw new Error('userId or username is required.');
42
+ }
43
+ if (/^\d{16,22}$/.test(normalized)) {
44
+ return { userId: normalized };
45
+ }
46
+ const guild = await activeClient.guilds.fetch(guildId);
47
+ const searchQuery = normalized.slice(0, 32);
48
+ if (!searchQuery) {
49
+ throw new Error('username query is empty after normalization.');
50
+ }
51
+ let members;
52
+ try {
53
+ members = await guild.members.search({ query: searchQuery, limit: 25 });
54
+ }
55
+ catch {
56
+ const fetched = await guild.members.fetch({ query: searchQuery, limit: 25 });
57
+ members = fetched;
58
+ }
59
+ let best = null;
60
+ let bestScore = 0;
61
+ let matchCount = 0;
62
+ for (const member of members.values()) {
63
+ const score = scoreGuildMemberForLookup(member, searchQuery);
64
+ if (score <= 0)
65
+ continue;
66
+ matchCount += 1;
67
+ if (!best || score > bestScore) {
68
+ best = member;
69
+ bestScore = score;
70
+ }
71
+ }
72
+ if (!best) {
73
+ throw new Error(`No guild member matched username "${searchQuery}".`);
74
+ }
75
+ return {
76
+ userId: best.id,
77
+ note: matchCount > 1 ? 'multiple matches; chose best' : undefined,
78
+ };
79
+ }
80
+ function normalizeDate(value) {
81
+ if (!value)
82
+ return null;
83
+ const ms = value.getTime();
84
+ if (!Number.isFinite(ms))
85
+ return null;
86
+ return value.toISOString();
87
+ }
88
+ async function runDiscordReadAction(request, deps) {
89
+ const activeClient = deps.requireDiscordClientReady();
90
+ const channelId = sanitizeDiscordId(request.channelId, 'channelId');
91
+ const channel = await activeClient.channels.fetch(channelId);
92
+ if (!channel || !('messages' in channel)) {
93
+ throw new Error('Channel does not support message reads.');
94
+ }
95
+ const requestedLimit = typeof request.limit === 'number' && Number.isFinite(request.limit)
96
+ ? Math.floor(request.limit)
97
+ : 20;
98
+ const limit = Math.max(1, Math.min(100, requestedLimit));
99
+ const before = request.before?.trim();
100
+ const after = request.after?.trim();
101
+ const around = request.around?.trim();
102
+ const query = { limit };
103
+ if (before)
104
+ query.before = before;
105
+ if (after)
106
+ query.after = after;
107
+ if (around)
108
+ query.around = around;
109
+ const fetched = await channel.messages.fetch(query);
110
+ const messages = Array.from(fetched.values())
111
+ .sort((a, b) => a.createdTimestamp - b.createdTimestamp || a.id.localeCompare(b.id))
112
+ .map((message) => ({
113
+ id: message.id,
114
+ channelId: message.channelId,
115
+ guildId: message.guildId ?? null,
116
+ content: message.content || '',
117
+ createdAt: new Date(message.createdTimestamp).toISOString(),
118
+ editedAt: normalizeDate(message.editedAt),
119
+ author: {
120
+ id: message.author?.id || 'unknown',
121
+ username: message.author?.username || 'unknown',
122
+ handle: message.author?.username ? `@${message.author.username}` : null,
123
+ globalName: message.author?.globalName || null,
124
+ bot: Boolean(message.author?.bot),
125
+ },
126
+ member: message.member
127
+ ? {
128
+ id: message.member.id,
129
+ nickname: message.member.nickname || null,
130
+ displayName: message.member.displayName || null,
131
+ }
132
+ : null,
133
+ attachments: Array.from(message.attachments.values()).map((attachment) => ({
134
+ id: attachment.id,
135
+ name: attachment.name || null,
136
+ url: attachment.url,
137
+ contentType: attachment.contentType || null,
138
+ size: attachment.size,
139
+ })),
140
+ mentions: {
141
+ users: Array.from(message.mentions.users.values()).map((user) => ({
142
+ id: user.id,
143
+ username: user.username,
144
+ bot: Boolean(user.bot),
145
+ })),
146
+ roles: Array.from(message.mentions.roles.values()).map((role) => ({
147
+ id: role.id,
148
+ name: role.name,
149
+ })),
150
+ channels: Array.from(message.mentions.channels.values()).map((mentionedChannel) => ({
151
+ id: mentionedChannel.id,
152
+ name: 'name' in mentionedChannel && typeof mentionedChannel.name === 'string'
153
+ ? mentionedChannel.name
154
+ : null,
155
+ })),
156
+ },
157
+ }));
158
+ return {
159
+ ok: true,
160
+ action: 'read',
161
+ channelId,
162
+ count: messages.length,
163
+ messages,
164
+ };
165
+ }
166
+ async function runDiscordMemberInfoAction(request, deps) {
167
+ const activeClient = deps.requireDiscordClientReady();
168
+ const guildId = sanitizeDiscordId(request.guildId, 'guildId');
169
+ const userLookupRaw = request.userId
170
+ || request.memberId
171
+ || request.user
172
+ || request.username;
173
+ const resolvedUser = await resolveGuildMemberIdFromLookup({
174
+ requireDiscordClientReady: deps.requireDiscordClientReady,
175
+ guildId,
176
+ rawUser: userLookupRaw || '',
177
+ });
178
+ const userId = sanitizeDiscordId(resolvedUser.userId, 'userId');
179
+ const guild = await activeClient.guilds.fetch(guildId);
180
+ const member = await guild.members.fetch(userId);
181
+ const presence = deps.getDiscordPresence(userId);
182
+ const roles = member.roles.cache
183
+ .filter((role) => role.id !== guild.id)
184
+ .map((role) => ({
185
+ id: role.id,
186
+ name: role.name,
187
+ color: role.hexColor,
188
+ position: role.position,
189
+ }))
190
+ .sort((a, b) => b.position - a.position || a.name.localeCompare(b.name));
191
+ return {
192
+ ok: true,
193
+ action: 'member-info',
194
+ guildId,
195
+ userId,
196
+ ...(resolvedUser.note ? { note: resolvedUser.note } : {}),
197
+ member: {
198
+ id: member.id,
199
+ username: member.user.username,
200
+ handle: member.user.username ? `@${member.user.username}` : null,
201
+ globalName: member.user.globalName || null,
202
+ bot: Boolean(member.user.bot),
203
+ displayName: member.displayName,
204
+ nickname: member.nickname || null,
205
+ joinedAt: normalizeDate(member.joinedAt),
206
+ premiumSince: normalizeDate(member.premiumSince),
207
+ communicationDisabledUntil: normalizeDate(member.communicationDisabledUntil),
208
+ roles,
209
+ },
210
+ ...(presence
211
+ ? {
212
+ status: presence.status,
213
+ activities: presence.activities,
214
+ }
215
+ : {}),
216
+ };
217
+ }
218
+ async function runDiscordChannelInfoAction(request, deps) {
219
+ const activeClient = deps.requireDiscordClientReady();
220
+ const channelId = sanitizeDiscordId(request.channelId, 'channelId');
221
+ const channel = await activeClient.channels.fetch(channelId);
222
+ if (!channel) {
223
+ throw new Error('Channel not found.');
224
+ }
225
+ const channelData = {
226
+ id: channel.id,
227
+ type: channel.type,
228
+ guildId: 'guildId' in channel ? channel.guildId || null : null,
229
+ name: 'name' in channel && typeof channel.name === 'string' ? channel.name : null,
230
+ parentId: 'parentId' in channel ? channel.parentId || null : null,
231
+ topic: 'topic' in channel && typeof channel.topic === 'string' ? channel.topic : null,
232
+ nsfw: 'nsfw' in channel && typeof channel.nsfw === 'boolean' ? channel.nsfw : null,
233
+ rateLimitPerUser: 'rateLimitPerUser' in channel && typeof channel.rateLimitPerUser === 'number'
234
+ ? channel.rateLimitPerUser
235
+ : null,
236
+ isTextBased: typeof channel.isTextBased === 'function' ? channel.isTextBased() : false,
237
+ isDMBased: typeof channel.isDMBased === 'function' ? channel.isDMBased() : false,
238
+ isThread: typeof channel.isThread === 'function' ? channel.isThread() : false,
239
+ lastMessageId: 'lastMessageId' in channel ? channel.lastMessageId || null : null,
240
+ };
241
+ if (typeof channel.isThread === 'function' && channel.isThread()) {
242
+ channelData.archived =
243
+ 'archived' in channel && typeof channel.archived === 'boolean' ? channel.archived : null;
244
+ channelData.locked =
245
+ 'locked' in channel && typeof channel.locked === 'boolean' ? channel.locked : null;
246
+ channelData.ownerId = 'ownerId' in channel ? channel.ownerId || null : null;
247
+ }
248
+ return {
249
+ ok: true,
250
+ action: 'channel-info',
251
+ channel: channelData,
252
+ };
253
+ }
254
+ export function createDiscordToolActionRunner(deps) {
255
+ return async (request) => {
256
+ switch (request.action) {
257
+ case 'read':
258
+ return await runDiscordReadAction(request, deps);
259
+ case 'member-info':
260
+ return await runDiscordMemberInfoAction(request, deps);
261
+ case 'channel-info':
262
+ return await runDiscordChannelInfoAction(request, deps);
263
+ default:
264
+ throw new Error(`Unsupported Discord action: ${request.action}`);
265
+ }
266
+ };
267
+ }
268
+ //# sourceMappingURL=tool-actions.js.map