witan-code 0.2.1__tar.gz → 0.3.0__tar.gz
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.
- witan_code-0.3.0/CHANGELOG.md +44 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/PKG-INFO +2 -2
- {witan_code-0.2.1 → witan_code-0.3.0}/pyproject.toml +10 -3
- {witan_code-0.2.1 → witan_code-0.3.0}/uv.lock +18 -7
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/cli.py +2 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/.gitignore +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/README.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/config/claude.json +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/config/copilot.json +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/config/pi.json +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/BRANCH_INDEXING.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/CLI_REFERENCE.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/EDGE_PRECISION_TIERS.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/PACKAGE_MAP.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/STAGE2_STITCHING.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/SYMBOL_FORMAT.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/SYMBOL_TABLE.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/docs/USER_GUIDE.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/install.sh +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/queries/code_mutations.gq +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/queries/code_read.gq +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/__init__.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/conftest.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_branches.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_bridge.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_cli_hooks.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_context.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_crossrepo.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_detach.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_edges.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_elicit.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_enrichment.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_graph.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_hooks.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_indexer.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_languages.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_maintenance.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_package_map.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_repo.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_server.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_setup.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_stitch.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_symbol_table.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_visualize.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/__init__.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/__main__.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/_detach.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/bridge.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/bridge_extractors.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/config.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/context.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/edges.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/elicit.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/extensions/pi/codegraph.ts +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/graph.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/hooks.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/indexer.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/maintenance.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/package_map.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/bridge.gq +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/code_mutations.gq +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/code_read.gq +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/delete.gq +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/bash.scm +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/hcl.scm +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/python.scm +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/sql.scm +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/typescript.scm +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/yaml.scm +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/repo.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/schema/bridge-schema.pg +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/schema/code-schema.pg +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/server.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/setup.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/skills/witan-code/SKILL.md +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/stitch.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/store.py +0 -0
- {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/visualize.py +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `witan-code` are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/) (pre-1.0:
|
|
7
|
+
a MINOR bump may include breaking changes).
|
|
8
|
+
|
|
9
|
+
## [0.3.0] - 2026-07-10
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **`witan-code --version`**: prints the installed package version,
|
|
14
|
+
appending a git short ref when installed editable (local workspace) or
|
|
15
|
+
directly from a VCS URL (`uvx --from git+...`), via the new
|
|
16
|
+
`agent_config_kit.resolve_version()` helper.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- `agent-config-kit` dependency bumped to `>=0.4,<1` (was `>=0.1,<1`) to
|
|
21
|
+
require the version that ships `resolve_version`, which backs the new
|
|
22
|
+
`--version` flag.
|
|
23
|
+
|
|
24
|
+
## [0.2.1] - 2026-07-09
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **Pinned `tree-sitter` to `0.25.x`**: `0.26.0` has a use-after-free in its
|
|
29
|
+
pyo3 `Node` binding that segfaults (exit 139) under the heavy
|
|
30
|
+
`.parent()`/`.children()` churn `_walk_defs` does on real-world-sized
|
|
31
|
+
files — deterministically on the 2nd-3rd parse in one process, so
|
|
32
|
+
`witan-code index` hard-crashed on any real repo. `0.25.0`-`0.25.2` are
|
|
33
|
+
crash-free with the same ABI-15 grammar wheels.
|
|
34
|
+
|
|
35
|
+
## [0.2.0] - 2026-07-09
|
|
36
|
+
|
|
37
|
+
Initial PyPI release. `witan-code` is a tree-sitter-based code graph MCP
|
|
38
|
+
server (Layer 2): indexes a repo's symbols (functions, methods, classes,
|
|
39
|
+
modules) and their relationships, then exposes `code_search_symbol` /
|
|
40
|
+
`code_find_definition` / `code_find_references` / `code_callers` /
|
|
41
|
+
`code_impact` queries to the agent. Includes the Layer 2.5 cross-repo bridge,
|
|
42
|
+
linking SOA repos by shared `env_var`/`endpoint`/`package`/`service` contract
|
|
43
|
+
keys. Mounts standalone as `witan-code` or under `witan code …` when the
|
|
44
|
+
`witan` umbrella CLI is installed alongside it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: witan-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: witan-code — tree-sitter code graph + cross-repo bridge (mounts under `witan code`)
|
|
5
5
|
Project-URL: Homepage, https://github.com/mitodl/agent-kit/tree/main/mcp/servers/witan-code
|
|
6
6
|
Project-URL: Repository, https://github.com/mitodl/agent-kit
|
|
@@ -10,7 +10,7 @@ License-Expression: BSD-3-Clause
|
|
|
10
10
|
Keywords: agent,code-graph,coding-agent,mcp,static-analysis,tree-sitter
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Requires-Python: >=3.11
|
|
13
|
-
Requires-Dist: agent-config-kit<1,>=0.
|
|
13
|
+
Requires-Dist: agent-config-kit<1,>=0.4
|
|
14
14
|
Requires-Dist: cyclopts<5,>=4
|
|
15
15
|
Requires-Dist: fastmcp<4,>=3.4.2
|
|
16
16
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "witan-code"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "witan-code — tree-sitter code graph + cross-repo bridge (mounts under `witan code`)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "BSD-3-Clause"
|
|
@@ -10,7 +10,7 @@ classifiers = [
|
|
|
10
10
|
"Programming Language :: Python :: 3",
|
|
11
11
|
]
|
|
12
12
|
dependencies = [
|
|
13
|
-
"agent-config-kit>=0.
|
|
13
|
+
"agent-config-kit>=0.4,<1",
|
|
14
14
|
"fastmcp>=3.4.2,<4",
|
|
15
15
|
"cyclopts>=4,<5",
|
|
16
16
|
# Pinned to 0.25.x: tree-sitter 0.26.0 has a use-after-free in its pyo3 Node
|
|
@@ -51,6 +51,13 @@ witan-code = "witan_code.cli:cli"
|
|
|
51
51
|
requires = ["hatchling"]
|
|
52
52
|
build-backend = "hatchling.build"
|
|
53
53
|
|
|
54
|
+
[tool.uv.sources]
|
|
55
|
+
# Dev/CI use the in-repo workspace copy so this always tests against the
|
|
56
|
+
# agent-config-kit version bumped alongside it — even before that version
|
|
57
|
+
# has actually landed on PyPI. Published wheels only see the PyPI-range
|
|
58
|
+
# dependency declared above.
|
|
59
|
+
agent-config-kit = { path = "../../../packages/agent-config-kit", editable = true }
|
|
60
|
+
|
|
54
61
|
[dependency-groups]
|
|
55
62
|
test = ["pytest>=8"]
|
|
56
63
|
|
|
@@ -62,7 +69,7 @@ testpaths = ["tests"]
|
|
|
62
69
|
packages = ["witan_code"]
|
|
63
70
|
|
|
64
71
|
[tool.bumpversion]
|
|
65
|
-
current_version = "0.
|
|
72
|
+
current_version = "0.3.0"
|
|
66
73
|
allow_dirty = true
|
|
67
74
|
|
|
68
75
|
[[tool.bumpversion.files]]
|
|
@@ -10,14 +10,25 @@ resolution-markers = [
|
|
|
10
10
|
|
|
11
11
|
[[package]]
|
|
12
12
|
name = "agent-config-kit"
|
|
13
|
-
version = "0.
|
|
14
|
-
source = {
|
|
13
|
+
version = "0.4.0"
|
|
14
|
+
source = { editable = "../../../packages/agent-config-kit" }
|
|
15
15
|
dependencies = [
|
|
16
16
|
{ name = "pydantic" },
|
|
17
17
|
]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
|
|
19
|
+
[package.metadata]
|
|
20
|
+
requires-dist = [
|
|
21
|
+
{ name = "cyclopts", marker = "extra == 'cli'", specifier = ">=4,<5" },
|
|
22
|
+
{ name = "pydantic", specifier = ">=2,<3" },
|
|
23
|
+
{ name = "rich", marker = "extra == 'cli'", specifier = ">=13" },
|
|
24
|
+
]
|
|
25
|
+
provides-extras = ["cli"]
|
|
26
|
+
|
|
27
|
+
[package.metadata.requires-dev]
|
|
28
|
+
test = [
|
|
29
|
+
{ name = "cyclopts", specifier = ">=4,<5" },
|
|
30
|
+
{ name = "pytest", specifier = ">=8" },
|
|
31
|
+
{ name = "rich", specifier = ">=13" },
|
|
21
32
|
]
|
|
22
33
|
|
|
23
34
|
[[package]]
|
|
@@ -1637,7 +1648,7 @@ wheels = [
|
|
|
1637
1648
|
|
|
1638
1649
|
[[package]]
|
|
1639
1650
|
name = "witan-code"
|
|
1640
|
-
version = "0.
|
|
1651
|
+
version = "0.3.0"
|
|
1641
1652
|
source = { editable = "." }
|
|
1642
1653
|
dependencies = [
|
|
1643
1654
|
{ name = "agent-config-kit" },
|
|
@@ -1662,7 +1673,7 @@ test = [
|
|
|
1662
1673
|
|
|
1663
1674
|
[package.metadata]
|
|
1664
1675
|
requires-dist = [
|
|
1665
|
-
{ name = "agent-config-kit",
|
|
1676
|
+
{ name = "agent-config-kit", editable = "../../../packages/agent-config-kit" },
|
|
1666
1677
|
{ name = "cyclopts", specifier = ">=4,<5" },
|
|
1667
1678
|
{ name = "fastmcp", specifier = ">=3.4.2,<4" },
|
|
1668
1679
|
{ name = "pyyaml", specifier = ">=6,<7" },
|
|
@@ -8,12 +8,14 @@ from pathlib import Path
|
|
|
8
8
|
from typing import Literal
|
|
9
9
|
|
|
10
10
|
import cyclopts
|
|
11
|
+
from agent_config_kit.version import resolve_version
|
|
11
12
|
|
|
12
13
|
from . import indexer
|
|
13
14
|
|
|
14
15
|
app = cyclopts.App(
|
|
15
16
|
name="witan-code",
|
|
16
17
|
help="witan-code — tree-sitter code graph + cross-repo bridge.",
|
|
18
|
+
version=lambda: resolve_version("witan-code"),
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
BindingKind = Literal["env_var", "package", "service", "endpoint"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|