skillshield 1.0.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.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +400 -0
  3. package/dist/channels/discord.d.ts +18 -0
  4. package/dist/channels/discord.d.ts.map +1 -0
  5. package/dist/channels/discord.js +275 -0
  6. package/dist/channels/discord.js.map +1 -0
  7. package/dist/channels/index.d.ts +67 -0
  8. package/dist/channels/index.d.ts.map +1 -0
  9. package/dist/channels/index.js +127 -0
  10. package/dist/channels/index.js.map +1 -0
  11. package/dist/channels/slack.d.ts +20 -0
  12. package/dist/channels/slack.d.ts.map +1 -0
  13. package/dist/channels/slack.js +296 -0
  14. package/dist/channels/slack.js.map +1 -0
  15. package/dist/channels/telegram.d.ts +20 -0
  16. package/dist/channels/telegram.d.ts.map +1 -0
  17. package/dist/channels/telegram.js +223 -0
  18. package/dist/channels/telegram.js.map +1 -0
  19. package/dist/channels/whatsapp.d.ts +25 -0
  20. package/dist/channels/whatsapp.d.ts.map +1 -0
  21. package/dist/channels/whatsapp.js +187 -0
  22. package/dist/channels/whatsapp.js.map +1 -0
  23. package/dist/cli/commands/badge.d.ts +11 -0
  24. package/dist/cli/commands/badge.d.ts.map +1 -0
  25. package/dist/cli/commands/badge.js +98 -0
  26. package/dist/cli/commands/badge.js.map +1 -0
  27. package/dist/cli/commands/config.d.ts +3 -0
  28. package/dist/cli/commands/config.d.ts.map +1 -0
  29. package/dist/cli/commands/config.js +140 -0
  30. package/dist/cli/commands/config.js.map +1 -0
  31. package/dist/cli/commands/deploy.d.ts +3 -0
  32. package/dist/cli/commands/deploy.d.ts.map +1 -0
  33. package/dist/cli/commands/deploy.js +56 -0
  34. package/dist/cli/commands/deploy.js.map +1 -0
  35. package/dist/cli/commands/init.d.ts +3 -0
  36. package/dist/cli/commands/init.d.ts.map +1 -0
  37. package/dist/cli/commands/init.js +99 -0
  38. package/dist/cli/commands/init.js.map +1 -0
  39. package/dist/cli/commands/install.d.ts +3 -0
  40. package/dist/cli/commands/install.d.ts.map +1 -0
  41. package/dist/cli/commands/install.js +90 -0
  42. package/dist/cli/commands/install.js.map +1 -0
  43. package/dist/cli/commands/list.d.ts +3 -0
  44. package/dist/cli/commands/list.d.ts.map +1 -0
  45. package/dist/cli/commands/list.js +76 -0
  46. package/dist/cli/commands/list.js.map +1 -0
  47. package/dist/cli/commands/run.d.ts +3 -0
  48. package/dist/cli/commands/run.d.ts.map +1 -0
  49. package/dist/cli/commands/run.js +160 -0
  50. package/dist/cli/commands/run.js.map +1 -0
  51. package/dist/cli/commands/scan.d.ts +3 -0
  52. package/dist/cli/commands/scan.d.ts.map +1 -0
  53. package/dist/cli/commands/scan.js +133 -0
  54. package/dist/cli/commands/scan.js.map +1 -0
  55. package/dist/cli/commands/search.d.ts +3 -0
  56. package/dist/cli/commands/search.d.ts.map +1 -0
  57. package/dist/cli/commands/search.js +56 -0
  58. package/dist/cli/commands/search.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/index.js +70 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/core/config.d.ts +167 -0
  64. package/dist/core/config.d.ts.map +1 -0
  65. package/dist/core/config.js +398 -0
  66. package/dist/core/config.js.map +1 -0
  67. package/dist/core/parser.d.ts +34 -0
  68. package/dist/core/parser.d.ts.map +1 -0
  69. package/dist/core/parser.js +462 -0
  70. package/dist/core/parser.js.map +1 -0
  71. package/dist/core/runtime.d.ts +68 -0
  72. package/dist/core/runtime.d.ts.map +1 -0
  73. package/dist/core/runtime.js +560 -0
  74. package/dist/core/runtime.js.map +1 -0
  75. package/dist/core/types.d.ts +525 -0
  76. package/dist/core/types.d.ts.map +1 -0
  77. package/dist/core/types.js +44 -0
  78. package/dist/core/types.js.map +1 -0
  79. package/dist/guard/index.d.ts +57 -0
  80. package/dist/guard/index.d.ts.map +1 -0
  81. package/dist/guard/index.js +238 -0
  82. package/dist/guard/index.js.map +1 -0
  83. package/dist/guard/patterns.d.ts +21 -0
  84. package/dist/guard/patterns.d.ts.map +1 -0
  85. package/dist/guard/patterns.js +797 -0
  86. package/dist/guard/patterns.js.map +1 -0
  87. package/dist/hub/index.d.ts +44 -0
  88. package/dist/hub/index.d.ts.map +1 -0
  89. package/dist/hub/index.js +144 -0
  90. package/dist/hub/index.js.map +1 -0
  91. package/dist/hub/registry.d.ts +52 -0
  92. package/dist/hub/registry.d.ts.map +1 -0
  93. package/dist/hub/registry.js +192 -0
  94. package/dist/hub/registry.js.map +1 -0
  95. package/dist/i18n/index.d.ts +19 -0
  96. package/dist/i18n/index.d.ts.map +1 -0
  97. package/dist/i18n/index.js +92 -0
  98. package/dist/i18n/index.js.map +1 -0
  99. package/dist/i18n/locales/en.d.ts +110 -0
  100. package/dist/i18n/locales/en.d.ts.map +1 -0
  101. package/dist/i18n/locales/en.js +123 -0
  102. package/dist/i18n/locales/en.js.map +1 -0
  103. package/dist/i18n/locales/es.d.ts +110 -0
  104. package/dist/i18n/locales/es.d.ts.map +1 -0
  105. package/dist/i18n/locales/es.js +123 -0
  106. package/dist/i18n/locales/es.js.map +1 -0
  107. package/dist/i18n/locales/pt.d.ts +110 -0
  108. package/dist/i18n/locales/pt.d.ts.map +1 -0
  109. package/dist/i18n/locales/pt.js +123 -0
  110. package/dist/i18n/locales/pt.js.map +1 -0
  111. package/dist/i18n/locales/zh.d.ts +110 -0
  112. package/dist/i18n/locales/zh.d.ts.map +1 -0
  113. package/dist/i18n/locales/zh.js +123 -0
  114. package/dist/i18n/locales/zh.js.map +1 -0
  115. package/dist/index.d.ts +168 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +275 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/router/index.d.ts +89 -0
  120. package/dist/router/index.d.ts.map +1 -0
  121. package/dist/router/index.js +292 -0
  122. package/dist/router/index.js.map +1 -0
  123. package/dist/router/providers.d.ts +48 -0
  124. package/dist/router/providers.d.ts.map +1 -0
  125. package/dist/router/providers.js +733 -0
  126. package/dist/router/providers.js.map +1 -0
  127. package/dist/runtime/executor.d.ts +96 -0
  128. package/dist/runtime/executor.d.ts.map +1 -0
  129. package/dist/runtime/executor.js +389 -0
  130. package/dist/runtime/executor.js.map +1 -0
  131. package/dist/sandbox/index.d.ts +52 -0
  132. package/dist/sandbox/index.d.ts.map +1 -0
  133. package/dist/sandbox/index.js +248 -0
  134. package/dist/sandbox/index.js.map +1 -0
  135. package/dist/security/skillguard.d.ts +25 -0
  136. package/dist/security/skillguard.d.ts.map +1 -0
  137. package/dist/security/skillguard.js +137 -0
  138. package/dist/security/skillguard.js.map +1 -0
  139. package/dist/tools/index.d.ts +55 -0
  140. package/dist/tools/index.d.ts.map +1 -0
  141. package/dist/tools/index.js +276 -0
  142. package/dist/tools/index.js.map +1 -0
  143. package/dist/tools/web-engine.d.ts +158 -0
  144. package/dist/tools/web-engine.d.ts.map +1 -0
  145. package/dist/tools/web-engine.js +802 -0
  146. package/dist/tools/web-engine.js.map +1 -0
  147. package/dist/tools/web-tools.d.ts +173 -0
  148. package/dist/tools/web-tools.d.ts.map +1 -0
  149. package/dist/tools/web-tools.js +251 -0
  150. package/dist/tools/web-tools.js.map +1 -0
  151. package/dist/utils/errors.d.ts +44 -0
  152. package/dist/utils/errors.d.ts.map +1 -0
  153. package/dist/utils/errors.js +130 -0
  154. package/dist/utils/errors.js.map +1 -0
  155. package/dist/utils/logger.d.ts +28 -0
  156. package/dist/utils/logger.d.ts.map +1 -0
  157. package/dist/utils/logger.js +121 -0
  158. package/dist/utils/logger.js.map +1 -0
  159. package/examples/basic-usage.ts +276 -0
  160. package/examples/code-reviewer.skill.md +83 -0
  161. package/examples/creative-writer.skill.md +80 -0
  162. package/examples/data-analyzer.skill.md +61 -0
  163. package/examples/hello-world.skill.md +36 -0
  164. package/examples/sample-skill.md +156 -0
  165. package/examples/summarizer.skill.md +62 -0
  166. package/examples/translator.skill.md +45 -0
  167. package/package.json +110 -0
