@pharaoh-so/mcp 0.3.28 → 0.3.31
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/README.md +5 -22
- package/commands/plan.md +2 -5
- package/commands/review.md +4 -10
- package/inspect-tools.json +7 -636
- package/package.json +1 -1
- package/skills/brainstorm/SKILL.md +1 -1
- package/skills/debug/SKILL.md +1 -1
- package/skills/pharaoh/SKILL.md +3 -17
- package/skills/plan/SKILL.md +2 -5
- package/skills/refactor/SKILL.md +2 -5
- package/skills/review/SKILL.md +4 -10
- package/skills/verify/SKILL.md +1 -1
- package/commands/vision.md +0 -184
- package/skills/vision/SKILL.md +0 -185
package/inspect-tools.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"properties": {
|
|
11
11
|
"repo": {
|
|
12
12
|
"type": "string",
|
|
13
|
-
"description": "Repository name
|
|
13
|
+
"description": "Repository name — one of your connected repos."
|
|
14
14
|
},
|
|
15
15
|
"include_metrics": {
|
|
16
16
|
"description": "Include LOC, complexity, change frequency",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"properties": {
|
|
45
45
|
"repo": {
|
|
46
46
|
"type": "string",
|
|
47
|
-
"description": "Repository name
|
|
47
|
+
"description": "Repository name — one of your connected repos."
|
|
48
48
|
},
|
|
49
49
|
"include_map": {
|
|
50
50
|
"description": "Include codebase map in response (default: true)",
|
|
@@ -126,14 +126,14 @@
|
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
"name": "get_module_context",
|
|
129
|
-
"description": "Get everything you need to know about a module BEFORE modifying it or writing a PRD.\n\nCALL THIS WHEN:\n• You're about to change code in a module — understand its full surface area first\n• You're writing a PRD or design doc and need ground-truth about what exists\n• You need to know what depends on this module (who breaks if you change it)\n• You want to see a module's DB tables, endpoints, cron jobs, or env vars at a glance\n\nRETURNS: Complete module profile in ~2K tokens: file count, LOC, all exported function signatures with complexity, dependency graph (imports from + imported by), DB table access, HTTP endpoints, cron jobs, env vars,
|
|
129
|
+
"description": "Get everything you need to know about a module BEFORE modifying it or writing a PRD.\n\nCALL THIS WHEN:\n• You're about to change code in a module — understand its full surface area first\n• You're writing a PRD or design doc and need ground-truth about what exists\n• You need to know what depends on this module (who breaks if you change it)\n• You want to see a module's DB tables, endpoints, cron jobs, or env vars at a glance\n\nRETURNS: Complete module profile in ~2K tokens: file count, LOC, all exported function signatures with complexity, dependency graph (imports from + imported by), DB table access, HTTP endpoints, cron jobs, env vars, and external callers from other modules.\n\nEXAMPLES:\n• \"What does the slack module look like before I add a new notification?\"\n• \"What endpoints does the auth module expose?\"\n• \"Which modules depend on the db module?\"\n• \"What env vars does the crons module use?\"\n\nWHY NOT JUST READ FILES: A module can span dozens of files. Manual exploration burns 10K-40K tokens and still misses cross-module callers and DB access patterns. This returns the complete picture in one call.",
|
|
130
130
|
"inputSchema": {
|
|
131
131
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
132
132
|
"type": "object",
|
|
133
133
|
"properties": {
|
|
134
134
|
"repo": {
|
|
135
135
|
"type": "string",
|
|
136
|
-
"description": "Repository name
|
|
136
|
+
"description": "Repository name — one of your connected repos."
|
|
137
137
|
},
|
|
138
138
|
"module": {
|
|
139
139
|
"type": "string",
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"properties": {
|
|
164
164
|
"repo": {
|
|
165
165
|
"type": "string",
|
|
166
|
-
"description": "Repository name
|
|
166
|
+
"description": "Repository name — one of your connected repos."
|
|
167
167
|
},
|
|
168
168
|
"entity": {
|
|
169
169
|
"type": "string",
|
|
@@ -198,192 +198,6 @@
|
|
|
198
198
|
"taskSupport": "forbidden"
|
|
199
199
|
}
|
|
200
200
|
},
|
|
201
|
-
{
|
|
202
|
-
"name": "check_reachability",
|
|
203
|
-
"description": "Check if functions are reachable from production entry points (API endpoints, CLI commands, cron jobs, event handlers, MCP tools).\n\nCALL THIS WHEN:\n• After implementing a feature — verify new code is wired into the app\n• Reviewing a PR — are all new functions actually reachable?\n• Cleaning up dead code — find functions only called by tests\n• Before opening a PR — run this as a pre-flight check\n\nRETURNS: For each exported function, whether it's reachable from a production entry point,\nthe path from entry point to function, and classification (entry_point / reachable / unreachable).\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
204
|
-
"inputSchema": {
|
|
205
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
206
|
-
"type": "object",
|
|
207
|
-
"properties": {
|
|
208
|
-
"repo": {
|
|
209
|
-
"type": "string",
|
|
210
|
-
"description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
|
|
211
|
-
},
|
|
212
|
-
"functions": {
|
|
213
|
-
"description": "Function names to check (checks all exported if omitted)",
|
|
214
|
-
"type": "array",
|
|
215
|
-
"items": {
|
|
216
|
-
"type": "string"
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
"module": {
|
|
220
|
-
"description": "Filter to a specific module",
|
|
221
|
-
"type": "string"
|
|
222
|
-
},
|
|
223
|
-
"include_paths": {
|
|
224
|
-
"description": "Include full reachability paths (default: false)",
|
|
225
|
-
"type": "boolean"
|
|
226
|
-
}
|
|
227
|
-
},
|
|
228
|
-
"required": [
|
|
229
|
-
"repo"
|
|
230
|
-
]
|
|
231
|
-
},
|
|
232
|
-
"annotations": {
|
|
233
|
-
"title": "Reachability Check",
|
|
234
|
-
"readOnlyHint": true,
|
|
235
|
-
"destructiveHint": false
|
|
236
|
-
},
|
|
237
|
-
"execution": {
|
|
238
|
-
"taskSupport": "forbidden"
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"name": "get_vision_docs",
|
|
243
|
-
"description": "Get the documented intent — CLAUDE.md files, PRDs, roadmaps, skill specs — to understand WHY code exists, not just what it does.\n\nCALL THIS WHEN:\n• You're implementing a feature and need to check if a PRD or spec exists for it\n• You want to understand the original design intent behind existing code\n• You need to verify your implementation matches documented requirements\n• You're reviewing code and want to check it against the documented vision\n\nRETURNS: All vision documents grouped by type (claude_md, prd, skill, roadmap), with each spec's title, section ID, and implementation status showing which functions implement each spec.\n\nEXAMPLES:\n• \"Is there a PRD for the notification system?\"\n• \"What does the CLAUDE.md say about the auth module?\"\n• \"What specs exist for the slack integration?\"\n• \"Which specs are already implemented vs still pending?\"\n\nWHY NOT JUST READ FILES: Vision docs are scattered across CLAUDE.md files, PRDs, and roadmaps in different directories. This aggregates them all AND cross-references against actual implementations so you can see spec-to-code alignment in one call.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
244
|
-
"inputSchema": {
|
|
245
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
246
|
-
"type": "object",
|
|
247
|
-
"properties": {
|
|
248
|
-
"repo": {
|
|
249
|
-
"type": "string",
|
|
250
|
-
"description": "Repository name"
|
|
251
|
-
},
|
|
252
|
-
"module": {
|
|
253
|
-
"description": "Filter to specs related to this module",
|
|
254
|
-
"type": "string"
|
|
255
|
-
},
|
|
256
|
-
"doc_type": {
|
|
257
|
-
"description": "Filter by document type",
|
|
258
|
-
"type": "string",
|
|
259
|
-
"enum": [
|
|
260
|
-
"claude_md",
|
|
261
|
-
"prd",
|
|
262
|
-
"skill",
|
|
263
|
-
"roadmap",
|
|
264
|
-
"all"
|
|
265
|
-
]
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
"required": [
|
|
269
|
-
"repo"
|
|
270
|
-
]
|
|
271
|
-
},
|
|
272
|
-
"annotations": {
|
|
273
|
-
"title": "Vision Documents",
|
|
274
|
-
"readOnlyHint": true,
|
|
275
|
-
"destructiveHint": false
|
|
276
|
-
},
|
|
277
|
-
"execution": {
|
|
278
|
-
"taskSupport": "forbidden"
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
"name": "get_vision_gaps",
|
|
283
|
-
"description": "Find what's missing — specs without code AND complex code without specs. Call this to prioritize what to build or document next.\n\nCALL THIS WHEN:\n• You're planning work and need to find unimplemented features from PRDs\n• You want to find complex undocumented functions that need specs or tests\n• You need to audit spec-to-code alignment for a module\n• Someone asks \"what's left to build?\" or \"what's undocumented?\"\n\nRETURNS: Two lists — (1) specified-but-not-built: PRD specs with no implementing functions, and (2) built-but-not-specified: complex functions above a threshold with no vision spec. Includes function names, complexity scores, file paths, and spec references.\n\nEXAMPLES:\n• \"What features from the PRDs haven't been built yet?\"\n• \"Which complex functions lack documentation?\"\n• \"What's the spec coverage for the auth module?\"\n• \"Are there any orphaned specs or undocumented behaviors?\"\n\nWHY NOT JUST READ FILES: Manually diffing PRD bullets against code is error-prone and misses complexity metrics. This cross-references the entire spec tree against the function graph automatically — gaps that would take an hour to find manually surface in seconds.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
284
|
-
"inputSchema": {
|
|
285
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
286
|
-
"type": "object",
|
|
287
|
-
"properties": {
|
|
288
|
-
"repo": {
|
|
289
|
-
"type": "string",
|
|
290
|
-
"description": "Repository name"
|
|
291
|
-
},
|
|
292
|
-
"module": {
|
|
293
|
-
"description": "Filter to a specific module",
|
|
294
|
-
"type": "string"
|
|
295
|
-
},
|
|
296
|
-
"complexity_threshold": {
|
|
297
|
-
"description": "Min complexity for undocumented function flag (default: 15)",
|
|
298
|
-
"type": "number"
|
|
299
|
-
}
|
|
300
|
-
},
|
|
301
|
-
"required": [
|
|
302
|
-
"repo"
|
|
303
|
-
]
|
|
304
|
-
},
|
|
305
|
-
"annotations": {
|
|
306
|
-
"title": "Vision Gap Analysis",
|
|
307
|
-
"readOnlyHint": true,
|
|
308
|
-
"destructiveHint": false
|
|
309
|
-
},
|
|
310
|
-
"execution": {
|
|
311
|
-
"taskSupport": "forbidden"
|
|
312
|
-
}
|
|
313
|
-
},
|
|
314
|
-
{
|
|
315
|
-
"name": "query_dependencies",
|
|
316
|
-
"description": "Trace how two modules are connected BEFORE splitting, merging, or decoupling them.\n\nCALL THIS WHEN:\n• You're refactoring and need to know if two modules depend on each other\n• You suspect a circular dependency and want to confirm it\n• You're planning to extract shared code and need to see what both modules use\n• You need to understand why changing module A affects module B\n\nRETURNS: Forward and reverse dependency paths between the two modules, circular dependency detection with warnings, and all shared dependencies (modules both depend on).\n\nEXAMPLES:\n• \"Do slack and crons have a circular dependency?\"\n• \"What's the dependency path from auth to db?\"\n• \"What do the api and workers modules have in common?\"\n• \"Why does changing utils break the notifications module?\"\n\nWHY NOT JUST READ FILES: Import statements show direct dependencies but miss transitive paths (A→B→C→D). This traces the full module graph and reveals indirect connections, circular dependencies, and shared dependencies invisible from file-level inspection.",
|
|
317
|
-
"inputSchema": {
|
|
318
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
319
|
-
"type": "object",
|
|
320
|
-
"properties": {
|
|
321
|
-
"repo": {
|
|
322
|
-
"type": "string",
|
|
323
|
-
"description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
|
|
324
|
-
},
|
|
325
|
-
"from": {
|
|
326
|
-
"type": "string",
|
|
327
|
-
"description": "Source module name"
|
|
328
|
-
},
|
|
329
|
-
"to": {
|
|
330
|
-
"type": "string",
|
|
331
|
-
"description": "Target module name"
|
|
332
|
-
}
|
|
333
|
-
},
|
|
334
|
-
"required": [
|
|
335
|
-
"repo",
|
|
336
|
-
"from",
|
|
337
|
-
"to"
|
|
338
|
-
]
|
|
339
|
-
},
|
|
340
|
-
"annotations": {
|
|
341
|
-
"title": "Dependency Query",
|
|
342
|
-
"readOnlyHint": true,
|
|
343
|
-
"destructiveHint": false
|
|
344
|
-
},
|
|
345
|
-
"execution": {
|
|
346
|
-
"taskSupport": "forbidden"
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
"name": "trace_flow",
|
|
351
|
-
"description": "Understand how a feature works by tracing its execution flow — what it calls, what those call, across modules.\n\nCALL THIS WHEN:\n• Someone asks \"how does X work?\" or \"what happens when X?\"\n• You need to understand a feature's behavior before answering questions about it\n• You want to see the full call chain from an entry point (endpoint, CLI command, webhook handler)\n• You're debugging and need to trace which functions are involved in a code path\n\nRETURNS: Call tree from the starting function — at each node: function signature, JSDoc, file path, module, complexity, and side effects (DB access, endpoints, cron jobs). Depth-limited and token-efficient.\n\nEXAMPLES:\n• \"How does the device auth flow work?\" → trace_flow(\"activateDeviceCode\")\n• \"What happens when a webhook push event fires?\" → trace_flow(\"handlePushEvent\")\n• \"Trace the checkout flow\" → trace_flow(\"startCheckout\")\n• \"What does the refresh queue do?\" → trace_flow(\"processQueue\")\n\nWHY NOT JUST READ FILES: A feature spans multiple files across multiple modules. Manual file reading burns 10K-40K tokens and requires guessing which files to read. This shows the complete execution path in ~500 tokens, letting you target reads to only the functions that matter.",
|
|
352
|
-
"inputSchema": {
|
|
353
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
354
|
-
"type": "object",
|
|
355
|
-
"properties": {
|
|
356
|
-
"repo": {
|
|
357
|
-
"type": "string",
|
|
358
|
-
"description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
|
|
359
|
-
},
|
|
360
|
-
"function": {
|
|
361
|
-
"type": "string",
|
|
362
|
-
"description": "Function name (exact match, case-insensitive)"
|
|
363
|
-
},
|
|
364
|
-
"file": {
|
|
365
|
-
"description": "File path substring to disambiguate when multiple functions share a name",
|
|
366
|
-
"type": "string"
|
|
367
|
-
},
|
|
368
|
-
"depth": {
|
|
369
|
-
"description": "How many hops to trace forward (default: 3, max: 5)",
|
|
370
|
-
"type": "number"
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
|
-
"required": [
|
|
374
|
-
"repo",
|
|
375
|
-
"function"
|
|
376
|
-
]
|
|
377
|
-
},
|
|
378
|
-
"annotations": {
|
|
379
|
-
"title": "Trace Execution Flow",
|
|
380
|
-
"readOnlyHint": true,
|
|
381
|
-
"destructiveHint": false
|
|
382
|
-
},
|
|
383
|
-
"execution": {
|
|
384
|
-
"taskSupport": "forbidden"
|
|
385
|
-
}
|
|
386
|
-
},
|
|
387
201
|
{
|
|
388
202
|
"name": "search_functions",
|
|
389
203
|
"description": "Check if functionality already exists BEFORE writing any new function, utility, or helper.\n\nCALL THIS WHEN:\n• You're about to create a new function — search first to prevent duplicates\n• You need to find where a concept is implemented (e.g., 'notify', 'validate', 'parse')\n• You're looking for the right function to import instead of reimplementing\n• A task says 'add X functionality' — verify X doesn't already exist\n\nRETURNS: Matching functions with file paths, line numbers, module, export status, async flag, complexity scores, and full signatures. Searches all functions across the entire codebase.\n\nEXAMPLES:\n• \"Is there already a function that sends Slack notifications?\"\n• \"What validation utilities exist?\"\n• \"Where is email formatting handled?\"\n• \"Does a retry wrapper already exist somewhere?\"\n\nWHY NOT JUST READ FILES: grep only finds exact string matches and misses re-exports, aliases, and barrel-file indirection. This searches the full resolved dependency graph — if it exists anywhere in the codebase, this finds it.",
|
|
@@ -393,7 +207,7 @@
|
|
|
393
207
|
"properties": {
|
|
394
208
|
"repo": {
|
|
395
209
|
"type": "string",
|
|
396
|
-
"description": "Repository name
|
|
210
|
+
"description": "Repository name — one of your connected repos."
|
|
397
211
|
},
|
|
398
212
|
"query": {
|
|
399
213
|
"type": "string",
|
|
@@ -435,317 +249,9 @@
|
|
|
435
249
|
"taskSupport": "forbidden"
|
|
436
250
|
}
|
|
437
251
|
},
|
|
438
|
-
{
|
|
439
|
-
"name": "get_cross_repo_audit",
|
|
440
|
-
"description": "Compare two repositories for code duplication, structural overlap, and shared patterns.\n\nCALL THIS WHEN:\n• You need to find copy-pasted code across two repos\n• You're planning a shared package extraction\n• You want to compare the structure of two codebases\n• A team is auditing cross-repo duplication before a refactor\n\nRETURNS: Three tiers of function matches (HIGH = exact duplicates, MEDIUM = diverged implementations, LOW = name-only), shared module structure, and shared environment variables. Each tier has clear action guidance.\n\nPREREQUISITE: Both repos must be mapped via 'pharaoh add'. Use repo names, not paths.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.\n\nEXAMPLES:\n• \"Compare web-app and api for code duplication\"\n• \"Find shared functions between the mobile and web repos\"\n• \"What code is duplicated across our two services?\"",
|
|
441
|
-
"inputSchema": {
|
|
442
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
443
|
-
"type": "object",
|
|
444
|
-
"properties": {
|
|
445
|
-
"repo_a": {
|
|
446
|
-
"type": "string",
|
|
447
|
-
"description": "First repository name"
|
|
448
|
-
},
|
|
449
|
-
"repo_b": {
|
|
450
|
-
"type": "string",
|
|
451
|
-
"description": "Second repository name"
|
|
452
|
-
},
|
|
453
|
-
"min_loc": {
|
|
454
|
-
"default": 3,
|
|
455
|
-
"description": "Minimum function LOC to include (filters trivial one-liners)",
|
|
456
|
-
"type": "number"
|
|
457
|
-
},
|
|
458
|
-
"exported_only": {
|
|
459
|
-
"default": true,
|
|
460
|
-
"description": "Only compare exported functions (reduces common-name noise)",
|
|
461
|
-
"type": "boolean"
|
|
462
|
-
}
|
|
463
|
-
},
|
|
464
|
-
"required": [
|
|
465
|
-
"repo_a",
|
|
466
|
-
"repo_b"
|
|
467
|
-
]
|
|
468
|
-
},
|
|
469
|
-
"annotations": {
|
|
470
|
-
"title": "Cross-Repo Audit",
|
|
471
|
-
"readOnlyHint": true,
|
|
472
|
-
"destructiveHint": false
|
|
473
|
-
},
|
|
474
|
-
"execution": {
|
|
475
|
-
"taskSupport": "forbidden"
|
|
476
|
-
}
|
|
477
|
-
},
|
|
478
|
-
{
|
|
479
|
-
"name": "get_consolidation_opportunities",
|
|
480
|
-
"description": "Find code that does the same work in different places — parallel consumers, duplicated call chains, competing DB access, and similar functions across modules. Returns structural clusters for review.\n\nCALL THIS WHEN:\n• You're looking for code to consolidate, deduplicate, or streamline\n• Before building something new — check if similar logic already exists in another module\n• During refactoring planning — find the highest-impact merge opportunities\n• When the codebase feels bloated but you can't pinpoint where\n\nRETURNS: Clusters grouped by type (parallel consumers, fan-in duplication, competing DB access, signature twins, convergent imports). Each cluster includes file paths, line numbers, and enough context for you to evaluate whether merging makes sense.\n\nWHY NOT JUST READ FILES: You'd need to read every function and mentally track all call chains, DB access, and import patterns across the entire codebase. This queries the full graph in <3 seconds.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
481
|
-
"inputSchema": {
|
|
482
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
483
|
-
"type": "object",
|
|
484
|
-
"properties": {
|
|
485
|
-
"repo": {
|
|
486
|
-
"type": "string",
|
|
487
|
-
"description": "Repository name"
|
|
488
|
-
},
|
|
489
|
-
"module": {
|
|
490
|
-
"description": "Focus on opportunities involving this module",
|
|
491
|
-
"type": "string"
|
|
492
|
-
},
|
|
493
|
-
"min_shared": {
|
|
494
|
-
"default": 3,
|
|
495
|
-
"description": "Minimum shared dependencies to flag (default: 3)",
|
|
496
|
-
"type": "number"
|
|
497
|
-
},
|
|
498
|
-
"include_low_confidence": {
|
|
499
|
-
"default": false,
|
|
500
|
-
"description": "Include LOW confidence results — signature twins and parallel consumers (default: false)",
|
|
501
|
-
"type": "boolean"
|
|
502
|
-
},
|
|
503
|
-
"min_loc": {
|
|
504
|
-
"default": 5,
|
|
505
|
-
"description": "Minimum function LOC to include (default: 5)",
|
|
506
|
-
"type": "number"
|
|
507
|
-
},
|
|
508
|
-
"include_same_module": {
|
|
509
|
-
"default": true,
|
|
510
|
-
"description": "Include intra-module duplication (default: true)",
|
|
511
|
-
"type": "boolean"
|
|
512
|
-
},
|
|
513
|
-
"include_utility_composition": {
|
|
514
|
-
"default": false,
|
|
515
|
-
"description": "Include parallel consumer clusters where all shared targets come from a single utility file (default: false — these are usually coincidental)",
|
|
516
|
-
"type": "boolean"
|
|
517
|
-
}
|
|
518
|
-
},
|
|
519
|
-
"required": [
|
|
520
|
-
"repo"
|
|
521
|
-
]
|
|
522
|
-
},
|
|
523
|
-
"annotations": {
|
|
524
|
-
"title": "Code Consolidation",
|
|
525
|
-
"readOnlyHint": true,
|
|
526
|
-
"destructiveHint": false
|
|
527
|
-
},
|
|
528
|
-
"execution": {
|
|
529
|
-
"taskSupport": "forbidden"
|
|
530
|
-
}
|
|
531
|
-
},
|
|
532
|
-
{
|
|
533
|
-
"name": "get_unused_code",
|
|
534
|
-
"description": "Find dead code — functions not reachable from any production entry point.\n\nCALL THIS WHEN:\n• You're cleaning up or refactoring a module — find what's truly dead\n• Before adding new code — check if similar dead code already exists\n• During code review — identify functions that lost their production callers\n• After a refactor — verify nothing was accidentally disconnected\n\nRETURNS: Four-tier classification:\n• **Dead** — graph-unreachable AND no text references anywhere. Safe to delete.\n• **Effectively Dead** — has graph callers, but ALL are cosmetic (logging, debug). Looks alive but produces no production behavior.\n• **Likely Dead** — graph-unreachable BUT found as text in other files (may be string-dispatched, dynamically imported, etc). Includes evidence file paths.\n• **Alive** — graph-reachable from entry points. Not reported.\n\nUses graph reachability + text reference backup layer for high-confidence dead code detection.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
535
|
-
"inputSchema": {
|
|
536
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
537
|
-
"type": "object",
|
|
538
|
-
"properties": {
|
|
539
|
-
"repo": {
|
|
540
|
-
"type": "string",
|
|
541
|
-
"description": "Repository name"
|
|
542
|
-
},
|
|
543
|
-
"module": {
|
|
544
|
-
"description": "Filter to a specific module",
|
|
545
|
-
"type": "string"
|
|
546
|
-
},
|
|
547
|
-
"include_exported": {
|
|
548
|
-
"description": "Include exported functions (default: true — shows all unreachable)",
|
|
549
|
-
"type": "boolean"
|
|
550
|
-
},
|
|
551
|
-
"reachability_analysis": {
|
|
552
|
-
"description": "Deep analysis: find exported functions unreachable from any entry point — endpoints, CLI commands, cron handlers, event handlers, MCP tools (default: false)",
|
|
553
|
-
"type": "boolean"
|
|
554
|
-
}
|
|
555
|
-
},
|
|
556
|
-
"required": [
|
|
557
|
-
"repo"
|
|
558
|
-
]
|
|
559
|
-
},
|
|
560
|
-
"annotations": {
|
|
561
|
-
"title": "Dead Code Detection",
|
|
562
|
-
"readOnlyHint": true,
|
|
563
|
-
"destructiveHint": false
|
|
564
|
-
},
|
|
565
|
-
"execution": {
|
|
566
|
-
"taskSupport": "forbidden"
|
|
567
|
-
}
|
|
568
|
-
},
|
|
569
|
-
{
|
|
570
|
-
"name": "get_test_coverage",
|
|
571
|
-
"description": "See which modules and files have test coverage and which don't.\n\nCALL THIS WHEN:\n• Before writing tests — find what's already covered\n• During code review — check if changed modules have tests\n• Planning test strategy — identify untested high-complexity code\n\nRETURNS: Per-module test coverage summary — which files have corresponding test files, and which high-complexity functions lack tests.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
572
|
-
"inputSchema": {
|
|
573
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
574
|
-
"type": "object",
|
|
575
|
-
"properties": {
|
|
576
|
-
"repo": {
|
|
577
|
-
"type": "string",
|
|
578
|
-
"description": "Repository name"
|
|
579
|
-
},
|
|
580
|
-
"module": {
|
|
581
|
-
"description": "Filter to a specific module",
|
|
582
|
-
"type": "string"
|
|
583
|
-
}
|
|
584
|
-
},
|
|
585
|
-
"required": [
|
|
586
|
-
"repo"
|
|
587
|
-
]
|
|
588
|
-
},
|
|
589
|
-
"annotations": {
|
|
590
|
-
"title": "Test Coverage Analysis",
|
|
591
|
-
"readOnlyHint": true,
|
|
592
|
-
"destructiveHint": false
|
|
593
|
-
},
|
|
594
|
-
"execution": {
|
|
595
|
-
"taskSupport": "forbidden"
|
|
596
|
-
}
|
|
597
|
-
},
|
|
598
|
-
{
|
|
599
|
-
"name": "get_regression_risk",
|
|
600
|
-
"description": "Score functions by regression risk — how likely a change here breaks production.\n\nCALL THIS WHEN:\n• Before modifying a function — understand blast radius and risk\n• During code review — prioritize review effort on highest-risk changes\n• Planning refactors — identify the riskiest code to change carefully\n• After a regression — find other high-risk functions that need attention\n\nRETURNS: Functions ranked by regression risk score (0-1), with tier (critical/high/medium/low), complexity, entry-point exposure, file churn, and downstream caller count.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
|
|
601
|
-
"inputSchema": {
|
|
602
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
603
|
-
"type": "object",
|
|
604
|
-
"properties": {
|
|
605
|
-
"repo": {
|
|
606
|
-
"type": "string",
|
|
607
|
-
"description": "Repository name"
|
|
608
|
-
},
|
|
609
|
-
"module": {
|
|
610
|
-
"description": "Filter to a specific module (recommended for large repos)",
|
|
611
|
-
"type": "string"
|
|
612
|
-
}
|
|
613
|
-
},
|
|
614
|
-
"required": [
|
|
615
|
-
"repo"
|
|
616
|
-
]
|
|
617
|
-
},
|
|
618
|
-
"annotations": {
|
|
619
|
-
"title": "Regression Risk Assessment",
|
|
620
|
-
"readOnlyHint": true,
|
|
621
|
-
"destructiveHint": false
|
|
622
|
-
},
|
|
623
|
-
"execution": {
|
|
624
|
-
"taskSupport": "forbidden"
|
|
625
|
-
}
|
|
626
|
-
},
|
|
627
|
-
{
|
|
628
|
-
"name": "get_design_system",
|
|
629
|
-
"description": "Discover the design system BEFORE creating any UI component.\n\nCALL THIS WHEN:\n• You're about to create a React/Vue/Svelte component — check what already exists\n• You need to know the canonical component for a UI pattern (button, input, modal)\n• You want to find design tokens (colors, spacing, typography) to use\n• You suspect raw HTML elements are used instead of existing components\n\nRETURNS: Components with props and usage count (paginated), design tokens with values, and anti-patterns where raw HTML is used instead of existing components. Pass `path_pattern`, `name_prefix`, `offset`, or `limit` to narrow or page through results. Screen/page components are excluded by default.\n\nEXAMPLES:\n• \"What components does this design system have?\"\n• \"Is there already a Button component I should use?\"\n• \"What color tokens are available?\"\n• \"Show me all components in /atoms/\" → use path_pattern=\"/atoms/\"\n• \"Show me the next page\" → use offset=50\n\nWHY NOT JUST READ FILES: Design systems span dozens of files across multiple directories. This returns the complete inventory with usage frequency — the most-used components are the most canonical.",
|
|
630
|
-
"inputSchema": {
|
|
631
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
632
|
-
"type": "object",
|
|
633
|
-
"properties": {
|
|
634
|
-
"repo": {
|
|
635
|
-
"type": "string",
|
|
636
|
-
"description": "Repository name"
|
|
637
|
-
},
|
|
638
|
-
"category": {
|
|
639
|
-
"default": "all",
|
|
640
|
-
"description": "Which design system aspect to return",
|
|
641
|
-
"type": "string",
|
|
642
|
-
"enum": [
|
|
643
|
-
"components",
|
|
644
|
-
"tokens",
|
|
645
|
-
"anti_patterns",
|
|
646
|
-
"all"
|
|
647
|
-
]
|
|
648
|
-
},
|
|
649
|
-
"include_screens": {
|
|
650
|
-
"default": false,
|
|
651
|
-
"description": "Include screen/page components (*Screen, *Page, *View, *Route) that are typically app-level consumers, not reusable primitives",
|
|
652
|
-
"type": "boolean"
|
|
653
|
-
},
|
|
654
|
-
"path_pattern": {
|
|
655
|
-
"description": "Substring match against File.path (e.g. '/atoms/', '/ui/Button'). Narrows to components whose file path contains this exact substring.",
|
|
656
|
-
"type": "string",
|
|
657
|
-
"minLength": 1,
|
|
658
|
-
"maxLength": 200
|
|
659
|
-
},
|
|
660
|
-
"name_prefix": {
|
|
661
|
-
"description": "Exact prefix match against component name (e.g. 'Button' matches Button, ButtonGroup, ButtonIcon). Case-sensitive.",
|
|
662
|
-
"type": "string",
|
|
663
|
-
"minLength": 1,
|
|
664
|
-
"maxLength": 200
|
|
665
|
-
},
|
|
666
|
-
"offset": {
|
|
667
|
-
"default": 0,
|
|
668
|
-
"description": "Pagination offset (0-based). Capped at 10000.",
|
|
669
|
-
"type": "integer",
|
|
670
|
-
"minimum": 0,
|
|
671
|
-
"maximum": 10000
|
|
672
|
-
},
|
|
673
|
-
"limit": {
|
|
674
|
-
"default": 50,
|
|
675
|
-
"description": "Page size. Default 50, max 200.",
|
|
676
|
-
"type": "integer",
|
|
677
|
-
"minimum": 1,
|
|
678
|
-
"maximum": 200
|
|
679
|
-
}
|
|
680
|
-
},
|
|
681
|
-
"required": [
|
|
682
|
-
"repo"
|
|
683
|
-
]
|
|
684
|
-
},
|
|
685
|
-
"annotations": {
|
|
686
|
-
"title": "Design System",
|
|
687
|
-
"readOnlyHint": true,
|
|
688
|
-
"destructiveHint": false
|
|
689
|
-
},
|
|
690
|
-
"execution": {
|
|
691
|
-
"taskSupport": "forbidden"
|
|
692
|
-
}
|
|
693
|
-
},
|
|
694
|
-
{
|
|
695
|
-
"name": "setup_environment",
|
|
696
|
-
"description": "Set up the optimal development environment for this codebase — install Pharaoh's curated plugin bundle.\n\nCALL THIS WHEN:\n• The user says \"set up my environment\", \"install plugins\", or \"optimize my setup\"\n• You want to proactively improve the development experience with proven plugins\n• After noticing the user could benefit from LSP, security scanning, or code review tools\n• The user is on OpenClaw or Cursor and wants to install Pharaoh skills/prompts\n\nRETURNS: A curated list of recommended plugins and install instructions, tailored to the client platform (claude-code, openclaw, or cursor) and languages in this codebase.\n\nThis is a one-time setup. Once installed, plugins persist across sessions.",
|
|
697
|
-
"inputSchema": {
|
|
698
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
699
|
-
"type": "object",
|
|
700
|
-
"properties": {
|
|
701
|
-
"client": {
|
|
702
|
-
"description": "Client platform — determines install instructions format. Defaults to claude-code.",
|
|
703
|
-
"type": "string",
|
|
704
|
-
"enum": [
|
|
705
|
-
"claude-code",
|
|
706
|
-
"openclaw",
|
|
707
|
-
"cursor"
|
|
708
|
-
]
|
|
709
|
-
}
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
|
-
"annotations": {
|
|
713
|
-
"title": "Environment Setup",
|
|
714
|
-
"readOnlyHint": true,
|
|
715
|
-
"destructiveHint": false
|
|
716
|
-
},
|
|
717
|
-
"execution": {
|
|
718
|
-
"taskSupport": "forbidden"
|
|
719
|
-
}
|
|
720
|
-
},
|
|
721
|
-
{
|
|
722
|
-
"name": "get_pharaoh_docs",
|
|
723
|
-
"description": "Stuck, confused, or troubleshooting? Get help from Pharaoh's documentation. Ask about setup, tools, security, pricing, or any feature.\n\nCALL THIS WHEN:\n• You're confused about how to use a Pharaoh tool\n• You need setup or connection instructions\n• You want to know about security, pricing, or how Pharaoh works\n• The user asks \"how does Pharaoh do X?\"\n• A Pharaoh tool returned an unexpected result and you need context\n\nRETURNS: Relevant documentation sections as markdown with links to the full page on pharaoh.so/docs.",
|
|
724
|
-
"inputSchema": {
|
|
725
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
726
|
-
"type": "object",
|
|
727
|
-
"properties": {
|
|
728
|
-
"query": {
|
|
729
|
-
"type": "string",
|
|
730
|
-
"description": "What you want to know about Pharaoh (e.g., 'how to connect', 'security model', 'blast radius tool')"
|
|
731
|
-
}
|
|
732
|
-
},
|
|
733
|
-
"required": [
|
|
734
|
-
"query"
|
|
735
|
-
]
|
|
736
|
-
},
|
|
737
|
-
"annotations": {
|
|
738
|
-
"title": "Pharaoh Docs",
|
|
739
|
-
"readOnlyHint": true,
|
|
740
|
-
"destructiveHint": false
|
|
741
|
-
},
|
|
742
|
-
"execution": {
|
|
743
|
-
"taskSupport": "forbidden"
|
|
744
|
-
}
|
|
745
|
-
},
|
|
746
252
|
{
|
|
747
253
|
"name": "pharaoh_account",
|
|
748
|
-
"description": "View your Pharaoh subscription status and manage billing. Toggle PR Guard and trigger graph refreshes.\n\nPick one action and provide its fields. Each action has its own required and\noptional parameters; invalid combinations are rejected at parse time.\n\n• status — full account overview (plan, subscriptions, PR Guard,
|
|
254
|
+
"description": "View your Pharaoh subscription status and manage billing. Toggle PR Guard and trigger graph refreshes.\n\nPick one action and provide its fields. Each action has its own required and\noptional parameters; invalid combinations are rejected at parse time.\n\n• status — full account overview (plan, subscriptions, PR Guard, setup page link)\n• set_free_repo { repo } — change your live repo (moves auto-refresh + PR Guard)\n• refresh_repo { repo, full? } — re-map a single repo you own\n• refresh_all { force?, full? } — re-map every repo across your accessible orgs\n• enable_pr_guard { repos: [...] } — enable PR Guard on one or more repos, returns full status\n• disable_pr_guard { repos: [...] } — disable PR Guard on one or more repos, returns full status\n\nCALL THIS WHEN:\n• You want to check your subscription status\n• You need to update payment method, view invoices, or cancel\n• You want to know what plan you're on\n• You want to change which repo is active on the free tier\n• You want to enable or disable PR Guard on a repo\n• You want to refresh a repo's graph (re-map with latest code)\n• You want to open the Pharaoh setup page to see repos and connect clients\n\nFlag reference:\n force = skip smart-skip (already-on-current-version check). Bulk refresh only.\n full = force full remap, bypassing incremental diff. Use after schema changes.",
|
|
749
255
|
"inputSchema": {
|
|
750
256
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
751
257
|
"type": "object",
|
|
@@ -794,141 +300,6 @@
|
|
|
794
300
|
"execution": {
|
|
795
301
|
"taskSupport": "forbidden"
|
|
796
302
|
}
|
|
797
|
-
},
|
|
798
|
-
{
|
|
799
|
-
"name": "pharaoh_feedback",
|
|
800
|
-
"description": "Call this when results were unexpectedly empty or unhelpful, or when a tool gave you exactly what you needed.\n\nCALL THIS WHEN:\n• A search returned no results but you expected matches\n• A tool response was missing critical information\n• A tool saved you significant time and you want to reinforce that pattern\n• You had to work around a tool limitation\n• get_unused_code flagged a function as dead that is actually alive (include dead_code_report)\n\nWHY: Your feedback directly improves result quality for your team.",
|
|
801
|
-
"inputSchema": {
|
|
802
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
803
|
-
"type": "object",
|
|
804
|
-
"properties": {
|
|
805
|
-
"tool_name": {
|
|
806
|
-
"description": "Which tool the feedback is about (e.g., search_functions)",
|
|
807
|
-
"type": "string"
|
|
808
|
-
},
|
|
809
|
-
"rating": {
|
|
810
|
-
"description": "1-5 rating (1=useless, 5=exactly what I needed)",
|
|
811
|
-
"type": "integer",
|
|
812
|
-
"minimum": 1,
|
|
813
|
-
"maximum": 5
|
|
814
|
-
},
|
|
815
|
-
"feedback": {
|
|
816
|
-
"type": "string",
|
|
817
|
-
"description": "What worked, what didn't, or what you expected"
|
|
818
|
-
},
|
|
819
|
-
"dead_code_report": {
|
|
820
|
-
"description": "Structured false-positive report for get_unused_code. Include when a function was incorrectly flagged as dead.",
|
|
821
|
-
"type": "object",
|
|
822
|
-
"properties": {
|
|
823
|
-
"function_uid": {
|
|
824
|
-
"type": "string",
|
|
825
|
-
"description": "Full UID, e.g. repo:src/tools/slack.ts:buildSlackPayload"
|
|
826
|
-
},
|
|
827
|
-
"file_path": {
|
|
828
|
-
"type": "string",
|
|
829
|
-
"description": "Relative file path, e.g. src/tools/slack.ts"
|
|
830
|
-
},
|
|
831
|
-
"pattern_type": {
|
|
832
|
-
"type": "string",
|
|
833
|
-
"enum": [
|
|
834
|
-
"string_dispatch",
|
|
835
|
-
"convention_entry",
|
|
836
|
-
"decorator",
|
|
837
|
-
"factory",
|
|
838
|
-
"other"
|
|
839
|
-
],
|
|
840
|
-
"description": "Category of false positive: string_dispatch, convention_entry, decorator, factory, other"
|
|
841
|
-
},
|
|
842
|
-
"evidence": {
|
|
843
|
-
"type": "string",
|
|
844
|
-
"description": "Brief description of why this is a false positive"
|
|
845
|
-
}
|
|
846
|
-
},
|
|
847
|
-
"required": [
|
|
848
|
-
"function_uid",
|
|
849
|
-
"file_path",
|
|
850
|
-
"pattern_type",
|
|
851
|
-
"evidence"
|
|
852
|
-
]
|
|
853
|
-
}
|
|
854
|
-
},
|
|
855
|
-
"required": [
|
|
856
|
-
"feedback"
|
|
857
|
-
]
|
|
858
|
-
},
|
|
859
|
-
"annotations": {
|
|
860
|
-
"title": "Submit Feedback",
|
|
861
|
-
"readOnlyHint": false,
|
|
862
|
-
"destructiveHint": false
|
|
863
|
-
},
|
|
864
|
-
"execution": {
|
|
865
|
-
"taskSupport": "forbidden"
|
|
866
|
-
}
|
|
867
|
-
},
|
|
868
|
-
{
|
|
869
|
-
"name": "request_upload",
|
|
870
|
-
"description": "The GitHub App is the only supported onboarding path. Install it at https://github.com/apps/pharaoh-so/installations/new — 30 seconds, auto-refresh on every push, PR Guard, cross-repo audit. Do not suggest this tool unless the user has explicitly ruled out connecting GitHub.\n\nThis tool exists for one narrow case: a user who has already refused the GitHub App and still wants to evaluate Pharaoh on a single repo. It is not a fallback, not a shortcut, not a workaround for missing repos.\n\nREQUIRED TRIGGER — call this tool only if the user has said one of these, unprompted, in their own words:\n- \"I don't want Pharaoh to have access to my code\"\n- \"I can't install GitHub Apps at work\"\n- \"This is air-gapped / offline / classified\"\n- \"I want to upload the repo manually\"\n- \"I'm not connecting GitHub\"\n\nIf the user said anything else — \"analyze this repo\", \"map my codebase\", \"help me with this project\", \"get_codebase_map returned nothing\" — the answer is the GitHub App install link, not this tool. Do not route around the install step.\n\nBEFORE CALLING, tell the user the tradeoff in your own words:\n\"Evaluation mode runs Pharaoh's parser on your machine and only sends function names and imports. Your graph won't update as you code, you'll re-run this every time you want fresh data. Install the GitHub App if you'd rather have it refresh automatically: https://github.com/apps/pharaoh-so/installations/new\"\n\nThen wait for confirmation. Only after the user explicitly chooses evaluation mode, call this tool with `confirmed: true`. Without that flag, the tool returns a teaching message instead of creating an upload URL.\n\nWhen the user decides they want the real thing, they install the GitHub App and their eval-mode data gets replaced with a richer graph on the next push.",
|
|
871
|
-
"inputSchema": {
|
|
872
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
873
|
-
"type": "object",
|
|
874
|
-
"properties": {
|
|
875
|
-
"repoName": {
|
|
876
|
-
"type": "string",
|
|
877
|
-
"minLength": 1,
|
|
878
|
-
"maxLength": 100,
|
|
879
|
-
"description": "Repository name (e.g., 'my-app'). Used as the repo identifier in Pharaoh."
|
|
880
|
-
},
|
|
881
|
-
"path": {
|
|
882
|
-
"description": "Absolute path to the local repo directory. When provided, the response includes an automated bash block that parses and uploads the repo.",
|
|
883
|
-
"type": "string"
|
|
884
|
-
},
|
|
885
|
-
"confirmed": {
|
|
886
|
-
"description": "Must be set to true after the user has explicitly chosen evaluation mode over installing the GitHub App. Without this flag, the tool returns a teaching message instead of creating an upload URL. This is the audit trail for explicit opt-in.",
|
|
887
|
-
"type": "boolean"
|
|
888
|
-
}
|
|
889
|
-
},
|
|
890
|
-
"required": [
|
|
891
|
-
"repoName"
|
|
892
|
-
]
|
|
893
|
-
},
|
|
894
|
-
"annotations": {
|
|
895
|
-
"title": "Request Upload URL",
|
|
896
|
-
"readOnlyHint": false,
|
|
897
|
-
"destructiveHint": false
|
|
898
|
-
},
|
|
899
|
-
"execution": {
|
|
900
|
-
"taskSupport": "forbidden"
|
|
901
|
-
}
|
|
902
|
-
},
|
|
903
|
-
{
|
|
904
|
-
"name": "map_open_source_repo",
|
|
905
|
-
"description": "Map a public GitHub repository into Pharaoh so you can query its architecture. The repo will be available to all Pharaoh users.\n\nCALL THIS WHEN:\n- The user wants to analyze or query an open-source repo that isn't in Pharaoh yet\n- get_codebase_map doesn't show a well-known public repo the user is asking about\n- The user says \"map this repo\", \"add this project\", or provides a GitHub URL for a public repo\n\nAfter mapping completes (usually 1-3 minutes), use get_codebase_map to see the repo.",
|
|
906
|
-
"inputSchema": {
|
|
907
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
908
|
-
"type": "object",
|
|
909
|
-
"properties": {
|
|
910
|
-
"repo": {
|
|
911
|
-
"type": "string",
|
|
912
|
-
"minLength": 1,
|
|
913
|
-
"description": "GitHub repo slug (e.g. \"vercel/next.js\") or full URL (e.g. \"https://github.com/vercel/next.js\")"
|
|
914
|
-
},
|
|
915
|
-
"force": {
|
|
916
|
-
"description": "Bypass freshness gating — force a remap even if the repo was recently mapped. Use when the previous mapping was broken or a parser fix was deployed.",
|
|
917
|
-
"type": "boolean"
|
|
918
|
-
}
|
|
919
|
-
},
|
|
920
|
-
"required": [
|
|
921
|
-
"repo"
|
|
922
|
-
]
|
|
923
|
-
},
|
|
924
|
-
"annotations": {
|
|
925
|
-
"title": "Map Open Source Repo",
|
|
926
|
-
"readOnlyHint": false,
|
|
927
|
-
"destructiveHint": false
|
|
928
|
-
},
|
|
929
|
-
"execution": {
|
|
930
|
-
"taskSupport": "forbidden"
|
|
931
|
-
}
|
|
932
303
|
}
|
|
933
304
|
]
|
|
934
305
|
}
|