@ataraxy-labs/sem 0.10.0 → 0.11.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +25 -10
  3. package/package.json +2 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ All notable changes to sem are documented in this file.
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [0.11.0] - 2026-06-14
8
+
9
+ ### Added
10
+
11
+ - Progress spinner for slow graph builds. `sem graph` and `sem context` now show a uv-style spinner and a summary line (e.g. `135,298 entities, 7,743 files in 6.6s`) while building the entity graph. Strictly stderr and TTY-only, so pipes, JSON, and agent/MCP sessions are unaffected. Disable with SEM_NO_PROGRESS=1.
12
+
13
+ - SQL support (`.sql`, `.psql`, `.pgsql`, `.ddl`) via the official DerekStride/tree-sitter-sql grammar. Extracts tables, views, materialized views, functions, indexes, types, schemas, triggers, sequences, and databases. Thanks @robahtou for the request (#339).
14
+ - Start tracking project changes in `CHANGELOG.md`.
15
+ - Add a pull request check that asks contributors to include a changelog entry.
16
+ - `sem entities` accepts multiple file or directory path arguments.
17
+
18
+ ### Changed
19
+
20
+ - Sparse checkouts now work. libgit2 cannot read a sparse index (`unsupported mandatory extension: 'sdir'`) and its workdir diff reported sparse-excluded files as deleted; sem now routes working and staged diffs through the git CLI when a sparse checkout is detected. Thanks for the report (#330).
21
+
22
+ - README now documents adding the MCP server to coding agents (`claude mcp add sem -- sem mcp`) and explains why `sem mcp` exists. The old section pointed at a separate `sem-mcp` binary; `sem mcp` ships in the main binary.
23
+
24
+ - `sem stats` now counts every diff, including runs that find no changes (previously those returned early and were never recorded, so `diffs performed` undercounted).
25
+
26
+ - Telemetry no longer records development builds (debug builds, or binaries run from a Cargo `target/` directory), so contributor and CI-of-our-own usage stays out of the numbers.
27
+
28
+ - Cloud sync only auto-registers repos that GitHub confirms are public. Private repos run locally unless you opt in with `SEM_SYNC_PRIVATE=1`.
29
+ - `install.sh` verifies the release archive against `checksums.txt` before installing.
30
+ - Switched the Perl grammar to the official `ts-parser-perl` crate (was the unattributed `tree-sitter-perl-next` copy). Properly attributed, correctly MIT-licensed, and includes upstream fixes: an infinite-loop hang on malformed input, better error recovery, and faster parsing. Thanks @rabbiveesh for the report (#355).
31
+
32
+ ### Removed
33
+
34
+ - `sem verify` (function call-arity checker). It saw negligible use and overlapped with compilers/LSPs; removing it keeps the surface area focused.
package/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
  <a href="https://ataraxy-labs.com/blogs/code-is-not-text">Why sem?</a> ·
20
20
  <a href="#install">Install</a> ·
21
21
  <a href="#commands">Commands</a> ·
22
- <a href="#mcp-server">MCP Server</a> ·
22
+ <a href="#use-with-ai-agents-mcp">Agents (MCP)</a> ·
23
23
  <a href="https://github.com/Ataraxy-Labs/sem/releases/latest">Releases</a>
24
24
  </p>
25
25
 
@@ -64,6 +64,12 @@ bun add -d @ataraxy-labs/sem
64
64
  bun pm trust @ataraxy-labs/sem
65
65
  ```
66
66
 
67
+ Once installed, update to the latest release any time:
68
+
69
+ ```bash
70
+ sem update
71
+ ```
72
+
67
73
  Or build from source (requires Rust):
68
74
 
69
75
  ```bash
@@ -289,6 +295,7 @@ sem unsetup
289
295
  | Clojure | `.clj` `.cljs` `.cljc` | vars, functions, macros, multimethods, protocols, records, types |
290
296
  | D | `.d` `.di` | modules, functions, classes, structs, interfaces, unions, enums, templates, aliases, unittests |
291
297
  | Zig | `.zig` | functions, tests, variables |
298
+ | SQL | `.sql` `.psql` `.pgsql` `.ddl` | tables, views, functions, indexes, types, schemas, triggers, sequences |
292
299
 
293
300
  Plus structured data formats:
294
301
 
@@ -327,26 +334,34 @@ Three-phase entity matching:
327
334
 
328
335
  This means sem detects renames and moves, not just additions and deletions. Structural hashing also distinguishes cosmetic changes (whitespace, formatting) from real logic changes.
329
336
 
330
- ## MCP Server
337
+ ## Use with AI agents (MCP)
338
+
339
+ `sem mcp` starts a [Model Context Protocol](https://modelcontextprotocol.io) server over stdin/stdout. It's not a command you run and read yourself: it's a server your coding agent launches in the background so it can ask sem questions while it works. That's the reason `mcp` lives alongside the normal commands. The agent gets 6 tools, all entity-level: `sem_impact`, `sem_context`, `sem_diff`, `sem_entities`, `sem_blame`, `sem_log`.
340
+
341
+ Why an agent wants these: instead of reading whole files and burning tokens, it can ask "what breaks if I change `submitOrder`" (`sem_impact`) or "give me just the context to refactor this function" (`sem_context`) and get a precise answer from the dependency graph.
342
+
343
+ Add it once, then talk to your agent normally. It calls the tools on its own.
331
344
 
332
- sem includes an MCP server with 6 tools for AI agents: `sem_entities`, `sem_diff`, `sem_blame`, `sem_impact`, `sem_log`, `sem_context`. These mirror the CLI commands exactly.
345
+ **Claude Code:**
346
+
347
+ ```bash
348
+ claude mcp add sem -- sem mcp
349
+ ```
350
+
351
+ **Cursor, Claude Desktop, or any client with an `mcpServers` config:**
333
352
 
334
353
  ```json
335
354
  {
336
355
  "mcpServers": {
337
356
  "sem": {
338
- "command": "sem-mcp"
357
+ "command": "sem",
358
+ "args": ["mcp"]
339
359
  }
340
360
  }
341
361
  }
342
362
  ```
343
363
 
344
- Install the MCP binary:
345
-
346
- ```bash
347
- cd sem/crates
348
- cargo install --path sem-mcp
349
- ```
364
+ If `sem` isn't on the agent's PATH, use the absolute path to the binary. No separate install is needed: `sem mcp` ships in the same binary as every other command.
350
365
 
351
366
  ## JSON output
352
367
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ataraxy-labs/sem",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "npm wrapper for the sem CLI. Downloads the matching release binary and exposes the sem command in node_modules/.bin.",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "type": "module",
@@ -14,6 +14,7 @@
14
14
  "scripts/verify-checksum.mjs",
15
15
  "scripts/sync-package-version.mjs",
16
16
  "README.md",
17
+ "CHANGELOG.md",
17
18
  "LICENSE-APACHE",
18
19
  "LICENSE-MIT"
19
20
  ],