@hardlydifficult/chat 1.1.3 → 1.1.5
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 +112 -118
- package/dist/Channel.d.ts +34 -8
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +52 -22
- package/dist/Channel.js.map +1 -1
- package/dist/ChatClient.d.ts +2 -2
- package/dist/ChatClient.d.ts.map +1 -1
- package/dist/Message.d.ts +21 -14
- package/dist/Message.d.ts.map +1 -1
- package/dist/Message.js +33 -18
- package/dist/Message.js.map +1 -1
- package/dist/discord/DiscordChatClient.d.ts +62 -3
- package/dist/discord/DiscordChatClient.d.ts.map +1 -1
- package/dist/discord/DiscordChatClient.js +220 -22
- package/dist/discord/DiscordChatClient.js.map +1 -1
- package/dist/discord/index.d.ts +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/outputters/discord.d.ts +1 -1
- package/dist/outputters/discord.d.ts.map +1 -1
- package/dist/outputters/discord.js +14 -11
- package/dist/outputters/discord.js.map +1 -1
- package/dist/outputters/index.d.ts +3 -3
- package/dist/outputters/slack.d.ts +2 -2
- package/dist/outputters/slack.d.ts.map +1 -1
- package/dist/outputters/slack.js +29 -29
- package/dist/outputters/slack.js.map +1 -1
- package/dist/slack/SlackChatClient.d.ts +36 -5
- package/dist/slack/SlackChatClient.d.ts.map +1 -1
- package/dist/slack/SlackChatClient.js +206 -13
- package/dist/slack/SlackChatClient.js.map +1 -1
- package/dist/slack/index.d.ts +1 -1
- package/dist/types.d.ts +67 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -11,12 +11,12 @@ var Message_1 = require("./Message");
|
|
|
11
11
|
Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return Message_1.Message; } });
|
|
12
12
|
Object.defineProperty(exports, "ReplyMessage", { enumerable: true, get: function () { return Message_1.ReplyMessage; } });
|
|
13
13
|
// Platform implementations
|
|
14
|
-
var
|
|
15
|
-
Object.defineProperty(exports, "DiscordChatClient", { enumerable: true, get: function () { return
|
|
16
|
-
var
|
|
17
|
-
Object.defineProperty(exports, "SlackChatClient", { enumerable: true, get: function () { return
|
|
18
|
-
const
|
|
19
|
-
const
|
|
14
|
+
var discord_1 = require("./discord");
|
|
15
|
+
Object.defineProperty(exports, "DiscordChatClient", { enumerable: true, get: function () { return discord_1.DiscordChatClient; } });
|
|
16
|
+
var slack_1 = require("./slack");
|
|
17
|
+
Object.defineProperty(exports, "SlackChatClient", { enumerable: true, get: function () { return slack_1.SlackChatClient; } });
|
|
18
|
+
const discord_2 = require("./discord");
|
|
19
|
+
const slack_2 = require("./slack");
|
|
20
20
|
/**
|
|
21
21
|
* Factory function to create a chat client based on config type
|
|
22
22
|
*
|
|
@@ -39,10 +39,10 @@ const index_4 = require("./slack/index");
|
|
|
39
39
|
*/
|
|
40
40
|
function createChatClient(config) {
|
|
41
41
|
switch (config.type) {
|
|
42
|
-
case
|
|
43
|
-
return new
|
|
44
|
-
case
|
|
45
|
-
return new
|
|
42
|
+
case "discord":
|
|
43
|
+
return new discord_2.DiscordChatClient(config);
|
|
44
|
+
case "slack":
|
|
45
|
+
return new slack_2.SlackChatClient(config);
|
|
46
46
|
default:
|
|
47
47
|
throw new Error(`Unknown chat platform: ${config.type}`);
|
|
48
48
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAwDA,4CAWC;AA9CD,eAAe;AACf,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qCAA4D;AAAnD,kGAAA,OAAO,OAAA;AAChB,qCAA0E;AAAjE,kGAAA,OAAO,OAAA;AAAE,uGAAA,YAAY,OAAA;AAE9B,2BAA2B;AAC3B,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAC1B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAIxB,uCAA8C;AAC9C,mCAA0C;AAG1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,2BAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,IAAI,uBAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CACb,0BAA2B,MAA2B,CAAC,IAAI,EAAE,CAC9D,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAsE5D"}
|
|
@@ -8,7 +8,7 @@ function toDiscordEmbed(blocks) {
|
|
|
8
8
|
let footerSet = false;
|
|
9
9
|
for (const block of blocks) {
|
|
10
10
|
switch (block.type) {
|
|
11
|
-
case
|
|
11
|
+
case "header":
|
|
12
12
|
if (!titleSet) {
|
|
13
13
|
embed.title = block.text;
|
|
14
14
|
titleSet = true;
|
|
@@ -18,18 +18,18 @@ function toDiscordEmbed(blocks) {
|
|
|
18
18
|
descriptionParts.push(`**${block.text}**`);
|
|
19
19
|
}
|
|
20
20
|
break;
|
|
21
|
-
case
|
|
21
|
+
case "text":
|
|
22
22
|
descriptionParts.push(block.content);
|
|
23
23
|
break;
|
|
24
|
-
case
|
|
25
|
-
const listItems = block.items.map((item) => `• ${item}`).join(
|
|
24
|
+
case "list": {
|
|
25
|
+
const listItems = block.items.map((item) => `• ${item}`).join("\n");
|
|
26
26
|
descriptionParts.push(listItems);
|
|
27
27
|
break;
|
|
28
28
|
}
|
|
29
|
-
case
|
|
30
|
-
descriptionParts.push(
|
|
29
|
+
case "divider":
|
|
30
|
+
descriptionParts.push("───────────");
|
|
31
31
|
break;
|
|
32
|
-
case
|
|
32
|
+
case "context":
|
|
33
33
|
if (!footerSet) {
|
|
34
34
|
embed.footer = { text: block.text };
|
|
35
35
|
footerSet = true;
|
|
@@ -39,10 +39,10 @@ function toDiscordEmbed(blocks) {
|
|
|
39
39
|
embed.footer = { text: `${embed.footer.text} | ${block.text}` };
|
|
40
40
|
}
|
|
41
41
|
break;
|
|
42
|
-
case
|
|
42
|
+
case "link":
|
|
43
43
|
descriptionParts.push(`[${block.text}](${block.url})`);
|
|
44
44
|
break;
|
|
45
|
-
case
|
|
45
|
+
case "code":
|
|
46
46
|
if (block.multiline) {
|
|
47
47
|
descriptionParts.push(`\`\`\`\n${block.content}\n\`\`\``);
|
|
48
48
|
}
|
|
@@ -50,14 +50,17 @@ function toDiscordEmbed(blocks) {
|
|
|
50
50
|
descriptionParts.push(`\`${block.content}\``);
|
|
51
51
|
}
|
|
52
52
|
break;
|
|
53
|
-
case
|
|
53
|
+
case "image":
|
|
54
54
|
embed.image = { url: block.url };
|
|
55
55
|
break;
|
|
56
|
+
default:
|
|
57
|
+
// Unknown block type, skip
|
|
58
|
+
break;
|
|
56
59
|
}
|
|
57
60
|
}
|
|
58
61
|
// Join description parts with double newlines for spacing
|
|
59
62
|
if (descriptionParts.length > 0) {
|
|
60
|
-
embed.description = descriptionParts.join(
|
|
63
|
+
embed.description = descriptionParts.join("\n\n");
|
|
61
64
|
}
|
|
62
65
|
return embed;
|
|
63
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":";;AAgBA,wCAsEC;AAtED,SAAgB,cAAc,CAAC,MAAe;IAC5C,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;oBACzB,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,yCAAyC;oBACzC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM;YAER,KAAK,MAAM;gBACT,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM;YACR,CAAC;YAED,KAAK,SAAS;gBACZ,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;oBACpC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACxB,mDAAmD;oBACnD,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClE,CAAC;gBACD,MAAM;YAER,KAAK,MAAM;gBACT,gBAAgB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvD,MAAM;YAER,KAAK,MAAM;gBACT,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACpB,gBAAgB,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM;YAER,KAAK,OAAO;gBACV,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM;YAER;gBACE,2BAA2B;gBAC3B,MAAM;QACV,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { toDiscordEmbed } from
|
|
2
|
-
export { toSlackBlocks } from
|
|
3
|
-
export type { SlackBlock, SlackTextObject } from
|
|
1
|
+
export { toDiscordEmbed } from "./discord";
|
|
2
|
+
export { toSlackBlocks } from "./slack";
|
|
3
|
+
export type { SlackBlock, SlackTextObject } from "./slack";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Block } from "@hardlydifficult/document-generator";
|
|
2
2
|
/**
|
|
3
3
|
* Slack Block Kit text object
|
|
4
4
|
*/
|
|
5
5
|
export interface SlackTextObject {
|
|
6
|
-
type:
|
|
6
|
+
type: "plain_text" | "mrkdwn";
|
|
7
7
|
text: string;
|
|
8
8
|
emoji?: boolean;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAEX,MAAM,qCAAqC,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqCD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CA2H3D"}
|
package/dist/outputters/slack.js
CHANGED
|
@@ -15,7 +15,7 @@ function chunkText(text, maxLen = 2900) {
|
|
|
15
15
|
while (remaining.length > maxLen) {
|
|
16
16
|
// Try to find a newline near the maxLen boundary
|
|
17
17
|
const searchStart = Math.max(0, maxLen - 500); // Look back up to 500 chars
|
|
18
|
-
const newlineIndex = remaining.lastIndexOf(
|
|
18
|
+
const newlineIndex = remaining.lastIndexOf("\n", maxLen);
|
|
19
19
|
if (newlineIndex > searchStart) {
|
|
20
20
|
// Split at newline
|
|
21
21
|
chunks.push(remaining.slice(0, newlineIndex));
|
|
@@ -39,81 +39,81 @@ function toSlackBlocks(blocks) {
|
|
|
39
39
|
const slackBlocks = [];
|
|
40
40
|
for (const block of blocks) {
|
|
41
41
|
switch (block.type) {
|
|
42
|
-
case
|
|
42
|
+
case "header": {
|
|
43
43
|
slackBlocks.push({
|
|
44
|
-
type:
|
|
44
|
+
type: "header",
|
|
45
45
|
text: {
|
|
46
|
-
type:
|
|
46
|
+
type: "plain_text",
|
|
47
47
|
text: block.text,
|
|
48
48
|
},
|
|
49
49
|
});
|
|
50
50
|
break;
|
|
51
51
|
}
|
|
52
|
-
case
|
|
52
|
+
case "text": {
|
|
53
53
|
// Convert markdown to Slack format
|
|
54
|
-
const slackText = (0, document_generator_1.convertMarkdown)(block.content,
|
|
54
|
+
const slackText = (0, document_generator_1.convertMarkdown)(block.content, "slack");
|
|
55
55
|
// Chunk if necessary
|
|
56
56
|
const chunks = chunkText(slackText);
|
|
57
57
|
for (const chunk of chunks) {
|
|
58
58
|
slackBlocks.push({
|
|
59
|
-
type:
|
|
59
|
+
type: "section",
|
|
60
60
|
text: {
|
|
61
|
-
type:
|
|
61
|
+
type: "mrkdwn",
|
|
62
62
|
text: chunk,
|
|
63
63
|
},
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
break;
|
|
67
67
|
}
|
|
68
|
-
case
|
|
68
|
+
case "list": {
|
|
69
69
|
// Convert list items to Slack markdown format
|
|
70
|
-
const listText = block.items.map((item) => `• ${item}`).join(
|
|
71
|
-
const slackText = (0, document_generator_1.convertMarkdown)(listText,
|
|
70
|
+
const listText = block.items.map((item) => `• ${item}`).join("\n");
|
|
71
|
+
const slackText = (0, document_generator_1.convertMarkdown)(listText, "slack");
|
|
72
72
|
// Chunk if necessary
|
|
73
73
|
const chunks = chunkText(slackText);
|
|
74
74
|
for (const chunk of chunks) {
|
|
75
75
|
slackBlocks.push({
|
|
76
|
-
type:
|
|
76
|
+
type: "section",
|
|
77
77
|
text: {
|
|
78
|
-
type:
|
|
78
|
+
type: "mrkdwn",
|
|
79
79
|
text: chunk,
|
|
80
80
|
},
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
break;
|
|
84
84
|
}
|
|
85
|
-
case
|
|
85
|
+
case "divider": {
|
|
86
86
|
slackBlocks.push({
|
|
87
|
-
type:
|
|
87
|
+
type: "divider",
|
|
88
88
|
});
|
|
89
89
|
break;
|
|
90
90
|
}
|
|
91
|
-
case
|
|
92
|
-
const slackText = (0, document_generator_1.convertMarkdown)(block.text,
|
|
91
|
+
case "context": {
|
|
92
|
+
const slackText = (0, document_generator_1.convertMarkdown)(block.text, "slack");
|
|
93
93
|
slackBlocks.push({
|
|
94
|
-
type:
|
|
94
|
+
type: "context",
|
|
95
95
|
elements: [
|
|
96
96
|
{
|
|
97
|
-
type:
|
|
97
|
+
type: "mrkdwn",
|
|
98
98
|
text: slackText,
|
|
99
99
|
},
|
|
100
100
|
],
|
|
101
101
|
});
|
|
102
102
|
break;
|
|
103
103
|
}
|
|
104
|
-
case
|
|
104
|
+
case "link": {
|
|
105
105
|
// Slack link format: <url|text>
|
|
106
|
-
const slackText = (0, document_generator_1.convertMarkdown)(block.text,
|
|
106
|
+
const slackText = (0, document_generator_1.convertMarkdown)(block.text, "slack");
|
|
107
107
|
slackBlocks.push({
|
|
108
|
-
type:
|
|
108
|
+
type: "section",
|
|
109
109
|
text: {
|
|
110
|
-
type:
|
|
110
|
+
type: "mrkdwn",
|
|
111
111
|
text: `<${block.url}|${slackText}>`,
|
|
112
112
|
},
|
|
113
113
|
});
|
|
114
114
|
break;
|
|
115
115
|
}
|
|
116
|
-
case
|
|
116
|
+
case "code": {
|
|
117
117
|
// Format code block with backticks
|
|
118
118
|
let codeText;
|
|
119
119
|
if (block.multiline) {
|
|
@@ -123,19 +123,19 @@ function toSlackBlocks(blocks) {
|
|
|
123
123
|
codeText = `\`${block.content}\``;
|
|
124
124
|
}
|
|
125
125
|
slackBlocks.push({
|
|
126
|
-
type:
|
|
126
|
+
type: "section",
|
|
127
127
|
text: {
|
|
128
|
-
type:
|
|
128
|
+
type: "mrkdwn",
|
|
129
129
|
text: codeText,
|
|
130
130
|
},
|
|
131
131
|
});
|
|
132
132
|
break;
|
|
133
133
|
}
|
|
134
|
-
case
|
|
134
|
+
case "image": {
|
|
135
135
|
slackBlocks.push({
|
|
136
|
-
type:
|
|
136
|
+
type: "image",
|
|
137
137
|
image_url: block.url,
|
|
138
|
-
alt_text: block.alt !== undefined && block.alt !==
|
|
138
|
+
alt_text: block.alt !== undefined && block.alt !== "" ? block.alt : "image",
|
|
139
139
|
});
|
|
140
140
|
break;
|
|
141
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
1
|
+
import { Channel, type ChannelOperations } from "../Channel.js";
|
|
2
|
+
import { ChatClient } from "../ChatClient.js";
|
|
3
|
+
import type { DisconnectCallback, ErrorCallback, FileAttachment, MessageCallback, MessageContent, MessageData, ReactionCallback, SlackConfig, StartThreadOptions, ThreadData } from "../types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Slack chat client implementation using @slack/bolt
|
|
6
6
|
*/
|
|
7
7
|
export declare class SlackChatClient extends ChatClient implements ChannelOperations {
|
|
8
8
|
private app;
|
|
9
9
|
private reactionCallbacks;
|
|
10
|
+
private messageCallbacks;
|
|
11
|
+
private disconnectCallbacks;
|
|
12
|
+
private errorCallbacks;
|
|
10
13
|
constructor(config: SlackConfig);
|
|
11
14
|
/**
|
|
12
15
|
* Connect to Slack and return a channel object
|
|
@@ -21,8 +24,7 @@ export declare class SlackChatClient extends ChatClient implements ChannelOperat
|
|
|
21
24
|
*/
|
|
22
25
|
postMessage(channelId: string, content: MessageContent, options?: {
|
|
23
26
|
threadTs?: string;
|
|
24
|
-
|
|
25
|
-
unfurlMedia?: boolean;
|
|
27
|
+
files?: FileAttachment[];
|
|
26
28
|
}): Promise<MessageData>;
|
|
27
29
|
/**
|
|
28
30
|
* Update a message in a Slack channel
|
|
@@ -40,5 +42,34 @@ export declare class SlackChatClient extends ChatClient implements ChannelOperat
|
|
|
40
42
|
* Subscribe to reaction events for a specific channel
|
|
41
43
|
*/
|
|
42
44
|
subscribeToReactions(channelId: string, callback: ReactionCallback): () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Subscribe to incoming message events on a channel
|
|
47
|
+
*/
|
|
48
|
+
subscribeToMessages(channelId: string, callback: MessageCallback): () => void;
|
|
49
|
+
/**
|
|
50
|
+
* Send a typing indicator (not directly supported in Slack bot API - no-op)
|
|
51
|
+
*/
|
|
52
|
+
sendTyping(_channelId: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Create a thread from a message in Slack
|
|
55
|
+
* Slack threads are implicit - posting a reply creates the thread
|
|
56
|
+
*/
|
|
57
|
+
startThread(messageId: string, channelId: string, _name: string, _options?: StartThreadOptions): Promise<ThreadData>;
|
|
58
|
+
/**
|
|
59
|
+
* Bulk delete messages in a Slack channel
|
|
60
|
+
*/
|
|
61
|
+
bulkDelete(channelId: string, count: number): Promise<number>;
|
|
62
|
+
/**
|
|
63
|
+
* Get all threads in a Slack channel
|
|
64
|
+
*/
|
|
65
|
+
getThreads(channelId: string): Promise<ThreadData[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Register a callback for disconnect events
|
|
68
|
+
*/
|
|
69
|
+
onDisconnect(callback: DisconnectCallback): () => void;
|
|
70
|
+
/**
|
|
71
|
+
* Register a callback for error events
|
|
72
|
+
*/
|
|
73
|
+
onError(callback: ErrorCallback): () => void;
|
|
43
74
|
}
|
|
44
75
|
//# sourceMappingURL=SlackChatClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EAEX,gBAAgB,EAEhB,WAAW,EACX,kBAAkB,EAClB,UAAU,EAEX,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IAC1E,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,cAAc,CAA4B;gBAEtC,MAAM,EAAE,WAAW;IAgG/B;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;KAAE,GACxD,OAAO,CAAC,WAAW,CAAC;IAgEvB;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,GACzB,MAAM,IAAI;IAoBb;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,MAAM,IAAI;IAmBb;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;;OAGG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,UAAU,CAAC;IAUtB;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BnE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA4B1D;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOtD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;CAM7C"}
|