ucn 4.2.3 → 5.0.2

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.
Files changed (72) hide show
  1. package/.claude/skills/ucn/SKILL.md +89 -77
  2. package/.claude/skills/ucn/references/commands.md +62 -68
  3. package/.claude/skills/ucn/references/trust-contract.md +31 -6
  4. package/README.md +438 -305
  5. package/assets/demo.svg +31 -0
  6. package/cli/index.js +430 -1385
  7. package/core/account.js +144 -34
  8. package/core/analysis.js +182 -72
  9. package/core/ast-analysis.js +279 -0
  10. package/core/bridge.js +205 -24
  11. package/core/brief.js +27 -58
  12. package/core/build-worker.js +21 -140
  13. package/core/cache.js +513 -11
  14. package/core/callers.js +4920 -456
  15. package/core/check.js +13 -4
  16. package/core/command-contracts.js +402 -0
  17. package/core/compilation-database.js +276 -0
  18. package/core/confidence.js +4 -1
  19. package/core/deadcode.js +397 -19
  20. package/core/discovery.js +359 -46
  21. package/core/entrypoints.js +195 -41
  22. package/core/execute.js +887 -81
  23. package/core/graph-build.js +162 -7
  24. package/core/graph.js +53 -77
  25. package/core/imports.js +65 -6
  26. package/core/index-ir.js +138 -0
  27. package/core/ir.js +195 -0
  28. package/core/output/analysis.js +212 -22
  29. package/core/output/brief.js +23 -0
  30. package/core/output/check.js +4 -0
  31. package/core/output/doctor.js +37 -6
  32. package/core/output/endpoints.js +5 -2
  33. package/core/output/extraction.js +24 -12
  34. package/core/output/find.js +141 -36
  35. package/core/output/graph.js +11 -5
  36. package/core/output/public.js +462 -0
  37. package/core/output/refactoring.js +42 -10
  38. package/core/output/reporting.js +97 -20
  39. package/core/output/search.js +24 -16
  40. package/core/output/shared.js +22 -1
  41. package/core/output/tracing.js +30 -15
  42. package/core/output-budget.js +295 -0
  43. package/core/output.js +1 -0
  44. package/core/parallel-build.js +44 -11
  45. package/core/parser.js +3 -3
  46. package/core/project.js +384 -187
  47. package/core/public-command.js +47 -0
  48. package/core/registry.js +247 -117
  49. package/core/reporting.js +312 -290
  50. package/core/search.js +317 -185
  51. package/core/semantic-provider.js +110 -0
  52. package/core/stacktrace.js +25 -0
  53. package/core/tracing.js +101 -51
  54. package/core/trust-matrix.js +19 -40
  55. package/core/verify.js +534 -37
  56. package/languages/adapter.js +218 -0
  57. package/languages/c-family.js +2791 -0
  58. package/languages/c.js +3 -0
  59. package/languages/cpp.js +3 -0
  60. package/languages/csharp.js +1402 -0
  61. package/languages/go.js +60 -21
  62. package/languages/html.js +2 -2
  63. package/languages/index.js +85 -7
  64. package/languages/java.js +396 -13
  65. package/languages/javascript.js +199 -19
  66. package/languages/python.js +964 -22
  67. package/languages/rust.js +1317 -152
  68. package/languages/utils.js +40 -3
  69. package/mcp/server.js +254 -636
  70. package/package.json +39 -22
  71. package/eslint.config.js +0 -43
  72. package/jsconfig.json +0 -10
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "ucn",
3
- "version": "4.2.3",
3
+ "version": "5.0.2",
4
4
  "mcpName": "io.github.mleoca/ucn",
