ucn 3.8.19 → 3.8.20

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/core/registry.js CHANGED
@@ -96,29 +96,29 @@ const PARAM_MAP = {
96
96
  // file* = file is the command subject (required), not a filter pattern.
97
97
  const FLAG_APPLICABILITY = {
98
98
  // Understanding code
99
- about: ['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'includeTests', 'top', 'all', 'withTypes', 'minConfidence', 'showConfidence'],
100
- context: ['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'minConfidence', 'showConfidence'],
101
- impact: ['file', 'exclude', 'className', 'top'],
102
- blast: ['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'all', 'minConfidence'],
103
- reverseTrace: ['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'all', 'minConfidence'],
104
- smart: ['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'withTypes', 'minConfidence'],
105
- trace: ['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'all', 'minConfidence'],
106
- example: ['file', 'className'],
107
- related: ['file', 'className', 'top', 'all'],
99
+ about: ['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'includeTests', 'top', 'all', 'withTypes', 'minConfidence', 'showConfidence'],
100
+ context: ['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'minConfidence', 'showConfidence'],
101
+ impact: ['name', 'file', 'exclude', 'className', 'top'],
102
+ blast: ['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'all', 'minConfidence'],
103
+ reverseTrace: ['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'all', 'minConfidence'],
104
+ smart: ['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'withTypes', 'minConfidence'],
105
+ trace: ['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'all', 'minConfidence'],
106
+ example: ['name', 'file', 'className'],
107
+ related: ['name', 'file', 'className', 'top', 'all'],
108
108
  // Finding code
109
- find: ['file', 'exclude', 'className', 'includeTests', 'top', 'limit', 'exact', 'in', 'all', 'depth'],
110
- usages: ['file', 'exclude', 'className', 'includeTests', 'limit', 'codeOnly', 'context', 'in'],
109
+ find: ['name', 'file', 'exclude', 'className', 'includeTests', 'top', 'limit', 'exact', 'in', 'all', 'depth'],
110
+ usages: ['name', 'file', 'exclude', 'className', 'includeTests', 'limit', 'codeOnly', 'context', 'in'],
111
111
  toc: ['file', 'exclude', 'top', 'limit', 'all', 'detailed', 'topLevel', 'in'],
112
- search: ['file', 'exclude', 'includeTests', 'top', 'limit', 'codeOnly', 'caseSensitive', 'context', 'regex', 'in', 'type', 'param', 'receiver', 'returns', 'decorator', 'exported', 'unused'],
113
- tests: ['file', 'exclude', 'className', 'callsOnly'],
114
- affectedTests:['file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'minConfidence'],
112
+ search: ['term', 'file', 'exclude', 'includeTests', 'top', 'limit', 'codeOnly', 'caseSensitive', 'context', 'regex', 'in', 'type', 'param', 'receiver', 'returns', 'decorator', 'exported', 'unused'],
113
+ tests: ['name', 'file', 'exclude', 'className', 'callsOnly'],
114
+ affectedTests:['name', 'file', 'exclude', 'className', 'includeMethods', 'includeUncertain', 'depth', 'minConfidence'],
115
115
  deadcode: ['file', 'exclude', 'includeTests', 'includeExported', 'includeDecorated', 'limit', 'in'],
116
116
  entrypoints: ['file', 'exclude', 'includeTests', 'limit', 'type', 'framework'],
117
117
  // Extracting code
118
- fn: ['file', 'className', 'all'],
119
- class: ['file', 'all', 'maxLines'],
118
+ fn: ['name', 'file', 'className', 'all'],
119
+ class: ['name', 'file', 'all', 'maxLines'],
120
120
  lines: ['file', 'range'],
121
- expand: [],
121
+ expand: ['item'],
122
122
  // File dependencies
123
123
  imports: ['file'],
124
124
  exporters: ['file'],
@@ -126,11 +126,11 @@ const FLAG_APPLICABILITY = {
126
126
  graph: ['file', 'depth', 'direction', 'all'],
127
127
  circularDeps: ['file', 'exclude'],
128
128
  // Refactoring
129
- verify: ['file', 'className'],
130
- plan: ['file', 'className', 'addParam', 'removeParam', 'renameTo', 'defaultValue'],
129
+ verify: ['name', 'file', 'className'],
130
+ plan: ['name', 'file', 'className', 'addParam', 'removeParam', 'renameTo', 'defaultValue'],
131
131
  diffImpact: ['file', 'limit', 'base', 'staged', 'all'],
132
132
  // Other
133
- typedef: ['file', 'className', 'exact'],
133
+ typedef: ['name', 'file', 'className', 'exact'],
134
134
  stacktrace: ['stack'],
135
135
  api: ['file', 'limit'],
136
136
  stats: ['functions', 'top'],
@@ -244,7 +244,7 @@ const REVERSE_PARAM_MAP = buildReverseParamMap();
244
244
  * One line per command: `about: file, exclude, class_name, ...`
245
245
  */
246
246
  function generateMcpParamSection() {
247
- const lines = ['', 'ACCEPTED FLAGS PER COMMAND (name, term, stack, range, base, staged, max_chars always accepted; flags not listed below are ignored):'];
247
+ const lines = ['', 'ACCEPTED FLAGS PER COMMAND (max_chars, max_files, follow_symlinks always accepted; flags not listed below are ignored):'];
248
248
  for (const cmd of CANONICAL_COMMANDS) {
249
249
  const flags = FLAG_APPLICABILITY[cmd];
250
250
  if (!flags || flags.length === 0) continue;
package/mcp/server.js CHANGED
@@ -314,11 +314,9 @@ server.registerTool(
314
314
  const strippedParams = [];
315
315
  const applicable = FLAG_APPLICABILITY[command];
316
316
  if (applicable) {
317
- // Core params that are always allowed (primary args, global options)
318
- const coreParams = new Set([
319
- 'name', 'term', 'stack', 'range', 'base', 'staged',
320
- 'all', 'json', 'maxChars', 'maxFiles', 'workers',
321
- ]);
317
+ // Truly global options apply to all commands (build/display control).
318
+ // Command-specific params (name, term, stack, range, etc.) are in FLAG_APPLICABILITY.
319
+ const coreParams = new Set(['maxChars', 'maxFiles', 'followSymlinks']);
322
320
  for (const key of Object.keys(ep)) {
323
321
  if (coreParams.has(key)) continue;
324
322
  if (!applicable.includes(key) && ep[key] !== undefined &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ucn",
3
- "version": "3.8.19",
3
+ "version": "3.8.20",
4
4
  "mcpName": "io.github.mleoca/ucn",
5
5
  "description": "Code intelligence toolkit for AI agents — extract functions, trace call chains, find callers, detect dead code without reading entire files. Works as MCP server, CLI, or agent skill. Supports JS/TS, Python, Go, Rust, Java.",
6
6
  "main": "index.js",