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.
Files changed (78) hide show
  1. witan_code-0.3.0/CHANGELOG.md +44 -0
  2. {witan_code-0.2.1 → witan_code-0.3.0}/PKG-INFO +2 -2
  3. {witan_code-0.2.1 → witan_code-0.3.0}/pyproject.toml +10 -3
  4. {witan_code-0.2.1 → witan_code-0.3.0}/uv.lock +18 -7
  5. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/cli.py +2 -0
  6. {witan_code-0.2.1 → witan_code-0.3.0}/.gitignore +0 -0
  7. {witan_code-0.2.1 → witan_code-0.3.0}/README.md +0 -0
  8. {witan_code-0.2.1 → witan_code-0.3.0}/config/claude.json +0 -0
  9. {witan_code-0.2.1 → witan_code-0.3.0}/config/copilot.json +0 -0
  10. {witan_code-0.2.1 → witan_code-0.3.0}/config/pi.json +0 -0
  11. {witan_code-0.2.1 → witan_code-0.3.0}/docs/BRANCH_INDEXING.md +0 -0
  12. {witan_code-0.2.1 → witan_code-0.3.0}/docs/CLI_REFERENCE.md +0 -0
  13. {witan_code-0.2.1 → witan_code-0.3.0}/docs/EDGE_PRECISION_TIERS.md +0 -0
  14. {witan_code-0.2.1 → witan_code-0.3.0}/docs/PACKAGE_MAP.md +0 -0
  15. {witan_code-0.2.1 → witan_code-0.3.0}/docs/STAGE2_STITCHING.md +0 -0
  16. {witan_code-0.2.1 → witan_code-0.3.0}/docs/SYMBOL_FORMAT.md +0 -0
  17. {witan_code-0.2.1 → witan_code-0.3.0}/docs/SYMBOL_TABLE.md +0 -0
  18. {witan_code-0.2.1 → witan_code-0.3.0}/docs/USER_GUIDE.md +0 -0
  19. {witan_code-0.2.1 → witan_code-0.3.0}/install.sh +0 -0
  20. {witan_code-0.2.1 → witan_code-0.3.0}/queries/code_mutations.gq +0 -0
  21. {witan_code-0.2.1 → witan_code-0.3.0}/queries/code_read.gq +0 -0
  22. {witan_code-0.2.1 → witan_code-0.3.0}/tests/__init__.py +0 -0
  23. {witan_code-0.2.1 → witan_code-0.3.0}/tests/conftest.py +0 -0
  24. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_branches.py +0 -0
  25. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_bridge.py +0 -0
  26. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_cli_hooks.py +0 -0
  27. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_context.py +0 -0
  28. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_crossrepo.py +0 -0
  29. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_detach.py +0 -0
  30. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_edges.py +0 -0
  31. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_elicit.py +0 -0
  32. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_enrichment.py +0 -0
  33. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_graph.py +0 -0
  34. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_hooks.py +0 -0
  35. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_indexer.py +0 -0
  36. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_languages.py +0 -0
  37. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_maintenance.py +0 -0
  38. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_package_map.py +0 -0
  39. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_repo.py +0 -0
  40. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_server.py +0 -0
  41. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_setup.py +0 -0
  42. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_stitch.py +0 -0
  43. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_symbol_table.py +0 -0
  44. {witan_code-0.2.1 → witan_code-0.3.0}/tests/test_visualize.py +0 -0
  45. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/__init__.py +0 -0
  46. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/__main__.py +0 -0
  47. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/_detach.py +0 -0
  48. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/bridge.py +0 -0
  49. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/bridge_extractors.py +0 -0
  50. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/config.py +0 -0
  51. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/context.py +0 -0
  52. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/edges.py +0 -0
  53. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/elicit.py +0 -0
  54. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/extensions/pi/codegraph.ts +0 -0
  55. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/graph.py +0 -0
  56. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/hooks.py +0 -0
  57. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/indexer.py +0 -0
  58. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/maintenance.py +0 -0
  59. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/package_map.py +0 -0
  60. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/bridge.gq +0 -0
  61. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/code_mutations.gq +0 -0
  62. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/code_read.gq +0 -0
  63. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries/delete.gq +0 -0
  64. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/bash.scm +0 -0
  65. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/hcl.scm +0 -0
  66. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/python.scm +0 -0
  67. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/sql.scm +0 -0
  68. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/typescript.scm +0 -0
  69. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/queries_ts/yaml.scm +0 -0
  70. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/repo.py +0 -0
  71. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/schema/bridge-schema.pg +0 -0
  72. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/schema/code-schema.pg +0 -0
  73. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/server.py +0 -0
  74. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/setup.py +0 -0
  75. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/skills/witan-code/SKILL.md +0 -0
  76. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/stitch.py +0 -0
  77. {witan_code-0.2.1 → witan_code-0.3.0}/witan_code/store.py +0 -0
  78. {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.2.1
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.1
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.2.1"
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.1,<1",
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.2.1"
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.3.4"
14
- source = { registry = "https://pypi.org/simple" }
13
+ version = "0.4.0"
14
+ source = { editable = "../../../packages/agent-config-kit" }
15
15
  dependencies = [
16
16
  { name = "pydantic" },
17
17
  ]
18
- sdist = { url = "https://files.pythonhosted.org/packages/82/e8/79b1344f1390333ff987ca4c78402a66621cc48b1a558f8813cbd5daa1c9/agent_config_kit-0.3.4.tar.gz", hash = "sha256:0d4febc71709976915524101a9e0b0977efba4e6015b97941818f17a1effd9d0", size = 94452, upload-time = "2026-07-08T23:06:36.802Z" }
19
- wheels = [
20
- { url = "https://files.pythonhosted.org/packages/fe/37/c8802460a815003a9ff73b7b32b4c7b320b48ab4925044db891671a374ae/agent_config_kit-0.3.4-py3-none-any.whl", hash = "sha256:aa4e115819a7818de62160234e1f9f985e852d72d97d84607c8cc98cac4507c0", size = 54411, upload-time = "2026-07-08T23:06:35.489Z" },
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.2.1"
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", specifier = ">=0.1,<1" },
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