Skip to main content

Shared core for the witan MCP servers (witan-council + witan-code)

Project description

witan-core

Shared core for the two witan MCP servers — witan (dist witan-council, mcp/servers/witan) and witan-code (mcp/servers/witan-code). It is the third shared packages/ sibling alongside agent-config-kit, wired into both servers via a [tool.uv.sources] editable path (dev/CI) plus a published PyPI version range.

Why

The two servers were built copy-paste-and-diverge and carried an explicit "deliberately duplicated — no cross-package import" convention. As the shared surface grew, fixes had to be applied twice and silently drifted — including code that is contractually required to stay identical (the repo-key canonicalizer behind the cross-layer symbol join key; the pinned omnigraph binary version, kept in lockstep by a fragile Renovate custom manager).

witan-core deliberately reverses that convention. The full rationale, scope, and per-extraction contracts live in docs/design/witan-core-extraction-spec.md.

Invariant

witan_core imports neither witan nor witan_code. It is a leaf below both, preserving the one-directional witanwitan_code optional-mount DAG (witan mounts witan-code as witan code; witan-code never imports witan).

Dependencies

The base package is stdlib-only. Heavier concerns are gated behind extras so neither server pulls weight it doesn't use:

  • witan-core[cli]cyclopts, rich (CLI scaffolding, styled installer output)
  • witan-core[mcp]fastmcp (MCP elicitation primitives)

What's here

Extracted so far (each deletes the duplicated copies from both servers):

  • _detach.popen_detached — cross-platform detached subprocess spawning
  • omnigraph_install — the pinned-omnigraph-binary installer (single source of the version; rich imported lazily)
  • elicit — the confirm/text MCP elicitation primitives (needs the mcp extra; not re-exported from the package root)
  • repo_keynormalise + find_git_config, the cross-layer repo-key canonicalizer, with a golden contract test
  • timeutil.now_iso
  • maintenance — the throttled-optimize stamp/interval/due mechanics
  • omnigraph.OmnigraphClient — the omnigraph-CLI subprocess wrapper base (write lock, retry/repair, admission-cap backoff); each server subclasses it (witan adds apply_schema; witan-code adds branch ops + bulk load)
  • config_file.load_toml — shared config.toml loading (WITAN_CONFIG env var). Both servers read the same file, so one [targets.<name>] block can override both at once.
  • target_config — the [targets.<name>] match/select logic: match_target (priority match_paths > match_repos > match_hosts > match_orgs), parse_target_tables, to_list, local_project_path. Each server keeps its own typed target model (different override fields — witan's server/graph/token/…, witan-code's code_dir) and calls into this shared matcher, which is structurally typed over just the four match_* lists.

Still local to each server (intentionally): the CLI scaffolding — its extraction coordinates with the in-flight multi-user deployment work (see the spec).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

witan_core-0.4.0.tar.gz (121.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

witan_core-0.4.0-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file witan_core-0.4.0.tar.gz.

File metadata

  • Download URL: witan_core-0.4.0.tar.gz
  • Upload date:
  • Size: 121.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for witan_core-0.4.0.tar.gz
Algorithm Hash digest
SHA256 df3c5705f137a6ad84df5a1e25261dfe7a8f7d032512c4113b63dba47ebddd01
MD5 ed72d4049751433f1e4b1569d00655a3
BLAKE2b-256 625787ba4f3c0f2681fed99d564a60904dc730d9e9769304ce4972a5e98b38c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for witan_core-0.4.0.tar.gz:

Publisher: publish-witan-core.yml on mitodl/agent-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file witan_core-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: witan_core-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for witan_core-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07d16172206ef1ca690bce213eec0c3cf3a88f7a1d9ed9e56bdc2b7da53f962c
MD5 b315611bf0ffd7b8bd91bc620a6b19ff
BLAKE2b-256 cd8369f6bfbca7365933ed8a7f18810c5451322764721764c476a78bd11191e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for witan_core-0.4.0-py3-none-any.whl:

Publisher: publish-witan-core.yml on mitodl/agent-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page