@herdctl/discord 1.1.1 → 1.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/README.md +14 -1
- package/dist/__tests__/attachments.test.d.ts +8 -0
- package/dist/__tests__/attachments.test.d.ts.map +1 -0
- package/dist/__tests__/attachments.test.js +439 -0
- package/dist/__tests__/attachments.test.js.map +1 -0
- package/dist/__tests__/discord-connector.test.js +4 -1
- package/dist/__tests__/discord-connector.test.js.map +1 -1
- package/dist/__tests__/embeds.test.d.ts +2 -0
- package/dist/__tests__/embeds.test.d.ts.map +1 -0
- package/dist/__tests__/embeds.test.js +47 -0
- package/dist/__tests__/embeds.test.js.map +1 -0
- package/dist/__tests__/logger.test.js +4 -1
- package/dist/__tests__/logger.test.js.map +1 -1
- package/dist/__tests__/manager.test.js +1193 -28
- package/dist/__tests__/manager.test.js.map +1 -1
- package/dist/__tests__/message-normalizer.test.d.ts +2 -0
- package/dist/__tests__/message-normalizer.test.d.ts.map +1 -0
- package/dist/__tests__/message-normalizer.test.js +83 -0
- package/dist/__tests__/message-normalizer.test.js.map +1 -0
- package/dist/__tests__/runtime-parity.test.d.ts +2 -0
- package/dist/__tests__/runtime-parity.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-parity.test.js +157 -0
- package/dist/__tests__/runtime-parity.test.js.map +1 -0
- package/dist/auto-mode-handler.d.ts.map +1 -1
- package/dist/auto-mode-handler.js +9 -0
- package/dist/auto-mode-handler.js.map +1 -1
- package/dist/commands/__tests__/command-manager.test.js +63 -3
- package/dist/commands/__tests__/command-manager.test.js.map +1 -1
- package/dist/commands/__tests__/extended-commands.test.d.ts +2 -0
- package/dist/commands/__tests__/extended-commands.test.d.ts.map +1 -0
- package/dist/commands/__tests__/extended-commands.test.js +159 -0
- package/dist/commands/__tests__/extended-commands.test.js.map +1 -0
- package/dist/commands/__tests__/help.test.js +5 -6
- package/dist/commands/__tests__/help.test.js.map +1 -1
- package/dist/commands/__tests__/reset.test.js +14 -6
- package/dist/commands/__tests__/reset.test.js.map +1 -1
- package/dist/commands/__tests__/status.test.js +27 -25
- package/dist/commands/__tests__/status.test.js.map +1 -1
- package/dist/commands/cancel.d.ts +3 -0
- package/dist/commands/cancel.d.ts.map +1 -0
- package/dist/commands/cancel.js +7 -0
- package/dist/commands/cancel.js.map +1 -0
- package/dist/commands/command-manager.d.ts +4 -1
- package/dist/commands/command-manager.d.ts.map +1 -1
- package/dist/commands/command-manager.js +65 -3
- package/dist/commands/command-manager.js.map +1 -1
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +33 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/help.d.ts +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +26 -12
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +12 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +12 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/new.d.ts +3 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +22 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/ping.d.ts +3 -0
- package/dist/commands/ping.d.ts.map +1 -0
- package/dist/commands/ping.js +22 -0
- package/dist/commands/ping.js.map +1 -0
- package/dist/commands/reset.d.ts +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +13 -13
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/retry.d.ts +3 -0
- package/dist/commands/retry.d.ts.map +1 -0
- package/dist/commands/retry.js +25 -0
- package/dist/commands/retry.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +47 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/skill.d.ts +3 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +44 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +30 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +25 -18
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts +3 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +25 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/tools.d.ts +3 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +30 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/types.d.ts +71 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/usage.d.ts +3 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +58 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/discord-connector.d.ts +10 -1
- package/dist/discord-connector.d.ts.map +1 -1
- package/dist/discord-connector.js +153 -8
- package/dist/discord-connector.js.map +1 -1
- package/dist/embeds.d.ts +47 -0
- package/dist/embeds.d.ts.map +1 -0
- package/dist/embeds.js +121 -0
- package/dist/embeds.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/manager.d.ts +53 -24
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +1031 -217
- package/dist/manager.js.map +1 -1
- package/dist/mention-handler.d.ts.map +1 -1
- package/dist/mention-handler.js +27 -0
- package/dist/mention-handler.js.map +1 -1
- package/dist/message-normalizer.d.ts +40 -0
- package/dist/message-normalizer.d.ts.map +1 -0
- package/dist/message-normalizer.js +99 -0
- package/dist/message-normalizer.js.map +1 -0
- package/dist/types.d.ts +80 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/voice-transcriber.d.ts +31 -0
- package/dist/voice-transcriber.d.ts.map +1 -0
- package/dist/voice-transcriber.js +44 -0
- package/dist/voice-transcriber.js.map +1 -0
- package/package.json +3 -3
package/dist/embeds.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { formatCompactNumber, formatDurationMs } from "@herdctl/chat";
|
|
2
|
+
import { getToolInputSummary, TOOL_EMOJIS } from "@herdctl/core";
|
|
3
|
+
export const DISCORD_EMBED_COLORS = {
|
|
4
|
+
brand: 0x5865f2,
|
|
5
|
+
working: 0x8b5cf6,
|
|
6
|
+
success: 0x22c55e,
|
|
7
|
+
error: 0xef4444,
|
|
8
|
+
system: 0x6b7280,
|
|
9
|
+
info: 0x3b82f6,
|
|
10
|
+
};
|
|
11
|
+
export function buildFooter(agentName) {
|
|
12
|
+
const shortName = agentName.includes(".") ? agentName.split(".").pop() : agentName;
|
|
13
|
+
return { text: `herdctl · ${shortName}` };
|
|
14
|
+
}
|
|
15
|
+
// Re-export so existing callers (tests, snapshots) don't break.
|
|
16
|
+
export const formatDuration = formatDurationMs;
|
|
17
|
+
export function buildRunCardEmbed(params) {
|
|
18
|
+
const color = params.status === "running"
|
|
19
|
+
? DISCORD_EMBED_COLORS.working
|
|
20
|
+
: params.status === "success"
|
|
21
|
+
? DISCORD_EMBED_COLORS.success
|
|
22
|
+
: DISCORD_EMBED_COLORS.error;
|
|
23
|
+
const fields = params.traceLines && params.traceLines.length > 0
|
|
24
|
+
? [
|
|
25
|
+
{
|
|
26
|
+
name: "Trace",
|
|
27
|
+
value: params.traceLines.slice(-8).join("\n").slice(-1024),
|
|
28
|
+
inline: false,
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
: undefined;
|
|
32
|
+
return {
|
|
33
|
+
description: params.message,
|
|
34
|
+
color,
|
|
35
|
+
fields,
|
|
36
|
+
footer: buildFooter(params.agentName),
|
|
37
|
+
timestamp: new Date().toISOString(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function buildStatusEmbed(description, type, agentName) {
|
|
41
|
+
const color = type === "system"
|
|
42
|
+
? DISCORD_EMBED_COLORS.system
|
|
43
|
+
: type === "info"
|
|
44
|
+
? DISCORD_EMBED_COLORS.info
|
|
45
|
+
: DISCORD_EMBED_COLORS.error;
|
|
46
|
+
return {
|
|
47
|
+
description,
|
|
48
|
+
color,
|
|
49
|
+
footer: agentName ? buildFooter(agentName) : undefined,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function buildResultSummaryEmbed(params) {
|
|
53
|
+
const summaryParts = [];
|
|
54
|
+
summaryParts.push(params.isError ? "**Task failed**" : "**Task complete**");
|
|
55
|
+
if (params.durationMs !== undefined) {
|
|
56
|
+
summaryParts[0] += ` in ${formatDuration(params.durationMs)}`;
|
|
57
|
+
}
|
|
58
|
+
if (params.numTurns !== undefined) {
|
|
59
|
+
summaryParts.push(`${params.numTurns} turn${params.numTurns !== 1 ? "s" : ""}`);
|
|
60
|
+
}
|
|
61
|
+
if (params.totalCostUsd !== undefined) {
|
|
62
|
+
summaryParts.push(`$${params.totalCostUsd.toFixed(4)}`);
|
|
63
|
+
}
|
|
64
|
+
if (params.usage) {
|
|
65
|
+
const total = (params.usage.input_tokens ?? 0) + (params.usage.output_tokens ?? 0);
|
|
66
|
+
summaryParts.push(`${formatCompactNumber(total)} tokens`);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
description: summaryParts.join(" · "),
|
|
70
|
+
color: params.isError ? DISCORD_EMBED_COLORS.error : DISCORD_EMBED_COLORS.success,
|
|
71
|
+
footer: buildFooter(params.agentName),
|
|
72
|
+
timestamp: new Date().toISOString(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function buildErrorEmbed(message, agentName) {
|
|
76
|
+
return {
|
|
77
|
+
description: `**Error:** ${message.length > 4000 ? `${message.substring(0, 4000)}…` : message}`,
|
|
78
|
+
color: DISCORD_EMBED_COLORS.error,
|
|
79
|
+
footer: buildFooter(agentName),
|
|
80
|
+
timestamp: new Date().toISOString(),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function buildToolResultEmbed(params) {
|
|
84
|
+
const toolName = params.toolUse?.name ?? "Tool";
|
|
85
|
+
const emoji = TOOL_EMOJIS[toolName] ?? "🔧";
|
|
86
|
+
const parts = [`${emoji} **${toolName}**`];
|
|
87
|
+
const inputSummary = params.toolUse
|
|
88
|
+
? getToolInputSummary(params.toolUse.name, params.toolUse.input)
|
|
89
|
+
: undefined;
|
|
90
|
+
if (inputSummary) {
|
|
91
|
+
const prefix = toolName === "Bash" || toolName === "bash" ? "> " : "";
|
|
92
|
+
const truncated = inputSummary.length > 120 ? `${inputSummary.substring(0, 120)}…` : inputSummary;
|
|
93
|
+
parts.push(`\`${prefix}${truncated}\``);
|
|
94
|
+
}
|
|
95
|
+
if (params.toolUse) {
|
|
96
|
+
parts.push(`— ${formatDuration(Date.now() - params.toolUse.startTime)}`);
|
|
97
|
+
}
|
|
98
|
+
const fields = [];
|
|
99
|
+
const trimmedOutput = params.toolResult.output.trim();
|
|
100
|
+
if (trimmedOutput.length > 0) {
|
|
101
|
+
let outputText = trimmedOutput;
|
|
102
|
+
if (outputText.length > params.maxOutputChars) {
|
|
103
|
+
outputText =
|
|
104
|
+
outputText.substring(0, params.maxOutputChars) +
|
|
105
|
+
`\n… ${trimmedOutput.length.toLocaleString()} chars total`;
|
|
106
|
+
}
|
|
107
|
+
const lang = toolName === "Bash" || toolName === "bash" ? "ansi" : "";
|
|
108
|
+
fields.push({
|
|
109
|
+
name: params.toolResult.isError ? "Error" : "Output",
|
|
110
|
+
value: `\`\`\`${lang}\n${outputText}\n\`\`\``,
|
|
111
|
+
inline: false,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
description: parts.join(" "),
|
|
116
|
+
color: params.toolResult.isError ? DISCORD_EMBED_COLORS.error : DISCORD_EMBED_COLORS.brand,
|
|
117
|
+
fields: fields.length > 0 ? fields : undefined,
|
|
118
|
+
footer: buildFooter(params.agentName),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=embeds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeds.js","sourceRoot":"","sources":["../src/embeds.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
export declare const VERSION = "0.0.1";
|
|
17
17
|
export type { ResolvedChannelConfig } from "./auto-mode-handler.js";
|
|
18
18
|
export { DEFAULT_CHANNEL_CONTEXT_MESSAGES, DEFAULT_DM_CONTEXT_MESSAGES, findChannelConfig, resolveChannelConfig, } from "./auto-mode-handler.js";
|
|
19
|
-
export type { CommandContext, CommandManagerLogger, CommandManagerOptions, ICommandManager, SlashCommand, } from "./commands/index.js";
|
|
20
|
-
export { CommandManager, helpCommand, resetCommand, statusCommand } from "./commands/index.js";
|
|
19
|
+
export type { ChannelRunUsage, CommandContext, CommandManagerLogger, CommandManagerOptions, CumulativeUsage, ICommandManager, SlashCommand, } from "./commands/index.js";
|
|
20
|
+
export { CommandManager, cancelCommand, configCommand, helpCommand, newCommand, pingCommand, resetCommand, retryCommand, sessionCommand, skillCommand, skillsCommand, statusCommand, stopCommand, toolsCommand, usageCommand, } from "./commands/index.js";
|
|
21
21
|
export { DiscordConnector } from "./discord-connector.js";
|
|
22
22
|
export type { ErrorHandlerOptions } from "./error-handler.js";
|
|
23
23
|
export { classifyError, ErrorHandler, } from "./error-handler.js";
|
|
@@ -27,7 +27,11 @@ export { createDefaultDiscordLogger, createLoggerFromConfig, DiscordLogger, } fr
|
|
|
27
27
|
export { DiscordManager } from "./manager.js";
|
|
28
28
|
export type { ContextBuildOptions, ContextMessage, ConversationContext, TextBasedChannel, } from "./mention-handler.js";
|
|
29
29
|
export { buildConversationContext, fetchMessageHistory, formatContextForPrompt, isBotMentioned, processMessage, shouldProcessMessage, stripBotMention, stripBotRoleMentions, stripMentions, } from "./mention-handler.js";
|
|
30
|
+
export type { DiscordNormalizedMessageEvent } from "./message-normalizer.js";
|
|
31
|
+
export { normalizeDiscordMessage } from "./message-normalizer.js";
|
|
30
32
|
export type { DiscordConnectionStatus, DiscordConnectorEventMap, DiscordConnectorEventName, DiscordConnectorEventPayload, DiscordConnectorLogger, DiscordConnectorOptions, DiscordConnectorState, DiscordReplyEmbed, DiscordReplyEmbedField, DiscordReplyPayload, IDiscordConnector, } from "./types.js";
|
|
31
33
|
export type { SendableChannel, SendSplitOptions, TypingController, } from "./utils/index.js";
|
|
32
34
|
export { DISCORD_MAX_MESSAGE_LENGTH, escapeMarkdown, sendSplitMessage, sendWithTyping, startTypingIndicator, } from "./utils/index.js";
|
|
35
|
+
export type { TranscribeOptions, TranscribeResult } from "./voice-transcriber.js";
|
|
36
|
+
export { transcribeAudio } from "./voice-transcriber.js";
|
|
33
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export const VERSION = "0.0.1";
|
|
|
17
17
|
// Auto mode handling (Discord-specific: guild hierarchy, channel resolution)
|
|
18
18
|
export { DEFAULT_CHANNEL_CONTEXT_MESSAGES, DEFAULT_DM_CONTEXT_MESSAGES, findChannelConfig, resolveChannelConfig, } from "./auto-mode-handler.js";
|
|
19
19
|
// Commands
|
|
20
|
-
export { CommandManager, helpCommand, resetCommand, statusCommand } from "./commands/index.js";
|
|
20
|
+
export { CommandManager, cancelCommand, configCommand, helpCommand, newCommand, pingCommand, resetCommand, retryCommand, sessionCommand, skillCommand, skillsCommand, statusCommand, stopCommand, toolsCommand, usageCommand, } from "./commands/index.js";
|
|
21
21
|
// Main connector class
|
|
22
22
|
export { DiscordConnector } from "./discord-connector.js";
|
|
23
23
|
// Discord-specific error handling (classification uses Discord error codes)
|
|
@@ -30,6 +30,8 @@ export { createDefaultDiscordLogger, createLoggerFromConfig, DiscordLogger, } fr
|
|
|
30
30
|
export { DiscordManager } from "./manager.js";
|
|
31
31
|
// Mention handling (Discord-specific)
|
|
32
32
|
export { buildConversationContext, fetchMessageHistory, formatContextForPrompt, isBotMentioned, processMessage, shouldProcessMessage, stripBotMention, stripBotRoleMentions, stripMentions, } from "./mention-handler.js";
|
|
33
|
+
export { normalizeDiscordMessage } from "./message-normalizer.js";
|
|
33
34
|
// Discord-specific formatting utilities (typing indicator, escapeMarkdown)
|
|
34
35
|
export { DISCORD_MAX_MESSAGE_LENGTH, escapeMarkdown, sendSplitMessage, sendWithTyping, startTypingIndicator, } from "./utils/index.js";
|
|
36
|
+
export { transcribeAudio } from "./voice-transcriber.js";
|
|
35
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAG/B,6EAA6E;AAC7E,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAG/B,6EAA6E;AAC7E,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAUhC,WAAW;AACX,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,4EAA4E;AAC5E,OAAO,EACL,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,0BAA0B;AAC1B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAKrB,SAAS;AACT,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,uCAAuC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAO9C,sCAAsC;AACtC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAoBlE,2EAA2E;AAC3E,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { ChatManagerConnectorState, FleetManagerContext, IChatManager } from "@herdctl/core";
|
|
13
13
|
import { DiscordConnector } from "./discord-connector.js";
|
|
14
|
+
import type { DiscordReplyPayload } from "./types.js";
|
|
14
15
|
/**
|
|
15
16
|
* DiscordManager handles Discord connections for agents
|
|
16
17
|
*
|
|
@@ -23,6 +24,10 @@ import { DiscordConnector } from "./discord-connector.js";
|
|
|
23
24
|
export declare class DiscordManager implements IChatManager {
|
|
24
25
|
private ctx;
|
|
25
26
|
private connectors;
|
|
27
|
+
private activeJobsByChannel;
|
|
28
|
+
private lastPromptByChannel;
|
|
29
|
+
private lastUsageByChannel;
|
|
30
|
+
private cumulativeUsageByAgent;
|
|
26
31
|
private initialized;
|
|
27
32
|
constructor(ctx: FleetManagerContext);
|
|
28
33
|
/**
|
|
@@ -109,28 +114,6 @@ export declare class DiscordManager implements IChatManager {
|
|
|
109
114
|
* @param event - The Discord message event
|
|
110
115
|
*/
|
|
111
116
|
private handleMessage;
|
|
112
|
-
/** Maximum characters for tool output in Discord embed fields */
|
|
113
|
-
private static readonly TOOL_OUTPUT_MAX_CHARS;
|
|
114
|
-
/** Embed colors */
|
|
115
|
-
private static readonly EMBED_COLOR_DEFAULT;
|
|
116
|
-
private static readonly EMBED_COLOR_ERROR;
|
|
117
|
-
private static readonly EMBED_COLOR_SYSTEM;
|
|
118
|
-
private static readonly EMBED_COLOR_SUCCESS;
|
|
119
|
-
/**
|
|
120
|
-
* Format duration in milliseconds to a human-readable string
|
|
121
|
-
*/
|
|
122
|
-
private static formatDuration;
|
|
123
|
-
/**
|
|
124
|
-
* Build a Discord embed for a tool call result
|
|
125
|
-
*
|
|
126
|
-
* Combines the tool_use info (name, input) with the tool_result
|
|
127
|
-
* (output, error status) into a compact Discord embed.
|
|
128
|
-
*
|
|
129
|
-
* @param toolUse - The tool_use block info (name, input, startTime)
|
|
130
|
-
* @param toolResult - The tool result (output, isError)
|
|
131
|
-
* @param maxOutputChars - Maximum characters for output (defaults to TOOL_OUTPUT_MAX_CHARS)
|
|
132
|
-
*/
|
|
133
|
-
private buildToolEmbed;
|
|
134
117
|
/**
|
|
135
118
|
* Handle errors from Discord connectors
|
|
136
119
|
*
|
|
@@ -140,17 +123,39 @@ export declare class DiscordManager implements IChatManager {
|
|
|
140
123
|
* @param error - The error that occurred
|
|
141
124
|
*/
|
|
142
125
|
private handleError;
|
|
126
|
+
private getChannelKey;
|
|
127
|
+
private stopChannelRun;
|
|
128
|
+
private retryChannelRun;
|
|
129
|
+
private toTextChannel;
|
|
130
|
+
/**
|
|
131
|
+
* Build a DiscordMessageEvent from scratch for programmatic triggers
|
|
132
|
+
* (e.g. /retry). This keeps the boilerplate in one place so any new
|
|
133
|
+
* fields on DiscordMessageEvent only need updating here.
|
|
134
|
+
*/
|
|
135
|
+
private createSyntheticMessageEvent;
|
|
136
|
+
private getChannelRunInfo;
|
|
137
|
+
private getChannelUsage;
|
|
138
|
+
private accumulateUsage;
|
|
139
|
+
private getAgentCumulativeUsage;
|
|
140
|
+
private runChannelSkill;
|
|
141
|
+
private runChannelPrompt;
|
|
142
|
+
private discoverAgentSkills;
|
|
143
|
+
private getAgentByQualifiedName;
|
|
144
|
+
private getConfiguredDiscordSkills;
|
|
145
|
+
private getAgentConfigSummary;
|
|
143
146
|
/** Discord's maximum message length */
|
|
144
147
|
private static readonly MAX_MESSAGE_LENGTH;
|
|
145
148
|
/**
|
|
146
149
|
* Format an error message for Discord display
|
|
147
150
|
*
|
|
148
151
|
* Creates a user-friendly error message with guidance on how to proceed.
|
|
152
|
+
* Returns an embed when agentName is provided, plain text otherwise.
|
|
149
153
|
*
|
|
150
154
|
* @param error - The error that occurred
|
|
151
|
-
* @
|
|
155
|
+
* @param agentName - Optional agent name for embed footer
|
|
156
|
+
* @returns Formatted error message string or embed payload
|
|
152
157
|
*/
|
|
153
|
-
formatErrorMessage(error: Error): string;
|
|
158
|
+
formatErrorMessage(error: Error, agentName?: string): string | DiscordReplyPayload;
|
|
154
159
|
/**
|
|
155
160
|
* Split a response into chunks that fit Discord's 2000 character limit
|
|
156
161
|
*
|
|
@@ -167,5 +172,29 @@ export declare class DiscordManager implements IChatManager {
|
|
|
167
172
|
* @param content - The content to send
|
|
168
173
|
*/
|
|
169
174
|
sendResponse(reply: (content: string) => Promise<void>, content: string): Promise<void>;
|
|
175
|
+
/**
|
|
176
|
+
* Resolve the agent's working directory to an absolute path string
|
|
177
|
+
*/
|
|
178
|
+
private resolveWorkingDirectory;
|
|
179
|
+
/** Maximum characters to inline for text/code file content */
|
|
180
|
+
private static readonly TEXT_INLINE_MAX_CHARS;
|
|
181
|
+
/**
|
|
182
|
+
* Check if a content type matches a MIME pattern (supports wildcards like "image/*")
|
|
183
|
+
*/
|
|
184
|
+
private static matchesMimePattern;
|
|
185
|
+
/**
|
|
186
|
+
* Process file attachments: download, categorize, and prepare prompt sections.
|
|
187
|
+
*
|
|
188
|
+
* - Text/code files are inlined directly into the prompt
|
|
189
|
+
* - Images and PDFs are saved to disk so the agent can use its Read tool
|
|
190
|
+
*
|
|
191
|
+
* Returns prompt sections to prepend, paths of downloaded files for cleanup,
|
|
192
|
+
* and a list of skipped files with reasons.
|
|
193
|
+
*/
|
|
194
|
+
private static processAttachments;
|
|
195
|
+
/**
|
|
196
|
+
* Clean up downloaded attachment files after processing
|
|
197
|
+
*/
|
|
198
|
+
private static cleanupAttachments;
|
|
170
199
|
}
|
|
171
200
|
//# sourceMappingURL=manager.d.ts.map
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,KAAK,EACV,yBAAyB,EAEzB,mBAAmB,EACnB,YAAY,EAGb,MAAM,eAAe,CAAC;AAUvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU1D,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAkCpB;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,YAAY;IAQrC,OAAO,CAAC,GAAG;IAPvB,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,sBAAsB,CAA2C;IACzE,OAAO,CAAC,WAAW,CAAkB;gBAEjB,GAAG,EAAE,mBAAmB;IAE5C;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkHjC;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC5B;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C3B;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIjE;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;;;OAIG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;IAoBtE;;;;;;;;;;;OAWG;YACW,aAAa;IA4uB3B;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,aAAa;YAIP,cAAc;YA+Bd,eAAe;IAmB7B,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;YA0ErB,iBAAiB;YAWjB,eAAe;IAO7B,OAAO,CAAC,eAAe;YAoCT,uBAAuB;YAgBvB,eAAe;YA8Cf,gBAAgB;YAsEhB,mBAAmB;IAyDjC,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,0BAA0B;YAuBpB,qBAAqB;IA2BnC,uCAAuC;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAElD;;;;;;;;;OASG;IACH,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB;IAclF;;;;;;;OAOG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAKrC;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7F;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B,8DAA8D;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAEvD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC;;;;;;;;OAQG;mBACkB,kBAAkB;IAqGvC;;OAEG;mBACkB,kBAAkB;CA2BxC"}
|