@hardlydifficult/chat 1.0.1 → 1.0.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 (54) hide show
  1. package/README.md +134 -45
  2. package/dist/Channel.d.ts +24 -13
  3. package/dist/Channel.d.ts.map +1 -1
  4. package/dist/Channel.js +99 -46
  5. package/dist/Channel.js.map +1 -1
  6. package/dist/ChatClient.d.ts +2 -2
  7. package/dist/ChatClient.d.ts.map +1 -1
  8. package/dist/ChatClient.js +5 -1
  9. package/dist/ChatClient.js.map +1 -1
  10. package/dist/Message.d.ts +91 -6
  11. package/dist/Message.d.ts.map +1 -1
  12. package/dist/Message.js +138 -9
  13. package/dist/Message.js.map +1 -1
  14. package/dist/discord/DiscordChatClient.d.ts +19 -3
  15. package/dist/discord/DiscordChatClient.d.ts.map +1 -1
  16. package/dist/discord/DiscordChatClient.js +79 -15
  17. package/dist/discord/DiscordChatClient.js.map +1 -1
  18. package/dist/discord/index.d.ts +1 -1
  19. package/dist/discord/index.d.ts.map +1 -1
  20. package/dist/discord/index.js +5 -1
  21. package/dist/discord/index.js.map +1 -1
  22. package/dist/index.d.ts +8 -8
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +23 -10
  25. package/dist/index.js.map +1 -1
  26. package/dist/outputters/discord.d.ts +19 -0
  27. package/dist/outputters/discord.d.ts.map +1 -0
  28. package/dist/outputters/discord.js +64 -0
  29. package/dist/outputters/discord.js.map +1 -0
  30. package/dist/outputters/index.d.ts +4 -0
  31. package/dist/outputters/index.d.ts.map +1 -0
  32. package/dist/outputters/index.js +8 -0
  33. package/dist/outputters/index.js.map +1 -0
  34. package/dist/outputters/slack.d.ts +24 -0
  35. package/dist/outputters/slack.d.ts.map +1 -0
  36. package/dist/outputters/slack.js +149 -0
  37. package/dist/outputters/slack.js.map +1 -0
  38. package/dist/slack/SlackChatClient.d.ts +12 -2
  39. package/dist/slack/SlackChatClient.d.ts.map +1 -1
  40. package/dist/slack/SlackChatClient.js +54 -8
  41. package/dist/slack/SlackChatClient.js.map +1 -1
  42. package/dist/slack/index.d.ts +1 -1
  43. package/dist/slack/index.d.ts.map +1 -1
  44. package/dist/slack/index.js +5 -1
  45. package/dist/slack/index.js.map +1 -1
  46. package/dist/types.d.ts +12 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js +5 -1
  49. package/dist/types.js.map +1 -1
  50. package/dist/utils.d.ts +7 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +10 -0
  53. package/dist/utils.js.map +1 -0
  54. package/package.json +5 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA2B,MAA2B,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAkDA,4CASC;AA3DD,sBAAsB;AACtB,iCAYiB;AADf,4FAAA,GAAG,OAAA;AAGL,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,yCAAoD;AAA3C,0GAAA,iBAAiB,OAAA;AAC1B,uCAAgD;AAAvC,wGAAA,eAAe,OAAA;AAKxB,2CAAoD;AACpD,yCAAgD;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,yBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,IAAI,uBAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA2B,MAA2B,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Block } from '@hardlydifficult/document-generator';
