@commandkit/ai 0.1.0-dev.20250611155146 → 0.1.0-dev.20250612020833
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/dist/configure.d.ts +3 -1
- package/dist/configure.js +43 -9
- package/dist/plugin.js +11 -9
- package/dist/system-prompt.js +7 -1
- package/dist/types.d.ts +17 -3
- package/package.json +3 -3
package/dist/configure.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Message } from 'discord.js';
|
|
2
2
|
import { AIGenerateResult, MessageFilter, SelectAiModel } from './types';
|
|
3
3
|
import { AiContext } from './context';
|
|
4
|
+
import type { generateText } from 'ai';
|
|
5
|
+
export type AiMessage = Parameters<typeof generateText>[0]['messages'] & {};
|
|
4
6
|
/**
|
|
5
7
|
* Represents the configuration options for the AI model.
|
|
6
8
|
*/
|
|
@@ -28,7 +30,7 @@ export interface ConfigureAI {
|
|
|
28
30
|
/**
|
|
29
31
|
* A function that prepares the prompt for the AI model.
|
|
30
32
|
*/
|
|
31
|
-
preparePrompt?: (ctx: AiContext, message: Message) => Promise<string>;
|
|
33
|
+
preparePrompt?: (ctx: AiContext, message: Message) => Promise<string | AiMessage>;
|
|
32
34
|
/**
|
|
33
35
|
* A function that gets called when the AI starts processing a message.
|
|
34
36
|
*/
|
package/dist/configure.js
CHANGED
|
@@ -10,14 +10,48 @@ const AIConfig = {
|
|
|
10
10
|
disableBuiltInTools: false,
|
|
11
11
|
messageFilter: async (message) => message.mentions.users.has(message.client.user.id),
|
|
12
12
|
prepareSystemPrompt: async (_ctx, message) => (0, system_prompt_1.createSystemPrompt)(message),
|
|
13
|
-
async
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
preparePrompt: async (_ctx, message) => {
|
|
14
|
+
const recentMessages = await message.channel.messages.fetch({
|
|
15
|
+
limit: 10,
|
|
16
|
+
before: message.id,
|
|
17
|
+
});
|
|
18
|
+
const isMe = (id) => id === message.client.user.id;
|
|
19
|
+
const conversation = recentMessages
|
|
20
|
+
.filter((msg) => msg.content && (!msg.author.bot || isMe(msg.author.id)))
|
|
21
|
+
.reverse()
|
|
22
|
+
.map((msg) => ({
|
|
23
|
+
role: isMe(msg.author.id) ? 'assistant' : 'user',
|
|
24
|
+
annotations: {
|
|
25
|
+
authorId: msg.author.id,
|
|
26
|
+
authorName: msg.author.username,
|
|
27
|
+
authorAvatar: msg.author.displayAvatarURL(),
|
|
28
|
+
},
|
|
29
|
+
createdAt: msg.createdAt,
|
|
30
|
+
content: msg.content,
|
|
31
|
+
experimental_attachments: msg.attachments.map((attachment) => ({
|
|
32
|
+
url: attachment.url,
|
|
33
|
+
name: attachment.name,
|
|
34
|
+
contentType: attachment.contentType || undefined,
|
|
35
|
+
})),
|
|
36
|
+
}));
|
|
37
|
+
return [
|
|
38
|
+
...conversation,
|
|
39
|
+
{
|
|
40
|
+
role: 'user',
|
|
41
|
+
annotations: {
|
|
42
|
+
authorId: message.author.id,
|
|
43
|
+
authorName: message.author.username,
|
|
44
|
+
authorAvatar: message.author.displayAvatarURL(),
|
|
45
|
+
},
|
|
46
|
+
createdAt: message.createdAt,
|
|
47
|
+
content: message.content,
|
|
48
|
+
experimental_attachments: message.attachments.map((attachment) => ({
|
|
49
|
+
url: attachment.url,
|
|
50
|
+
name: attachment.name,
|
|
51
|
+
contentType: attachment.contentType || undefined,
|
|
52
|
+
})),
|
|
53
|
+
},
|
|
54
|
+
];
|
|
21
55
|
},
|
|
22
56
|
selectAiModel: async () => {
|
|
23
57
|
throw new Error('No AI model selected. Please configure the AI plugin using configureAI() function, making sure to include a selectAiModel function.');
|
|
@@ -80,4 +114,4 @@ function configureAI(config) {
|
|
|
80
114
|
AIConfig.preparePrompt = config.preparePrompt;
|
|
81
115
|
}
|
|
82
116
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZ3VyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdLQSxrQ0FFQztBQU9ELGtDQWdCQztBQXZMRCxtREFBcUQ7QUFDckQsbUNBQWdEO0FBRWhELDJDQUFvQztBQUtwQyxNQUFNLHlCQUF5QixHQUFHLHdDQUF3QyxDQUFDO0FBdUQzRSxNQUFNLFFBQVEsR0FBMEI7SUFDdEMsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQy9CLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEQsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUEsa0NBQWtCLEVBQUMsT0FBTyxDQUFDO0lBQ3pFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzFELEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBRTNELE1BQU0sWUFBWSxHQUFjLGNBQWM7YUFDM0MsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FB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
|
package/dist/plugin.js
CHANGED
|
@@ -64,25 +64,26 @@ class AiPlugin extends plugin_1.RuntimePlugin {
|
|
|
64
64
|
const systemPrompt = await prepareSystemPrompt(ctx, message);
|
|
65
65
|
const prompt = await preparePrompt(ctx, message);
|
|
66
66
|
const { model, abortSignal, maxSteps, ...modelOptions } = await selectAiModel(ctx, message);
|
|
67
|
+
const promptOrMessage = typeof prompt === 'string' ? { prompt } : { messages: prompt };
|
|
67
68
|
await onProcessingStart(ctx, message);
|
|
68
|
-
const tools = disableBuiltInTools
|
|
69
|
-
? this.toolsRecord
|
|
70
|
-
: {
|
|
71
|
-
...this.defaultTools,
|
|
72
|
-
...this.toolsRecord,
|
|
73
|
-
};
|
|
74
69
|
try {
|
|
75
70
|
const result = await (0, ai_1.generateText)({
|
|
76
71
|
model,
|
|
77
72
|
abortSignal: abortSignal ?? AbortSignal.timeout(60000),
|
|
78
|
-
prompt,
|
|
79
73
|
system: systemPrompt,
|
|
80
74
|
maxSteps: maxSteps ?? 5,
|
|
81
75
|
...modelOptions,
|
|
82
76
|
tools: {
|
|
83
|
-
|
|
77
|
+
// Include built-in least significant tools if not disabled
|
|
78
|
+
...(!disableBuiltInTools && this.defaultTools),
|
|
79
|
+
// include tools added by configureAI()
|
|
80
|
+
// this should be able to override built-in tools
|
|
84
81
|
...modelOptions.tools,
|
|
82
|
+
// include tools added by commands at last since
|
|
83
|
+
// they are the most specific and should override others
|
|
84
|
+
...this.toolsRecord,
|
|
85
85
|
},
|
|
86
|
+
...promptOrMessage,
|
|
86
87
|
});
|
|
87
88
|
await onResult(ctx, message, result);
|
|
88
89
|
}
|
|
@@ -140,6 +141,7 @@ class AiPlugin extends plugin_1.RuntimePlugin {
|
|
|
140
141
|
}
|
|
141
142
|
const res = await commandkit.commandHandler.commandRunner.runCommand(target, ctx.message, {
|
|
142
143
|
handler: 'ai',
|
|
144
|
+
throwOnError: true,
|
|
143
145
|
});
|
|
144
146
|
return res === undefined ? { success: true } : res;
|
|
145
147
|
}
|
|
@@ -161,4 +163,4 @@ class AiPlugin extends plugin_1.RuntimePlugin {
|
|
|
161
163
|
}
|
|
162
164
|
}
|
|
163
165
|
exports.AiPlugin = AiPlugin;
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBMkU7QUFFM0UsMkNBQStEO0FBQy9ELHVDQUFzQztBQUN0QywyQ0FBeUQ7QUFDekQsMkJBQThDO0FBQzlDLDJEQUErRTtBQUMvRSwyRUFBc0U7QUFDdEUsaUVBQTJEO0FBQzNELDZFQUF1RTtBQUN2RSw2REFBdUQ7QUFDdkQsMkRBQXFEO0FBQ3JELDJDQUFxRDtBQUNyRCxpREFBbUQ7QUFnQm5ELE1BQU0sWUFBWSxHQUF5QjtJQUN6QyxvQkFBb0IsRUFBcEIsNkNBQW9CO0lBQ3BCLGNBQWMsRUFBZCxrQ0FBYztJQUNkLG9CQUFvQixFQUFwQiw4Q0FBb0I7SUFDcEIsWUFBWSxFQUFaLDhCQUFZO0lBQ1osV0FBVyxFQUFYLDRCQUFXO0NBQ1osQ0FBQztBQUVGLE1BQWEsUUFBUyxTQUFRLHNCQUE4QjtJQU0xRCxZQUFtQixPQUF3QjtRQUN6QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFORCxTQUFJLEdBQUcsVUFBVSxDQUFDO1FBQzFCLGdCQUFXLEdBQXlCLEVBQUUsQ0FBQztRQUN2QyxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixrQkFBYSxHQUFpRCxJQUFJLENBQUM7SUFJM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBNEI7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsbUJBQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUEsZ0NBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEIsbUJBQU0sQ0FB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
|
package/dist/system-prompt.js
CHANGED
|
@@ -24,6 +24,12 @@ function createSystemPrompt(message) {
|
|
|
24
24
|
- Permissions: ${message.channel.isSendable() ? 'Can send messages' : 'Cannot send messages'}
|
|
25
25
|
- Location: ${guildInfo}
|
|
26
26
|
|
|
27
|
+
**Current User Information:**
|
|
28
|
+
- id: ${message.author.id}
|
|
29
|
+
- name: ${message.author.username}
|
|
30
|
+
- display name: ${message.author.displayName}
|
|
31
|
+
- avatar: ${message.author.avatarURL()}
|
|
32
|
+
|
|
27
33
|
**Response Guidelines:**
|
|
28
34
|
- Use Discord markdown for formatting
|
|
29
35
|
- Only use tools when necessary for the task
|
|
@@ -31,4 +37,4 @@ function createSystemPrompt(message) {
|
|
|
31
37
|
|
|
32
38
|
Focus on being helpful while staying within your capabilities.`;
|
|
33
39
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXByb21wdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeXN0ZW0tcHJvbXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsZ0RBa0NDO0FBdENEOzs7R0FHRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE9BQWdCO0lBQ2pELE1BQU0sV0FBVyxHQUNmLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTztRQUN2QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQ3RCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDO0lBRXJELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUU7UUFDakMsQ0FBQyxDQUFDLHlCQUF5QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxPQUFPLENBQUMsT0FBTyxrREFBa0Q7UUFDeEgsQ0FBQyxDQUFDLDRDQUE0QyxDQUFDO0lBRWpELE9BQU8sV0FBVyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTs7Ozs7Ozs7Y0FRakUsV0FBVyxVQUFVLE9BQU8sQ0FBQyxTQUFTO2lCQUNuQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO2NBQzlFLFNBQVM7OztRQUdmLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtVQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUTtrQkFDZixPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Ozs7Ozs7K0RBT3lCLENBQUM7QUFDaEUsQ0FBQyJ9
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Tool, type generateText } from 'ai';
|
|
2
2
|
import { Message } from 'discord.js';
|
|
3
3
|
import { AiContext } from './context';
|
|
4
|
-
import { LoadedCommand } from 'commandkit';
|
|
4
|
+
import { LoadedCommand, MessageCommandContext } from 'commandkit';
|
|
5
|
+
import { AiConfig } from './plugin';
|
|
6
|
+
import { InferParameters } from './tools/common';
|
|
5
7
|
/**
|
|
6
8
|
* Represents the result of an AI text generation operation.
|
|
7
9
|
*/
|
|
@@ -33,9 +35,21 @@ export type CommandTool = LoadedCommand & {
|
|
|
33
35
|
*/
|
|
34
36
|
export interface AiPluginOptions {
|
|
35
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Extracts the AI configuration params.
|
|
40
|
+
*/
|
|
41
|
+
export type ExtractAiConfig<T extends Record<string, unknown>> = T extends AiConfig ? InferParameters<T['parameters']> : T;
|
|
42
|
+
/**
|
|
43
|
+
* Represents the context in which an AI command is executed.
|
|
44
|
+
* It extends the MessageCommandContext to include AI-specific properties.
|
|
45
|
+
* @param T - The type of parameters that the command accepts.
|
|
46
|
+
*/
|
|
47
|
+
export type AiCommandContext<T extends Record<string, unknown>> = MessageCommandContext & {
|
|
48
|
+
ai: AiContext<ExtractAiConfig<T>>;
|
|
49
|
+
};
|
|
36
50
|
/**
|
|
37
51
|
* Represents a command that can be executed by the AI.
|
|
38
52
|
* @param T - The type of parameters that the command accepts.
|
|
39
|
-
* @param ctx - The AI context in which the command is executed, including the message and parameters.
|
|
53
|
+
* @param ctx - The AI command context in which the command is executed, including the message and parameters.
|
|
40
54
|
*/
|
|
41
|
-
export type AiCommand<T extends Record<string, unknown>> = (ctx:
|
|
55
|
+
export type AiCommand<T extends Record<string, unknown> = Record<string, unknown>> = (ctx: AiCommandContext<ExtractAiConfig<T>>) => Promise<unknown> | unknown;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commandkit/ai",
|
|
3
|
-
"version": "0.1.0-dev.
|
|
3
|
+
"version": "0.1.0-dev.20250612020833",
|
|
4
4
|
"description": "Supercharge your CommandKit bot with AI capabilities",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"discord.js": "^14.19.3",
|
|
26
26
|
"typescript": "^5.7.3",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
27
|
+
"commandkit": "1.0.0-dev.20250612020833",
|
|
28
|
+
"tsconfig": "0.0.0-dev.20250612020833"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"ai": "^4.3.16",
|