5
- "description": "Code intelligence toolkit for AI agents: extract functions, trace call chains, find callers, and detect dead code without reading entire files. Works as MCP server, CLI, or agent skill. Supports JS/TS, Python, Go, Rust, Java.",
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",
7
7
  "bin": {
8
8
  "ucn": "cli/index.js",
@@ -10,19 +10,27 @@
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-cross.test.js test/regression-mcp.test.js test/regression-parser.test.js test/regression-commands.test.js test/regression-fixes.test.js test/regression-bugfixes.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/systematic-test.js test/mcp-edge-cases.js test/conservation.test.js test/parity-test.js test/trust-matrix.test.js",
14
- "benchmark:agent": "node test/agent-understanding-benchmark.js",
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/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/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
+ "benchmark:agent": "node test/agent-public-surface-benchmark.js",
15
+ "benchmark:agent:gate": "node test/agent-public-surface-benchmark.js --gate",
16
+ "benchmark:agent:legacy": "node test/agent-understanding-benchmark.js",
15
17
  "eval:conservation": "node eval/conservation-real.js",
16
18
  "eval:oracle": "node eval/run-oracle-eval.js",
17
19
  "eval:deadcode": "node eval/run-deadcode-eval.js",
18
20
  "eval:performance": "node --expose-gc eval/run-performance-gate.js",
19
- "lint": "eslint core/ cli/ mcp/ languages/ eval/run-*.js eval/*-gate-policy.js",
21
+ "eval:host-calibration": "node eval/lib/host-calibration.js --pin",
22
+ "eval:consistency": "node eval/run-consistency-eval.js --project .",
23
+ "profile:callers": "node eval/profile-callers.js",
24
+ "lint": "eslint core/ cli/ mcp/ languages/ eval/run-*.js eval/*-gate-policy.js eval/profile-callers.js eval/oracles/*.js",
20
25
  "verify": "npm run lint && npm test",
21
26
  "trust:gate:semantic": "node eval/run-oracle-eval.js --release --min-precision 0.98 --max-unscored-ratio 0.10",
22
27
  "trust:gate:deadcode": "node eval/run-deadcode-eval.js --release --sample 100 --arm default",
23
- "trust:gate:performance": "node --expose-gc eval/run-performance-gate.js --release --queries 40",
24
- "trust:gate:fast": "node eval/run-oracle-eval.js --repo preact-signals,httpx --min-precision 0.98 && node --expose-gc eval/run-performance-gate.js --repo preact-signals,httpx --queries 20",
25
- "trust:gate": "npm run trust:gate:semantic && npm run trust:gate:deadcode && npm run trust:gate:performance"
28
+ "trust:gate:performance": "UCN_WORKERS=4 node --expose-gc eval/run-performance-gate.js --release --queries 40",
29
+ "trust:gate:performance:pr": "UCN_WORKERS=4 node --expose-gc eval/run-performance-gate.js --repo cjson,fmt --samples 3 --queries 40 --require-wall-throughput",
30
+ "trust:gate:consistency": "node eval/run-consistency-eval.js --release --sample 40",
31
+ "trust:gate:agent": "node test/agent-public-surface-benchmark.js --gate",
32
+ "trust:gate:fast": "node --expose-gc eval/run-performance-gate.js --repo preact-signals,httpx --queries 20 && node eval/run-oracle-eval.js --repo preact-signals,httpx --min-precision 0.98 && node eval/run-consistency-eval.js --repo preact-signals,httpx --sample 20 --gate",
33
+ "trust:gate": "npm run trust:gate:performance && npm run trust:gate:semantic && npm run trust:gate:deadcode && npm run trust:gate:consistency && npm run trust:gate:agent"
26
34
  },
27
35
  "keywords": [
28
36
  "mcp",
@@ -58,7 +66,11 @@
58
66
  "python",
59
67
  "go",
60
68
  "rust",
61
- "java"
69
+ "java",
70
+ "c",
71
+ "c++",
72
+ "csharp",
73
+ "html"
62
74
  ],
63
75
  "author": "Constantin-Mihail Leoca (https://github.com/mleoca)",
