discord-ops 0.2.0 → 0.4.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.
- package/CHANGELOG.md +19 -1
- package/README.md +198 -70
- package/dist/cli/index.js +45 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup.d.ts +7 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +397 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -3
- package/dist/client.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +21 -5
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +9 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +3 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/server.d.ts +4 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +30 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/channels/index.d.ts +1 -0
- package/dist/tools/channels/index.d.ts.map +1 -1
- package/dist/tools/channels/index.js +1 -0
- package/dist/tools/channels/index.js.map +1 -1
- package/dist/tools/channels/permissions.d.ts +3 -0
- package/dist/tools/channels/permissions.d.ts.map +1 -0
- package/dist/tools/channels/permissions.js +34 -0
- package/dist/tools/channels/permissions.js.map +1 -0
- package/dist/tools/guilds/index.d.ts +1 -0
- package/dist/tools/guilds/index.d.ts.map +1 -1
- package/dist/tools/guilds/index.js +1 -0
- package/dist/tools/guilds/index.js.map +1 -1
- package/dist/tools/guilds/invites.d.ts +4 -0
- package/dist/tools/guilds/invites.d.ts.map +1 -0
- package/dist/tools/guilds/invites.js +93 -0
- package/dist/tools/guilds/invites.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +14 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/messaging/index.d.ts +3 -0
- package/dist/tools/messaging/index.d.ts.map +1 -1
- package/dist/tools/messaging/index.js +3 -0
- package/dist/tools/messaging/index.js.map +1 -1
- package/dist/tools/messaging/pin.d.ts +3 -0
- package/dist/tools/messaging/pin.d.ts.map +1 -0
- package/dist/tools/messaging/pin.js +24 -0
- package/dist/tools/messaging/pin.js.map +1 -0
- package/dist/tools/messaging/search.d.ts +3 -0
- package/dist/tools/messaging/search.d.ts.map +1 -0
- package/dist/tools/messaging/search.js +61 -0
- package/dist/tools/messaging/search.js.map +1 -0
- package/dist/tools/messaging/unpin.d.ts +3 -0
- package/dist/tools/messaging/unpin.d.ts.map +1 -0
- package/dist/tools/messaging/unpin.js +24 -0
- package/dist/tools/messaging/unpin.js.map +1 -0
- package/dist/tools/threads/archive.d.ts +3 -0
- package/dist/tools/threads/archive.d.ts.map +1 -0
- package/dist/tools/threads/archive.js +33 -0
- package/dist/tools/threads/archive.js.map +1 -0
- package/dist/tools/threads/index.d.ts +1 -0
- package/dist/tools/threads/index.d.ts.map +1 -1
- package/dist/tools/threads/index.js +1 -0
- package/dist/tools/threads/index.js.map +1 -1
- package/dist/transport/http.d.ts +6 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +81 -0
- package/dist/transport/http.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { resolve, join } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { stdin, stdout } from "node:process";
|
|
6
|
+
import { Client, GatewayIntentBits, ChannelType } from "discord.js";
|
|
7
|
+
import { logger } from "../utils/logger.js";
|
|
8
|
+
const GLOBAL_CONFIG_PATH = resolve(homedir(), ".discord-ops.json");
|
|
9
|
+
const NOTIFICATION_TYPES = [
|
|
10
|
+
"ci_build",
|
|
11
|
+
"deploy",
|
|
12
|
+
"release",
|
|
13
|
+
"error",
|
|
14
|
+
"announcement",
|
|
15
|
+
"dev",
|
|
16
|
+
];
|
|
17
|
+
const SUGGESTED_ALIASES = [
|
|
18
|
+
"dev",
|
|
19
|
+
"builds",
|
|
20
|
+
"alerts",
|
|
21
|
+
"releases",
|
|
22
|
+
"general",
|
|
23
|
+
"announcements",
|
|
24
|
+
"errors",
|
|
25
|
+
"deploys",
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Interactive setup wizard for discord-ops configuration.
|
|
29
|
+
* Walks users through bot token verification, guild selection,
|
|
30
|
+
* channel aliasing, and notification routing.
|
|
31
|
+
*/
|
|
32
|
+
export async function runSetup() {
|
|
33
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
34
|
+
console.log("\n discord-ops setup wizard\n");
|
|
35
|
+
console.log(" This wizard will help you configure discord-ops");
|
|
36
|
+
console.log(" by connecting to your Discord bot and mapping");
|
|
37
|
+
console.log(" guilds and channels to project aliases.\n");
|
|
38
|
+
try {
|
|
39
|
+
// Step 1: Check for existing config
|
|
40
|
+
const existingConfig = await checkExistingConfig(rl);
|
|
41
|
+
// Step 2: Obtain Discord token
|
|
42
|
+
const token = await obtainToken(rl);
|
|
43
|
+
// Step 3: Connect to Discord and verify token
|
|
44
|
+
console.log("\n Connecting to Discord...");
|
|
45
|
+
const client = await connectBot(token);
|
|
46
|
+
console.log(` Connected as: ${client.user?.tag}`);
|
|
47
|
+
// Step 4: List available guilds
|
|
48
|
+
const guilds = await listGuilds(client);
|
|
49
|
+
if (guilds.length === 0) {
|
|
50
|
+
console.log("\n Bot is not a member of any guilds.");
|
|
51
|
+
console.log(" Invite the bot to at least one server first.");
|
|
52
|
+
await cleanup(client, rl);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
console.log(`\n Available guilds (${guilds.length}):`);
|
|
56
|
+
for (let i = 0; i < guilds.length; i++) {
|
|
57
|
+
console.log(` [${i + 1}] ${guilds[i].name} (${guilds[i].id})`);
|
|
58
|
+
}
|
|
59
|
+
// Step 5: Select guilds to configure as projects
|
|
60
|
+
const selectedGuilds = await selectGuilds(rl, guilds);
|
|
61
|
+
// Step 6: Configure each guild — channels and aliases
|
|
62
|
+
const projects = {};
|
|
63
|
+
if (existingConfig?.projects) {
|
|
64
|
+
Object.assign(projects, existingConfig.projects);
|
|
65
|
+
}
|
|
66
|
+
for (const guild of selectedGuilds) {
|
|
67
|
+
const projectName = await askQuestion(rl, `\n Project name for "${guild.name}" [${slugify(guild.name)}]: `);
|
|
68
|
+
const name = projectName.trim() || slugify(guild.name);
|
|
69
|
+
const channels = await listChannels(client, guild.id);
|
|
70
|
+
if (channels.length === 0) {
|
|
71
|
+
console.log(` No text channels found in ${guild.name}, skipping.`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
console.log(`\n Text channels in ${guild.name}:`);
|
|
75
|
+
for (let i = 0; i < channels.length; i++) {
|
|
76
|
+
console.log(` [${i + 1}] #${channels[i].name} (${channels[i].id})`);
|
|
77
|
+
}
|
|
78
|
+
const channelMap = await assignChannelAliases(rl, channels);
|
|
79
|
+
const defaultChannel = await selectDefaultChannel(rl, channelMap);
|
|
80
|
+
projects[name] = {
|
|
81
|
+
guild_id: guild.id,
|
|
82
|
+
channels: channelMap,
|
|
83
|
+
default_channel: defaultChannel,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Step 7: Set default project
|
|
87
|
+
const projectNames = Object.keys(projects);
|
|
88
|
+
let defaultProject;
|
|
89
|
+
if (projectNames.length === 1) {
|
|
90
|
+
defaultProject = projectNames[0];
|
|
91
|
+
console.log(`\n Default project: ${defaultProject} (only project)`);
|
|
92
|
+
}
|
|
93
|
+
else if (projectNames.length > 1) {
|
|
94
|
+
console.log("\n Configured projects:");
|
|
95
|
+
for (let i = 0; i < projectNames.length; i++) {
|
|
96
|
+
console.log(` [${i + 1}] ${projectNames[i]}`);
|
|
97
|
+
}
|
|
98
|
+
const choice = await askQuestion(rl, ` Default project [1]: `);
|
|
99
|
+
const idx = parseInt(choice.trim() || "1", 10) - 1;
|
|
100
|
+
if (idx >= 0 && idx < projectNames.length) {
|
|
101
|
+
defaultProject = projectNames[idx];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Step 8: Configure notification routing
|
|
105
|
+
const notificationRouting = await configureNotificationRouting(rl, projects, defaultProject);
|
|
106
|
+
// Step 9: Build and write global config
|
|
107
|
+
const config = {
|
|
108
|
+
projects,
|
|
109
|
+
default_project: defaultProject,
|
|
110
|
+
notification_routing: Object.keys(notificationRouting).length > 0 ? notificationRouting : undefined,
|
|
111
|
+
};
|
|
112
|
+
writeFileSync(GLOBAL_CONFIG_PATH, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
113
|
+
console.log(`\n Global config written to: ${GLOBAL_CONFIG_PATH}`);
|
|
114
|
+
// Step 10: Optionally generate per-project config
|
|
115
|
+
await maybeGeneratePerProjectConfig(rl, config);
|
|
116
|
+
console.log("\n Setup complete. Run `discord-ops health` to verify.\n");
|
|
117
|
+
await cleanup(client, rl);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
121
|
+
logger.error("Setup wizard failed", { error: message });
|
|
122
|
+
console.error(`\n Setup failed: ${message}\n`);
|
|
123
|
+
rl.close();
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function checkExistingConfig(rl) {
|
|
128
|
+
if (!existsSync(GLOBAL_CONFIG_PATH)) {
|
|
129
|
+
console.log(" No existing config found. Starting fresh.\n");
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
console.log(` Found existing config: ${GLOBAL_CONFIG_PATH}\n`);
|
|
133
|
+
try {
|
|
134
|
+
const raw = JSON.parse(readFileSync(GLOBAL_CONFIG_PATH, "utf-8"));
|
|
135
|
+
const projectCount = Object.keys(raw.projects ?? {}).length;
|
|
136
|
+
console.log(` Current config has ${projectCount} project(s).`);
|
|
137
|
+
const action = await askQuestion(rl, " [u]pdate existing / [o]verwrite / [q]uit? [u]: ");
|
|
138
|
+
const choice = action.trim().toLowerCase() || "u";
|
|
139
|
+
if (choice === "q") {
|
|
140
|
+
console.log(" Setup cancelled.");
|
|
141
|
+
rl.close();
|
|
142
|
+
process.exit(0);
|
|
143
|
+
}
|
|
144
|
+
if (choice === "o") {
|
|
145
|
+
console.log(" Starting fresh (existing config will be overwritten).\n");
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
console.log(" Updating existing config.\n");
|
|
149
|
+
return raw;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
console.log(" Existing config is invalid. Starting fresh.\n");
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async function obtainToken(rl) {
|
|
157
|
+
const envToken = process.env.DISCORD_TOKEN;
|
|
158
|
+
if (envToken) {
|
|
159
|
+
console.log(" DISCORD_TOKEN environment variable detected.");
|
|
160
|
+
const useEnv = await askQuestion(rl, " Use this token? [Y/n]: ");
|
|
161
|
+
if (useEnv.trim().toLowerCase() !== "n") {
|
|
162
|
+
return envToken;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const token = await askQuestion(rl, " Enter Discord bot token: ");
|
|
166
|
+
const trimmed = token.trim();
|
|
167
|
+
if (!trimmed) {
|
|
168
|
+
throw new Error("No token provided. Set DISCORD_TOKEN or enter one manually.");
|
|
169
|
+
}
|
|
170
|
+
if (trimmed.length < 50) {
|
|
171
|
+
throw new Error("Token appears too short. Discord bot tokens are at least 50 characters.");
|
|
172
|
+
}
|
|
173
|
+
return trimmed;
|
|
174
|
+
}
|
|
175
|
+
async function connectBot(token) {
|
|
176
|
+
const client = new Client({
|
|
177
|
+
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers],
|
|
178
|
+
});
|
|
179
|
+
await client.login(token);
|
|
180
|
+
await new Promise((resolve, reject) => {
|
|
181
|
+
const timeout = setTimeout(() => {
|
|
182
|
+
reject(new Error("Timed out waiting for Discord connection (10s)"));
|
|
183
|
+
}, 10_000);
|
|
184
|
+
if (client.isReady()) {
|
|
185
|
+
clearTimeout(timeout);
|
|
186
|
+
resolve();
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
client.once("ready", () => {
|
|
190
|
+
clearTimeout(timeout);
|
|
191
|
+
resolve();
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
return client;
|
|
196
|
+
}
|
|
197
|
+
async function listGuilds(client) {
|
|
198
|
+
const guilds = [];
|
|
199
|
+
for (const [id, guild] of client.guilds.cache) {
|
|
200
|
+
guilds.push({ id, name: guild.name });
|
|
201
|
+
}
|
|
202
|
+
return guilds.sort((a, b) => a.name.localeCompare(b.name));
|
|
203
|
+
}
|
|
204
|
+
async function selectGuilds(rl, guilds) {
|
|
205
|
+
if (guilds.length === 1) {
|
|
206
|
+
const confirm = await askQuestion(rl, `\n Configure "${guilds[0].name}"? [Y/n]: `);
|
|
207
|
+
if (confirm.trim().toLowerCase() === "n") {
|
|
208
|
+
throw new Error("No guilds selected. Nothing to configure.");
|
|
209
|
+
}
|
|
210
|
+
return guilds;
|
|
211
|
+
}
|
|
212
|
+
const input = await askQuestion(rl, `\n Select guilds to configure (comma-separated numbers, or 'all') [all]: `);
|
|
213
|
+
const choice = input.trim().toLowerCase() || "all";
|
|
214
|
+
if (choice === "all") {
|
|
215
|
+
return guilds;
|
|
216
|
+
}
|
|
217
|
+
const indices = choice
|
|
218
|
+
.split(",")
|
|
219
|
+
.map((s) => parseInt(s.trim(), 10) - 1)
|
|
220
|
+
.filter((i) => i >= 0 && i < guilds.length);
|
|
221
|
+
if (indices.length === 0) {
|
|
222
|
+
throw new Error("No valid guilds selected.");
|
|
223
|
+
}
|
|
224
|
+
return indices.map((i) => guilds[i]);
|
|
225
|
+
}
|
|
226
|
+
async function listChannels(client, guildId) {
|
|
227
|
+
const guild = await client.guilds.fetch(guildId);
|
|
228
|
+
const allChannels = await guild.channels.fetch();
|
|
229
|
+
const textChannels = [];
|
|
230
|
+
for (const [, channel] of allChannels) {
|
|
231
|
+
if (channel && channel.type === ChannelType.GuildText) {
|
|
232
|
+
textChannels.push({
|
|
233
|
+
id: channel.id,
|
|
234
|
+
name: channel.name,
|
|
235
|
+
type: channel.type,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return textChannels.sort((a, b) => a.name.localeCompare(b.name));
|
|
240
|
+
}
|
|
241
|
+
async function assignChannelAliases(rl, channels) {
|
|
242
|
+
console.log(`\n Assign aliases to channels. Suggested: ${SUGGESTED_ALIASES.join(", ")}`);
|
|
243
|
+
console.log(" Enter channel number and alias, or press Enter to skip.");
|
|
244
|
+
console.log(' Format: <number>=<alias> (e.g., "1=dev" or "3=alerts")');
|
|
245
|
+
console.log(' Type "done" when finished.\n');
|
|
246
|
+
const channelMap = {};
|
|
247
|
+
// Auto-suggest aliases based on channel names
|
|
248
|
+
const autoMatched = [];
|
|
249
|
+
for (const ch of channels) {
|
|
250
|
+
const matchedAlias = SUGGESTED_ALIASES.find((alias) => ch.name.includes(alias) || alias.includes(ch.name));
|
|
251
|
+
if (matchedAlias && !Object.values(channelMap).includes(matchedAlias)) {
|
|
252
|
+
channelMap[matchedAlias] = ch.id;
|
|
253
|
+
autoMatched.push(`${matchedAlias} -> #${ch.name}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
if (autoMatched.length > 0) {
|
|
257
|
+
console.log(" Auto-matched channels:");
|
|
258
|
+
for (const m of autoMatched) {
|
|
259
|
+
console.log(` ${m}`);
|
|
260
|
+
}
|
|
261
|
+
const keepAuto = await askQuestion(rl, "\n Keep auto-matched aliases? [Y/n]: ");
|
|
262
|
+
if (keepAuto.trim().toLowerCase() === "n") {
|
|
263
|
+
for (const key of Object.keys(channelMap)) {
|
|
264
|
+
delete channelMap[key];
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Manual assignment loop
|
|
269
|
+
while (true) {
|
|
270
|
+
const input = await askQuestion(rl, " Assign (number=alias or 'done'): ");
|
|
271
|
+
const trimmed = input.trim().toLowerCase();
|
|
272
|
+
if (trimmed === "done" || trimmed === "") {
|
|
273
|
+
if (Object.keys(channelMap).length === 0) {
|
|
274
|
+
console.log(" Warning: No channels aliased. At least one is recommended.");
|
|
275
|
+
const cont = await askQuestion(rl, " Continue anyway? [y/N]: ");
|
|
276
|
+
if (cont.trim().toLowerCase() !== "y")
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
const match = trimmed.match(/^(\d+)\s*=\s*(.+)$/);
|
|
282
|
+
if (!match) {
|
|
283
|
+
console.log(' Invalid format. Use "number=alias" (e.g., "1=dev").');
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
const idx = parseInt(match[1], 10) - 1;
|
|
287
|
+
const alias = match[2].trim();
|
|
288
|
+
if (idx < 0 || idx >= channels.length) {
|
|
289
|
+
console.log(` Invalid channel number. Choose 1-${channels.length}.`);
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
channelMap[alias] = channels[idx].id;
|
|
293
|
+
console.log(` ${alias} -> #${channels[idx].name}`);
|
|
294
|
+
}
|
|
295
|
+
return channelMap;
|
|
296
|
+
}
|
|
297
|
+
async function selectDefaultChannel(rl, channelMap) {
|
|
298
|
+
const aliases = Object.keys(channelMap);
|
|
299
|
+
if (aliases.length === 0)
|
|
300
|
+
return undefined;
|
|
301
|
+
if (aliases.length === 1) {
|
|
302
|
+
console.log(` Default channel: ${aliases[0]} (only channel)`);
|
|
303
|
+
return aliases[0];
|
|
304
|
+
}
|
|
305
|
+
console.log("\n Available aliases:");
|
|
306
|
+
for (let i = 0; i < aliases.length; i++) {
|
|
307
|
+
console.log(` [${i + 1}] ${aliases[i]}`);
|
|
308
|
+
}
|
|
309
|
+
const choice = await askQuestion(rl, ` Default channel [1]: `);
|
|
310
|
+
const idx = parseInt(choice.trim() || "1", 10) - 1;
|
|
311
|
+
if (idx >= 0 && idx < aliases.length) {
|
|
312
|
+
return aliases[idx];
|
|
313
|
+
}
|
|
314
|
+
return aliases[0];
|
|
315
|
+
}
|
|
316
|
+
async function configureNotificationRouting(rl, projects, defaultProject) {
|
|
317
|
+
const routing = {};
|
|
318
|
+
const wantRouting = await askQuestion(rl, "\n Configure notification routing? [y/N]: ");
|
|
319
|
+
if (wantRouting.trim().toLowerCase() !== "y") {
|
|
320
|
+
return routing;
|
|
321
|
+
}
|
|
322
|
+
// Collect all available channel aliases across projects
|
|
323
|
+
const projectName = defaultProject ?? Object.keys(projects)[0];
|
|
324
|
+
const project = projectName ? projects[projectName] : undefined;
|
|
325
|
+
if (!project) {
|
|
326
|
+
console.log(" No project available for routing. Skipping.");
|
|
327
|
+
return routing;
|
|
328
|
+
}
|
|
329
|
+
const aliases = Object.keys(project.channels);
|
|
330
|
+
if (aliases.length === 0) {
|
|
331
|
+
console.log(" No channel aliases configured. Skipping routing.");
|
|
332
|
+
return routing;
|
|
333
|
+
}
|
|
334
|
+
console.log(`\n Route notification types to channels in "${projectName}":`);
|
|
335
|
+
console.log(` Available aliases: ${aliases.join(", ")}`);
|
|
336
|
+
console.log(" Press Enter to skip a type.\n");
|
|
337
|
+
for (const type of NOTIFICATION_TYPES) {
|
|
338
|
+
const suggestion = aliases.find((a) => (type === "ci_build" && (a === "builds" || a === "dev")) ||
|
|
339
|
+
(type === "deploy" && (a === "deploys" || a === "releases")) ||
|
|
340
|
+
(type === "release" && (a === "releases" || a === "announcements")) ||
|
|
341
|
+
(type === "error" && (a === "errors" || a === "alerts")) ||
|
|
342
|
+
(type === "announcement" && (a === "announcements" || a === "general")) ||
|
|
343
|
+
(type === "dev" && a === "dev"));
|
|
344
|
+
const hint = suggestion ? ` [${suggestion}]` : "";
|
|
345
|
+
const answer = await askQuestion(rl, ` ${type}${hint}: `);
|
|
346
|
+
const alias = answer.trim() || suggestion;
|
|
347
|
+
if (alias && aliases.includes(alias)) {
|
|
348
|
+
routing[type] = alias;
|
|
349
|
+
}
|
|
350
|
+
else if (alias) {
|
|
351
|
+
console.log(` "${alias}" is not a known alias, skipping.`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return routing;
|
|
355
|
+
}
|
|
356
|
+
async function maybeGeneratePerProjectConfig(rl, config) {
|
|
357
|
+
const projectNames = Object.keys(config.projects);
|
|
358
|
+
if (projectNames.length === 0)
|
|
359
|
+
return;
|
|
360
|
+
const wantLocal = await askQuestion(rl, " Generate .discord-ops.json in current directory? [y/N]: ");
|
|
361
|
+
if (wantLocal.trim().toLowerCase() !== "y")
|
|
362
|
+
return;
|
|
363
|
+
let projectName;
|
|
364
|
+
if (projectNames.length === 1) {
|
|
365
|
+
projectName = projectNames[0];
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
console.log("\n Which project for this directory?");
|
|
369
|
+
for (let i = 0; i < projectNames.length; i++) {
|
|
370
|
+
console.log(` [${i + 1}] ${projectNames[i]}`);
|
|
371
|
+
}
|
|
372
|
+
const choice = await askQuestion(rl, ` Select [1]: `);
|
|
373
|
+
const idx = parseInt(choice.trim() || "1", 10) - 1;
|
|
374
|
+
projectName = projectNames[idx >= 0 && idx < projectNames.length ? idx : 0];
|
|
375
|
+
}
|
|
376
|
+
const perProject = {
|
|
377
|
+
project: projectName,
|
|
378
|
+
notification_routing: config.notification_routing,
|
|
379
|
+
};
|
|
380
|
+
const localPath = join(process.cwd(), ".discord-ops.json");
|
|
381
|
+
writeFileSync(localPath, JSON.stringify(perProject, null, 2) + "\n", "utf-8");
|
|
382
|
+
console.log(` Per-project config written to: ${localPath}`);
|
|
383
|
+
}
|
|
384
|
+
function slugify(name) {
|
|
385
|
+
return name
|
|
386
|
+
.toLowerCase()
|
|
387
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
388
|
+
.replace(/^-|-$/g, "");
|
|
389
|
+
}
|
|
390
|
+
async function askQuestion(rl, question) {
|
|
391
|
+
return rl.question(question);
|
|
392
|
+
}
|
|
393
|
+
async function cleanup(client, rl) {
|
|
394
|
+
client.destroy();
|
|
395
|
+
rl.close();
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ import { Client, type Guild, type TextChannel } from "discord.js";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class DiscordClient {
|
|
9
9
|
private connections;
|
|
10
|
-
private defaultToken
|
|
10
|
+
private defaultToken?;
|
|
11
11
|
private guildCache;
|
|
12
|
-
constructor(defaultToken
|
|
12
|
+
constructor(defaultToken?: string);
|
|
13
13
|
private getConnection;
|
|
14
14
|
/**
|
|
15
15
|
* Returns the underlying discord.js Client for the given token.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAkErF;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAS;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAkErF;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA4B;gBAElC,YAAY,CAAC,EAAE,MAAM;IAUjC,OAAO,CAAC,aAAa;IAqBrB;;;OAGG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAWzD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
|
package/dist/client.js
CHANGED
|
@@ -67,14 +67,19 @@ export class DiscordClient {
|
|
|
67
67
|
defaultToken;
|
|
68
68
|
guildCache = new TTLCache(300);
|
|
69
69
|
constructor(defaultToken) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
if (defaultToken) {
|
|
71
|
+
const validation = validateTokenFormat(defaultToken);
|
|
72
|
+
if (!validation.valid) {
|
|
73
|
+
throw new Error(`Invalid Discord token: ${validation.reason}`);
|
|
74
|
+
}
|
|
73
75
|
}
|
|
74
76
|
this.defaultToken = defaultToken;
|
|
75
77
|
}
|
|
76
78
|
getConnection(token) {
|
|
77
79
|
const t = token ?? this.defaultToken;
|
|
80
|
+
if (!t) {
|
|
81
|
+
throw new Error("No Discord token available. Set DISCORD_TOKEN, DISCORD_OPS_TOKEN_ENV, or use per-project token_env.");
|
|
82
|
+
}
|
|
78
83
|
let conn = this.connections.get(t);
|
|
79
84
|
if (!conn) {
|
|
80
85
|
if (t !== this.defaultToken) {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAgC,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;GAEG;AACH,MAAM,aAAa;IACT,MAAM,GAAkB,IAAI,CAAC;IAC7B,UAAU,GAA2B,IAAI,CAAC;IAC1C,KAAK,CAAS;IAEtB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,OAAO,EAAE;gBACP,iBAAiB,CAAC,MAAM;gBACxB,iBAAiB,CAAC,aAAa;gBAC/B,iBAAiB,CAAC,YAAY;gBAC9B,iBAAiB,CAAC,cAAc;aACjC;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACnC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAChB,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,YAAY,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAepF;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAkCzC;AAyCD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -14,7 +14,10 @@ export function getTokenForProject(projectName, config) {
|
|
|
14
14
|
const token = process.env[project.token_env];
|
|
15
15
|
if (token)
|
|
16
16
|
return token;
|
|
17
|
-
logger.warn(`token_env "${project.token_env}" for project "${projectName}" is not set, falling back to
|
|
17
|
+
logger.warn(`token_env "${project.token_env}" for project "${projectName}" is not set, falling back to default token`);
|
|
18
|
+
}
|
|
19
|
+
if (!config.defaultToken) {
|
|
20
|
+
throw new Error(`No token available for project "${projectName}": token_env is not set or empty, and no default token configured`);
|
|
18
21
|
}
|
|
19
22
|
return config.defaultToken;
|
|
20
23
|
}
|
|
@@ -27,12 +30,25 @@ export function getTokenForProject(projectName, config) {
|
|
|
27
30
|
* 3. Direct params always work regardless
|
|
28
31
|
*/
|
|
29
32
|
export function loadConfig() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
33
|
+
// Option A: DISCORD_OPS_TOKEN_ENV lets callers specify which env var holds the default token
|
|
34
|
+
const tokenEnvName = process.env.DISCORD_OPS_TOKEN_ENV ?? "DISCORD_TOKEN";
|
|
35
|
+
const defaultToken = process.env[tokenEnvName] || undefined;
|
|
34
36
|
const global = loadGlobalConfig();
|
|
35
37
|
const perProject = loadPerProjectConfig();
|
|
38
|
+
// Option B: if no default token, validate that all projects have their own token_env
|
|
39
|
+
if (!defaultToken) {
|
|
40
|
+
const projectEntries = Object.entries(global.projects);
|
|
41
|
+
if (projectEntries.length === 0) {
|
|
42
|
+
throw new Error(`${tokenEnvName} environment variable is required (no projects with token_env configured)`);
|
|
43
|
+
}
|
|
44
|
+
const missing = projectEntries
|
|
45
|
+
.filter(([, p]) => !p.token_env || !process.env[p.token_env])
|
|
46
|
+
.map(([name]) => name);
|
|
47
|
+
if (missing.length > 0) {
|
|
48
|
+
throw new Error(`${tokenEnvName} is not set, and these projects lack a valid token_env: ${missing.join(", ")}`);
|
|
49
|
+
}
|
|
50
|
+
logger.info(`No default token set — all ${projectEntries.length} project(s) use per-project token_env`);
|
|
51
|
+
}
|
|
36
52
|
return { global, perProject, defaultToken };
|
|
37
53
|
}
|
|
38
54
|
function loadGlobalConfig() {
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AAQrB;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,MAAoB;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,CAAC,IAAI,CACT,cAAc,OAAO,CAAC,SAAS,kBAAkB,WAAW,6CAA6C,CAC1G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -69,16 +69,22 @@ export declare const PerProjectConfigSchema: z.ZodObject<{
|
|
|
69
69
|
}>;
|
|
70
70
|
export type PerProjectConfig = z.infer<typeof PerProjectConfigSchema>;
|
|
71
71
|
export declare const EnvConfigSchema: z.ZodObject<{
|
|
72
|
-
DISCORD_TOKEN: z.ZodString
|
|
72
|
+
DISCORD_TOKEN: z.ZodOptional<z.ZodString>;
|
|
73
|
+
DISCORD_OPS_TOKEN_ENV: z.ZodOptional<z.ZodString>;
|
|
73
74
|
DISCORD_OPS_CONFIG: z.ZodOptional<z.ZodString>;
|
|
74
75
|
DISCORD_OPS_LOG_LEVEL: z.ZodOptional<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
76
|
+
DISCORD_OPS_DRY_RUN: z.ZodOptional<z.ZodString>;
|
|
75
77
|
}, "strip", z.ZodTypeAny, {
|
|
76
|
-
DISCORD_TOKEN: string;
|
|
77
78
|
DISCORD_OPS_LOG_LEVEL?: "debug" | "info" | "warn" | "error" | undefined;
|
|
79
|
+
DISCORD_TOKEN?: string | undefined;
|
|
80
|
+
DISCORD_OPS_TOKEN_ENV?: string | undefined;
|
|
78
81
|
DISCORD_OPS_CONFIG?: string | undefined;
|
|
82
|
+
DISCORD_OPS_DRY_RUN?: string | undefined;
|
|
79
83
|
}, {
|
|
80
|
-
DISCORD_TOKEN: string;
|
|
81
84
|
DISCORD_OPS_LOG_LEVEL?: "debug" | "info" | "warn" | "error" | undefined;
|
|
85
|
+
DISCORD_TOKEN?: string | undefined;
|
|
86
|
+
DISCORD_OPS_TOKEN_ENV?: string | undefined;
|
|
82
87
|
DISCORD_OPS_CONFIG?: string | undefined;
|
|
88
|
+
DISCORD_OPS_DRY_RUN?: string | undefined;
|
|
83
89
|
}>;
|
|
84
90
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,8EAO3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,8EAO3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -23,8 +23,10 @@ export const PerProjectConfigSchema = z.object({
|
|
|
23
23
|
notification_routing: z.record(NotificationType, z.string()).optional(),
|
|
24
24
|
});
|
|
25
25
|
export const EnvConfigSchema = z.object({
|
|
26
|
-
DISCORD_TOKEN: z.string().min(50),
|
|
26
|
+
DISCORD_TOKEN: z.string().min(50).optional(),
|
|
27
|
+
DISCORD_OPS_TOKEN_ENV: z.string().optional(),
|
|
27
28
|
DISCORD_OPS_CONFIG: z.string().optional(),
|
|
28
29
|
DISCORD_OPS_LOG_LEVEL: z.enum(["debug", "info", "warn", "error"]).optional(),
|
|
30
|
+
DISCORD_OPS_DRY_RUN: z.string().optional(),
|
|
29
31
|
});
|
|
30
32
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,UAAU;IACV,QAAQ;IACR,SAAS;IACT,OAAO;IACP,cAAc;IACd,KAAK;CACN,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,sCAAsC,CAAC;IACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC;IACnD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,UAAU;IACV,QAAQ;IACR,SAAS;IACT,OAAO;IACP,cAAc;IACd,KAAK;CACN,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,sCAAsC,CAAC;IACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC;IACnD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5E,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { ToolContext } from "./tools/types.js";
|
|
3
|
-
export
|
|
3
|
+
export interface ServerOptions {
|
|
4
|
+
dryRun?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function createServer(ctx: ToolContext, options?: ServerOptions): McpServer;
|
|
4
7
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuBpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuBpD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CA4HjF"}
|