@commandkit/ai 1.2.0-rc.1 → 1.2.0-rc.11
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/COPYING.md +684 -0
- package/dist/cli-plugin.d.ts +7 -0
- package/dist/cli-plugin.js +50 -0
- package/dist/configure.js +10 -6
- package/dist/context.d.ts +2 -2
- package/dist/context.js +3 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.js +6 -2
- package/dist/plugin.d.ts +3 -2
- package/dist/plugin.js +10 -5
- package/dist/system-prompt.js +45 -2
- package/dist/tools/common/index.d.ts +8 -9
- package/dist/tools/common/index.js +2 -2
- package/dist/tools/create-embed.d.ts +32 -0
- package/dist/tools/create-embed.js +89 -0
- package/dist/tools/get-available-commands.d.ts +2 -9
- package/dist/tools/get-available-commands.js +2 -2
- package/dist/tools/get-channel-by-id.d.ts +1 -9
- package/dist/tools/get-channel-by-id.js +2 -2
- package/dist/tools/get-current-client-info.d.ts +1 -3
- package/dist/tools/get-current-client-info.js +2 -2
- package/dist/tools/get-guild-by-id.d.ts +2 -22
- package/dist/tools/get-guild-by-id.js +2 -2
- package/dist/tools/get-member-by-id.d.ts +42 -0
- package/dist/tools/get-member-by-id.js +50 -0
- package/dist/tools/get-user-by-id.d.ts +1 -9
- package/dist/tools/get-user-by-id.js +2 -2
- package/dist/types.d.ts +2 -2
- package/dist/utils.d.ts +7 -0
- package/dist/utils.js +43 -1
- package/package.json +7 -7
- package/LICENSE +0 -5
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const getAvailableCommands: import("ai").Tool<z.ZodObject<{},
|
|
2
|
+
export declare const getAvailableCommands: import("ai").Tool<z.ZodObject<{}, z.core.$strip>, {
|
|
3
3
|
name: any;
|
|
4
4
|
description: any;
|
|
5
5
|
category: string | null;
|
|
6
6
|
supportsAI: boolean;
|
|
7
|
-
}[]
|
|
8
|
-
execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
9
|
-
name: any;
|
|
10
|
-
description: any;
|
|
11
|
-
category: string | null;
|
|
12
|
-
supportsAI: boolean;
|
|
13
|
-
}[]>;
|
|
14
|
-
};
|
|
7
|
+
}[]>;
|
|
@@ -6,7 +6,7 @@ const common_1 = require("./common");
|
|
|
6
6
|
exports.getAvailableCommands = (0, common_1.createTool)({
|
|
7
7
|
description: 'Get a list of all available commands.',
|
|
8
8
|
name: 'getAvailableCommands',
|
|
9
|
-
|
|
9
|
+
inputSchema: zod_1.z.object({}),
|
|
10
10
|
execute(ctx, params) {
|
|
11
11
|
const { commandkit } = ctx;
|
|
12
12
|
const commands = commandkit.commandHandler
|
|
@@ -20,4 +20,4 @@ exports.getAvailableCommands = (0, common_1.createTool)({
|
|
|
20
20
|
return commands;
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWF2YWlsYWJsZS1jb21tYW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9nZXQtYXZhaWxhYmxlLWNvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF3QjtBQUN4QixxQ0FBc0M7QUFFekIsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLG1CQUFVLEVBQUM7SUFDN0MsV0FBVyxFQUFFLHVDQUF1QztJQUNwRCxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDakIsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUUzQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsY0FBYzthQUN2QyxnQkFBZ0IsRUFBRTthQUNsQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDYixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtZQUMzQixXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztZQUN6QyxRQUFRLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQzlCLFVBQVUsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVU7U0FDbEUsQ0FBQyxDQUFDLENBQUM7UUFFTixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const getChannelById: import("ai").Tool<z.ZodObject<{
|
|
3
3
|
channelId: z.ZodString;
|
|
4
|
-
},
|
|
5
|
-
channelId: string;
|
|
6
|
-
}, {
|
|
7
|
-
channelId: string;
|
|
8
|
-
}>, unknown> & {
|
|
9
|
-
execute: (args: {
|
|
10
|
-
channelId: string;
|
|
11
|
-
}, options: import("ai").ToolExecutionOptions) => PromiseLike<unknown>;
|
|
12
|
-
};
|
|
4
|
+
}, z.core.$strip>, unknown>;
|
|
@@ -7,7 +7,7 @@ const commandkit_1 = require("commandkit");
|
|
|
7
7
|
exports.getChannelById = (0, common_1.createTool)({
|
|
8
8
|
description: 'Get a channel by its ID.',
|
|
9
9
|
name: 'getChannelById',
|
|
10
|
-
|
|
10
|
+
inputSchema: zod_1.z.object({
|
|
11
11
|
channelId: zod_1.z.string().describe('The ID of the channel to retrieve.'),
|
|
12
12
|
}),
|
|
13
13
|
async execute(ctx, params) {
|
|
@@ -32,4 +32,4 @@ exports.getChannelById = (0, common_1.createTool)({
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
});
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNoYW5uZWwtYnktaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZ2V0LWNoYW5uZWwtYnktaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBQ3hCLHFDQUFzQztBQUN0QywyQ0FBb0M7QUFFdkIsUUFBQSxjQUFjLEdBQUcsSUFBQSxtQkFBVSxFQUFDO0lBQ3ZDLFdBQVcsRUFBRSwwQkFBMEI7SUFDdkMsSUFBSSxFQUFFLGdCQUFnQjtJQUN0QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwQixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQztLQUNyRSxDQUFDO0lBQ0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTTtRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDNUQsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsT0FBTztvQkFDTCxLQUFLLEVBQUUsbUJBQW1CO2lCQUMzQixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsbUJBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFaEIsT0FBTztnQkFDTCxLQUFLLEVBQUUsNkJBQTZCO2FBQ3JDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyJ9
|
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const getCurrentClientInfo: import("ai").Tool<z.ZodObject<{},
|
|
3
|
-
execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<unknown>;
|
|
4
|
-
};
|
|
2
|
+
export declare const getCurrentClientInfo: import("ai").Tool<z.ZodObject<{}, z.core.$strip>, unknown>;
|
|
@@ -6,7 +6,7 @@ const common_1 = require("./common");
|
|
|
6
6
|
exports.getCurrentClientInfo = (0, common_1.createTool)({
|
|
7
7
|
name: 'getCurrentClientInfo',
|
|
8
8
|
description: 'Get information about the current discord bot user',
|
|
9
|
-
|
|
9
|
+
inputSchema: zod_1.z.object({}),
|
|
10
10
|
execute: async (ctx, params) => {
|
|
11
11
|
const { client } = ctx;
|
|
12
12
|
const user = client.user;
|
|
@@ -18,4 +18,4 @@ exports.getCurrentClientInfo = (0, common_1.createTool)({
|
|
|
18
18
|
return user.toJSON();
|
|
19
19
|
},
|
|
20
20
|
});
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWN1cnJlbnQtY2xpZW50LWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZ2V0LWN1cnJlbnQtY2xpZW50LWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBQ3hCLHFDQUFzQztBQUV6QixRQUFBLG9CQUFvQixHQUFHLElBQUEsbUJBQVUsRUFBQztJQUM3QyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLFdBQVcsRUFBRSxvREFBb0Q7SUFDakUsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUV6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPO2dCQUNMLEtBQUssRUFBRSxvQkFBb0I7YUFDNUIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const getGuildById: import("ai").Tool<z.ZodObject<{
|
|
3
3
|
guildId: z.ZodString;
|
|
4
|
-
},
|
|
5
|
-
guildId: string;
|
|
6
|
-
}, {
|
|
7
|
-
guildId: string;
|
|
8
|
-
}>, {
|
|
4
|
+
}, z.core.$strip>, {
|
|
9
5
|
error: string;
|
|
10
6
|
id?: undefined;
|
|
11
7
|
name?: undefined;
|
|
@@ -17,20 +13,4 @@ export declare const getGuildById: import("ai").Tool<z.ZodObject<{
|
|
|
17
13
|
icon: string | null;
|
|
18
14
|
memberCount: number;
|
|
19
15
|
error?: undefined;
|
|
20
|
-
}
|
|
21
|
-
execute: (args: {
|
|
22
|
-
guildId: string;
|
|
23
|
-
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
24
|
-
error: string;
|
|
25
|
-
id?: undefined;
|
|
26
|
-
name?: undefined;
|
|
27
|
-
icon?: undefined;
|
|
28
|
-
memberCount?: undefined;
|
|
29
|
-
} | {
|
|
30
|
-
id: string;
|
|
31
|
-
name: string;
|
|
32
|
-
icon: string | null;
|
|
33
|
-
memberCount: number;
|
|
34
|
-
error?: undefined;
|
|
35
|
-
}>;
|
|
36
|
-
};
|
|
16
|
+
}>;
|
|
@@ -7,7 +7,7 @@ const commandkit_1 = require("commandkit");
|
|
|
7
7
|
exports.getGuildById = (0, common_1.createTool)({
|
|
8
8
|
description: 'Get a guild by its ID.',
|
|
9
9
|
name: 'getGuildById',
|
|
10
|
-
|
|
10
|
+
inputSchema: zod_1.z.object({
|
|
11
11
|
guildId: zod_1.z.string().describe('The ID of the guild to retrieve.'),
|
|
12
12
|
}),
|
|
13
13
|
async execute(ctx, params) {
|
|
@@ -38,4 +38,4 @@ exports.getGuildById = (0, common_1.createTool)({
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
});
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWd1aWxkLWJ5LWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2dldC1ndWlsZC1ieS1pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBd0I7QUFDeEIscUNBQXNDO0FBQ3RDLDJDQUFvQztBQUV2QixRQUFBLFlBQVksR0FBRyxJQUFBLG1CQUFVLEVBQUM7SUFDckMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxJQUFJLEVBQUUsY0FBYztJQUNwQixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwQixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQztLQUNqRSxDQUFDO0lBQ0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTTtRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDckIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsT0FBTztvQkFDTCxLQUFLLEVBQUUsaUJBQWlCO2lCQUN6QixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU87Z0JBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JCLFdBQVcsRUFBRSxLQUFLLENBQUMsc0JBQXNCLElBQUksS0FBSyxDQUFDLFdBQVc7YUFDL0QsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsbUJBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFaEIsT0FBTztnQkFDTCxLQUFLLEVBQUUsMkJBQTJCO2FBQ25DLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getMemberById: import("ai").Tool<z.ZodObject<{
|
|
3
|
+
memberId: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, {
|
|
5
|
+
error: string;
|
|
6
|
+
id?: undefined;
|
|
7
|
+
user?: undefined;
|
|
8
|
+
roles?: undefined;
|
|
9
|
+
joinedAt?: undefined;
|
|
10
|
+
isBoosting?: undefined;
|
|
11
|
+
voiceChannel?: undefined;
|
|
12
|
+
voiceChannelId?: undefined;
|
|
13
|
+
permissions?: undefined;
|
|
14
|
+
nickname?: undefined;
|
|
15
|
+
name?: undefined;
|
|
16
|
+
displayName?: undefined;
|
|
17
|
+
avatar?: undefined;
|
|
18
|
+
isBot?: undefined;
|
|
19
|
+
presence?: undefined;
|
|
20
|
+
isDeafened?: undefined;
|
|
21
|
+
isMuted?: undefined;
|
|
22
|
+
isMe?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
id: string;
|
|
25
|
+
user: unknown;
|
|
26
|
+
roles: string[];
|
|
27
|
+
joinedAt: string | undefined;
|
|
28
|
+
isBoosting: boolean;
|
|
29
|
+
voiceChannel: string | undefined;
|
|
30
|
+
voiceChannelId: string | undefined;
|
|
31
|
+
permissions: string;
|
|
32
|
+
nickname: string | null;
|
|
33
|
+
name: string;
|
|
34
|
+
displayName: string;
|
|
35
|
+
avatar: string;
|
|
36
|
+
isBot: boolean;
|
|
37
|
+
presence: string;
|
|
38
|
+
isDeafened: string | boolean;
|
|
39
|
+
isMuted: string | boolean;
|
|
40
|
+
isMe: boolean;
|
|
41
|
+
error?: undefined;
|
|
42
|
+
}>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMemberById = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
const commandkit_1 = require("commandkit");
|
|
7
|
+
exports.getMemberById = (0, common_1.createTool)({
|
|
8
|
+
description: 'Get a member by their ID. This tool can only be used in a guild.',
|
|
9
|
+
name: 'getMemberById',
|
|
10
|
+
inputSchema: zod_1.z.object({
|
|
11
|
+
memberId: zod_1.z.string().describe('The ID of the member to retrieve.'),
|
|
12
|
+
}),
|
|
13
|
+
async execute(ctx, params) {
|
|
14
|
+
try {
|
|
15
|
+
const { client, message } = ctx;
|
|
16
|
+
if (!message.inGuild()) {
|
|
17
|
+
return {
|
|
18
|
+
error: 'This tool can only be used in a guild',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const member = await message.guild?.members.fetch(params.memberId);
|
|
22
|
+
return {
|
|
23
|
+
id: member.id,
|
|
24
|
+
user: member.user.toJSON(),
|
|
25
|
+
roles: member.roles.cache.map((role) => role.name),
|
|
26
|
+
joinedAt: member.joinedAt?.toLocaleString(),
|
|
27
|
+
isBoosting: !!member.premiumSince,
|
|
28
|
+
voiceChannel: member.voice.channel?.name,
|
|
29
|
+
voiceChannelId: member.voice.channel?.id,
|
|
30
|
+
permissions: member.permissions.toArray().join(', '),
|
|
31
|
+
nickname: member.nickname,
|
|
32
|
+
name: member.user.username,
|
|
33
|
+
displayName: member.displayName,
|
|
34
|
+
avatar: member.user.displayAvatarURL(),
|
|
35
|
+
isBot: member.user.bot,
|
|
36
|
+
presence: member.presence?.status ?? 'unknown',
|
|
37
|
+
isDeafened: member.voice.deaf ?? 'Not in VC',
|
|
38
|
+
isMuted: member.voice.mute ?? 'Not in VC',
|
|
39
|
+
isMe: member.id === message.author.id,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
commandkit_1.Logger.error(e);
|
|
44
|
+
return {
|
|
45
|
+
error: 'Could not fetch the user',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW1lbWJlci1ieS1pZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9nZXQtbWVtYmVyLWJ5LWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF3QjtBQUN4QixxQ0FBc0M7QUFDdEMsMkNBQW9DO0FBRXZCLFFBQUEsYUFBYSxHQUFHLElBQUEsbUJBQVUsRUFBQztJQUN0QyxXQUFXLEVBQ1Qsa0VBQWtFO0lBQ3BFLElBQUksRUFBRSxlQUFlO0lBQ3JCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3BCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDO0tBQ25FLENBQUM7SUFDRixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNO1FBQ3ZCLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsT0FBTztvQkFDTCxLQUFLLEVBQUUsdUNBQXVDO2lCQUMvQyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuRSxPQUFPO2dCQUNMLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ2xELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRTtnQkFDM0MsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDakMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUk7Z0JBQ3hDLGNBQWMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN4QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwRCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQzFCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDL0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3RDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxTQUFTO2dCQUM5QyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksV0FBVztnQkFDNUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLFdBQVc7Z0JBQ3pDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTthQUN0QyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxtQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQixPQUFPO2dCQUNMLEtBQUssRUFBRSwwQkFBMEI7YUFDbEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const getUserById: import("ai").Tool<z.ZodObject<{
|
|
3
3
|
userId: z.ZodString;
|
|
4
|
-
},
|
|
5
|
-
userId: string;
|
|
6
|
-
}, {
|
|
7
|
-
userId: string;
|
|
8
|
-
}>, unknown> & {
|
|
9
|
-
execute: (args: {
|
|
10
|
-
userId: string;
|
|
11
|
-
}, options: import("ai").ToolExecutionOptions) => PromiseLike<unknown>;
|
|
12
|
-
};
|
|
4
|
+
}, z.core.$strip>, unknown>;
|
|
@@ -7,7 +7,7 @@ const commandkit_1 = require("commandkit");
|
|
|
7
7
|
exports.getUserById = (0, common_1.createTool)({
|
|
8
8
|
description: 'Get a user by their ID.',
|
|
9
9
|
name: 'getUserById',
|
|
10
|
-
|
|
10
|
+
inputSchema: zod_1.z.object({
|
|
11
11
|
userId: zod_1.z.string().describe('The ID of the user to retrieve.'),
|
|
12
12
|
}),
|
|
13
13
|
async execute(ctx, params) {
|
|
@@ -27,4 +27,4 @@ exports.getUserById = (0, common_1.createTool)({
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
});
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXVzZXItYnktaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZ2V0LXVzZXItYnktaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBQ3hCLHFDQUFzQztBQUN0QywyQ0FBb0M7QUFFdkIsUUFBQSxXQUFXLEdBQUcsSUFBQSxtQkFBVSxFQUFDO0lBQ3BDLFdBQVcsRUFBRSx5QkFBeUI7SUFDdEMsSUFBSSxFQUFFLGFBQWE7SUFDbkIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDcEIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUM7S0FDL0QsQ0FBQztJQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxtQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQixPQUFPO2dCQUNMLEtBQUssRUFBRSwwQkFBMEI7YUFDbEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIn0=
|
package/dist/types.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export type MessageFilter = (commandkit: CommandKit, message: Message) => Promis
|
|
|
20
20
|
* @returns A promise that resolves to an object containing the selected model and optional metadata.
|
|
21
21
|
*/
|
|
22
22
|
export type SelectAiModel = (ctx: AiContext, message: Message) => Promise<SelectAiModelResult>;
|
|
23
|
-
export type SelectAiModelResult = Parameters<typeof generateText>[0]
|
|
23
|
+
export type SelectAiModelResult = Omit<Parameters<typeof generateText>[0], 'messages' | 'prompt'>;
|
|
24
24
|
export type CommandTool = LoadedCommand & {
|
|
25
25
|
tool: Tool;
|
|
26
26
|
};
|
|
@@ -32,7 +32,7 @@ export interface AiPluginOptions {
|
|
|
32
32
|
/**
|
|
33
33
|
* Extracts the AI configuration params.
|
|
34
34
|
*/
|
|
35
|
-
export type ExtractAiConfig<T extends Record<string, unknown>> = T extends AiConfig ? InferParameters<T['
|
|
35
|
+
export type ExtractAiConfig<T extends Record<string, unknown>> = T extends AiConfig ? InferParameters<T['inputSchema']> : T;
|
|
36
36
|
/**
|
|
37
37
|
* Represents the context in which an AI command is executed.
|
|
38
38
|
* It extends the MessageCommandContext to include AI-specific properties.
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { TextBasedChannel } from 'discord.js';
|
|
2
|
+
import { AiConfig } from './plugin';
|
|
3
|
+
import { CommandData } from 'commandkit';
|
|
2
4
|
/**
|
|
3
5
|
* @private
|
|
4
6
|
* @internal
|
|
5
7
|
*/
|
|
6
8
|
export declare function createTypingIndicator(channel: TextBasedChannel): Promise<() => void>;
|
|
9
|
+
/**
|
|
10
|
+
* Generates AI config from a CommandKit command data.
|
|
11
|
+
* @experimental
|
|
12
|
+
*/
|
|
13
|
+
export declare function experimental_createConfig(command: CommandData): AiConfig;
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.createTypingIndicator = createTypingIndicator;
|
|
7
|
+
exports.experimental_createConfig = experimental_createConfig;
|
|
8
|
+
const discord_js_1 = require("discord.js");
|
|
9
|
+
const zod_1 = __importDefault(require("zod"));
|
|
4
10
|
/**
|
|
5
11
|
* @private
|
|
6
12
|
* @internal
|
|
@@ -21,4 +27,40 @@ async function createTypingIndicator(channel) {
|
|
|
21
27
|
clearInterval(typingInterval);
|
|
22
28
|
};
|
|
23
29
|
}
|
|
24
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Generates AI config from a CommandKit command data.
|
|
32
|
+
* @experimental
|
|
33
|
+
*/
|
|
34
|
+
function experimental_createConfig(command) {
|
|
35
|
+
const inputSchema = zod_1.default.object({
|
|
36
|
+
...Object.fromEntries(command.options?.map((option) => [
|
|
37
|
+
option.name,
|
|
38
|
+
(() => {
|
|
39
|
+
const { type, required, description } = option;
|
|
40
|
+
const t = (() => {
|
|
41
|
+
switch (type) {
|
|
42
|
+
case discord_js_1.ApplicationCommandOptionType.String:
|
|
43
|
+
return zod_1.default.string();
|
|
44
|
+
case discord_js_1.ApplicationCommandOptionType.Number:
|
|
45
|
+
return zod_1.default.number();
|
|
46
|
+
case discord_js_1.ApplicationCommandOptionType.Boolean:
|
|
47
|
+
return zod_1.default.boolean();
|
|
48
|
+
case discord_js_1.ApplicationCommandOptionType.Integer:
|
|
49
|
+
return zod_1.default.int();
|
|
50
|
+
default:
|
|
51
|
+
throw new Error(`Unsupported option type: ${type}`);
|
|
52
|
+
}
|
|
53
|
+
})().describe(description);
|
|
54
|
+
if (!required) {
|
|
55
|
+
return t.optional();
|
|
56
|
+
}
|
|
57
|
+
return t;
|
|
58
|
+
})(),
|
|
59
|
+
]) ?? []),
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
description: command.description ?? `${command.name} command tool`,
|
|
63
|
+
inputSchema,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSxzREFxQkM7QUFNRCw4REFxQ0M7QUF6RUQsMkNBQTRFO0FBRzVFLDhDQUFvQjtBQUVwQjs7O0dBR0c7QUFDSSxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLE9BQXlCO0lBRXpCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVwQixNQUFNLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRTtRQUN4QixJQUFJLE9BQU87WUFBRSxPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUV6RCxNQUFNLE1BQU0sRUFBRSxDQUFDO0lBRWYsT0FBTyxHQUFHLEVBQUU7UUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxPQUFvQjtJQUM1RCxNQUFNLFdBQVcsR0FBRyxhQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxJQUFJO1lBQ1gsQ0FBQyxHQUFHLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUUvQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLElBQUksRUFBRSxDQUFDO3dCQUNiLEtBQUsseUNBQTRCLENBQUMsTUFBTTs0QkFDdEMsT0FBTyxhQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3BCLEtBQUsseUNBQTRCLENBQUMsTUFBTTs0QkFDdEMsT0FBTyxhQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3BCLEtBQUsseUNBQTRCLENBQUMsT0FBTzs0QkFDdkMsT0FBTyxhQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3JCLEtBQUsseUNBQTRCLENBQUMsT0FBTzs0QkFDdkMsT0FBTyxhQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2pCOzRCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3hELENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRTNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDZCxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztnQkFFRCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxFQUFFO1NBQ0wsQ0FBQyxJQUFJLEVBQUUsQ0FDVDtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLGVBQWU7UUFDbEUsV0FBVztLQUNPLENBQUM7QUFDdkIsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commandkit/ai",
|
|
3
|
-
"version": "1.2.0-rc.
|
|
3
|
+
"version": "1.2.0-rc.11",
|
|
4
4
|
"description": "Supercharge your CommandKit bot with AI capabilities",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
"Twilight <hello@twlite.dev>",
|
|
20
20
|
"Avraj <avraj@underctrl.io>"
|
|
21
21
|
],
|
|
22
|
-
"license": "
|
|
22
|
+
"license": "GPL-3.0-only",
|
|
23
23
|
"bugs": {
|
|
24
24
|
"url": "https://github.com/underctrl-io/commandkit/issues"
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://github.com/underctrl-io/commandkit#readme",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"discord.js": "^14.
|
|
28
|
+
"discord.js": "^14.22.1",
|
|
29
29
|
"typescript": "^5.8.3",
|
|
30
|
-
"commandkit": "1.2.0-rc.
|
|
31
|
-
"tsconfig": "0.0.0-rc.
|
|
30
|
+
"commandkit": "1.2.0-rc.11",
|
|
31
|
+
"tsconfig": "0.0.0-rc.11"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"ai": "^
|
|
35
|
-
"zod": "^
|
|
34
|
+
"ai": "^5.0.22",
|
|
35
|
+
"zod": "^4.1.0"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"check-types": "tsc --noEmit",
|
package/LICENSE
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
Copyright 2025 Avraj Sahota
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
|
|
4
|
-
|
|
5
|
-
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|