64
76
  "repository": {
@@ -71,24 +83,29 @@
71
83
  "node": ">=20"
72
84
  },
73
85
  "dependencies": {
74
- "tree-sitter": "^0.21.0",
75
- "tree-sitter-go": "^0.21.0",
76
- "tree-sitter-html": "^0.23.0",
77
- "tree-sitter-java": "^0.21.0",
78
- "tree-sitter-javascript": "^0.21.0",
79
- "tree-sitter-python": "^0.21.0",
80
- "tree-sitter-rust": "^0.21.0",
81
- "tree-sitter-typescript": "^0.21.0"
86
+ "re2js": "2.8.6",
87
+ "safe-regex2": "5.1.1",
88
+ "tree-sitter": "0.21.1",
89
+ "tree-sitter-c": "0.23.2",
90
+ "tree-sitter-c-sharp": "0.23.1",
91
+ "tree-sitter-cpp": "0.23.4",
92
+ "tree-sitter-go": "0.23.4",
93
+ "tree-sitter-html": "0.23.2",
94
+ "tree-sitter-java": "0.23.5",
95
+ "tree-sitter-javascript": "0.23.1",
96
+ "tree-sitter-python": "0.23.4",
97
+ "tree-sitter-rust": "0.23.1",
98
+ "tree-sitter-typescript": "0.23.2"
82
99
  },
83
100
  "optionalDependencies": {
84
- "@modelcontextprotocol/sdk": "^1.0.0",
85
- "zod": "^3.25.0"
101
+ "@modelcontextprotocol/sdk": "^1.30.0",
102
+ "zod": "^4.4.3"
86
103
  },
87
104
  "devDependencies": {
88
105
  "@eslint/js": "^10.0.1",
89
- "eslint": "^10.0.3",
90
- "pyright": "1.1.410",
106
+ "eslint": "^10.8.1",
107
+ "pyright": "1.1.411",
91
108
  "ts-morph": "^28.0.0",
92
- "typescript": "^6.0.3"
109
+ "typescript": "^7.0.2"
93
110
  }
94
111
  }
package/eslint.config.js DELETED
@@ -1,43 +0,0 @@
1
- 'use strict';
2
-
3
- const js = require('@eslint/js');
4
-
5
- module.exports = [
6
- js.configs.recommended,
7
- {
8
- languageOptions: {
9
- ecmaVersion: 'latest',
10
- sourceType: 'commonjs',
11
- globals: {
12
- // Node.js globals
13
- require: 'readonly',
14
- module: 'readonly',
15
- exports: 'readonly',
16
- __dirname: 'readonly',
17
- __filename: 'readonly',
18
- process: 'readonly',
19
- console: 'readonly',
20
- Buffer: 'readonly',
21
- setTimeout: 'readonly',
22
- setInterval: 'readonly',
23
- clearTimeout: 'readonly',
24
- clearInterval: 'readonly',
25
- setImmediate: 'readonly',
26
- URL: 'readonly',
27
- URLSearchParams: 'readonly',
28
- TextEncoder: 'readonly',
29
- TextDecoder: 'readonly',
30
- },
31
- },
32
- rules: {
33
- 'no-undef': 'error',
34
- 'no-unused-vars': ['warn', { args: 'none', caughtErrors: 'none', ignoreRestSiblings: true }],
35
- 'no-redeclare': 'error',
36
- 'eqeqeq': ['warn', 'smart'],
37
- 'no-constant-condition': ['error', { checkLoops: false }],
38
- },
39
- },
40
- {
41
- ignores: ['node_modules/', 'test/', '.ucn-cache/', 'demo/'],
42
- },
43
- ];
package/jsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "checkJs": false,
4
- "module": "commonjs",
5
- "target": "es2020",
6
- "baseUrl": "."
7
- },
8
- "include": ["core/**/*.js", "cli/**/*.js", "mcp/**/*.js", "languages/**/*.js"],
9
- "exclude": ["node_modules"]
10
- }