discord-ops 0.21.2 → 0.22.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 +18 -129
- package/README.md +16 -9
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +36 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/validate-flags.d.ts.map +1 -1
- package/dist/cli/validate-flags.js +5 -0
- package/dist/cli/validate-flags.js.map +1 -1
- package/dist/cli/validate.d.ts +6 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +30 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +13 -5
- package/dist/client.js.map +1 -1
- package/dist/profiles/index.d.ts +5 -0
- package/dist/profiles/index.d.ts.map +1 -1
- package/dist/profiles/index.js +14 -0
- package/dist/profiles/index.js.map +1 -1
- package/dist/routing/fuzzy.d.ts +0 -1
- package/dist/routing/fuzzy.d.ts.map +1 -1
- package/dist/routing/fuzzy.js +0 -25
- package/dist/routing/fuzzy.js.map +1 -1
- package/dist/routing/resolver.d.ts +6 -1
- package/dist/routing/resolver.d.ts.map +1 -1
- package/dist/routing/resolver.js +1 -1
- package/dist/routing/resolver.js.map +1 -1
- package/dist/security/rate-limiter.d.ts.map +1 -1
- package/dist/security/rate-limiter.js +4 -0
- package/dist/security/rate-limiter.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +20 -4
- 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/guilds/create-invite.d.ts.map +1 -1
- package/dist/tools/guilds/create-invite.js +4 -10
- package/dist/tools/guilds/create-invite.js.map +1 -1
- 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/index.d.ts.map +1 -1
- package/dist/tools/index.js +12 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/messaging/get-messages.d.ts.map +1 -1
- package/dist/tools/messaging/get-messages.js +21 -2
- package/dist/tools/messaging/get-messages.js.map +1 -1
- package/dist/tools/messaging/index.d.ts +5 -0
- package/dist/tools/messaging/index.d.ts.map +1 -1
- package/dist/tools/messaging/index.js +5 -0
- package/dist/tools/messaging/index.js.map +1 -1
- package/dist/tools/messaging/send-template.d.ts.map +1 -1
- package/dist/tools/messaging/send-template.js +14 -0
- package/dist/tools/messaging/send-template.js.map +1 -1
- package/dist/tools/moderation/timeout-member.d.ts.map +1 -1
- package/dist/tools/moderation/timeout-member.js +1 -0
- package/dist/tools/moderation/timeout-member.js.map +1 -1
- package/dist/tools/threads/list-threads.d.ts.map +1 -1
- package/dist/tools/threads/list-threads.js +22 -1
- package/dist/tools/threads/list-threads.js.map +1 -1
- package/dist/transport/http.d.ts +4 -2
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +20 -3
- package/dist/transport/http.js.map +1 -1
- package/dist/utils/cache.d.ts +3 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js +28 -1
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/og-fetch.d.ts.map +1 -1
- package/dist/utils/og-fetch.js +35 -10
- package/dist/utils/og-fetch.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# discord-ops
|
|
2
2
|
|
|
3
|
+
## 0.22.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a7f7218: Engineering audit remediation: 32 findings fixed across 5 epics.
|
|
8
|
+
|
|
9
|
+
**Breaking:** `get_messages` now returns full embed and attachment objects instead of counts. `embeds` changes from `number` to `array`, `attachments` from `number` to `array`. Update consumers checking `embeds > 0` to `embeds.length > 0`.
|
|
10
|
+
|
|
11
|
+
**New tools:** `send_template`, `list_templates`, `pin_message`, `unpin_message`, `notify_owners`, `get_invites` (42 → 48 tools).
|
|
12
|
+
|
|
13
|
+
**CLI:** `setup`, `run`, `validate` subcommands now wired. Flags `--allow-unauthenticated`, `--profile`, `--tools`, `--dry-run`, `--args` accepted. Version reads from package.json dynamically.
|
|
14
|
+
|
|
15
|
+
**Bug fixes:** `list_threads` respects `archived` param. `timeout_member` marked destructive. `resolveTarget` returns `undefined` instead of `""` for missing guild. Permission pre-flight logs errors.
|
|
16
|
+
|
|
17
|
+
**Security:** SSRF DNS pinning prevents rebinding. Template URL vars validated. X-Forwarded-For parsed right-to-left. Per-project rate limit buckets. Extended reserved IP blocking. Token hashing for cache keys. IP counter hard cap.
|
|
18
|
+
|
|
19
|
+
**Code quality:** Dead code removed. TTLCache max-size eviction. Profile tool name validation at startup. Rate limiter bucket pruning.
|
|
20
|
+
|
|
3
21
|
## 0.21.2
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -150,14 +168,6 @@
|
|
|
150
168
|
- `move_channel` — reposition a channel or category relative to another channel using `before_id`/`after_id` instead of fragile raw position integers. Resolves sibling positions automatically.
|
|
151
169
|
- `notify_owners` — standalone owner ping tool. Sends `<@mention>`s to a channel based on `notification_type` without a full message or embed. No-ops silently if the type isn't in the project's `notify_owners_on` list. Supports optional message text appended after mentions.
|
|
152
170
|
|
|
153
|
-
## 0.18.0
|
|
154
|
-
|
|
155
|
-
### Minor Changes
|
|
156
|
-
|
|
157
|
-
- 637362e: feat: add move_channel and notify_owners tools
|
|
158
|
-
- `move_channel` — reposition a channel or category relative to another channel using `before_id`/`after_id` instead of fragile raw position integers. Resolves sibling positions automatically.
|
|
159
|
-
- `notify_owners` — standalone owner ping tool. Sends `<@mention>`s to a channel based on `notification_type` without a full message or embed. No-ops silently if the type isn't in the project's `notify_owners_on` list. Supports optional message text appended after mentions.
|
|
160
|
-
|
|
161
171
|
## 0.17.0
|
|
162
172
|
|
|
163
173
|
### Minor Changes
|
|
@@ -178,58 +188,6 @@
|
|
|
178
188
|
|
|
179
189
|
- 350cb59: fix: release workflow — truncate highlights to Discord 1024-char field limit, auto-sync main back to staging after publish
|
|
180
190
|
|
|
181
|
-
## 0.16.0
|
|
182
|
-
|
|
183
|
-
### Minor Changes
|
|
184
|
-
|
|
185
|
-
- b42d0fe: feat: add `run` CLI subcommand and inline JSON support for `DISCORD_OPS_CONFIG`
|
|
186
|
-
- `discord-ops run <tool> --args '<json>'` — execute any tool directly from shell, no AI/MCP required. Supports the full tool suite including `send_template`, `send_message`, `send_embed`, and all 46 tools.
|
|
187
|
-
- `DISCORD_OPS_CONFIG` now accepts an inline JSON string in addition to a file path — if the value starts with `{` it is parsed directly. Eliminates the need to write config files in CI environments.
|
|
188
|
-
- `release.yml` GitHub Actions workflow — automatically posts a rich Discord release notification to `#releases` after every successful npm publish via changesets.
|
|
189
|
-
- README — new CLI `run` docs with examples, CI/CD integration section with config shape, GitHub Actions example, and updated `DISCORD_OPS_CONFIG` env var description.
|
|
190
|
-
|
|
191
|
-
### Patch Changes
|
|
192
|
-
|
|
193
|
-
- b42d0fe: fix: add "alert" to NotificationType enum — global config with alert in notify_owners_on caused config parse failure and MCP startup crash
|
|
194
|
-
- b42d0fe: fix: clean up changelog formatting in Discord release notifications — section headers now render as bold text, commit hashes stripped from bullet lines
|
|
195
|
-
- b42d0fe: Fix stale npx cache — use `discord-ops@latest` in MCP config
|
|
196
|
-
|
|
197
|
-
Without `@latest`, npx may serve a cached older version indefinitely, causing MCP clients to run stale code even after new releases are published. All MCP config examples in the README updated to use `discord-ops@latest`.
|
|
198
|
-
|
|
199
|
-
## 0.15.0
|
|
200
|
-
|
|
201
|
-
### Minor Changes
|
|
202
|
-
|
|
203
|
-
- 01c3e44: feat: add `run` CLI subcommand and inline JSON support for `DISCORD_OPS_CONFIG`
|
|
204
|
-
- `discord-ops run <tool> --args '<json>'` — execute any tool directly from shell, no AI/MCP required. Supports the full tool suite including `send_template`, `send_message`, `send_embed`, and all 46 tools.
|
|
205
|
-
- `DISCORD_OPS_CONFIG` now accepts an inline JSON string in addition to a file path — if the value starts with `{` it is parsed directly. Eliminates the need to write config files in CI environments.
|
|
206
|
-
- `release.yml` GitHub Actions workflow — automatically posts a rich Discord release notification to `#releases` after every successful npm publish via changesets.
|
|
207
|
-
- README — new CLI `run` docs with examples, CI/CD integration section with config shape, GitHub Actions example, and updated `DISCORD_OPS_CONFIG` env var description.
|
|
208
|
-
|
|
209
|
-
### Patch Changes
|
|
210
|
-
|
|
211
|
-
- 01c3e44: fix: add "alert" to NotificationType enum — global config with alert in notify_owners_on caused config parse failure and MCP startup crash
|
|
212
|
-
- 01c3e44: Fix stale npx cache — use `discord-ops@latest` in MCP config
|
|
213
|
-
|
|
214
|
-
Without `@latest`, npx may serve a cached older version indefinitely, causing MCP clients to run stale code even after new releases are published. All MCP config examples in the README updated to use `discord-ops@latest`.
|
|
215
|
-
|
|
216
|
-
## 0.14.3
|
|
217
|
-
|
|
218
|
-
### Patch Changes
|
|
219
|
-
|
|
220
|
-
- 6bd5a54: fix: add "alert" to NotificationType enum — global config with alert in notify_owners_on caused config parse failure and MCP startup crash
|
|
221
|
-
- 6bd5a54: Fix stale npx cache — use `discord-ops@latest` in MCP config
|
|
222
|
-
|
|
223
|
-
Without `@latest`, npx may serve a cached older version indefinitely, causing MCP clients to run stale code even after new releases are published. All MCP config examples in the README updated to use `discord-ops@latest`.
|
|
224
|
-
|
|
225
|
-
## 0.14.2
|
|
226
|
-
|
|
227
|
-
### Patch Changes
|
|
228
|
-
|
|
229
|
-
- 9fb0d4b: Fix stale npx cache — use `discord-ops@latest` in MCP config
|
|
230
|
-
|
|
231
|
-
Without `@latest`, npx may serve a cached older version indefinitely, causing MCP clients to run stale code even after new releases are published. All MCP config examples in the README updated to use `discord-ops@latest`.
|
|
232
|
-
|
|
233
191
|
## 0.14.1
|
|
234
192
|
|
|
235
193
|
### Patch Changes
|
|
@@ -286,75 +244,6 @@
|
|
|
286
244
|
|
|
287
245
|
When `channel_id` was passed directly to `resolveTarget`, the returned `ResolvedTarget` was missing the `token` field even if a `project` was specified. This caused direct-channel-ID calls in multi-bot setups to fall back to the default bot token instead of the project-specific one.
|
|
288
246
|
|
|
289
|
-
## 0.13.0
|
|
290
|
-
|
|
291
|
-
### Minor Changes
|
|
292
|
-
|
|
293
|
-
- 4928e5e: Auto-embed for send_message and health endpoint version field
|
|
294
|
-
- **Auto-embed for `send_message`**: Messages are now automatically wrapped in a polished embed (color bar, description, timestamp) via the new `simple` template. Set `raw: true` to send plain text. Every message looks professional by default.
|
|
295
|
-
- **`simple` template**: New minimal utility template — just a branded embed with optional title, color, author, and footer. Used automatically by `send_message`, also available via `send_template`.
|
|
296
|
-
- **Health endpoint `version` field**: `GET /health` now includes the `discord-ops` package version for deployment verification.
|
|
297
|
-
|
|
298
|
-
- 4928e5e: feat: add position parameter to edit_channel
|
|
299
|
-
|
|
300
|
-
`edit_channel` now accepts an optional `position` integer (0-indexed) to reorder channels and categories within a guild. This enables programmatic channel ordering without needing separate Discord admin UI access.
|
|
301
|
-
|
|
302
|
-
- 4928e5e: Live channel name resolution — fuzzy.ts was dead code, now it works
|
|
303
|
-
- **Channel fuzzy resolution**: The `channel` param now resolves in four layers — exact alias match, fuzzy alias match (e.g. `"build"` hits `"builds"`), then a live Discord API lookup that finds channels by their actual Discord name (e.g. `channel: "general"` now works even with no configured alias).
|
|
304
|
-
- **Fuzzy alias matching**: Configured channel aliases are now fuzzy-matched before falling back to Discord, so near-misses on alias names resolve correctly.
|
|
305
|
-
- **`list_templates` fix**: Internal `simple` template (used for auto-embed) no longer appears in `list_templates` output — count now correctly shows 23.
|
|
306
|
-
|
|
307
|
-
- 4928e5e: New send_embed tool with server-side OG metadata fetching
|
|
308
|
-
|
|
309
|
-
### Patch Changes
|
|
310
|
-
|
|
311
|
-
- 4928e5e: fix: isConnected no longer throws in multi-bot setups
|
|
312
|
-
|
|
313
|
-
`DiscordClient.isConnected` was calling `getConnection()` with no token, which throws when no default `DISCORD_TOKEN` is set. Any setup that uses only per-project `token_env` (the standard multi-bot pattern) would immediately crash with "No Discord token available" on the first `health_check` call — before per-project tokens were ever checked. `isConnected` now returns `false` instead of throwing when there is no default token.
|
|
314
|
-
|
|
315
|
-
- 4928e5e: fix: resolver now includes bot token when channel_id is provided directly
|
|
316
|
-
|
|
317
|
-
When `channel_id` was passed directly to `resolveTarget`, the returned `ResolvedTarget` was missing the `token` field even if a `project` was specified. This caused direct-channel-ID calls in multi-bot setups to fall back to the default bot token instead of the project-specific one.
|
|
318
|
-
|
|
319
|
-
## 0.12.0
|
|
320
|
-
|
|
321
|
-
### Minor Changes
|
|
322
|
-
|
|
323
|
-
- e70b6ac: Auto-embed for send_message and health endpoint version field
|
|
324
|
-
- **Auto-embed for `send_message`**: Messages are now automatically wrapped in a polished embed (color bar, description, timestamp) via the new `simple` template. Set `raw: true` to send plain text. Every message looks professional by default.
|
|
325
|
-
- **`simple` template**: New minimal utility template — just a branded embed with optional title, color, author, and footer. Used automatically by `send_message`, also available via `send_template`.
|
|
326
|
-
- **Health endpoint `version` field**: `GET /health` now includes the `discord-ops` package version for deployment verification.
|
|
327
|
-
|
|
328
|
-
- e70b6ac: Live channel name resolution — fuzzy.ts was dead code, now it works
|
|
329
|
-
- **Channel fuzzy resolution**: The `channel` param now resolves in four layers — exact alias match, fuzzy alias match (e.g. `"build"` hits `"builds"`), then a live Discord API lookup that finds channels by their actual Discord name (e.g. `channel: "general"` now works even with no configured alias).
|
|
330
|
-
- **Fuzzy alias matching**: Configured channel aliases are now fuzzy-matched before falling back to Discord, so near-misses on alias names resolve correctly.
|
|
331
|
-
- **`list_templates` fix**: Internal `simple` template (used for auto-embed) no longer appears in `list_templates` output — count now correctly shows 23.
|
|
332
|
-
|
|
333
|
-
- e70b6ac: New send_embed tool with server-side OG metadata fetching
|
|
334
|
-
|
|
335
|
-
## 0.11.0
|
|
336
|
-
|
|
337
|
-
### Minor Changes
|
|
338
|
-
|
|
339
|
-
- c53ebcd: Auto-embed for send_message and health endpoint version field
|
|
340
|
-
- **Auto-embed for `send_message`**: Messages are now automatically wrapped in a polished embed (color bar, description, timestamp) via the new `simple` template. Set `raw: true` to send plain text. Every message looks professional by default.
|
|
341
|
-
- **`simple` template**: New minimal utility template — just a branded embed with optional title, color, author, and footer. Used automatically by `send_message`, also available via `send_template`.
|
|
342
|
-
- **Health endpoint `version` field**: `GET /health` now includes the `discord-ops` package version for deployment verification.
|
|
343
|
-
|
|
344
|
-
- c53ebcd: Live channel name resolution — fuzzy.ts was dead code, now it works
|
|
345
|
-
- **Channel fuzzy resolution**: The `channel` param now resolves in four layers — exact alias match, fuzzy alias match (e.g. `"build"` hits `"builds"`), then a live Discord API lookup that finds channels by their actual Discord name (e.g. `channel: "general"` now works even with no configured alias).
|
|
346
|
-
- **Fuzzy alias matching**: Configured channel aliases are now fuzzy-matched before falling back to Discord, so near-misses on alias names resolve correctly.
|
|
347
|
-
- **`list_templates` fix**: Internal `simple` template (used for auto-embed) no longer appears in `list_templates` output — count now correctly shows 23.
|
|
348
|
-
|
|
349
|
-
## 0.10.0
|
|
350
|
-
|
|
351
|
-
### Minor Changes
|
|
352
|
-
|
|
353
|
-
- 6c4ef2a: Auto-embed for send_message and health endpoint version field
|
|
354
|
-
- **Auto-embed for `send_message`**: Messages are now automatically wrapped in a polished embed (color bar, description, timestamp) via the new `simple` template. Set `raw: true` to send plain text. Every message looks professional by default.
|
|
355
|
-
- **`simple` template**: New minimal utility template — just a branded embed with optional title, color, author, and footer. Used automatically by `send_message`, also available via `send_template`.
|
|
356
|
-
- **Health endpoint `version` field**: `GET /health` now includes the `discord-ops` package version for deployment verification.
|
|
357
|
-
|
|
358
247
|
## 0.9.0
|
|
359
248
|
|
|
360
249
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Agency-grade Discord MCP server with multi-guild project routing.
|
|
|
8
8
|
|
|
9
9
|
## Features
|
|
10
10
|
|
|
11
|
-
- **
|
|
11
|
+
- **48 MCP tools** — messaging, channels, moderation, roles, webhooks, audit log, threads, guilds, invites, permissions, search, 23 templates, OG embed unfurling, project introspection
|
|
12
12
|
- **Multi-guild project routing** — `send_message({ project: "my-app", channel: "builds" })` instead of raw channel IDs
|
|
13
13
|
- **Notification routing** — map notification types (`ci_build`, `deploy`, `error`) to channels per project
|
|
14
14
|
- **Owner pings** — configure project owners so releases, errors, and alerts auto-mention the right people
|
|
@@ -279,7 +279,7 @@ Useful for sharing GitHub PRs, npm releases, blog posts, or any URL with rich pr
|
|
|
279
279
|
|
|
280
280
|
## Tools
|
|
281
281
|
|
|
282
|
-
### Messaging (
|
|
282
|
+
### Messaging (12 tools)
|
|
283
283
|
|
|
284
284
|
| Tool | Description |
|
|
285
285
|
| ----------------- | ----------------------------------------------------------- |
|
|
@@ -294,8 +294,9 @@ Useful for sharing GitHub PRs, npm releases, blog posts, or any URL with rich pr
|
|
|
294
294
|
| `search_messages` | Search messages by content, author, or date range |
|
|
295
295
|
| `send_template` | Send a styled embed using a built-in template |
|
|
296
296
|
| `list_templates` | List available templates with required variables |
|
|
297
|
+
| `notify_owners` | Ping project owners based on notification type |
|
|
297
298
|
|
|
298
|
-
### Channels (
|
|
299
|
+
### Channels (9 tools)
|
|
299
300
|
|
|
300
301
|
| Tool | Description |
|
|
301
302
|
| ----------------- | ----------------------------------------------------------------------------- |
|
|
@@ -306,6 +307,7 @@ Useful for sharing GitHub PRs, npm releases, blog posts, or any URL with rich pr
|
|
|
306
307
|
| `delete_channel` | Delete a channel |
|
|
307
308
|
| `purge_messages` | Bulk-delete messages (max 100, < 14 days old) |
|
|
308
309
|
| `set_slowmode` | Set or disable slowmode |
|
|
310
|
+
| `move_channel` | Move a channel to a different category or position |
|
|
309
311
|
| `set_permissions` | Set channel permission overrides for a role or member |
|
|
310
312
|
|
|
311
313
|
### Moderation (4 tools)
|
|
@@ -376,12 +378,15 @@ Load only the tools an agent needs. Reduces schema token overhead by up to 85% f
|
|
|
376
378
|
|
|
377
379
|
### Built-in profiles
|
|
378
380
|
|
|
379
|
-
| Profile | Tools | Description
|
|
380
|
-
| ------------ | ----- |
|
|
381
|
-
| `
|
|
382
|
-
| `
|
|
383
|
-
| `
|
|
384
|
-
| `
|
|
381
|
+
| Profile | Tools | Description |
|
|
382
|
+
| ------------ | ----- | ------------------------------------------------------------------------------------------------------ |
|
|
383
|
+
| `full` | 48 | All tools (default) |
|
|
384
|
+
| `monitoring` | 6 | get_messages, send_message, add_reaction, create_thread, health_check, list_projects |
|
|
385
|
+
| `readonly` | 6 | get_messages, list_channels, list_members, get_guild, health_check, list_projects |
|
|
386
|
+
| `moderation` | 7 | get_messages, kick_member, ban_member, timeout_member, delete_message, purge_messages, query_audit_log |
|
|
387
|
+
| `messaging` | 5 | add_reaction, delete_message, edit_message, get_messages, send_message |
|
|
388
|
+
| `channels` | 7 | create_channel, delete_channel, edit_channel, get_channel, list_channels, purge_messages, set_slowmode |
|
|
389
|
+
| `webhooks` | 6 | create_webhook, delete_webhook, edit_webhook, execute_webhook, get_webhook, list_webhooks |
|
|
385
390
|
|
|
386
391
|
### Using profiles
|
|
387
392
|
|
|
@@ -763,6 +768,8 @@ Full `~/.discord-ops.json` schema with all options:
|
|
|
763
768
|
| `tool_profile_remove` | Tools to exclude from the base profile |
|
|
764
769
|
| `notification_routing` | Per-project override of global notification → channel routing |
|
|
765
770
|
|
|
771
|
+
> **Note:** `tool_profile`, `tool_profile_add`, and `tool_profile_remove` in project config are not yet implemented in the config schema. Use CLI flags `--profile` and `--tools` instead.
|
|
772
|
+
|
|
766
773
|
## Multi-Organization Troubleshooting
|
|
767
774
|
|
|
768
775
|
### Validating your config
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAmBA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -5,8 +5,14 @@ import { createServer } from "../server.js";
|
|
|
5
5
|
import { startStdioTransport } from "../transport/stdio.js";
|
|
6
6
|
import { startHttpTransport } from "../transport/http.js";
|
|
7
7
|
import { logger, setLogLevel } from "../utils/logger.js";
|
|
8
|
+
import { createRequire } from "node:module";
|
|
8
9
|
import { runInit } from "./init.js";
|
|
10
|
+
import { runSetup } from "./setup.js";
|
|
11
|
+
import { runTool } from "./run.js";
|
|
12
|
+
import { runValidate } from "./validate.js";
|
|
9
13
|
import { validateFlags } from "./validate-flags.js";
|
|
14
|
+
const require = createRequire(import.meta.url);
|
|
15
|
+
const pkg = require("../../package.json");
|
|
10
16
|
export { validateFlags } from "./validate-flags.js";
|
|
11
17
|
async function main() {
|
|
12
18
|
const args = process.argv.slice(2);
|
|
@@ -19,7 +25,7 @@ async function main() {
|
|
|
19
25
|
}
|
|
20
26
|
// Handle --version
|
|
21
27
|
if (args.includes("--version") || args.includes("-v")) {
|
|
22
|
-
console.log(
|
|
28
|
+
console.log(`discord-ops ${pkg.version}`);
|
|
23
29
|
process.exit(0);
|
|
24
30
|
}
|
|
25
31
|
// Handle init subcommand (does not require DISCORD_TOKEN)
|
|
@@ -32,6 +38,28 @@ async function main() {
|
|
|
32
38
|
await runHealthCheck();
|
|
33
39
|
return;
|
|
34
40
|
}
|
|
41
|
+
// Handle setup subcommand (interactive wizard)
|
|
42
|
+
if (args[0] === "setup") {
|
|
43
|
+
await runSetup();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Handle run subcommand (execute a single tool)
|
|
47
|
+
if (args[0] === "run") {
|
|
48
|
+
const toolName = args[1];
|
|
49
|
+
if (!toolName) {
|
|
50
|
+
console.error("Usage: discord-ops run <tool-name> --args '<json>'");
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
const argsIndex = args.indexOf("--args");
|
|
54
|
+
const rawArgs = argsIndex !== -1 ? args[argsIndex + 1] : "{}";
|
|
55
|
+
await runTool(toolName, rawArgs);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Handle validate subcommand (validate config)
|
|
59
|
+
if (args[0] === "validate") {
|
|
60
|
+
await runValidate();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
35
63
|
// Configure log level
|
|
36
64
|
const logLevel = process.env.DISCORD_OPS_LOG_LEVEL;
|
|
37
65
|
if (logLevel)
|
|
@@ -130,6 +158,9 @@ USAGE:
|
|
|
130
158
|
discord-ops serve Start MCP server (HTTP/SSE transport)
|
|
131
159
|
discord-ops health Run health check + permission audit
|
|
132
160
|
discord-ops init Scaffold a per-project .discord-ops.json
|
|
161
|
+
discord-ops setup Interactive setup wizard for config
|
|
162
|
+
discord-ops run <tool> Run a single tool from the CLI
|
|
163
|
+
discord-ops validate Validate configuration files
|
|
133
164
|
discord-ops --help Show this help
|
|
134
165
|
discord-ops --version Show version
|
|
135
166
|
|
|
@@ -137,6 +168,10 @@ OPTIONS:
|
|
|
137
168
|
--port <port> HTTP port for serve mode (default: 3000)
|
|
138
169
|
--allowed-origin <origin> Allowed CORS origin (default: http://localhost)
|
|
139
170
|
--allow-unauthenticated Allow serve mode without DISCORD_OPS_HTTP_TOKEN (insecure)
|
|
171
|
+
--args <json> JSON arguments for the run subcommand
|
|
172
|
+
--profile <name> Tool profile: full, monitoring, readonly, moderation
|
|
173
|
+
--tools <list> Comma-separated list of tools to enable
|
|
174
|
+
--dry-run Preview actions without executing
|
|
140
175
|
|
|
141
176
|
INIT FLAGS:
|
|
142
177
|
--project <name> Project name (required)
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,kCAAkC;IAClC,aAAa,CAAC,IAAI,CAAC,CAAC;IAEpB,gBAAgB;IAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-flags.d.ts","sourceRoot":"","sources":["../../src/cli/validate-flags.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"validate-flags.d.ts","sourceRoot":"","sources":["../../src/cli/validate-flags.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,eAAO,MAAM,WAAW,aAiBtB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CASlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-flags.js","sourceRoot":"","sources":["../../src/cli/validate-flags.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,kBAAkB;IAClB,wBAAwB;IACxB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,WAAW;IACX,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QACxB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"validate-flags.js","sourceRoot":"","sources":["../../src/cli/validate-flags.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,kBAAkB;IAClB,yBAAyB;IACzB,WAAW;IACX,SAAS;IACT,WAAW;IACX,QAAQ;IACR,wBAAwB;IACxB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,WAAW;IACX,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QACxB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BjD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { loadConfig } from "../config/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Validates the discord-ops configuration files.
|
|
4
|
+
* Loads global and per-project configs and reports any issues.
|
|
5
|
+
*/
|
|
6
|
+
export async function runValidate() {
|
|
7
|
+
try {
|
|
8
|
+
const config = loadConfig();
|
|
9
|
+
const projectCount = Object.keys(config.global.projects).length;
|
|
10
|
+
console.log("Configuration valid.");
|
|
11
|
+
console.log(` Projects: ${projectCount}`);
|
|
12
|
+
if (config.global.default_project) {
|
|
13
|
+
console.log(` Default project: ${config.global.default_project}`);
|
|
14
|
+
}
|
|
15
|
+
if (config.perProject) {
|
|
16
|
+
console.log(` Per-project config: project=${config.perProject.project}`);
|
|
17
|
+
}
|
|
18
|
+
if (config.defaultToken) {
|
|
19
|
+
console.log(" Default token: set");
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.warn(" Warning: No default token configured (DISCORD_TOKEN not set)");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
console.error("Configuration invalid:", err instanceof Error ? err.message : String(err));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
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,EACL,MAAM,EAEN,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAEN,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA+EpB;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAAiD;gBAEzD,YAAY,CAAC,EAAE,MAAM;IAUjC,OAAO,CAAC,aAAa;IAsBrB;;;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,GAAG,aAAa,CAAC;IA6BnF,aAAa,CACjB,eAAe,EAAE,MAAM,EACvB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC;YAYV,kBAAkB;IAmBhC;;;OAGG;IACG,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,IAAI,WAAW,IAAI,OAAO,CAGzB;CACF"}
|
package/dist/client.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { Client, GatewayIntentBits, } from "discord.js";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
2
3
|
import { logger } from "./utils/logger.js";
|
|
3
4
|
import { validateTokenFormat } from "./security/token-validator.js";
|
|
4
5
|
import { TTLCache } from "./utils/cache.js";
|
|
5
6
|
import { fuzzyFind } from "./routing/fuzzy.js";
|
|
7
|
+
/** Hash a token to a short key for cache lookups — avoids storing raw tokens in Map keys. */
|
|
8
|
+
function tokenKey(token) {
|
|
9
|
+
if (!token)
|
|
10
|
+
return "default";
|
|
11
|
+
return createHash("sha256").update(token).digest("hex").slice(0, 16);
|
|
12
|
+
}
|
|
6
13
|
/**
|
|
7
14
|
* Single Discord bot connection — lazy login on first use.
|
|
8
15
|
*/
|
|
@@ -87,7 +94,8 @@ export class DiscordClient {
|
|
|
87
94
|
if (!t) {
|
|
88
95
|
throw new Error("No Discord token available. Set DISCORD_TOKEN, DISCORD_OPS_TOKEN_ENV, or use per-project token_env.");
|
|
89
96
|
}
|
|
90
|
-
|
|
97
|
+
const key = tokenKey(t);
|
|
98
|
+
let conn = this.connections.get(key);
|
|
91
99
|
if (!conn) {
|
|
92
100
|
if (t !== this.defaultToken) {
|
|
93
101
|
const validation = validateTokenFormat(t);
|
|
@@ -96,7 +104,7 @@ export class DiscordClient {
|
|
|
96
104
|
}
|
|
97
105
|
}
|
|
98
106
|
conn = new BotConnection(t);
|
|
99
|
-
this.connections.set(
|
|
107
|
+
this.connections.set(key, conn);
|
|
100
108
|
}
|
|
101
109
|
return conn;
|
|
102
110
|
}
|
|
@@ -108,7 +116,7 @@ export class DiscordClient {
|
|
|
108
116
|
return this.getConnection(token).getClient();
|
|
109
117
|
}
|
|
110
118
|
async getGuild(guildId, token) {
|
|
111
|
-
const cacheKey = `${token
|
|
119
|
+
const cacheKey = `${tokenKey(token)}:${guildId}`;
|
|
112
120
|
const cached = this.guildCache.get(cacheKey);
|
|
113
121
|
if (cached)
|
|
114
122
|
return cached;
|
|
@@ -118,7 +126,7 @@ export class DiscordClient {
|
|
|
118
126
|
return guild;
|
|
119
127
|
}
|
|
120
128
|
async getChannel(channelId, token) {
|
|
121
|
-
const cacheKey = `${token
|
|
129
|
+
const cacheKey = `${tokenKey(token)}:${channelId}`;
|
|
122
130
|
const cached = this.channelCache.get(cacheKey);
|
|
123
131
|
if (cached)
|
|
124
132
|
return cached;
|
|
@@ -149,7 +157,7 @@ export class DiscordClient {
|
|
|
149
157
|
: await this.resolveChannelName(channelIdOrName, token, guildId);
|
|
150
158
|
const client = await this.getClient(token);
|
|
151
159
|
const channel = await client.channels.fetch(resolvedId);
|
|
152
|
-
if (!channel || !("guild" in channel)) {
|
|
160
|
+
if (!channel || !("guild" in channel) || channel.guild === null) {
|
|
153
161
|
throw new Error(`Channel "${channelIdOrName}" not found or not a guild channel`);
|
|
154
162
|
}
|
|
155
163
|
return channel;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles/index.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ import type { ToolDefinition } from "../tools/types.js";
|
|
|
6
6
|
export declare const PROFILE_NAMES: readonly ["full", "monitoring", "readonly", "moderation", "messaging", "channels", "webhooks"];
|
|
7
7
|
export type ProfileName = (typeof PROFILE_NAMES)[number];
|
|
8
8
|
export declare const PROFILES: Record<ProfileName, string[] | "all">;
|
|
9
|
+
/**
|
|
10
|
+
* Validates that all tool names referenced in profiles exist in the full tool list.
|
|
11
|
+
* Called at server startup to catch stale profile entries.
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateProfileToolNames(allToolNames: Set<string>): void;
|
|
9
14
|
export declare function isProfileName(s: string): s is ProfileName;
|
|
10
15
|
export interface FilterOptions {
|
|
11
16
|
profile?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profiles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,aAAa,gGAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CA6C1D,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,WAAW,CAEzD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,EAAE,CAmEjG"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profiles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,aAAa,gGAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CA6C1D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAQxE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,WAAW,CAEzD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,EAAE,CAmEjG"}
|
package/dist/profiles/index.js
CHANGED
|
@@ -57,6 +57,20 @@ export const PROFILES = {
|
|
|
57
57
|
"list_webhooks",
|
|
58
58
|
],
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Validates that all tool names referenced in profiles exist in the full tool list.
|
|
62
|
+
* Called at server startup to catch stale profile entries.
|
|
63
|
+
*/
|
|
64
|
+
export function validateProfileToolNames(allToolNames) {
|
|
65
|
+
for (const [profileName, tools] of Object.entries(PROFILES)) {
|
|
66
|
+
if (tools === "all")
|
|
67
|
+
continue;
|
|
68
|
+
const unknown = tools.filter((name) => !allToolNames.has(name));
|
|
69
|
+
if (unknown.length > 0) {
|
|
70
|
+
throw new Error(`Profile "${profileName}" references unknown tools: ${unknown.join(", ")}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
60
74
|
export function isProfileName(s) {
|
|
61
75
|
return PROFILE_NAMES.includes(s);
|
|
62
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profiles/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profiles/index.ts"],"names":[],"mappings":"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"}
|
package/dist/routing/fuzzy.d.ts
CHANGED
|
@@ -12,5 +12,4 @@ export interface FuzzyMatch<T extends Named> {
|
|
|
12
12
|
matchType: "exact_id" | "exact_name" | "normalized" | "substring";
|
|
13
13
|
}
|
|
14
14
|
export declare function fuzzyFind<T extends Named>(items: T[], query: string, threshold?: number): FuzzyMatch<T> | undefined;
|
|
15
|
-
export declare function fuzzyFindAll<T extends Named>(items: T[], query: string, threshold?: number): FuzzyMatch<T>[];
|
|
16
15
|
//# sourceMappingURL=fuzzy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/routing/fuzzy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK;IACzC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;CACnE;AAMD,wBAAgB,SAAS,CAAC,CAAC,SAAS,KAAK,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAa,GACvB,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAoC3B
|
|
1
|
+
{"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/routing/fuzzy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK;IACzC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;CACnE;AAMD,wBAAgB,SAAS,CAAC,CAAC,SAAS,KAAK,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAa,GACvB,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAoC3B"}
|