synabun 2026.3.307 → 2026.3.310
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/CLAUDE.md +150 -0
- package/hooks/claude-code/post-plan.mjs +1 -1
- package/hooks/claude-code/session-start.mjs +2 -0
- package/mcp-server/dist/config.d.ts +13 -0
- package/mcp-server/dist/config.d.ts.map +1 -0
- package/mcp-server/dist/config.js +59 -0
- package/mcp-server/dist/config.js.map +1 -0
- package/mcp-server/dist/http.d.ts +13 -0
- package/mcp-server/dist/http.d.ts.map +1 -0
- package/mcp-server/dist/http.js +86 -0
- package/mcp-server/dist/http.js.map +1 -0
- package/mcp-server/dist/index.d.ts +10 -0
- package/mcp-server/dist/index.d.ts.map +1 -0
- package/mcp-server/dist/index.js +189 -0
- package/mcp-server/dist/index.js.map +1 -0
- package/mcp-server/dist/preload-http.d.ts +3 -0
- package/mcp-server/dist/preload-http.d.ts.map +1 -0
- package/mcp-server/dist/preload-http.js +26 -0
- package/mcp-server/dist/preload-http.js.map +1 -0
- package/mcp-server/dist/preload.d.ts +3 -0
- package/mcp-server/dist/preload.d.ts.map +1 -0
- package/mcp-server/dist/preload.js +30 -0
- package/mcp-server/dist/preload.js.map +1 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.d.ts +19 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.d.ts.map +1 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.js +403 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.js.map +1 -0
- package/mcp-server/dist/services/categories.d.ts +61 -0
- package/mcp-server/dist/services/categories.d.ts.map +1 -0
- package/mcp-server/dist/services/categories.js +356 -0
- package/mcp-server/dist/services/categories.js.map +1 -0
- package/mcp-server/dist/services/discord.d.ts +112 -0
- package/mcp-server/dist/services/discord.d.ts.map +1 -0
- package/mcp-server/dist/services/discord.js +477 -0
- package/mcp-server/dist/services/discord.js.map +1 -0
- package/mcp-server/dist/services/file-checksums.d.ts +14 -0
- package/mcp-server/dist/services/file-checksums.d.ts.map +1 -0
- package/mcp-server/dist/services/file-checksums.js +34 -0
- package/mcp-server/dist/services/file-checksums.js.map +1 -0
- package/mcp-server/dist/services/local-embeddings.d.ts +23 -0
- package/mcp-server/dist/services/local-embeddings.d.ts.map +1 -0
- package/mcp-server/dist/services/local-embeddings.js +71 -0
- package/mcp-server/dist/services/local-embeddings.js.map +1 -0
- package/mcp-server/dist/services/neural-interface.d.ts +92 -0
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -0
- package/mcp-server/dist/services/neural-interface.js +238 -0
- package/mcp-server/dist/services/neural-interface.js.map +1 -0
- package/mcp-server/dist/services/sqlite.d.ts +85 -0
- package/mcp-server/dist/services/sqlite.d.ts.map +1 -0
- package/mcp-server/dist/services/sqlite.js +660 -0
- package/mcp-server/dist/services/sqlite.js.map +1 -0
- package/mcp-server/dist/tools/browser-advanced.d.ts +54 -0
- package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-advanced.js +97 -0
- package/mcp-server/dist/tools/browser-advanced.js.map +1 -0
- package/mcp-server/dist/tools/browser-interact.d.ts +138 -0
- package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-interact.js +216 -0
- package/mcp-server/dist/tools/browser-interact.js.map +1 -0
- package/mcp-server/dist/tools/browser-navigate.d.ts +52 -0
- package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-navigate.js +61 -0
- package/mcp-server/dist/tools/browser-navigate.js.map +1 -0
- package/mcp-server/dist/tools/browser-observe.d.ts +298 -0
- package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-observe.js +1154 -0
- package/mcp-server/dist/tools/browser-observe.js.map +1 -0
- package/mcp-server/dist/tools/browser.d.ts +7 -0
- package/mcp-server/dist/tools/browser.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser.js +55 -0
- package/mcp-server/dist/tools/browser.js.map +1 -0
- package/mcp-server/dist/tools/card-tools.d.ts +82 -0
- package/mcp-server/dist/tools/card-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/card-tools.js +137 -0
- package/mcp-server/dist/tools/card-tools.js.map +1 -0
- package/mcp-server/dist/tools/card.d.ts +8 -0
- package/mcp-server/dist/tools/card.d.ts.map +1 -0
- package/mcp-server/dist/tools/card.js +14 -0
- package/mcp-server/dist/tools/card.js.map +1 -0
- package/mcp-server/dist/tools/category.d.ts +32 -0
- package/mcp-server/dist/tools/category.d.ts.map +1 -0
- package/mcp-server/dist/tools/category.js +290 -0
- package/mcp-server/dist/tools/category.js.map +1 -0
- package/mcp-server/dist/tools/discord-channel.d.ts +44 -0
- package/mcp-server/dist/tools/discord-channel.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-channel.js +236 -0
- package/mcp-server/dist/tools/discord-channel.js.map +1 -0
- package/mcp-server/dist/tools/discord-guild.d.ts +20 -0
- package/mcp-server/dist/tools/discord-guild.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-guild.js +138 -0
- package/mcp-server/dist/tools/discord-guild.js.map +1 -0
- package/mcp-server/dist/tools/discord-member.d.ts +26 -0
- package/mcp-server/dist/tools/discord-member.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-member.js +122 -0
- package/mcp-server/dist/tools/discord-member.js.map +1 -0
- package/mcp-server/dist/tools/discord-message.d.ts +36 -0
- package/mcp-server/dist/tools/discord-message.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-message.js +184 -0
- package/mcp-server/dist/tools/discord-message.js.map +1 -0
- package/mcp-server/dist/tools/discord-onboarding.d.ts +32 -0
- package/mcp-server/dist/tools/discord-onboarding.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-onboarding.js +179 -0
- package/mcp-server/dist/tools/discord-onboarding.js.map +1 -0
- package/mcp-server/dist/tools/discord-role.d.ts +34 -0
- package/mcp-server/dist/tools/discord-role.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-role.js +178 -0
- package/mcp-server/dist/tools/discord-role.js.map +1 -0
- package/mcp-server/dist/tools/discord-thread.d.ts +28 -0
- package/mcp-server/dist/tools/discord-thread.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-thread.js +88 -0
- package/mcp-server/dist/tools/discord-thread.js.map +1 -0
- package/mcp-server/dist/tools/discord-webhook.d.ts +32 -0
- package/mcp-server/dist/tools/discord-webhook.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-webhook.js +154 -0
- package/mcp-server/dist/tools/discord-webhook.js.map +1 -0
- package/mcp-server/dist/tools/discord.d.ts +7 -0
- package/mcp-server/dist/tools/discord.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord.js +31 -0
- package/mcp-server/dist/tools/discord.js.map +1 -0
- package/mcp-server/dist/tools/forget.d.ts +14 -0
- package/mcp-server/dist/tools/forget.d.ts.map +1 -0
- package/mcp-server/dist/tools/forget.js +26 -0
- package/mcp-server/dist/tools/forget.js.map +1 -0
- package/mcp-server/dist/tools/git-tools.d.ts +24 -0
- package/mcp-server/dist/tools/git-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/git-tools.js +107 -0
- package/mcp-server/dist/tools/git-tools.js.map +1 -0
- package/mcp-server/dist/tools/git.d.ts +7 -0
- package/mcp-server/dist/tools/git.d.ts.map +1 -0
- package/mcp-server/dist/tools/git.js +9 -0
- package/mcp-server/dist/tools/git.js.map +1 -0
- package/mcp-server/dist/tools/image-tools.d.ts +24 -0
- package/mcp-server/dist/tools/image-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/image-tools.js +80 -0
- package/mcp-server/dist/tools/image-tools.js.map +1 -0
- package/mcp-server/dist/tools/image.d.ts +10 -0
- package/mcp-server/dist/tools/image.d.ts.map +1 -0
- package/mcp-server/dist/tools/image.js +12 -0
- package/mcp-server/dist/tools/image.js.map +1 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +77 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.js +223 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -0
- package/mcp-server/dist/tools/leonardo.d.ts +13 -0
- package/mcp-server/dist/tools/leonardo.d.ts.map +1 -0
- package/mcp-server/dist/tools/leonardo.js +19 -0
- package/mcp-server/dist/tools/leonardo.js.map +1 -0
- package/mcp-server/dist/tools/loop.d.ts +30 -0
- package/mcp-server/dist/tools/loop.d.ts.map +1 -0
- package/mcp-server/dist/tools/loop.js +302 -0
- package/mcp-server/dist/tools/loop.js.map +1 -0
- package/mcp-server/dist/tools/memories.d.ts +26 -0
- package/mcp-server/dist/tools/memories.d.ts.map +1 -0
- package/mcp-server/dist/tools/memories.js +96 -0
- package/mcp-server/dist/tools/memories.js.map +1 -0
- package/mcp-server/dist/tools/recall.d.ts +41 -0
- package/mcp-server/dist/tools/recall.d.ts.map +1 -0
- package/mcp-server/dist/tools/recall.js +275 -0
- package/mcp-server/dist/tools/recall.js.map +1 -0
- package/mcp-server/dist/tools/reflect.d.ts +44 -0
- package/mcp-server/dist/tools/reflect.d.ts.map +1 -0
- package/mcp-server/dist/tools/reflect.js +118 -0
- package/mcp-server/dist/tools/reflect.js.map +1 -0
- package/mcp-server/dist/tools/remember.d.ts +38 -0
- package/mcp-server/dist/tools/remember.d.ts.map +1 -0
- package/mcp-server/dist/tools/remember.js +88 -0
- package/mcp-server/dist/tools/remember.js.map +1 -0
- package/mcp-server/dist/tools/response.d.ts +23 -0
- package/mcp-server/dist/tools/response.d.ts.map +1 -0
- package/mcp-server/dist/tools/response.js +24 -0
- package/mcp-server/dist/tools/response.js.map +1 -0
- package/mcp-server/dist/tools/restore.d.ts +14 -0
- package/mcp-server/dist/tools/restore.d.ts.map +1 -0
- package/mcp-server/dist/tools/restore.js +23 -0
- package/mcp-server/dist/tools/restore.js.map +1 -0
- package/mcp-server/dist/tools/sync.d.ts +18 -0
- package/mcp-server/dist/tools/sync.d.ts.map +1 -0
- package/mcp-server/dist/tools/sync.js +93 -0
- package/mcp-server/dist/tools/sync.js.map +1 -0
- package/mcp-server/dist/tools/tictactoe-tools.d.ts +18 -0
- package/mcp-server/dist/tools/tictactoe-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/tictactoe-tools.js +78 -0
- package/mcp-server/dist/tools/tictactoe-tools.js.map +1 -0
- package/mcp-server/dist/tools/tictactoe.d.ts +7 -0
- package/mcp-server/dist/tools/tictactoe.d.ts.map +1 -0
- package/mcp-server/dist/tools/tictactoe.js +9 -0
- package/mcp-server/dist/tools/tictactoe.js.map +1 -0
- package/mcp-server/dist/tools/utils.d.ts +10 -0
- package/mcp-server/dist/tools/utils.d.ts.map +1 -0
- package/mcp-server/dist/tools/utils.js +30 -0
- package/mcp-server/dist/tools/utils.js.map +1 -0
- package/mcp-server/dist/tools/whiteboard-tools.d.ts +194 -0
- package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/whiteboard-tools.js +198 -0
- package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -0
- package/mcp-server/dist/tools/whiteboard.d.ts +8 -0
- package/mcp-server/dist/tools/whiteboard.d.ts.map +1 -0
- package/mcp-server/dist/tools/whiteboard.js +14 -0
- package/mcp-server/dist/tools/whiteboard.js.map +1 -0
- package/mcp-server/dist/tui.d.ts +3 -0
- package/mcp-server/dist/tui.d.ts.map +1 -0
- package/mcp-server/dist/tui.js +807 -0
- package/mcp-server/dist/tui.js.map +1 -0
- package/mcp-server/dist/types.d.ts +77 -0
- package/mcp-server/dist/types.d.ts.map +1 -0
- package/mcp-server/dist/types.js +2 -0
- package/mcp-server/dist/types.js.map +1 -0
- package/neural-interface/public/shared/styles.css +2 -2
- package/neural-interface/public/shared/ui-settings.js +2 -2
- package/neural-interface/server.js +82 -8
- package/neural-interface/templates/CLAUDE-template.md +9 -1
- package/package.json +4 -2
- package/preuninstall.js +28 -0
- package/setup.js +86 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import * as discord from '../services/discord.js';
|
|
3
|
+
import { text } from './response.js';
|
|
4
|
+
export const discordGuildSchema = {
|
|
5
|
+
action: z.enum(['info', 'channels', 'members', 'roles', 'audit_log'])
|
|
6
|
+
.describe('Action: info (server details), channels (list all), members (list), roles (list all), audit_log (recent actions).'),
|
|
7
|
+
guild_id: z.string().optional()
|
|
8
|
+
.describe('Guild ID. Defaults to DISCORD_GUILD_ID env var.'),
|
|
9
|
+
limit: z.number().optional()
|
|
10
|
+
.describe('Max results for members/audit_log (default 50).'),
|
|
11
|
+
action_type: z.number().optional()
|
|
12
|
+
.describe('Audit log action type filter (audit_log only).'),
|
|
13
|
+
};
|
|
14
|
+
export const discordGuildDescription = 'Discord server overview and listing. Actions: info, channels, members, roles, audit_log.';
|
|
15
|
+
// ── Info ───────────────────────────────────────────────────────
|
|
16
|
+
async function handleInfo(guildId) {
|
|
17
|
+
const res = await discord.getGuild(guildId);
|
|
18
|
+
if (res.error)
|
|
19
|
+
return text(res.error);
|
|
20
|
+
const g = res.data;
|
|
21
|
+
const verificationNames = ['None', 'Low', 'Medium', 'High', 'Very High'];
|
|
22
|
+
const boostTiers = ['None', 'Tier 1', 'Tier 2', 'Tier 3'];
|
|
23
|
+
const lines = [
|
|
24
|
+
`**${g.name}** (${g.id})`,
|
|
25
|
+
g.description ? `Description: ${g.description}` : null,
|
|
26
|
+
`Members: ${g.approximate_member_count || g.member_count || 'unknown'}`,
|
|
27
|
+
`Owner: ${g.owner_id}`,
|
|
28
|
+
`Verification: ${verificationNames[g.verification_level] || g.verification_level}`,
|
|
29
|
+
`Boost Tier: ${boostTiers[g.premium_tier] || g.premium_tier}`,
|
|
30
|
+
`Locale: ${g.preferred_locale}`,
|
|
31
|
+
g.features.length > 0 ? `Features: ${g.features.join(', ')}` : null,
|
|
32
|
+
].filter(Boolean).join('\n');
|
|
33
|
+
return text(lines);
|
|
34
|
+
}
|
|
35
|
+
// ── Channels ───────────────────────────────────────────────────
|
|
36
|
+
async function handleChannels(guildId) {
|
|
37
|
+
const channels = await discord.getGuildChannels(guildId);
|
|
38
|
+
if ('error' in channels)
|
|
39
|
+
return text(channels.error);
|
|
40
|
+
const list = channels;
|
|
41
|
+
// Group by category
|
|
42
|
+
const categories = list.filter(c => c.type === 4).sort((a, b) => a.position - b.position);
|
|
43
|
+
const uncategorized = list.filter(c => c.type !== 4 && !c.parent_id).sort((a, b) => a.position - b.position);
|
|
44
|
+
const lines = [];
|
|
45
|
+
if (uncategorized.length > 0) {
|
|
46
|
+
lines.push('**No Category:**');
|
|
47
|
+
for (const ch of uncategorized) {
|
|
48
|
+
const typeName = discord.CHANNEL_TYPE_NAMES[ch.type] || 'unknown';
|
|
49
|
+
lines.push(` #${ch.name} (${typeName}, ${ch.id})${ch.topic ? ` — ${ch.topic}` : ''}`);
|
|
50
|
+
}
|
|
51
|
+
lines.push('');
|
|
52
|
+
}
|
|
53
|
+
for (const cat of categories) {
|
|
54
|
+
const children = list.filter(c => c.parent_id === cat.id).sort((a, b) => a.position - b.position);
|
|
55
|
+
lines.push(`**${cat.name}** (category, ${cat.id})`);
|
|
56
|
+
if (children.length === 0) {
|
|
57
|
+
lines.push(' (empty)');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
for (const ch of children) {
|
|
61
|
+
const typeName = discord.CHANNEL_TYPE_NAMES[ch.type] || 'unknown';
|
|
62
|
+
lines.push(` #${ch.name} (${typeName}, ${ch.id})${ch.topic ? ` — ${ch.topic}` : ''}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
lines.push('');
|
|
66
|
+
}
|
|
67
|
+
return text(`Guild channels (${list.length} total):\n\n${lines.join('\n')}`);
|
|
68
|
+
}
|
|
69
|
+
// ── Members ────────────────────────────────────────────────────
|
|
70
|
+
async function handleMembers(guildId, limit) {
|
|
71
|
+
const res = await discord.getGuildMembers(guildId, limit);
|
|
72
|
+
if (res.error)
|
|
73
|
+
return text(res.error);
|
|
74
|
+
const members = res.data;
|
|
75
|
+
const lines = members.map(m => {
|
|
76
|
+
const name = m.nick || m.user.global_name || m.user.username;
|
|
77
|
+
const tag = `@${m.user.username}`;
|
|
78
|
+
const bot = m.user.bot ? ' [BOT]' : '';
|
|
79
|
+
const roles = m.roles.length > 0 ? ` (${m.roles.length} roles)` : '';
|
|
80
|
+
return ` ${name} (${tag}, ${m.user.id})${bot}${roles}`;
|
|
81
|
+
});
|
|
82
|
+
return text(`Guild members (${members.length}):\n${lines.join('\n')}`);
|
|
83
|
+
}
|
|
84
|
+
// ── Roles ──────────────────────────────────────────────────────
|
|
85
|
+
async function handleRoles(guildId) {
|
|
86
|
+
const roles = await discord.getGuildRoles(guildId);
|
|
87
|
+
if ('error' in roles)
|
|
88
|
+
return text(roles.error);
|
|
89
|
+
const list = roles
|
|
90
|
+
.sort((a, b) => b.position - a.position);
|
|
91
|
+
const lines = list.map(r => {
|
|
92
|
+
const color = r.color ? ` #${r.color.toString(16).padStart(6, '0')}` : '';
|
|
93
|
+
const flags = [];
|
|
94
|
+
if (r.hoist)
|
|
95
|
+
flags.push('hoisted');
|
|
96
|
+
if (r.mentionable)
|
|
97
|
+
flags.push('mentionable');
|
|
98
|
+
if (r.managed)
|
|
99
|
+
flags.push('managed');
|
|
100
|
+
const flagStr = flags.length > 0 ? ` [${flags.join(', ')}]` : '';
|
|
101
|
+
return ` @${r.name} (${r.id})${color}${flagStr}`;
|
|
102
|
+
});
|
|
103
|
+
return text(`Guild roles (${list.length}):\n${lines.join('\n')}`);
|
|
104
|
+
}
|
|
105
|
+
// ── Audit Log ──────────────────────────────────────────────────
|
|
106
|
+
async function handleAuditLog(guildId, limit, actionType) {
|
|
107
|
+
const res = await discord.getAuditLog(guildId, { limit, action_type: actionType });
|
|
108
|
+
if (res.error)
|
|
109
|
+
return text(res.error);
|
|
110
|
+
const log = res.data;
|
|
111
|
+
const entries = log.audit_log_entries || [];
|
|
112
|
+
if (entries.length === 0) {
|
|
113
|
+
return text('No audit log entries found.');
|
|
114
|
+
}
|
|
115
|
+
const lines = entries.map(e => {
|
|
116
|
+
const changes = e.changes?.map(c => `${c.key}: ${JSON.stringify(c.old_value)} → ${JSON.stringify(c.new_value)}`).join(', ') || '';
|
|
117
|
+
return ` [${e.action_type}] by ${e.user_id} → ${e.target_id || 'N/A'}${e.reason ? ` (${e.reason})` : ''}${changes ? `\n ${changes}` : ''}`;
|
|
118
|
+
});
|
|
119
|
+
return text(`Audit log (${entries.length} entries):\n${lines.join('\n')}`);
|
|
120
|
+
}
|
|
121
|
+
// ── Main dispatcher ────────────────────────────────────────────
|
|
122
|
+
export async function handleDiscordGuild(args) {
|
|
123
|
+
const resolved = await discord.resolveGuildId(args.guild_id);
|
|
124
|
+
if ('error' in resolved)
|
|
125
|
+
return text(resolved.error);
|
|
126
|
+
const guildId = resolved.guildId;
|
|
127
|
+
const limit = args.limit || 50;
|
|
128
|
+
switch (args.action) {
|
|
129
|
+
case 'info': return handleInfo(guildId);
|
|
130
|
+
case 'channels': return handleChannels(guildId);
|
|
131
|
+
case 'members': return handleMembers(guildId, limit);
|
|
132
|
+
case 'roles': return handleRoles(guildId);
|
|
133
|
+
case 'audit_log': return handleAuditLog(guildId, limit, args.action_type);
|
|
134
|
+
default:
|
|
135
|
+
return text(`Unknown action "${args.action}". Use: info, channels, members, roles, audit_log.`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=discord-guild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-guild.js","sourceRoot":"","sources":["../../src/tools/discord-guild.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const discordMemberSchema: {
|
|
3
|
+
action: z.ZodEnum<["info", "kick", "ban", "unban", "timeout", "nickname"]>;
|
|
4
|
+
guild_id: z.ZodOptional<z.ZodString>;
|
|
5
|
+
member: z.ZodString;
|
|
6
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
7
|
+
duration: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
nickname: z.ZodOptional<z.ZodString>;
|
|
9
|
+
delete_days: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
};
|
|
11
|
+
export declare const discordMemberDescription = "Discord member moderation. Actions: info, kick, ban, unban, timeout, nickname.";
|
|
12
|
+
export declare function handleDiscordMember(args: {
|
|
13
|
+
action: string;
|
|
14
|
+
guild_id?: string;
|
|
15
|
+
member: string;
|
|
16
|
+
reason?: string;
|
|
17
|
+
duration?: number;
|
|
18
|
+
nickname?: string;
|
|
19
|
+
delete_days?: number;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
content: {
|
|
22
|
+
type: "text";
|
|
23
|
+
text: string;
|
|
24
|
+
}[];
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=discord-member.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-member.d.ts","sourceRoot":"","sources":["../../src/tools/discord-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,mBAAmB;;;;;;;;CAe/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,mFAC6C,CAAC;AAgHnF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAeA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import * as discord from '../services/discord.js';
|
|
3
|
+
import { text } from './response.js';
|
|
4
|
+
export const discordMemberSchema = {
|
|
5
|
+
action: z.enum(['info', 'kick', 'ban', 'unban', 'timeout', 'nickname'])
|
|
6
|
+
.describe('Action: info, kick, ban, unban, timeout, nickname.'),
|
|
7
|
+
guild_id: z.string().optional()
|
|
8
|
+
.describe('Guild ID. Defaults to DISCORD_GUILD_ID env var.'),
|
|
9
|
+
member: z.string()
|
|
10
|
+
.describe('User name, tag, or ID (required for all actions).'),
|
|
11
|
+
reason: z.string().optional()
|
|
12
|
+
.describe('Moderation reason for audit log (kick/ban/timeout).'),
|
|
13
|
+
duration: z.number().optional()
|
|
14
|
+
.describe('Timeout duration in minutes (timeout action). 0 to remove timeout.'),
|
|
15
|
+
nickname: z.string().optional()
|
|
16
|
+
.describe('New nickname (nickname action). Empty string to reset.'),
|
|
17
|
+
delete_days: z.number().optional()
|
|
18
|
+
.describe('Days of messages to delete, 0-7 (ban action, default 0).'),
|
|
19
|
+
};
|
|
20
|
+
export const discordMemberDescription = 'Discord member moderation. Actions: info, kick, ban, unban, timeout, nickname.';
|
|
21
|
+
// ── Info ───────────────────────────────────────────────────────
|
|
22
|
+
async function handleInfo(guildId, args) {
|
|
23
|
+
const user = await discord.resolveUser(args.member, guildId);
|
|
24
|
+
if ('error' in user)
|
|
25
|
+
return text(user.error);
|
|
26
|
+
const res = await discord.getMember(guildId, user.id);
|
|
27
|
+
if (res.error)
|
|
28
|
+
return text(res.error);
|
|
29
|
+
const m = res.data;
|
|
30
|
+
const name = m.nick || m.user.global_name || m.user.username;
|
|
31
|
+
const timeout = m.communication_disabled_until
|
|
32
|
+
? `Timeout until: ${new Date(m.communication_disabled_until).toLocaleString()}`
|
|
33
|
+
: null;
|
|
34
|
+
const lines = [
|
|
35
|
+
`**${name}** (@${m.user.username}, ${m.user.id})`,
|
|
36
|
+
m.user.bot ? 'Type: Bot' : 'Type: User',
|
|
37
|
+
`Joined: ${new Date(m.joined_at).toLocaleString()}`,
|
|
38
|
+
m.premium_since ? `Boosting since: ${new Date(m.premium_since).toLocaleString()}` : null,
|
|
39
|
+
`Roles: ${m.roles.length > 0 ? m.roles.join(', ') : 'none'}`,
|
|
40
|
+
timeout,
|
|
41
|
+
].filter(Boolean).join('\n');
|
|
42
|
+
return text(lines);
|
|
43
|
+
}
|
|
44
|
+
// ── Kick ───────────────────────────────────────────────────────
|
|
45
|
+
async function handleKick(guildId, args) {
|
|
46
|
+
const user = await discord.resolveUser(args.member, guildId);
|
|
47
|
+
if ('error' in user)
|
|
48
|
+
return text(user.error);
|
|
49
|
+
const res = await discord.kickMember(guildId, user.id, args.reason);
|
|
50
|
+
if (res.error)
|
|
51
|
+
return text(res.error);
|
|
52
|
+
return text(`Kicked ${user.name} (${user.id}).${args.reason ? ` Reason: ${args.reason}` : ''}`);
|
|
53
|
+
}
|
|
54
|
+
// ── Ban ────────────────────────────────────────────────────────
|
|
55
|
+
async function handleBan(guildId, args) {
|
|
56
|
+
const user = await discord.resolveUser(args.member, guildId);
|
|
57
|
+
if ('error' in user)
|
|
58
|
+
return text(user.error);
|
|
59
|
+
const deleteSeconds = (args.delete_days || 0) * 86400;
|
|
60
|
+
const res = await discord.banMember(guildId, user.id, {
|
|
61
|
+
delete_message_seconds: deleteSeconds,
|
|
62
|
+
});
|
|
63
|
+
if (res.error)
|
|
64
|
+
return text(res.error);
|
|
65
|
+
return text(`Banned ${user.name} (${user.id}).${args.reason ? ` Reason: ${args.reason}` : ''}`);
|
|
66
|
+
}
|
|
67
|
+
// ── Unban ──────────────────────────────────────────────────────
|
|
68
|
+
async function handleUnban(guildId, args) {
|
|
69
|
+
// For unban, member must be a user ID since they're not in the guild
|
|
70
|
+
if (!/^\d{17,20}$/.test(args.member)) {
|
|
71
|
+
return text('member must be a user ID for unban action (the user is not in the guild).');
|
|
72
|
+
}
|
|
73
|
+
const res = await discord.unbanMember(guildId, args.member);
|
|
74
|
+
if (res.error)
|
|
75
|
+
return text(res.error);
|
|
76
|
+
return text(`Unbanned user ${args.member}.`);
|
|
77
|
+
}
|
|
78
|
+
// ── Timeout ────────────────────────────────────────────────────
|
|
79
|
+
async function handleTimeout(guildId, args) {
|
|
80
|
+
if (args.duration === undefined) {
|
|
81
|
+
return text('duration (minutes) is required for timeout action. Use 0 to remove timeout.');
|
|
82
|
+
}
|
|
83
|
+
const user = await discord.resolveUser(args.member, guildId);
|
|
84
|
+
if ('error' in user)
|
|
85
|
+
return text(user.error);
|
|
86
|
+
const res = await discord.timeoutMember(guildId, user.id, args.duration);
|
|
87
|
+
if (res.error)
|
|
88
|
+
return text(res.error);
|
|
89
|
+
if (args.duration === 0) {
|
|
90
|
+
return text(`Removed timeout from ${user.name}.`);
|
|
91
|
+
}
|
|
92
|
+
return text(`Timed out ${user.name} for ${args.duration} minutes.${args.reason ? ` Reason: ${args.reason}` : ''}`);
|
|
93
|
+
}
|
|
94
|
+
// ── Nickname ───────────────────────────────────────────────────
|
|
95
|
+
async function handleNickname(guildId, args) {
|
|
96
|
+
const user = await discord.resolveUser(args.member, guildId);
|
|
97
|
+
if ('error' in user)
|
|
98
|
+
return text(user.error);
|
|
99
|
+
const nick = args.nickname === '' ? null : (args.nickname || null);
|
|
100
|
+
const res = await discord.setNickname(guildId, user.id, nick);
|
|
101
|
+
if (res.error)
|
|
102
|
+
return text(res.error);
|
|
103
|
+
return text(nick ? `Set nickname of ${user.name} to "${nick}".` : `Reset nickname of ${user.name}.`);
|
|
104
|
+
}
|
|
105
|
+
// ── Main dispatcher ────────────────────────────────────────────
|
|
106
|
+
export async function handleDiscordMember(args) {
|
|
107
|
+
const resolved = await discord.resolveGuildId(args.guild_id);
|
|
108
|
+
if ('error' in resolved)
|
|
109
|
+
return text(resolved.error);
|
|
110
|
+
const guildId = resolved.guildId;
|
|
111
|
+
switch (args.action) {
|
|
112
|
+
case 'info': return handleInfo(guildId, args);
|
|
113
|
+
case 'kick': return handleKick(guildId, args);
|
|
114
|
+
case 'ban': return handleBan(guildId, args);
|
|
115
|
+
case 'unban': return handleUnban(guildId, args);
|
|
116
|
+
case 'timeout': return handleTimeout(guildId, args);
|
|
117
|
+
case 'nickname': return handleNickname(guildId, args);
|
|
118
|
+
default:
|
|
119
|
+
return text(`Unknown action "${args.action}". Use: info, kick, ban, unban, timeout, nickname.`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=discord-member.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-member.js","sourceRoot":"","sources":["../../src/tools/discord-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;SAC7E,QAAQ,CAAC,oDAAoD,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,QAAQ,CAAC,mDAAmD,CAAC;IAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,qDAAqD,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,QAAQ,CAAC,oEAAoE,CAAC;IACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,QAAQ,CAAC,wDAAwD,CAAC;IACrE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,QAAQ,CAAC,0DAA0D,CAAC;CACxE,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GACnC,gFAAgF,CAAC;AAEnF,kEAAkE;AAElE,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAwB;IACjE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,CAAC,GAAG,GAAG,CAAC,IAOb,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,CAAC,4BAA4B;QAC5C,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,cAAc,EAAE,EAAE;QAC/E,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,KAAK,GAAG;QACZ,KAAK,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG;QACjD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;QACvC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;QACnD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;QACxF,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5D,OAAO;KACR,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAyC;IAClF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,IAA+D;IACvG,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QACpD,sBAAsB,EAAE,aAAa;KACtC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,IAAwB;IAClE,qEAAqE;IACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO,IAAI,CAAC,iBAAiB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,IAA4D;IACxG,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrH,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,IAA2C;IACxF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9D,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACvG,CAAC;AAED,kEAAkE;AAElE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAQzC;IACC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,KAAK,CAAC,CAAC,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,KAAK,SAAS,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpD,KAAK,UAAU,CAAC,CAAC,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtD;YACE,OAAO,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,oDAAoD,CAAC,CAAC;IACpG,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const discordMessageSchema: {
|
|
3
|
+
action: z.ZodEnum<["send", "edit", "delete", "pin", "unpin", "react", "bulk_delete", "list"]>;
|
|
4
|
+
guild_id: z.ZodOptional<z.ZodString>;
|
|
5
|
+
channel: z.ZodString;
|
|
6
|
+
content: z.ZodOptional<z.ZodString>;
|
|
7
|
+
message_id: z.ZodOptional<z.ZodString>;
|
|
8
|
+
embed: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
9
|
+
emoji: z.ZodOptional<z.ZodString>;
|
|
10
|
+
message_ids: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], unknown>>;
|
|
11
|
+
reply_to: z.ZodOptional<z.ZodString>;
|
|
12
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
before: z.ZodOptional<z.ZodString>;
|
|
14
|
+
after: z.ZodOptional<z.ZodString>;
|
|
15
|
+
};
|
|
16
|
+
export declare const discordMessageDescription = "Discord message operations. Actions: send, edit, delete, pin, unpin, react, bulk_delete, list.";
|
|
17
|
+
export declare function handleDiscordMessage(args: {
|
|
18
|
+
action: string;
|
|
19
|
+
guild_id?: string;
|
|
20
|
+
channel: string;
|
|
21
|
+
content?: string;
|
|
22
|
+
message_id?: string;
|
|
23
|
+
embed?: Record<string, unknown>;
|
|
24
|
+
emoji?: string;
|
|
25
|
+
message_ids?: string[];
|
|
26
|
+
reply_to?: string;
|
|
27
|
+
limit?: number;
|
|
28
|
+
before?: string;
|
|
29
|
+
after?: string;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
content: {
|
|
32
|
+
type: "text";
|
|
33
|
+
text: string;
|
|
34
|
+
}[];
|
|
35
|
+
}>;
|
|
36
|
+
//# sourceMappingURL=discord-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-message.d.ts","sourceRoot":"","sources":["../../src/tools/discord-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;CAyBhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,mGAC4D,CAAC;AA2KnG,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;GAaA"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import * as discord from '../services/discord.js';
|
|
3
|
+
import { coerceStringArray } from './utils.js';
|
|
4
|
+
import { text } from './response.js';
|
|
5
|
+
export const discordMessageSchema = {
|
|
6
|
+
action: z.enum(['send', 'edit', 'delete', 'pin', 'unpin', 'react', 'bulk_delete', 'list'])
|
|
7
|
+
.describe('Action: send, edit, delete, pin, unpin, react, bulk_delete, list.'),
|
|
8
|
+
guild_id: z.string().optional()
|
|
9
|
+
.describe('Guild ID for channel name resolution. Defaults to DISCORD_GUILD_ID env var.'),
|
|
10
|
+
channel: z.string()
|
|
11
|
+
.describe('Channel name or ID (required for all actions).'),
|
|
12
|
+
content: z.string().optional()
|
|
13
|
+
.describe('Message text (send required, edit optional).'),
|
|
14
|
+
message_id: z.string().optional()
|
|
15
|
+
.describe('Message ID (required for edit/delete/pin/unpin/react).'),
|
|
16
|
+
embed: z.record(z.unknown()).optional()
|
|
17
|
+
.describe('Embed object: {title?, description?, color? (int), fields?: [{name, value, inline?}], footer?: {text}, image?: {url}, thumbnail?: {url}}. (send/edit)'),
|
|
18
|
+
emoji: z.string().optional()
|
|
19
|
+
.describe('Emoji for react action. Unicode emoji or custom format "name:id".'),
|
|
20
|
+
message_ids: coerceStringArray().optional()
|
|
21
|
+
.describe('Array of message IDs for bulk_delete (2-100 messages, max 14 days old).'),
|
|
22
|
+
reply_to: z.string().optional()
|
|
23
|
+
.describe('Message ID to reply to (send only).'),
|
|
24
|
+
limit: z.number().optional()
|
|
25
|
+
.describe('Max messages to fetch (list action, default 50, max 100).'),
|
|
26
|
+
before: z.string().optional()
|
|
27
|
+
.describe('Fetch messages before this message ID (list action).'),
|
|
28
|
+
after: z.string().optional()
|
|
29
|
+
.describe('Fetch messages after this message ID (list action).'),
|
|
30
|
+
};
|
|
31
|
+
export const discordMessageDescription = 'Discord message operations. Actions: send, edit, delete, pin, unpin, react, bulk_delete, list.';
|
|
32
|
+
// ── Helpers ────────────────────────────────────────────────────
|
|
33
|
+
async function resolveChannelId(channel, guildId) {
|
|
34
|
+
// If it looks like a snowflake, use directly
|
|
35
|
+
if (/^\d{17,20}$/.test(channel))
|
|
36
|
+
return { channelId: channel };
|
|
37
|
+
// Need guild_id to resolve by name
|
|
38
|
+
const resolved = await discord.resolveGuildId(guildId);
|
|
39
|
+
if ('error' in resolved)
|
|
40
|
+
return resolved;
|
|
41
|
+
const ch = await discord.resolveChannel(channel, resolved.guildId);
|
|
42
|
+
if ('error' in ch)
|
|
43
|
+
return ch;
|
|
44
|
+
return { channelId: ch.id };
|
|
45
|
+
}
|
|
46
|
+
// ── Send ───────────────────────────────────────────────────────
|
|
47
|
+
async function handleSend(args) {
|
|
48
|
+
if (!args.content && !args.embed) {
|
|
49
|
+
return text('content or embed is required for send action.');
|
|
50
|
+
}
|
|
51
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
52
|
+
if ('error' in ch)
|
|
53
|
+
return text(ch.error);
|
|
54
|
+
const data = {};
|
|
55
|
+
if (args.content)
|
|
56
|
+
data.content = args.content;
|
|
57
|
+
if (args.embed)
|
|
58
|
+
data.embeds = [args.embed];
|
|
59
|
+
if (args.reply_to) {
|
|
60
|
+
data.message_reference = { message_id: args.reply_to };
|
|
61
|
+
}
|
|
62
|
+
const res = await discord.sendMessage(ch.channelId, data);
|
|
63
|
+
if (res.error)
|
|
64
|
+
return text(res.error);
|
|
65
|
+
const msg = res.data;
|
|
66
|
+
return text(`Sent message ${msg.id} in <#${ch.channelId}>.`);
|
|
67
|
+
}
|
|
68
|
+
// ── Edit ───────────────────────────────────────────────────────
|
|
69
|
+
async function handleEdit(args) {
|
|
70
|
+
if (!args.message_id)
|
|
71
|
+
return text('message_id is required for edit action.');
|
|
72
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
73
|
+
if ('error' in ch)
|
|
74
|
+
return text(ch.error);
|
|
75
|
+
const data = {};
|
|
76
|
+
if (args.content !== undefined)
|
|
77
|
+
data.content = args.content;
|
|
78
|
+
if (args.embed)
|
|
79
|
+
data.embeds = [args.embed];
|
|
80
|
+
const res = await discord.editMessage(ch.channelId, args.message_id, data);
|
|
81
|
+
if (res.error)
|
|
82
|
+
return text(res.error);
|
|
83
|
+
return text(`Edited message ${args.message_id}.`);
|
|
84
|
+
}
|
|
85
|
+
// ── Delete ─────────────────────────────────────────────────────
|
|
86
|
+
async function handleDelete(args) {
|
|
87
|
+
if (!args.message_id)
|
|
88
|
+
return text('message_id is required for delete action.');
|
|
89
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
90
|
+
if ('error' in ch)
|
|
91
|
+
return text(ch.error);
|
|
92
|
+
const res = await discord.deleteMessage(ch.channelId, args.message_id);
|
|
93
|
+
if (res.error)
|
|
94
|
+
return text(res.error);
|
|
95
|
+
return text(`Deleted message ${args.message_id}.`);
|
|
96
|
+
}
|
|
97
|
+
// ── Pin / Unpin ────────────────────────────────────────────────
|
|
98
|
+
async function handlePin(args, unpin = false) {
|
|
99
|
+
if (!args.message_id)
|
|
100
|
+
return text('message_id is required.');
|
|
101
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
102
|
+
if ('error' in ch)
|
|
103
|
+
return text(ch.error);
|
|
104
|
+
const res = unpin
|
|
105
|
+
? await discord.unpinMessage(ch.channelId, args.message_id)
|
|
106
|
+
: await discord.pinMessage(ch.channelId, args.message_id);
|
|
107
|
+
if (res.error)
|
|
108
|
+
return text(res.error);
|
|
109
|
+
return text(`${unpin ? 'Unpinned' : 'Pinned'} message ${args.message_id}.`);
|
|
110
|
+
}
|
|
111
|
+
// ── React ──────────────────────────────────────────────────────
|
|
112
|
+
async function handleReact(args) {
|
|
113
|
+
if (!args.message_id)
|
|
114
|
+
return text('message_id is required for react action.');
|
|
115
|
+
if (!args.emoji)
|
|
116
|
+
return text('emoji is required for react action.');
|
|
117
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
118
|
+
if ('error' in ch)
|
|
119
|
+
return text(ch.error);
|
|
120
|
+
const res = await discord.addReaction(ch.channelId, args.message_id, args.emoji);
|
|
121
|
+
if (res.error)
|
|
122
|
+
return text(res.error);
|
|
123
|
+
return text(`Reacted with ${args.emoji} on message ${args.message_id}.`);
|
|
124
|
+
}
|
|
125
|
+
// ── Bulk Delete ────────────────────────────────────────────────
|
|
126
|
+
async function handleBulkDelete(args) {
|
|
127
|
+
if (!args.message_ids || args.message_ids.length === 0) {
|
|
128
|
+
return text('message_ids is required for bulk_delete action (2-100 messages).');
|
|
129
|
+
}
|
|
130
|
+
if (args.message_ids.length < 2 || args.message_ids.length > 100) {
|
|
131
|
+
return text('bulk_delete requires 2-100 message IDs.');
|
|
132
|
+
}
|
|
133
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
134
|
+
if ('error' in ch)
|
|
135
|
+
return text(ch.error);
|
|
136
|
+
const res = await discord.bulkDeleteMessages(ch.channelId, args.message_ids);
|
|
137
|
+
if (res.error)
|
|
138
|
+
return text(res.error);
|
|
139
|
+
return text(`Bulk deleted ${args.message_ids.length} messages.`);
|
|
140
|
+
}
|
|
141
|
+
// ── List ───────────────────────────────────────────────────────
|
|
142
|
+
async function handleList(args) {
|
|
143
|
+
const ch = await resolveChannelId(args.channel, args.guild_id);
|
|
144
|
+
if ('error' in ch)
|
|
145
|
+
return text(ch.error);
|
|
146
|
+
const res = await discord.getMessages(ch.channelId, {
|
|
147
|
+
limit: Math.min(args.limit || 50, 100),
|
|
148
|
+
before: args.before,
|
|
149
|
+
after: args.after,
|
|
150
|
+
});
|
|
151
|
+
if (res.error)
|
|
152
|
+
return text(res.error);
|
|
153
|
+
const messages = res.data;
|
|
154
|
+
if (messages.length === 0) {
|
|
155
|
+
return text('No messages found.');
|
|
156
|
+
}
|
|
157
|
+
const lines = messages.reverse().map(m => {
|
|
158
|
+
const author = m.author.global_name || m.author.username;
|
|
159
|
+
const bot = m.author.bot ? ' [BOT]' : '';
|
|
160
|
+
const pinned = m.pinned ? ' [PINNED]' : '';
|
|
161
|
+
const time = new Date(m.timestamp).toLocaleString();
|
|
162
|
+
const content = m.content
|
|
163
|
+
? (m.content.length > 200 ? m.content.slice(0, 200) + '...' : m.content)
|
|
164
|
+
: (m.embeds?.length ? '[embed]' : '[no content]');
|
|
165
|
+
return ` [${m.id}] ${author}${bot}${pinned} (${time}): ${content}`;
|
|
166
|
+
});
|
|
167
|
+
return text(`Messages (${messages.length}):\n${lines.join('\n')}`);
|
|
168
|
+
}
|
|
169
|
+
// ── Main dispatcher ────────────────────────────────────────────
|
|
170
|
+
export async function handleDiscordMessage(args) {
|
|
171
|
+
switch (args.action) {
|
|
172
|
+
case 'send': return handleSend(args);
|
|
173
|
+
case 'edit': return handleEdit(args);
|
|
174
|
+
case 'delete': return handleDelete(args);
|
|
175
|
+
case 'pin': return handlePin(args);
|
|
176
|
+
case 'unpin': return handlePin(args, true);
|
|
177
|
+
case 'react': return handleReact(args);
|
|
178
|
+
case 'bulk_delete': return handleBulkDelete(args);
|
|
179
|
+
case 'list': return handleList(args);
|
|
180
|
+
default:
|
|
181
|
+
return text(`Unknown action "${args.action}". Use: send, edit, delete, pin, unpin, react, bulk_delete, list.`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=discord-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-message.js","sourceRoot":"","sources":["../../src/tools/discord-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const discordOnboardingSchema: {
|
|
3
|
+
action: z.ZodEnum<["get", "set_welcome", "set_rules", "set_verification", "set_onboarding"]>;
|
|
4
|
+
guild_id: z.ZodOptional<z.ZodString>;
|
|
5
|
+
description: z.ZodOptional<z.ZodString>;
|
|
6
|
+
welcome_channels: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
7
|
+
rules_channel: z.ZodOptional<z.ZodString>;
|
|
8
|
+
system_channel: z.ZodOptional<z.ZodString>;
|
|
9
|
+
verification_level: z.ZodOptional<z.ZodEnum<["none", "low", "medium", "high", "very_high"]>>;
|
|
10
|
+
prompts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
11
|
+
default_channels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
+
};
|
|
14
|
+
export declare const discordOnboardingDescription = "Discord server onboarding and setup. Actions: get, set_welcome, set_rules, set_verification, set_onboarding.";
|
|
15
|
+
export declare function handleDiscordOnboarding(args: {
|
|
16
|
+
action: string;
|
|
17
|
+
guild_id?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
welcome_channels?: Record<string, unknown>[];
|
|
20
|
+
rules_channel?: string;
|
|
21
|
+
system_channel?: string;
|
|
22
|
+
verification_level?: string;
|
|
23
|
+
prompts?: Record<string, unknown>[];
|
|
24
|
+
default_channels?: string[];
|
|
25
|
+
enabled?: boolean;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
content: {
|
|
28
|
+
type: "text";
|
|
29
|
+
text: string;
|
|
30
|
+
}[];
|
|
31
|
+
}>;
|
|
32
|
+
//# sourceMappingURL=discord-onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-onboarding.d.ts","sourceRoot":"","sources":["../../src/tools/discord-onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;CAqBnC,CAAC;AAEF,eAAO,MAAM,4BAA4B,iHACuE,CAAC;AA8KjH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;;;;;GAcA"}
|