2
+ export interface DiscordEmbedField {
3
+ name: string;
4
+ value: string;
5
+ inline?: boolean;
6
+ }
7
+ export interface DiscordEmbed {
8
+ title?: string;
9
+ description?: string;
10
+ fields?: DiscordEmbedField[];
11
+ image?: {
12
+ url: string;
13
+ };
14
+ footer?: {
15
+ text: string;
16
+ };
17
+ }
18
+ export declare function toDiscordEmbed(blocks: Block[]): DiscordEmbed;
19
+ //# sourceMappingURL=discord.d.ts.map
@@ -0,0 +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,CAkE5D"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toDiscordEmbed = toDiscordEmbed;
4
+ function toDiscordEmbed(blocks) {
5
+ const embed = {};
6
+ const descriptionParts = [];
7
+ let titleSet = false;
8
+ let footerSet = false;
9
+ for (const block of blocks) {
10
+ switch (block.type) {
11
+ case 'header':
12
+ if (!titleSet) {
13
+ embed.title = block.text;
14
+ titleSet = true;
15
+ }
16
+ else {
17
+ // Subsequent headers go into description
18
+ descriptionParts.push(`**${block.text}**`);
19
+ }
20
+ break;
21
+ case 'text':
22
+ descriptionParts.push(block.content);
23
+ break;
24
+ case 'list': {
25
+ const listItems = block.items.map((item) => `• ${item}`).join('\n');
26
+ descriptionParts.push(listItems);
27
+ break;
28
+ }
29
+ case 'divider':
30
+ descriptionParts.push('───────────');
31
+ break;
32
+ case 'context':
33
+ if (!footerSet) {
34
+ embed.footer = { text: block.text };
35
+ footerSet = true;
36
+ }
37
+ else if (embed.footer) {
38
+ // If footer already set, append to existing footer
39
+ embed.footer = { text: `${embed.footer.text} | ${block.text}` };
40
+ }
41
+ break;
42
+ case 'link':
43
+ descriptionParts.push(`[${block.text}](${block.url})`);
44
+ break;
45
+ case 'code':
46
+ if (block.multiline) {
47
+ descriptionParts.push(`\`\`\`\n${block.content}\n\`\`\``);
48
+ }
49
+ else {
50
+ descriptionParts.push(`\`${block.content}\``);
51
+ }
52
+ break;
53
+ case 'image':
54
+ embed.image = { url: block.url };
55
+ break;
56
+ }
57
+ }
58
+ // Join description parts with double newlines for spacing
59
+ if (descriptionParts.length > 0) {
60
+ embed.description = descriptionParts.join('\n\n');
61
+ }
62
+ return embed;
63
+ }
64
+ //# sourceMappingURL=discord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":";;AAgBA,wCAkEC;AAlED,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;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"}
@@ -0,0 +1,4 @@
1
+ export { toDiscordEmbed } from './discord';
2
+ export { toSlackBlocks } from './slack';
3
+ export type { SlackBlock, SlackTextObject } from './slack';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/outputters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSlackBlocks = exports.toDiscordEmbed = void 0;
4
+ var discord_1 = require("./discord");
5
+ Object.defineProperty(exports, "toDiscordEmbed", { enumerable: true, get: function () { return discord_1.toDiscordEmbed; } });
6
+ var slack_1 = require("./slack");
7
+ Object.defineProperty(exports, "toSlackBlocks", { enumerable: true, get: function () { return slack_1.toSlackBlocks; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/outputters/index.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA"}
@@ -0,0 +1,24 @@
1
+ import type { Block } from '@hardlydifficult/document-generator';
2
+ /**
3
+ * Slack Block Kit text object
4
+ */
5
+ export interface SlackTextObject {
6
+ type: 'plain_text' | 'mrkdwn';
7
+ text: string;
8
+ emoji?: boolean;
9
+ }
10
+ /**
11
+ * Slack Block Kit block
12
+ */
13
+ export interface SlackBlock {
14
+ type: string;
15
+ text?: SlackTextObject;
16
+ elements?: SlackTextObject[];
17
+ image_url?: string;
18
+ alt_text?: string;
19
+ }
20
+ /**
21
+ * Converts Document blocks to Slack Block Kit format
22
+ */
23
+ export declare function toSlackBlocks(blocks: Block[]): SlackBlock[];
24
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAGjE;;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,CA0H3D"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSlackBlocks = toSlackBlocks;
4
+ const document_generator_1 = require("@hardlydifficult/document-generator");
5
+ /**
6
+ * Chunks text into smaller pieces, splitting at newlines when possible
7
+ * to preserve readability. Each chunk will be at most maxLen characters.
8
+ */
9
+ function chunkText(text, maxLen = 2900) {
10
+ if (text.length <= maxLen) {
11
+ return [text];
12
+ }
13
+ const chunks = [];
14
+ let remaining = text;
15
+ while (remaining.length > maxLen) {
16
+ // Try to find a newline near the maxLen boundary
17
+ const searchStart = Math.max(0, maxLen - 500); // Look back up to 500 chars
18
+ const newlineIndex = remaining.lastIndexOf('\n', maxLen);
19
+ if (newlineIndex > searchStart) {
20
+ // Split at newline
21
+ chunks.push(remaining.slice(0, newlineIndex));
22
+ remaining = remaining.slice(newlineIndex + 1);
23
+ }
24
+ else {
25
+ // No good newline found, split at maxLen
26
+ chunks.push(remaining.slice(0, maxLen));
27
+ remaining = remaining.slice(maxLen);
28
+ }
29
+ }
30
+ if (remaining.length > 0) {
31
+ chunks.push(remaining);
32
+ }
33
+ return chunks;
34
+ }
35
+ /**
36
+ * Converts Document blocks to Slack Block Kit format
37
+ */
38
+ function toSlackBlocks(blocks) {
39
+ const slackBlocks = [];
40
+ for (const block of blocks) {
41
+ switch (block.type) {
42
+ case 'header': {
43
+ slackBlocks.push({
44
+ type: 'header',
45
+ text: {
46
+ type: 'plain_text',
47
+ text: block.text,
48
+ },
49
+ });
50
+ break;
51
+ }
52
+ case 'text': {
53
+ // Convert markdown to Slack format
54
+ const slackText = (0, document_generator_1.convertMarkdown)(block.content, 'slack');
55
+ // Chunk if necessary
56
+ const chunks = chunkText(slackText);
57
+ for (const chunk of chunks) {
58
+ slackBlocks.push({
59
+ type: 'section',
60
+ text: {
61
+ type: 'mrkdwn',
62
+ text: chunk,
63
+ },
64
+ });
65
+ }
66
+ break;
67
+ }
68
+ case 'list': {
69
+ // Convert list items to Slack markdown format
70
+ const listText = block.items.map((item) => `• ${item}`).join('\n');
71
+ const slackText = (0, document_generator_1.convertMarkdown)(listText, 'slack');
72
+ // Chunk if necessary
73
+ const chunks = chunkText(slackText);
74
+ for (const chunk of chunks) {
75
+ slackBlocks.push({
76
+ type: 'section',
77
+ text: {
78
+ type: 'mrkdwn',
79
+ text: chunk,
80
+ },
81
+ });
82
+ }
83
+ break;
84
+ }
85
+ case 'divider': {
86
+ slackBlocks.push({
87
+ type: 'divider',
88
+ });
89
+ break;
90
+ }
91
+ case 'context': {
92
+ const slackText = (0, document_generator_1.convertMarkdown)(block.text, 'slack');
93
+ slackBlocks.push({
94
+ type: 'context',
95
+ elements: [
96
+ {
97
+ type: 'mrkdwn',
98
+ text: slackText,
99
+ },
100
+ ],
101
+ });
102
+ break;
103
+ }
104
+ case 'link': {
105
+ // Slack link format: <url|text>
106
+ const slackText = (0, document_generator_1.convertMarkdown)(block.text, 'slack');
107
+ slackBlocks.push({
108
+ type: 'section',
109
+ text: {
110
+ type: 'mrkdwn',
111
+ text: `<${block.url}|${slackText}>`,
112
+ },
113
+ });
114
+ break;
115
+ }
116
+ case 'code': {
117
+ // Format code block with backticks
118
+ let codeText;
119
+ if (block.multiline) {
120
+ codeText = `\`\`\`\n${block.content}\n\`\`\``;
121
+ }
122
+ else {
123
+ codeText = `\`${block.content}\``;
124
+ }
125
+ slackBlocks.push({
126
+ type: 'section',
127
+ text: {
128
+ type: 'mrkdwn',
129
+ text: codeText,
130
+ },
131
+ });
132
+ break;
133
+ }
134
+ case 'image': {
135
+ slackBlocks.push({
136
+ type: 'image',
137
+ image_url: block.url,
138
+ alt_text: block.alt !== undefined && block.alt !== '' ? block.alt : 'image',
139
+ });
140
+ break;
141
+ }
142
+ default:
143
+ // Unknown block type, skip
144
+ break;
145
+ }
146
+ }
147
+ return slackBlocks;
148
+ }
149
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ChatClient } from '../ChatClient.js';
2
2
  import { Channel, type ChannelOperations } from '../Channel.js';
3
- import type { SlackConfig, MessageData, ReactionCallback } from '../types.js';
3
+ import type { SlackConfig, MessageData, ReactionCallback, MessageContent } from '../types.js';
4
4
  /**
5
5
  * Slack chat client implementation using @slack/bolt
6
6
  */
@@ -19,7 +19,17 @@ export declare class SlackChatClient extends ChatClient implements ChannelOperat
19
19
  /**
20
20
  * Post a message to a Slack channel
21
21
  */
22
- postMessage(channelId: string, text: string): Promise<MessageData>;
22
+ postMessage(channelId: string, content: MessageContent, options?: {
23
+ threadTs?: string;
24
+ }): Promise<MessageData>;
25
+ /**
26
+ * Update a message in a Slack channel
27
+ */
28
+ updateMessage(messageId: string, channelId: string, content: MessageContent): Promise<void>;
29
+ /**
30
+ * Delete a message from a Slack channel
31
+ */
32
+ deleteMessage(messageId: string, channelId: string): Promise<void>;
23
33
  /**
24
34
  * Add a reaction to a message
25
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAuB,MAAM,aAAa,CAAC;AAEnG;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IAC1E,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,iBAAiB,CAA4C;gBAEzD,MAAM,EAAE,WAAW;IAyC/B;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgBxE;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrF;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;CAmBhF"}
1
+ {"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,gBAAgB,EAGhB,cAAc,EACf,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IAC1E,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,iBAAiB,CAA4C;gBAEzD,MAAM,EAAE,WAAW;IAyC/B;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC,WAAW,CAAC;IA4BvB;;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,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrF;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;CAmBhF"}
@@ -1,17 +1,22 @@
1
- import { App } from '@slack/bolt';
2
- import { ChatClient } from '../ChatClient.js';
3
- import { Channel } from '../Channel.js';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlackChatClient = void 0;
4
+ const bolt_1 = require("@slack/bolt");
5
+ const ChatClient_js_1 = require("../ChatClient.js");
6
+ const Channel_js_1 = require("../Channel.js");
7
+ const slack_js_1 = require("../outputters/slack.js");
8
+ const utils_js_1 = require("../utils.js");
4
9
  /**
5
10
  * Slack chat client implementation using @slack/bolt
6
11
  */
7
- export class SlackChatClient extends ChatClient {
12
+ class SlackChatClient extends ChatClient_js_1.ChatClient {
8
13
  app;
9
14
  reactionCallbacks = new Map();
10
15
  constructor(config) {
11
16
  super(config);
12
17
  const token = config.token ?? process.env.SLACK_BOT_TOKEN;
13
18
  const appToken = config.appToken ?? process.env.SLACK_APP_TOKEN;
14
- this.app = new App({
19
+ this.app = new bolt_1.App({
15
20
  token,
16
21
  appToken,
17
22
  socketMode: config.socketMode ?? true,
@@ -46,7 +51,7 @@ export class SlackChatClient extends ChatClient {
46
51
  */
47
52
  async connect(channelId) {
48
53
  await this.app.start();
49
- return new Channel(channelId, 'slack', this);
54
+ return new Channel_js_1.Channel(channelId, 'slack', this);
50
55
  }
51
56
  /**
52
57
  * Disconnect from Slack
@@ -58,10 +63,21 @@ export class SlackChatClient extends ChatClient {
58
63
  /**
59
64
  * Post a message to a Slack channel
60
65
  */
61
- async postMessage(channelId, text) {
66
+ async postMessage(channelId, content, options) {
67
+ let text;
68
+ let blocks;
69
+ if ((0, utils_js_1.isDocument)(content)) {
70
+ blocks = (0, slack_js_1.toSlackBlocks)(content.getBlocks());
71
+ text = content.toPlainText().trim() || 'Message'; // fallback text for accessibility
72
+ }
73
+ else {
74
+ text = content;
75
+ }
62
76
  const result = await this.app.client.chat.postMessage({
63
77
  channel: channelId,
64
- text: text,
78
+ text,
79
+ blocks,
80
+ thread_ts: options?.threadTs,
65
81
  });
66
82
  if (result.ts === undefined) {
67
83
  throw new Error('Slack API did not return a message timestamp');
@@ -72,6 +88,35 @@ export class SlackChatClient extends ChatClient {
72
88
  platform: 'slack',
73
89
  };
74
90
  }
91
+ /**
92
+ * Update a message in a Slack channel
93
+ */
94
+ async updateMessage(messageId, channelId, content) {
95
+ let text;
96
+ let blocks;
97
+ if ((0, utils_js_1.isDocument)(content)) {
98
+ blocks = (0, slack_js_1.toSlackBlocks)(content.getBlocks());
99
+ text = content.toPlainText().trim() || 'Message';
100
+ }
101
+ else {
102
+ text = content;
103
+ }
104
+ await this.app.client.chat.update({
105
+ channel: channelId,
106
+ ts: messageId,
107
+ text,
108
+ blocks,
109
+ });
110
+ }
111
+ /**
112
+ * Delete a message from a Slack channel
113
+ */
114
+ async deleteMessage(messageId, channelId) {
115
+ await this.app.client.chat.delete({
116
+ channel: channelId,
117
+ ts: messageId,
118
+ });
119
+ }
75
120
  /**
76
121
  * Add a reaction to a message
77
122
  */
@@ -106,4 +151,5 @@ export class SlackChatClient extends ChatClient {
106
151
  };
107
152
  }
108
153
  }
154
+ exports.SlackChatClient = SlackChatClient;
109
155
  //# sourceMappingURL=SlackChatClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { SlackChatClient } from './SlackChatClient.js';
1
+ export { SlackChatClient } from './SlackChatClient';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,2 +1,6 @@
1
- export { SlackChatClient } from './SlackChatClient.js';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlackChatClient = void 0;
4
+ var SlackChatClient_1 = require("./SlackChatClient");
5
+ Object.defineProperty(exports, "SlackChatClient", { enumerable: true, get: function () { return SlackChatClient_1.SlackChatClient; } });
2
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { Document } from '@hardlydifficult/document-generator';
2
+ export { doc, type Document } from '@hardlydifficult/document-generator';
1
3
  /**
2
4
  * Configuration for Discord client
3
5
  */
@@ -54,4 +56,14 @@ export interface MessageData {
54
56
  channelId: string;
55
57
  platform: Platform;
56
58
  }
59
+ /**
60
+ * Message content can be string or Document
61
+ */
62
+ export type MessageContent = string | Document;
63
+ /**
64
+ * Options for posting messages with thread support
65
+ */
66
+ export interface PostMessageOptions {
67
+ threadTs?: string;
68
+ }
57
69
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
package/dist/types.js CHANGED
@@ -1,2 +1,6 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doc = void 0;
4
+ var document_generator_1 = require("@hardlydifficult/document-generator");
5
+ Object.defineProperty(exports, "doc", { enumerable: true, get: function () { return document_generator_1.doc; } });
2
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAGA,0EAAyE;AAAhE,yGAAA,GAAG,OAAA"}
@@ -0,0 +1,7 @@
1
+ import type { MessageContent } from './types';
2
+ import type { Document } from '@hardlydifficult/document-generator';
3
+ /**
4
+ * Type guard to check if content is a Document
5
+ */
6
+ export declare function isDocument(content: MessageContent): content is Document;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,IAAI,QAAQ,CAEvE"}
package/dist/utils.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDocument = isDocument;
4
+ /**
5
+ * Type guard to check if content is a Document
6
+ */
7
+ function isDocument(content) {
8
+ return typeof content !== 'string' && 'getBlocks' in content;
9
+ }
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAMA,gCAEC;AALD;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAuB;IAChD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,WAAW,IAAI,OAAO,CAAC;AAC/D,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@hardlydifficult/chat",
3
- "version": "1.0.1",
4
- "type": "module",
3
+ "version": "1.0.2",
5
4
  "main": "./dist/index.js",
6
5
  "types": "./dist/index.d.ts",
7
6
  "files": [
@@ -20,8 +19,12 @@
20
19
  "discord.js": "14.25.1"
21
20
  },
22
21
  "devDependencies": {
22
+ "@hardlydifficult/document-generator": "file:../documentGenerator",
23
23
  "@types/node": "20.19.31",
24
24
  "typescript": "5.8.3",
25
25
  "vitest": "1.6.1"
26
+ },
27
+ "peerDependencies": {
28
+ "@hardlydifficult/document-generator": ">=1.0.0"
26
29
  }
27
30
  }