clast-ai 0.2.1 → 0.2.3

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clast",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Code index for coding agents: symbol search, exact symbol source, type-aware call graph, references, type hierarchy, change impact, dead code and exact counts for any repository. TypeScript, JavaScript, Python, Java, C#, Go, Rust, C, C++, Ruby, PHP, Swift and Dart.",
5
5
  "author": {
6
6
  "name": "Thomas"
package/CHANGELOG.md ADDED
@@ -0,0 +1,105 @@
1
+ # Changelog
2
+
3
+ ## 0.2.3
4
+
5
+ - `clast-ai guide` prints the usage guide (the Claude Code plugin's `explore` skill) as Markdown,
6
+ for agents that take their instructions from a file: `clast-ai guide >> AGENTS.md`.
7
+ - Checked with other agents: Codex CLI 0.167 starts the server (`codex mcp add clast -- clast-ai`,
8
+ also through `npx`) and calls the tools in a session; Gemini CLI connects to it. Install steps for
9
+ both are in the README.
10
+ - README rewritten; the changelog and the full benchmark tables moved to `CHANGELOG.md` and
11
+ `docs/benchmarks.md`.
12
+
13
+ ## 0.2.2
14
+
15
+ - The clean-up of older installs also finds servers registered as `node .../dist/server/index.js` (how
16
+ the 0.1 README registered a build from source) and reads the configuration from `CLAUDE_CONFIG_DIR`
17
+ when that is set. Both were found by installing the plugin into an empty configuration next to an
18
+ old-style registration.
19
+
20
+ ## 0.2.1
21
+
22
+ - `clast-ai migrate`: finds and removes what older installs left behind (duplicate MCP registrations
23
+ next to the plugin, entries written by the old VS Code extension, the v0.1 index file). The plugin
24
+ runs it automatically, once per version, at the first session after an install or update.
25
+ - The plugin uses a global `clast-ai` only when it is at least as new as the plugin itself, so a
26
+ plugin update is not held back by an older global install.
27
+
28
+ ## 0.2.0
29
+
30
+ New tools (7 to 13):
31
+
32
+ - `clast_references`: every use of a symbol, not just calls.
33
+ - `clast_hierarchy`: supertypes, subtypes, implementers and overrides, including Go structural
34
+ interfaces and Ruby mixins.
35
+ - `clast_overview`: map of a repository or directory.
36
+ - `clast_grep`: text search over all text files with the enclosing symbol on every hit.
37
+ - `clast_changes`: symbols touched by a git diff, plus their callers.
38
+ - `clast_impact`: for one symbol, what has to change with it (declarations, overrides, implementations,
39
+ overloads), every direct caller by file and line, the reach through indirect callers, and the test
40
+ files to run, including tests that only reach it through its callers.
41
+ - `clast_unused`: dead code. A name counts as unused when it is never referenced outside its own
42
+ definitions, or only from other unused code (so a deleted feature's helpers are found with it).
43
+ Reported separately: code used only by tests, names that still appear in a string, config or
44
+ template, and (Java, C#, C, C++, Rust) methods whose every call binds to another definition. Left
45
+ out, with counts: entry points, decorated or attribute-marked symbols, subclasses of library types
46
+ and their methods, object-literal members, exported Go methods, C# extension classes.
47
+ - `clast_stats`: exact counts grouped by directory, file, kind or name: inventory, symbols by name
48
+ pattern, direct and indirect subtypes, call sites by name and receiver, text matches, external
49
+ dependencies, and pattern-based inventories of HTTP / RPC endpoints and database access.
50
+
51
+ Call graph:
52
+
53
+ - Calls are resolved at query time using declared receiver types, imports and aliases, field types
54
+ across files, return types of call chains, inheritance and `super`.
55
+ - Edges are shown as certain, uncertain, or `?` (matched by name only).
56
+ - Argument counts separate overloads. A bare name means all overloads; `path:line` selects one.
57
+ - A call bound to a subclass override no longer counts as a caller of the base method.
58
+ - Language rules: Go packages and structural interfaces, Rust `impl Trait for Arc<T>` and std types,
59
+ C# generic arity / partial / static classes, Ruby mixins and bare calls, Java static imports, Python
60
+ submodule calls and imported instances, TypeScript renamed re-exports, C macro bodies, C++ namespace
61
+ functions.
62
+
63
+ Search:
64
+
65
+ - Ranked by exact name, prefix, abbreviation, typo and plain words.
66
+ - Descriptive queries also match what function bodies mention (marked `[body]`).
67
+ - Overloads fold into one hit.
68
+
69
+ Performance and storage:
70
+
71
+ - `node:sqlite` on disk (WAL, FTS5) replaces in-memory sql.js.
72
+ - Parsing runs in worker threads, with an inline fallback if a worker fails.
73
+ - The server connects first and indexes afterwards; on a first build, tools wait for the index.
74
+ - A watcher re-indexes changed files, and every tool re-checks the files it quotes.
75
+
76
+ Other:
77
+
78
+ - Swift and Dart added (14 languages).
79
+ - All dependencies updated (MCP SDK 1.32, web-tree-sitter 0.27).
80
+ - 291 tests, plus `bench/bench.mjs`, `bench/resolution.mjs` and the A/B harness `bench/ab.mjs`.
81
+ - Installable as a Claude Code plugin from this repository (`/plugin marketplace add xls/clast`,
82
+ `/plugin install clast@clast`): the MCP server, a usage skill, and the slash commands
83
+ `/clast:deadcode`, `/clast:impact`, `/clast:audit` and `/clast:status`. The old VS Code extension
84
+ scaffold that wrote the server into `.claude/settings.local.json` is removed.
85
+ - The navigation tools ask Claude Code to keep them loaded instead of deferring them behind tool
86
+ search; deferred, the agent never called them.
87
+ - Ruby classes and their ancestors are compared by qualified name (`Rails::Generators::Base` is not
88
+ `ActiveRecord::Base`; `Thor::Group` is not a project class called `Group`).
89
+ - C++ functions declared through a head-building macro (`FN(jstring, nativeStart)(args)`) are indexed
90
+ under their real name.
91
+ - C / C++ function pointers whose calling convention is a macro (`err_t (MY_CALL* find)(args)`) are
92
+ indexed as a field called `find`, not as a method called `err_t`.
93
+
94
+ ## Upgrading from 0.1
95
+
96
+ How to upgrade: see [Upgrading from an older install](README.md#coming-from-an-older-install). What changed:
97
+
98
+ - Node.js 22.22+ is required (was 18).
99
+ - The index moved from `.clast/clast.db` (sql.js) to `.clast/index.db` (`node:sqlite`). Nothing is
100
+ migrated: the index is a cache and is rebuilt on first start. The old file is ignored; the plugin
101
+ (or `clast-ai migrate --apply`) deletes it.
102
+ - A later schema change deletes and rebuilds the index automatically (the schema is at version 26).
103
+ - Tool output is compact text instead of JSON.
104
+ - `clast_call_graph` defaults to depth 1 and gained `within` and `includeTests`.
105
+ - The binary entry point is `dist/cli.js`; `dist/server/index.js` still starts the server for old configs.