ucn 5.2.1 → 5.3.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/.claude/skills/ucn/SKILL.md +49 -3
- package/.claude/skills/ucn/references/commands.md +3 -1
- package/README.md +158 -533
- package/cli/index.js +74 -10
- package/core/account.js +36 -8
- package/core/cache.js +167 -21
- package/core/callers.js +1229 -162
- package/core/execute.js +24 -6
- package/core/graph.js +167 -35
- package/core/index-ir.js +17 -12
- package/core/ir.js +56 -8
- package/core/output/graph.js +60 -11
- package/core/output/lines.js +259 -0
- package/core/output/public.js +15 -0
- package/core/output/reporting.js +9 -2
- package/core/output-budget.js +7 -4
- package/core/project.js +103 -5
- package/core/registry.js +7 -6
- package/core/reporting.js +159 -14
- package/languages/c-family.js +19 -17
- package/languages/go.js +170 -42
- package/languages/javascript.js +470 -15
- package/languages/python.js +678 -38
- package/languages/rust.js +1 -0
- package/mcp/server.js +3 -1
- package/package.json +2 -2
- package/assets/demo.svg +0 -31
package/languages/rust.js
CHANGED
|
@@ -820,6 +820,7 @@ function _processClass(node, types, processedRanges, lines, code) {
|
|
|
820
820
|
typeName: implInfo.typeName,
|
|
821
821
|
members: extractImplMembers(node, lines, implInfo.typeName),
|
|
822
822
|
modifiers: [],
|
|
823
|
+
...(implInfo.generics && { generics: implInfo.generics }),
|
|
823
824
|
...(derefTarget && { derefTarget }),
|
|
824
825
|
...(docstring && { docstring })
|
|
825
826
|
});
|
package/mcp/server.js
CHANGED
|
@@ -271,7 +271,7 @@ const INPUT_SHAPE = {
|
|
|
271
271
|
include_exported: booleanParam('Include exported symbols in deadcode results'),
|
|
272
272
|
include_decorated: booleanParam('Include decorated/annotated symbols in deadcode results'),
|
|
273
273
|
calls_only: booleanParam('tests: retain direct calls and test-case matches only.'),
|
|
274
|
-
max_lines: integerParam('source: maximum lines
|
|
274
|
+
max_lines: integerParam('source: maximum lines per declaration; raw mode discloses any truncation.', { exclusiveMinimum: 0, maximum: 1000000 }),
|
|
275
275
|
direction: stringParam('trace: callees/callers. deps: imports/importers/both.', { enum: ['callees', 'callers', 'imports', 'importers', 'both'] }),
|
|
276
276
|
to: stringParam('trace with direction=callers: continue toward entry points.', { enum: ['entrypoints'] }),
|
|
277
277
|
cycles: booleanParam('deps: report circular imports instead of a file graph.'),
|
|
@@ -280,6 +280,8 @@ const INPUT_SHAPE = {
|
|
|
280
280
|
functions: booleanParam('repo stats: include per-function line counts sorted by size.'),
|
|
281
281
|
hot: booleanParam('repo stats: include the top N most-called functions.'),
|
|
282
282
|
diverse: booleanParam('show example: return representatives from distinct argument shapes.'),
|
|
283
|
+
lines: booleanParam('find/usages/search/show/impact: path:line:text listings without default row caps; explicit top/limit still apply. show accepts callers/callees sections, default callers. Tier tags follow a tab; accounting and notes follow as "# " lines. MCP transport budgets still apply and preserve accounting.'),
|
|
284
|
+
raw: booleanParam('source: code text without a header or line-number gutter, including full large classes. Notes follow as "# " lines; MCP transport budgets still apply.'),
|
|
283
285
|
git: booleanParam('show summary: attach last-modified, author, and recent-change metadata.'),
|
|
284
286
|
add_param: stringParam('Parameter name to add (plan command)'),
|
|
285
287
|
remove_param: stringParam('Parameter name to remove (plan command)'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ucn",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"mcpName": "io.github.mleoca/ucn",
|
|
5
5
|
"description": "Auditable AST code intelligence for AI agents: 18 task-oriented commands through one MCP tool, CLI, or agent skill. Supports JS/TS, Python, Go, Rust, Java, C, C++, C#, and HTML.",
|
|
6
6
|
"main": "index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"version": "node scripts/sync-server-version.js && git add server.json",
|
|
13
|
-
"test": "node --test test/parser-unit.test.js test/integration.test.js test/cache.test.js test/formatter.test.js test/interactive.test.js test/feature.test.js test/regression-js.test.js test/regression-py.test.js test/regression-go.test.js test/regression-java.test.js test/regression-rust.test.js test/regression-c-family.test.js test/regression-cross.test.js test/regression-mcp.test.js test/mcp-protocol.test.js test/mcp-sdk-compat.test.js test/dependency-security.test.js test/regression-parser.test.js test/regression-commands.test.js test/regression-fixes.test.js test/regression-bugfixes.test.js test/release-surface-regressions.test.js test/prerelease-audit.test.js test/release-readiness-audit.test.js test/cross-language.test.js test/accuracy.test.js test/command-coverage.test.js test/perf-optimizations.test.js test/performance-gate-policy.test.js test/oracle-gate-policy.test.js test/outcome-policy.test.js test/consistency-eval.test.js test/agent-public-surface-benchmark.test.js test/command-contracts.test.js test/language-adapter.test.js test/systematic-test.js test/mcp-edge-cases.js test/conservation.test.js test/parity-test.js test/trust-matrix.test.js",
|
|
13
|
+
"test": "node --test test/shell-output.test.js test/parser-unit.test.js test/integration.test.js test/cache.test.js test/formatter.test.js test/interactive.test.js test/feature.test.js test/regression-js.test.js test/regression-py.test.js test/regression-go.test.js test/regression-java.test.js test/regression-rust.test.js test/regression-c-family.test.js test/regression-cross.test.js test/regression-mcp.test.js test/mcp-protocol.test.js test/mcp-sdk-compat.test.js test/dependency-security.test.js test/regression-parser.test.js test/regression-commands.test.js test/regression-fixes.test.js test/regression-bugfixes.test.js test/release-surface-regressions.test.js test/prerelease-audit.test.js test/release-readiness-audit.test.js test/cross-language.test.js test/accuracy.test.js test/command-coverage.test.js test/perf-optimizations.test.js test/performance-gate-policy.test.js test/oracle-gate-policy.test.js test/outcome-policy.test.js test/consistency-eval.test.js test/agent-public-surface-benchmark.test.js test/command-contracts.test.js test/language-adapter.test.js test/systematic-test.js test/mcp-edge-cases.js test/conservation.test.js test/parity-test.js test/trust-matrix.test.js",
|
|
14
14
|
"benchmark:agent": "node test/agent-public-surface-benchmark.js",
|
|
15
15
|
"benchmark:agent:gate": "node test/agent-public-surface-benchmark.js --gate",
|
|
16
16
|
"benchmark:agent:legacy": "node test/agent-understanding-benchmark.js",
|
package/assets/demo.svg
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 453" font-family="ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace" font-size="12">
|
|
2
|
-
<!-- Terminal window -->
|
|
3
|
-
<rect x="0.5" y="0.5" width="999" height="452" rx="10" fill="#0d1117" stroke="#30363d"/>
|
|
4
|
-
<!-- Title bar -->
|
|
5
|
-
<path d="M0.5 10.5 a10 10 0 0 1 10 -10 h979 a10 10 0 0 1 10 10 v23 h-999 z" fill="#161b22"/>
|
|
6
|
-
<line x1="0.5" y1="34" x2="999.5" y2="34" stroke="#30363d"/>
|
|
7
|
-
<circle cx="20" cy="17" r="6" fill="#ff5f57"/>
|
|
8
|
-
<circle cx="40" cy="17" r="6" fill="#febc2e"/>
|
|
9
|
-
<circle cx="60" cy="17" r="6" fill="#28c840"/>
|
|
10
|
-
<text x="500" y="21" text-anchor="middle" fill="#8b949e" font-size="11.5">ucn - ripgrep @ 82313cf9 (pinned oracle commit) - output abridged</text>
|
|
11
|
-
<!-- Session -->
|
|
12
|
-
<g fill="#c9d1d9">
|
|
13
|
-
<text x="24" y="62"><tspan fill="#8b949e">$ </tspan><tspan fill="#7ee787">ucn show Searcher.search_reader --sections=summary,callers --compact</tspan></text>
|
|
14
|
-
<text x="24" y="100">SUMMARY</text>
|
|
15
|
-
<text x="24" y="119">───────</text>
|
|
16
|
-
<text x="24" y="138">pub search_reader<M, R, S>(&mut self, matcher: M, read_from: R, write_to: S): Result<(), S::Error></text>
|
|
17
|
-
<text x="39" y="157">crates/searcher/src/searcher/mod.rs:727-765 (39 lines)</text>
|
|
18
|
-
<text x="39" y="176">handle: crates/searcher/src/searcher/mod.rs:727:search_reader</text>
|
|
19
|
-
<text x="39" y="195">"Execute a search over any implementation of `std::io::Read` and write"</text>
|
|
20
|
-
<text x="24" y="233">CALLERS — CONFIRMED (123):</text>
|
|
21
|
-
<text x="39" y="252">evidence: 2 exact-binding, 121 receiver-hint</text>
|
|
22
|
-
<text x="39" y="271">[1] crates/core/search.rs:426 [search_reader]: searcher.search_reader(&matcher, &mut rdr, &mut sink)?;</text>
|
|
23
|
-
<text x="39" y="290">[4] crates/printer/src/json.rs:940 [binary_detection]: .search_reader(&matcher, BINARY, printer.sink(&matcher))</text>
|
|
24
|
-
<text x="39" y="309">[11] crates/printer/src/standard.rs:1788 [reports_match]: .search_reader(&matcher, SHERLOCK.as_bytes(), &mut sink)</text>
|
|
25
|
-
<text x="69" y="328" fill="#8b949e">… 120 more callers</text>
|
|
26
|
-
<text x="24" y="366">ACCOUNT: "search_reader" occurs on 136 lines in 8 files: 123 confirmed, 1 unverified,</text>
|
|
27
|
-
<text x="39" y="385">6 non-call, 6 other-target, 0 unaccounted</text>
|
|
28
|
-
<text x="24" y="404">CONTRACT: literal-name text partition complete; semantic completeness is not claimed.</text>
|
|
29
|
-
<text x="24" y="433"><tspan fill="#8b949e">$ </tspan><tspan fill="#c9d1d9">▍</tspan></text>
|
|
30
|
-
</g>
|
|
31
|
-
</svg>
|