@@ -0,0 +1,275 @@
1
+ import { BaseChannelAdapter } from './index.js';
2
+ import { ChannelError } from '../utils/errors.js';
3
+ export class DiscordAdapter extends BaseChannelAdapter {
4
+ constructor(botToken) {
5
+ super();
6
+ this.name = 'discord';
7
+ this.bot = null;
8
+ this.botToken = botToken;
9
+ }
10
+ async connect() {
11
+ try {
12
+ // Try to load discord.js dynamically
13
+ let discordModule;
14
+ try {
15
+ discordModule = await import('discord.js');
16
+ }
17
+ catch {
18
+ throw new ChannelError('discord.js not installed. Install with: npm install discord.js', {
19
+ adapter: 'discord',
20
+ });
21
+ }
22
+ const { Client, GatewayIntentBits } = discordModule;
23
+ this.bot = new Client({
24
+ intents: [
25
+ GatewayIntentBits.DirectMessages,
26
+ GatewayIntentBits.MessageContent,
27
+ GatewayIntentBits.Guilds,
28
+ GatewayIntentBits.GuildMessages,
29
+ ],
30
+ });
31
+ this.setupEventHandlers();
32
+ await this.bot.login(this.botToken);
33
+ this.connected = true;
34
+ this.logger.info('Discord bot connected');
35
+ }
36
+ catch (error) {
37
+ throw new ChannelError(`Failed to connect Discord: ${String(error)}`);
38
+ }
39
+ }
40
+ setupEventHandlers() {
41
+ if (!this.bot)
42
+ return;
43
+ this.bot.on('ready', () => {
44
+ this.logger.info(`Logged in as ${this.bot.user.tag}`);
45
+ this.bot.user.setActivity('/skillkit for help', { type: 'LISTENING' });
46
+ });
47
+ this.bot.on('interactionCreate', async (interaction) => {
48
+ if (!interaction.isCommand())
49
+ return;
50
+ const commandName = interaction.commandName;
51
+ if (commandName === 'skillkit') {
52
+ const subcommand = interaction.options.getSubcommand();
53
+ if (subcommand === 'run') {
54
+ const skillName = interaction.options.getString('skill');
55
+ await this.handleRunCommand(interaction, skillName);
56
+ }
57
+ else if (subcommand === 'list') {
58
+ await this.handleListCommand(interaction);
59
+ }
60
+ else if (subcommand === 'scan') {
61
+ const skillPath = interaction.options.getString('path');
62
+ await this.handleScanCommand(interaction, skillPath);
63
+ }
64
+ }
65
+ });
66
+ this.bot.on('messageCreate', async (message) => {
67
+ if (message.author.bot)
68
+ return;
69
+ const content = message.content;
70
+ const sender = message.author.username || message.author.id;
71
+ const channelMessage = {
72
+ id: message.id,
73
+ content,
74
+ sender,
75
+ timestamp: new Date(message.createdTimestamp),
76
+ metadata: {
77
+ channelId: message.channelId,
78
+ guildId: message.guildId,
79
+ authorId: message.author.id,
80
+ },
81
+ };
82
+ // Handle attachments
83
+ if (message.attachments.size > 0) {
84
+ channelMessage.attachments = Array.from(message.attachments.values()).map((attachment) => ({
85
+ type: attachment.contentType?.startsWith('image/')
86
+ ? 'image'
87
+ : 'document',
88
+ url: attachment.url,
89
+ name: attachment.name,
90
+ }));
91
+ }
92
+ await this.handleMessage(channelMessage);
93
+ });
94
+ }
95
+ async handleRunCommand(interaction, skillName) {
96
+ try {
97
+ await interaction.deferReply();
98
+ // Create embed response
99
+ const embed = {
100
+ color: 0x5865f2,
101
+ title: `Running Skill: ${skillName}`,
102
+ description: `Executing ${skillName}...`,
103
+ timestamp: new Date().toISOString(),
104
+ };
105
+ await interaction.editReply({ embeds: [embed] });
106
+ }
107
+ catch (error) {
108
+ await interaction.reply({
109
+ content: `Error: ${String(error)}`,
110
+ ephemeral: true,
111
+ });
112
+ }
113
+ }
114
+ async handleListCommand(interaction) {
115
+ try {
116
+ const embed = {
117
+ color: 0x5865f2,
118
+ title: 'Available Skills',
119
+ description: 'Skills will be listed here',
120
+ fields: [
121
+ {
122
+ name: 'Use /skillkit run',
123
+ value: 'to execute a skill',
124
+ },
125
+ ],
126
+ };
127
+ await interaction.reply({ embeds: [embed], ephemeral: true });
128
+ }
129
+ catch (error) {
130
+ await interaction.reply({
131
+ content: `Error: ${String(error)}`,
132
+ ephemeral: true,
133
+ });
134
+ }
135
+ }
136
+ async handleScanCommand(interaction, skillPath) {
137
+ try {
138
+ await interaction.deferReply();
139
+ const embed = {
140
+ color: 0x5865f2,
141
+ title: 'Scanning Skills',
142
+ description: `Scanning path: ${skillPath}`,
143
+ timestamp: new Date().toISOString(),
144
+ };
145
+ await interaction.editReply({ embeds: [embed] });
146
+ }
147
+ catch (error) {
148
+ await interaction.reply({
149
+ content: `Error: ${String(error)}`,
150
+ ephemeral: true,
151
+ });
152
+ }
153
+ }
154
+ async disconnect() {
155
+ try {
156
+ if (this.bot) {
157
+ await this.bot.destroy();
158
+ this.bot = null;
159
+ }
160
+ this.connected = false;
161
+ }
162
+ catch (error) {
163
+ throw new ChannelError(`Failed to disconnect Discord: ${String(error)}`);
164
+ }
165
+ }
166
+ async sendMessage(message) {
167
+ if (!this.bot) {
168
+ throw new ChannelError('Discord bot not connected');
169
+ }
170
+ const channelId = message.metadata?.channelId;
171
+ if (!channelId) {
172
+ throw new ChannelError('Channel ID not provided in message metadata');
173
+ }
174
+ try {
175
+ const channel = await this.bot.channels.fetch(channelId);
176
+ if (!channel) {
177
+ throw new ChannelError(`Channel not found: ${channelId}`);
178
+ }
179
+ // Create embed
180
+ const embed = {
181
+ color: 0x5865f2,
182
+ description: message.content,
183
+ timestamp: new Date().toISOString(),
184
+ };
185
+ // Add fields for code blocks
186
+ if (message.formatting?.code) {
187
+ const codeEmbed = {
188
+ ...embed,
189
+ fields: [
190
+ {
191
+ name: 'Code',
192
+ value: `\`\`\`\n${message.content}\n\`\`\``,
193
+ inline: false,
194
+ },
195
+ ],
196
+ description: undefined,
197
+ };
198
+ await channel.send({ embeds: [codeEmbed] });
199
+ }
200
+ else {
201
+ await channel.send({ embeds: [embed] });
202
+ }
203
+ // Send attachments if any
204
+ if (message.attachments) {
205
+ for (const attachment of message.attachments) {
206
+ if (attachment.data && attachment.name) {
207
+ const file = {
208
+ attachment: attachment.data,
209
+ name: attachment.name,
210
+ };
211
+ await channel.send({ files: [file] });
212
+ }
213
+ }
214
+ }
215
+ }
216
+ catch (error) {
217
+ throw new ChannelError(`Failed to send Discord message: ${String(error)}`);
218
+ }
219
+ }
220
+ async registerSlashCommands() {
221
+ if (!this.bot) {
222
+ throw new ChannelError('Discord bot not connected');
223
+ }
224
+ try {
225
+ const commands = [
226
+ {
227
+ name: 'skillkit',
228
+ description: 'SkillKit command',
229
+ options: [
230
+ {
231
+ type: 1, // Subcommand
232
+ name: 'run',
233
+ description: 'Run a skill',
234
+ options: [
235
+ {
236
+ type: 3, // String
237
+ name: 'skill',
238
+ description: 'Skill name',
239
+ required: true,
240
+ },
241
+ ],
242
+ },
243
+ {
244
+ type: 1,
245
+ name: 'list',
246
+ description: 'List available skills',
247
+ },
248
+ {
249
+ type: 1,
250
+ name: 'scan',
251
+ description: 'Scan for skills',
252
+ options: [
253
+ {
254
+ type: 3,
255
+ name: 'path',
256
+ description: 'Path to scan',
257
+ required: false,
258
+ },
259
+ ],
260
+ },
261
+ ],
262
+ },
263
+ ];
264
+ await this.bot.application.commands.set(commands);
265
+ this.logger.info('Slash commands registered');
266
+ }
267
+ catch (error) {
268
+ throw new ChannelError(`Failed to register slash commands: ${String(error)}`);
269
+ }
270
+ }
271
+ }
272
+ export function createDiscordAdapter(botToken) {
273
+ return new DiscordAdapter(botToken);
274
+ }
275
+ //# sourceMappingURL=discord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/channels/discord.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { EventEmitter } from 'events';
2
+ import { Logger } from '../utils/logger.js';
3
+ export interface ChannelMessage {
4
+ id: string;
5
+ content: string;
6
+ sender: string;
7
+ timestamp: Date;
8
+ metadata?: Record<string, unknown>;
9
+ attachments?: {
10
+ type: 'image' | 'document' | 'video' | 'audio';
11
+ url: string;
12
+ name?: string;
13
+ }[];
14
+ }
15
+ export interface ChannelResponse {
16
+ content: string;
17
+ metadata?: Record<string, unknown>;
18
+ attachments?: {
19
+ type: 'image' | 'document';
20
+ url?: string;
21
+ data?: Buffer;
22
+ name?: string;
23
+ }[];
24
+ formatting?: {
25
+ markdown?: boolean;
26
+ code?: boolean;
27
+ mentions?: string[];
28
+ };
29
+ }
30
+ export interface ChannelAdapter {
31
+ name: string;
32
+ connect(): Promise<void>;
33
+ disconnect(): Promise<void>;
34
+ onMessage(handler: (message: ChannelMessage) => Promise<void>): void;
35
+ sendMessage(message: ChannelResponse): Promise<void>;
36
+ isConnected(): boolean;
37
+ }
38
+ export declare class ChannelManager extends EventEmitter {
39
+ private adapters;
40
+ private activeChannels;
41
+ private logger;
42
+ constructor();
43
+ registerAdapter(type: string, adapter: ChannelAdapter): void;
44
+ startChannel(type: string, config?: Record<string, unknown>): Promise<void>;
45
+ stopChannel(type: string): Promise<void>;
46
+ sendMessage(type: string, message: ChannelResponse): Promise<void>;
47
+ onChannelMessage(type: string, handler: (message: ChannelMessage) => Promise<void>): void;
48
+ getActiveChannels(): string[];
49
+ getRegisteredAdapters(): string[];
50
+ isChannelActive(type: string): boolean;
51
+ getAdapter(type: string): ChannelAdapter | undefined;
52
+ }
53
+ export declare abstract class BaseChannelAdapter implements ChannelAdapter {
54
+ abstract name: string;
55
+ protected logger: Logger;
56
+ protected messageHandler?: (message: ChannelMessage) => Promise<void>;
57
+ protected connected: boolean;
58
+ constructor();
59
+ abstract connect(): Promise<void>;
60
+ abstract disconnect(): Promise<void>;
61
+ abstract sendMessage(message: ChannelResponse): Promise<void>;
62
+ onMessage(handler: (message: ChannelMessage) => Promise<void>): void;
63
+ isConnected(): boolean;
64
+ protected handleMessage(message: ChannelMessage): Promise<void>;
65
+ protected generateMessageId(): string;
66
+ }
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { EventEmitter } from 'events';
2
+ import { Logger } from '../utils/logger.js';
3
+ import { ChannelError } from '../utils/errors.js';
4
+ export class ChannelManager extends EventEmitter {
5
+ constructor() {
6
+ super();
7
+ this.adapters = new Map();
8
+ this.activeChannels = new Set();
9
+ this.logger = new Logger({ level: 'warn' });
10
+ }
11
+ registerAdapter(type, adapter) {
12
+ if (this.adapters.has(type)) {
13
+ this.logger.warn(`Adapter '${type}' already registered, overwriting`);
14
+ }
15
+ this.adapters.set(type, adapter);
16
+ this.logger.debug(`Registered adapter: ${type}`);
17
+ }
18
+ async startChannel(type, config) {
19
+ const adapter = this.adapters.get(type);
20
+ if (!adapter) {
21
+ throw new ChannelError(`Channel adapter not found: ${type}`);
22
+ }
23
+ if (this.activeChannels.has(type)) {
24
+ this.logger.warn(`Channel '${type}' is already running`);
25
+ return;
26
+ }
27
+ try {
28
+ await adapter.connect();
29
+ this.activeChannels.add(type);
30
+ this.emit('channel:started', { type, timestamp: new Date() });
31
+ this.logger.info(`Channel started: ${type}`);
32
+ }
33
+ catch (error) {
34
+ throw new ChannelError(`Failed to start channel '${type}': ${String(error)}`);
35
+ }
36
+ }
37
+ async stopChannel(type) {
38
+ const adapter = this.adapters.get(type);
39
+ if (!adapter) {
40
+ throw new ChannelError(`Channel adapter not found: ${type}`);
41
+ }
42
+ if (!this.activeChannels.has(type)) {
43
+ this.logger.warn(`Channel '${type}' is not running`);
44
+ return;
45
+ }
46
+ try {
47
+ await adapter.disconnect();
48
+ this.activeChannels.delete(type);
49
+ this.emit('channel:stopped', { type, timestamp: new Date() });
50
+ this.logger.info(`Channel stopped: ${type}`);
51
+ }
52
+ catch (error) {
53
+ throw new ChannelError(`Failed to stop channel '${type}': ${String(error)}`);
54
+ }
55
+ }
56
+ async sendMessage(type, message) {
57
+ const adapter = this.adapters.get(type);
58
+ if (!adapter) {
59
+ throw new ChannelError(`Channel adapter not found: ${type}`);
60
+ }
61
+ if (!this.activeChannels.has(type)) {
62
+ throw new ChannelError(`Channel is not active: ${type}`);
63
+ }
64
+ try {
65
+ await adapter.sendMessage(message);
66
+ this.emit('message:sent', { type, timestamp: new Date() });
67
+ }
68
+ catch (error) {
69
+ throw new ChannelError(`Failed to send message on '${type}': ${String(error)}`);
70
+ }
71
+ }
72
+ onChannelMessage(type, handler) {
73
+ const adapter = this.adapters.get(type);
74
+ if (!adapter) {
75
+ throw new ChannelError(`Channel adapter not found: ${type}`);
76
+ }
77
+ adapter.onMessage(async (message) => {
78
+ try {
79
+ await handler(message);
80
+ this.emit('message:received', { type, sender: message.sender, timestamp: new Date() });
81
+ }
82
+ catch (error) {
83
+ this.logger.error(`Error handling message: ${String(error)}`);
84
+ this.emit('message:error', { type, error: String(error), timestamp: new Date() });
85
+ }
86
+ });
87
+ }
88
+ getActiveChannels() {
89
+ return Array.from(this.activeChannels);
90
+ }
91
+ getRegisteredAdapters() {
92
+ return Array.from(this.adapters.keys());
93
+ }
94
+ isChannelActive(type) {
95
+ return this.activeChannels.has(type);
96
+ }
97
+ getAdapter(type) {
98
+ return this.adapters.get(type);
99
+ }
100
+ }
101
+ // Abstract base class for implementing adapters
102
+ export class BaseChannelAdapter {
103
+ constructor() {
104
+ this.connected = false;
105
+ this.logger = new Logger({ level: 'warn' });
106
+ }
107
+ onMessage(handler) {
108
+ this.messageHandler = handler;
109
+ }
110
+ isConnected() {
111
+ return this.connected;
112
+ }
113
+ async handleMessage(message) {
114
+ if (this.messageHandler) {
115
+ try {
116
+ await this.messageHandler(message);
117
+ }
118
+ catch (error) {
119
+ this.logger.error(`Error handling message: ${String(error)}`);
120
+ }
121
+ }
122
+ }
123
+ generateMessageId() {
124
+ return `${this.name}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
125
+ }
126
+ }
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseChannelAdapter, ChannelResponse } from './index.js';
2
+ export declare class SlackAdapter extends BaseChannelAdapter {
3
+ name: string;
4
+ private app;
5
+ private botToken;
6
+ private signingSecret;
7
+ constructor(botToken: string, signingSecret: string);
8
+ connect(): Promise<void>;
9
+ private setupEventHandlers;
10
+ private setupCommands;
11
+ private createRunSkillBlocks;
12
+ private createListSkillsBlocks;
13
+ private createHelpBlocks;
14
+ disconnect(): Promise<void>;
15
+ sendMessage(message: ChannelResponse): Promise<void>;
16
+ sendEphemeralMessage(userId: string, channelId: string, content: string): Promise<void>;
17
+ updateMessage(channelId: string, ts: string, content: string): Promise<void>;
18
+ }
19
+ export declare function createSlackAdapter(botToken: string, signingSecret: string): SlackAdapter;
20
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/channels/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAejF,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,IAAI,SAAW;IACf,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAM7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC9B,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,gBAAgB;IAmBlB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4EpD,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAenF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,CAExF"}