From efa56cacdc3769fa7b60fac64facb5f9f7b96a7d Mon Sep 17 00:00:00 2001 From: "Md. Fatin Shadab Turja" <71595077+FatinShadab@users.noreply.github.com> Date: Tue, 2 Jun 2026 11:02:24 +0600 Subject: [PATCH 1/3] patch update the paser.py to support fallback in 3.11 --- src/codegenome/parser.py | 4 ++-- test2.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 test2.py diff --git a/src/codegenome/parser.py b/src/codegenome/parser.py index 3ce5646..5053aca 100644 --- a/src/codegenome/parser.py +++ b/src/codegenome/parser.py @@ -243,10 +243,10 @@ def __init__(self) -> None: self._parsers: dict[str, Parser] = {} for key, language in self._languages.items(): try: - parser = Parser(language) - except TypeError: parser = Parser() parser.set_language(language) + except AttributeError: + parser = Parser(language) self._parsers[key] = parser def detect_language(self, path: Path | str) -> str | None: diff --git a/test2.py b/test2.py new file mode 100644 index 0000000..fd1124c --- /dev/null +++ b/test2.py @@ -0,0 +1,13 @@ +import tree_sitter +import tree_sitter_python +lang = tree_sitter.Language(tree_sitter_python.language(), 'python') + +try: + p = tree_sitter.Parser() + p.set_language(lang) + print("set_language successful") +except AttributeError: + print("falling back to Parser(lang)") + p = tree_sitter.Parser(lang) + +print(p.parse(b'def foo(): pass')) From 75e3a4e35253245c32d22421c69b3f5baef5d1c6 Mon Sep 17 00:00:00 2001 From: "Md. Fatin Shadab Turja" <71595077+FatinShadab@users.noreply.github.com> Date: Fri, 5 Jun 2026 18:45:47 +0600 Subject: [PATCH 2/3] Rebrand Watcher to CodeGenome and update configs Rename and rebrand the project from "watcher" to "codegenome" across code, docs, templates, and configs. Change default on-disk DB name from .genome/watcher.db to .genome/codegenome.db and update related CLI defaults, docs, and installer/env var names (WATCHER_* -> CODEGENOME_*). Rename watcher.py to core.py and update public API/classes (WatcherEngine/WatcherConfig -> CodeGenomeEngine/CodeGenomeConfig) and related imports. Update templates, Cursor rules, MCP service strings, thread names, user-agent, and exported text to reflect CodeGenome. Add Cursor MCP config files (.cursor/mcp.json, .vscode/mcp.json/.vscode/cline_mcp_settings.json) and CURSOR_MCP_SETUP.md to document integration. Update package metadata (pyproject) and various docs to point to the new repository/org URLs. --- .cursor/mcp.json | 10 ++++++ ...aph.mdc => codegenome-knowledge-graph.mdc} | 2 +- .github/copilot-instructions.md | 2 +- .gitignore | 4 +-- .vscode/cline_mcp_settings.json | 10 ++++++ .vscode/mcp.json | 10 ++++++ .windsurfrules | 2 +- AGENTS.md | 2 +- CONTRIBUTING.md | 4 +-- CURSOR_MCP_SETUP.md | 33 +++++++++++++++++++ README.md | 2 +- build_cli.py | 6 ++-- docs/cli-reference.md | 4 +-- docs/installation.md | 8 ++--- docs/mcp-integration.md | 28 ++++++++-------- extensions/README.md | 8 ++--- extensions/templates/claude-instructions.md | 2 +- ...aph.mdc => codegenome-knowledge-graph.mdc} | 2 +- extensions/templates/copilot-instructions.md | 2 +- pyproject.toml | 10 +++--- src/codegenome/__init__.py | 6 ++-- src/codegenome/__main__.py | 18 +++++----- src/codegenome/ai_chat.py | 2 +- src/codegenome/assets/html/graph-viewer.js | 4 +-- src/codegenome/builder.py | 2 +- src/codegenome/cli.py | 22 ++++++------- src/codegenome/clusterer.py | 2 +- src/codegenome/{watcher.py => core.py} | 30 ++++++++--------- src/codegenome/exporter.py | 10 +++--- src/codegenome/graph_store.py | 4 +-- src/codegenome/installer.py | 12 +++---- src/codegenome/intelligence.py | 4 +-- src/codegenome/live_graph_monitor.py | 8 ++--- src/codegenome/mcp_server.py | 18 +++++----- src/codegenome/rules.py | 4 +-- src/codegenome/templates/graph.html.j2 | 2 +- .../templates/rules/cursor-rules.mdc | 2 +- .../templates/rules/markdown-instructions.md | 2 +- src/codegenome/timeline.py | 2 +- tests/test_mcp_server.py | 2 +- 40 files changed, 185 insertions(+), 122 deletions(-) create mode 100644 .cursor/mcp.json rename .cursor/rules/{watcher-knowledge-graph.mdc => codegenome-knowledge-graph.mdc} (92%) create mode 100644 .vscode/cline_mcp_settings.json create mode 100644 .vscode/mcp.json create mode 100644 CURSOR_MCP_SETUP.md rename extensions/templates/{watcher-knowledge-graph.mdc => codegenome-knowledge-graph.mdc} (92%) rename src/codegenome/{watcher.py => core.py} (95%) diff --git a/.cursor/mcp.json b/.cursor/mcp.json new file mode 100644 index 0000000..82adbbd --- /dev/null +++ b/.cursor/mcp.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "codegenome": { + "command": "codegenome", + "args": [ + "mcp-start" + ] + } + } +} diff --git a/.cursor/rules/watcher-knowledge-graph.mdc b/.cursor/rules/codegenome-knowledge-graph.mdc similarity index 92% rename from .cursor/rules/watcher-knowledge-graph.mdc rename to .cursor/rules/codegenome-knowledge-graph.mdc index 42b7600..76b5bd3 100644 --- a/.cursor/rules/watcher-knowledge-graph.mdc +++ b/.cursor/rules/codegenome-knowledge-graph.mdc @@ -9,7 +9,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:7331/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index b512202..5e4ae97 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -4,7 +4,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:7331/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/.gitignore b/.gitignore index f924f6f..6d1d34c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,9 +12,9 @@ dist/ build/ *.spec -# Watcher runtime artifacts +# CodeGenome runtime artifacts .genome/ -watcher.db +codegenome.db # OS / IDE .DS_Store diff --git a/.vscode/cline_mcp_settings.json b/.vscode/cline_mcp_settings.json new file mode 100644 index 0000000..82adbbd --- /dev/null +++ b/.vscode/cline_mcp_settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "codegenome": { + "command": "codegenome", + "args": [ + "mcp-start" + ] + } + } +} diff --git a/.vscode/mcp.json b/.vscode/mcp.json new file mode 100644 index 0000000..82adbbd --- /dev/null +++ b/.vscode/mcp.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "codegenome": { + "command": "codegenome", + "args": [ + "mcp-start" + ] + } + } +} diff --git a/.windsurfrules b/.windsurfrules index b512202..5e4ae97 100644 --- a/.windsurfrules +++ b/.windsurfrules @@ -4,7 +4,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:7331/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/AGENTS.md b/AGENTS.md index b512202..5e4ae97 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:7331/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a1a6eb..32ae667 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -165,7 +165,7 @@ Graph artifacts are written under `.genome/` in the analyzed workspace. See [doc ### Optional: standalone binary -To build a PyInstaller binary (named `watcher` in `dist/`): +To build a PyInstaller binary (named `codegenome` in `dist/`): ```bash python build_cli.py @@ -235,7 +235,7 @@ For MCP or client integration problems, also note which client (Cursor, Claude D ## Documentation -When updating user-facing docs, use **`codegenome`** as the primary CLI name. Document legacy flag-based usage as `python -m codegenome --…`. The on-disk database file remains `.genome/watcher.db`. +When updating user-facing docs, use **`codegenome`** as the primary CLI name. Document legacy flag-based usage as `python -m codegenome --…`. The on-disk database file remains `.genome/codegenome.db`. | Document | Purpose | |----------|---------| diff --git a/CURSOR_MCP_SETUP.md b/CURSOR_MCP_SETUP.md new file mode 100644 index 0000000..19b0180 --- /dev/null +++ b/CURSOR_MCP_SETUP.md @@ -0,0 +1,33 @@ +# CodeGenome Cursor MCP Setup + +This project uses **CodeGenome** to provide an architectural knowledge graph that helps Cursor understand the codebase deeply. + +## Prerequisites + +1. Ensure `codegenome` is installed in your environment: + ```bash + pip install codegenome + ``` +2. You must generate the initial knowledge graph so that the `codegenome.db` exists. Run: + ```bash + codegenome analyze + ``` + *Note: This repository is already configured to ignore `.genome/codegenome.db` in `.gitignore`.* + +## Cursor MCP Integration + +Cursor automatically reads the `.cursor/mcp.json` file in this repository. The configuration points to the `codegenome mcp-start` command. + +Once Cursor connects to the MCP server, it will generate the necessary tool configurations under `.cursor/mcps/` automatically at runtime. + +### Troubleshooting + +- **Server Not Starting?** If Cursor cannot find the `codegenome` command, you may need to update the `command` field in `.cursor/mcp.json` to point to the absolute path of your `codegenome` executable (e.g., inside your virtual environment, like `.venv/bin/codegenome` or `.venv/Scripts/codegenome.exe`), or run Cursor from an activated terminal. +- **Tools Missing?** Ensure that `.genome/codegenome.db` has been created by running `codegenome analyze`. + +## Continuous Updates + +To keep the CodeGenome knowledge graph updated automatically as you edit files, run the live codegenome in the background: +```bash +codegenome evolve --live +``` diff --git a/README.md b/README.md index e562be8..b53e59d 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ codegenome evolve --live --lan . ## 🛠️ Troubleshooting ### 1. "No graph found" or Missing Database -**Symptom:** When attempting to run the MCP server (`codegenome mcp-start`) or export the graph (`codegenome export`), you receive an error that no graph was found or `.genome/watcher.db` does not exist. +**Symptom:** When attempting to run the MCP server (`codegenome mcp-start`) or export the graph (`codegenome export`), you receive an error that no graph was found or `.genome/codegenome.db` does not exist. **Solution:** Codegenome needs to build its initial knowledge graph database before it can be served or exported. Always run `codegenome analyze .` in your workspace first to generate the graph. ### 2. "unrecognized arguments" CLI Error diff --git a/build_cli.py b/build_cli.py index dd99e63..9ac60b6 100644 --- a/build_cli.py +++ b/build_cli.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Build a standalone watcher CLI binary with PyInstaller.""" +"""Build a standalone codegenome CLI binary with PyInstaller.""" from __future__ import annotations @@ -16,7 +16,7 @@ BUILD = ROOT / "build" SPEC = ROOT / "codegenome.spec" -BINARY_NAME = "watcher" +BINARY_NAME = "codegenome" HIDDEN_IMPORTS = [ "codegenome", @@ -187,7 +187,7 @@ def build(*, clean: bool = True) -> Path: def parse_args(argv: list[str] | None = None) -> argparse.Namespace: - parser = argparse.ArgumentParser(description="Build watcher standalone binary") + parser = argparse.ArgumentParser(description="Build codegenome standalone binary") parser.add_argument( "--no-clean", action="store_true", diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 56a7c9f..7a31eab 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -13,7 +13,7 @@ Both operate on a **workspace** (project root). By default that is the current d | Path | Purpose | |------|---------| -| `.genome/watcher.db` | Timeline snapshots (SQLite) | +| `.genome/codegenome.db` | Timeline snapshots (SQLite) | | `.genome/graph.json` | Latest graph | | `.genome/exports/` | HTML, Markdown, GraphML, etc. | | `.genome/scan_cache.db` | Incremental scan cache | @@ -240,7 +240,7 @@ Terminal 2: ```bash python -m codegenome.installer \ - --db-path "$(pwd)/.genome/watcher.db" \ + --db-path "$(pwd)/.genome/codegenome.db" \ --client cursor \ --transport http codegenome rules --client cursor . diff --git a/docs/installation.md b/docs/installation.md index a697da8..adfe7f1 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -67,7 +67,7 @@ Codegenome writes artifacts under `/.genome/`: | Path | Purpose | |------|---------| | `.genome/graph.json` | Latest graph | -| `.genome/watcher.db` | Timeline snapshots (SQLite) | +| `.genome/codegenome.db` | Timeline snapshots (SQLite) | | `.genome/exports/` | HTML, Markdown, GraphML, etc. | | `.genome/scan_cache.db` | Incremental scan cache | @@ -93,7 +93,7 @@ python -m codegenome --workspace . --build --mcp --watch ```bash python -m codegenome.installer \ - --db-path "$(pwd)/.genome/watcher.db" \ + --db-path "$(pwd)/.genome/codegenome.db" \ --client cursor \ --transport http \ --host 127.0.0.1 \ @@ -119,7 +119,7 @@ Or run the standalone server module: ```bash python -m codegenome.mcp_server \ - --db-path ./.genome/watcher.db \ + --db-path ./.genome/codegenome.db \ --transport stdio ``` @@ -127,7 +127,7 @@ See [MCP integration](mcp-integration.md) for environment variables, supported c ## Optional: standalone binary -To build a PyInstaller binary named `watcher` in `dist/` (requires the `dev` extra): +To build a PyInstaller binary named `codegenome` in `dist/` (requires the `dev` extra): ```bash python build_cli.py diff --git a/docs/mcp-integration.md b/docs/mcp-integration.md index ed75076..d04a02f 100644 --- a/docs/mcp-integration.md +++ b/docs/mcp-integration.md @@ -18,7 +18,7 @@ python -m codegenome --workspace . --build --mcp --watch # Terminal 2: install client config python -m codegenome.installer \ - --db-path "$(pwd)/.genome/watcher.db" \ + --db-path "$(pwd)/.genome/codegenome.db" \ --client cursor \ --transport http \ --host 127.0.0.1 \ @@ -43,7 +43,7 @@ Or configure clients to run the module directly: ```bash python -m codegenome.mcp_server \ - --db-path ./.genome/watcher.db \ + --db-path ./.genome/codegenome.db \ --transport stdio ``` @@ -56,14 +56,14 @@ python -m codegenome.mcp_server --help # HTTP python -m codegenome.mcp_server \ - --db-path ./.genome/watcher.db \ + --db-path ./.genome/codegenome.db \ --host 127.0.0.1 \ --port 7331 \ --transport http # Stdio python -m codegenome.mcp_server \ - --db-path ./.genome/watcher.db \ + --db-path ./.genome/codegenome.db \ --transport stdio ``` @@ -75,7 +75,7 @@ python -m codegenome.installer --help | Flag | Description | |------|-------------| -| `--db-path PATH` | Absolute path to `.genome/watcher.db` | +| `--db-path PATH` | Absolute path to `.genome/codegenome.db` | | `--python PATH` | Python executable for stdio transport | | `--transport stdio\|http` | Config transport mode | | `--host HOST` | HTTP host in config | @@ -101,12 +101,12 @@ Always use **absolute paths** for `--db-path`. | Variable | Default | Purpose | |----------|---------|---------| -| `WATCHER_MCP_DB_PATH` | `test.db` | Database path | -| `WATCHER_MCP_HOST` | `127.0.0.1` | HTTP bind host | -| `WATCHER_MCP_PORT` | `7331` | HTTP bind port | -| `WATCHER_MCP_TRANSPORT` | `http` | `http` or `stdio` | -| `WATCHER_MCP_TIMEOUT` | `30` | Tool timeout (seconds) | -| `WATCHER_MCP_LOG_LEVEL` | `INFO` | Log level | +| `CODEGENOME_MCP_DB_PATH` | `test.db` | Database path | +| `CODEGENOME_MCP_HOST` | `127.0.0.1` | HTTP bind host | +| `CODEGENOME_MCP_PORT` | `7331` | HTTP bind port | +| `CODEGENOME_MCP_TRANSPORT` | `http` | `http` or `stdio` | +| `CODEGENOME_MCP_TIMEOUT` | `30` | Tool timeout (seconds) | +| `CODEGENOME_MCP_LOG_LEVEL` | `INFO` | Log level | ## Health check @@ -129,8 +129,8 @@ Manual Cursor rule install: ```bash mkdir -p .cursor/rules -sed 's/{{MCP_PORT}}/7331/g' extensions/templates/watcher-knowledge-graph.mdc \ - > .cursor/rules/watcher-knowledge-graph.mdc +sed 's/{{MCP_PORT}}/7331/g' extensions/templates/codegenome-knowledge-graph.mdc \ + > .cursor/rules/codegenome-knowledge-graph.mdc ``` On Windows PowerShell, copy the template and replace `{{MCP_PORT}}` with `7331` manually or use your editor's find-and-replace. @@ -157,7 +157,7 @@ codegenome analyze . |---------|----------| | Connection refused | Run HTTP MCP (`python -m codegenome --mcp --build --watch`) or `mcp_server`; ensure the graph was built | | Port 7331 in use | Stop the other instance or run `mcp_server --port 7332` and update client config | -| Empty tool results | Run `codegenome analyze .` first; confirm `.genome/watcher.db` exists | +| Empty tool results | Run `codegenome analyze .` first; confirm `.genome/codegenome.db` exists | | Client not using MCP | Restart the client after `installer`; verify the config file path | | Stdio vs HTTP mismatch | Match `--transport` in `installer` with how the server is started | diff --git a/extensions/README.md b/extensions/README.md index 073a1a2..19bcd58 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -6,7 +6,7 @@ This folder holds **editor and agent integration assets** that ship with the Cod | Path | Purpose | |------|---------| -| `templates/watcher-knowledge-graph.mdc` | Cursor rule template — teaches agents to use Codegenome MCP tools | +| `templates/codegenome-knowledge-graph.mdc` | Cursor rule template — teaches agents to use Codegenome MCP tools | | `templates/copilot-instructions.md` | GitHub Copilot instructions template | | `templates/claude-instructions.md` | Claude-oriented instructions template | @@ -32,7 +32,7 @@ Write MCP server entries into AI client config files: ```bash python -m codegenome.installer \ - --db-path /absolute/path/to/project/.genome/watcher.db \ + --db-path /absolute/path/to/project/.genome/codegenome.db \ --client cursor \ --transport http \ --host 127.0.0.1 \ @@ -47,8 +47,8 @@ See [MCP integration](../docs/mcp-integration.md) for transport modes, health ch ```bash mkdir -p .cursor/rules -sed 's/{{MCP_PORT}}/7331/g' extensions/templates/watcher-knowledge-graph.mdc \ - > .cursor/rules/watcher-knowledge-graph.mdc +sed 's/{{MCP_PORT}}/7331/g' extensions/templates/codegenome-knowledge-graph.mdc \ + > .cursor/rules/codegenome-knowledge-graph.mdc ``` Restart Cursor after installing MCP config or rules. diff --git a/extensions/templates/claude-instructions.md b/extensions/templates/claude-instructions.md index 3666328..a959330 100644 --- a/extensions/templates/claude-instructions.md +++ b/extensions/templates/claude-instructions.md @@ -4,7 +4,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:{{MCP_PORT}}/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/extensions/templates/watcher-knowledge-graph.mdc b/extensions/templates/codegenome-knowledge-graph.mdc similarity index 92% rename from extensions/templates/watcher-knowledge-graph.mdc rename to extensions/templates/codegenome-knowledge-graph.mdc index 6796262..dab6019 100644 --- a/extensions/templates/watcher-knowledge-graph.mdc +++ b/extensions/templates/codegenome-knowledge-graph.mdc @@ -9,7 +9,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:{{MCP_PORT}}/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/extensions/templates/copilot-instructions.md b/extensions/templates/copilot-instructions.md index 3666328..a959330 100644 --- a/extensions/templates/copilot-instructions.md +++ b/extensions/templates/copilot-instructions.md @@ -4,7 +4,7 @@ You are operating within a repository analyzed by CodeGenome, an architectural k ## Core Directives -1. **Mandatory MCP Usage**: When `.genome/watcher.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. +1. **Mandatory MCP Usage**: When `.genome/codegenome.db` exists, you MUST use CodeGenome MCP access for all codebase, architecture, dependency, or symbol queries whenever it is available. 2. **Access Order**: First use native CodeGenome MCP tools exposed in your context. If those tools are missing, you MAY try a local MCP HTTP endpoint such as `http://127.0.0.1:{{MCP_PORT}}/mcp` when the user has started it or configured it. Treat this as MCP transport access, not as an arbitrary application HTTP API. 3. **Prefer Graph over Grep**: Use graph-backed MCP tools instead of raw file searching (`grep`) or reading entire files blindly. The graph provides semantic understanding. 4. **Fallback Gracefully**: If native MCP tools are missing and HTTP MCP access is unavailable, incompatible, or returns empty data, tell the user exactly what failed and what to configure. Then, if needed, read `.genome/graph.json` or `.genome/exports/*.md` before resorting to standard text searches. diff --git a/pyproject.toml b/pyproject.toml index dc9c188..76fd884 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ description = "Open-source CLI for building and querying local codebase knowledg readme = "README.md" license = "MIT" requires-python = ">=3.11" -authors = [{ name = "Watcher Contributors" }] +authors = [{ name = "CodeGenome Contributors" }] keywords = ["code-analysis", "knowledge-graph", "mcp", "cli", "tree-sitter"] classifiers = [ "Development Status :: 3 - Alpha", @@ -52,10 +52,10 @@ dependencies = [ dev = ["pytest", "pytest-cov", "ruff", "pyinstaller>=6.0,<7"] [project.urls] -Homepage = "https://github.com/watcher-dev/codegenome" -Documentation = "https://github.com/watcher-dev/codegenome#readme" -Repository = "https://github.com/watcher-dev/codegenome" -Issues = "https://github.com/watcher-dev/codegenome/issues" +Homepage = "https://github.com/codegenome-dev/codegenome" +Documentation = "https://github.com/codegenome-dev/codegenome#readme" +Repository = "https://github.com/codegenome-dev/codegenome" +Issues = "https://github.com/codegenome-dev/codegenome/issues" [project.scripts] codegenome = "codegenome.cli:cli" diff --git a/src/codegenome/__init__.py b/src/codegenome/__init__.py index 391fc78..5609da8 100644 --- a/src/codegenome/__init__.py +++ b/src/codegenome/__init__.py @@ -12,7 +12,7 @@ from .scanner import ScanResult, WorkspaceScanner from .timeline import GraphDelta, GraphTimeline, SnapshotInfo from .version import __version__ -from .watcher import BuildResult, WatcherConfig, WatcherEngine +from .core import BuildResult, CodeGenomeConfig, CodeGenomeEngine __all__ = [ "__version__", @@ -31,7 +31,7 @@ "SnapshotInfo", "SourceParser", "SUPPORTED_FORMATS", - "WatcherConfig", - "WatcherEngine", + "CodeGenomeConfig", + "CodeGenomeEngine", "WorkspaceScanner", ] diff --git a/src/codegenome/__main__.py b/src/codegenome/__main__.py index 5f6606e..6542aaa 100644 --- a/src/codegenome/__main__.py +++ b/src/codegenome/__main__.py @@ -1,4 +1,4 @@ -"""CLI entry point for Watcher.""" +"""CLI entry point for CodeGenome.""" from __future__ import annotations @@ -9,13 +9,13 @@ from pathlib import Path from codegenome.exporter import SUPPORTED_FORMATS -from codegenome.watcher import WatcherConfig, WatcherEngine +from codegenome.core import CodeGenomeConfig, CodeGenomeEngine LOG = logging.getLogger("codegenome") def parse_args(argv: list[str] | None = None) -> argparse.Namespace: - """Parse command line arguments for the Watcher CLI. + """Parse command line arguments for the CodeGenome CLI. Args: argv (list[str] | None, optional): List of command line arguments. Defaults to None, @@ -24,7 +24,7 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: Returns: argparse.Namespace: The parsed command line arguments. """ - parser = argparse.ArgumentParser(description="Watcher CLI — local codebase knowledge graph") + parser = argparse.ArgumentParser(description="CodeGenome CLI — local codebase knowledge graph") parser.add_argument( "--workspace", default=".", @@ -78,7 +78,7 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: parser.add_argument( "--db-path", default=None, - help="Timeline SQLite database path (default: .genome/watcher.db)", + help="Timeline SQLite database path (default: .genome/codegenome.db)", ) parser.add_argument( "--mcp", @@ -149,7 +149,7 @@ def run_timeline_query(args: argparse.Namespace) -> int: from codegenome.graph_store import GraphStore, GraphStoreError workspace = Path(args.workspace).resolve() - db_path = Path(args.db_path).resolve() if args.db_path else workspace / ".genome" / "watcher.db" + db_path = Path(args.db_path).resolve() if args.db_path else workspace / ".genome" / "codegenome.db" store = GraphStore(db_path) try: @@ -186,7 +186,7 @@ def run_timeline_query(args: argparse.Namespace) -> int: def main(argv: list[str] | None = None) -> int: - """Main entry point for the codegenome Watcher CLI. + """Main entry point for the codegenome CodeGenome CLI. Args: argv (list[str] | None, optional): List of command line arguments. Defaults to None. @@ -232,7 +232,7 @@ def main(argv: list[str] | None = None) -> int: print("Nothing to do. Pass --build, --watch, and/or --live-graph.", file=sys.stderr) return 1 - config = WatcherConfig( + config = CodeGenomeConfig( workspace=workspace, db_path=Path(args.db_path).resolve() if args.db_path else None, export_formats=tuple(fmt.lower() for fmt in args.export), @@ -241,7 +241,7 @@ def main(argv: list[str] | None = None) -> int: live_graph=args.live_graph, live_graph_poll_seconds=max(1.0, float(args.live_graph_interval)), ) - engine = WatcherEngine(config) + engine = CodeGenomeEngine(config) try: if args.build or args.watch or args.live_graph: diff --git a/src/codegenome/ai_chat.py b/src/codegenome/ai_chat.py index e6752ca..eccb141 100644 --- a/src/codegenome/ai_chat.py +++ b/src/codegenome/ai_chat.py @@ -102,7 +102,7 @@ } DEFAULT_HTTP_HEADERS = { "Accept": "application/json", - "User-Agent": "CodeGenome/0.1 (+https://github.com/watcher-dev/codegenome)", + "User-Agent": "CodeGenome/0.1 (+https://github.com/codegenome-dev/codegenome)", } diff --git a/src/codegenome/assets/html/graph-viewer.js b/src/codegenome/assets/html/graph-viewer.js index c179b6d..db8eaf0 100644 --- a/src/codegenome/assets/html/graph-viewer.js +++ b/src/codegenome/assets/html/graph-viewer.js @@ -152,7 +152,7 @@ if (window.location.protocol === 'file:') { setLivePending(false); - showToast('Open via Watcher extension for live updates.'); + showToast('Open via CodeGenome extension for live updates.'); return; } @@ -183,7 +183,7 @@ } function readEmbeddedGraph() { - const element = document.getElementById('watcher-graph-data'); + const element = document.getElementById('codegenome-graph-data'); if (!element || !element.textContent) { return null; } diff --git a/src/codegenome/builder.py b/src/codegenome/builder.py index e8ac0cf..d49dfdc 100644 --- a/src/codegenome/builder.py +++ b/src/codegenome/builder.py @@ -1,4 +1,4 @@ -"""NetworkX graph builder for Watcher scan and parse results.""" +"""NetworkX graph builder for CodeGenome scan and parse results.""" from __future__ import annotations diff --git a/src/codegenome/cli.py b/src/codegenome/cli.py index 1b80560..e568248 100644 --- a/src/codegenome/cli.py +++ b/src/codegenome/cli.py @@ -4,7 +4,7 @@ from pathlib import Path import click -from codegenome.watcher import WatcherEngine, WatcherConfig +from codegenome.core import CodeGenomeEngine, CodeGenomeConfig @click.group() def cli(): @@ -21,8 +21,8 @@ def analyze(path: str): """ click.echo(f"Analyzing workspace at {path}...") workspace = Path(path).resolve() - config = WatcherConfig(workspace=workspace, export_formats=("json",)) - engine = WatcherEngine(config) + config = CodeGenomeConfig(workspace=workspace, export_formats=("json",)) + engine = CodeGenomeEngine(config) def on_progress(message: str) -> None: click.echo(message) @@ -59,12 +59,12 @@ def export(export_format: str, path: str): path (str): The workspace directory path to export from. """ workspace = Path(path).resolve() - config = WatcherConfig(workspace=workspace) - engine = WatcherEngine(config) + config = CodeGenomeConfig(workspace=workspace) + engine = CodeGenomeEngine(config) try: # Check if the graph exists. If not loaded, it means it hasn't been analyzed. - # engine._load_existing_graph() is called in WatcherEngine.__init__. + # engine._load_existing_graph() is called in CodeGenomeEngine.__init__. # Alternatively, we can check if the graph has nodes. if engine.builder.graph.number_of_nodes() == 0: click.echo("Error: No graph found. Please run 'codegenome analyze' first before exporting.", err=True) @@ -119,8 +119,8 @@ def mcp_start(path: str, transport: str, port: int, lan: bool): lan (bool): Whether to expose HTTP transport on the local network. """ workspace = Path(path).resolve() - config = WatcherConfig(workspace=workspace) - engine = WatcherEngine(config) + config = CodeGenomeConfig(workspace=workspace) + engine = CodeGenomeEngine(config) db_path = engine.db_path engine.close() # Close the engine since the MCP server process will open its own connection @@ -159,11 +159,11 @@ def evolve(path: str, live: bool, lan: bool): from socketserver import ThreadingTCPServer from watchdog.observers import Observer from codegenome.ai_chat import AIChatError, chat_completion, load_models, settings_payload - from codegenome.watcher import WatcherConfig, WatcherEngine, SurgicalUpdateHandler + from codegenome.core import CodeGenomeConfig, CodeGenomeEngine, SurgicalUpdateHandler workspace = Path(path).resolve() - config = WatcherConfig(workspace=workspace, export_formats=("json", "html")) - engine = WatcherEngine(config) + config = CodeGenomeConfig(workspace=workspace, export_formats=("json", "html")) + engine = CodeGenomeEngine(config) click.echo(f"Running initial build for {workspace}...") engine.build(full=False) diff --git a/src/codegenome/clusterer.py b/src/codegenome/clusterer.py index 323147c..ae0b8c7 100644 --- a/src/codegenome/clusterer.py +++ b/src/codegenome/clusterer.py @@ -1,4 +1,4 @@ -"""Leiden community detection and bridge-node analysis for Watcher graphs.""" +"""Leiden community detection and bridge-node analysis for CodeGenome graphs.""" from __future__ import annotations diff --git a/src/codegenome/watcher.py b/src/codegenome/core.py similarity index 95% rename from src/codegenome/watcher.py rename to src/codegenome/core.py index 07d0c3e..fc0e406 100644 --- a/src/codegenome/watcher.py +++ b/src/codegenome/core.py @@ -1,4 +1,4 @@ -"""WatcherEngine orchestration for builds, watching, MCP, and exports.""" +"""CodeGenomeEngine orchestration for builds, watching, MCP, and exports.""" from __future__ import annotations @@ -35,8 +35,8 @@ @dataclass -class WatcherConfig: - """Configuration for WatcherEngine.""" +class CodeGenomeConfig: + """Configuration for CodeGenomeEngine.""" workspace: Path db_path: Path | None = None @@ -53,7 +53,7 @@ class WatcherConfig: @dataclass class BuildResult: - """Container for the output of a WatcherEngine build or update.""" + """Container for the output of a CodeGenomeEngine build or update.""" graph: nx.DiGraph report: IntelligenceReport @@ -64,11 +64,11 @@ class BuildResult: class _RebuildHandler(FileSystemEventHandler): """File system event handler to trigger incremental rebuilds with debouncing.""" - def __init__(self, engine: WatcherEngine, debounce_seconds: float) -> None: + def __init__(self, engine: CodeGenomeEngine, debounce_seconds: float) -> None: """Initialize the _RebuildHandler. Args: - engine (WatcherEngine): The engine to invoke rebuilds on. + engine (CodeGenomeEngine): The engine to invoke rebuilds on. debounce_seconds (float): Delay in seconds before triggering a rebuild. """ self._engine = engine @@ -108,17 +108,17 @@ def _trigger_rebuild(self) -> None: ) try: self._engine.rebuild_incremental() - except Exception: # noqa: BLE001 - keep watcher alive + except Exception: # noqa: BLE001 - keep codegenome alive LOG.exception("Incremental rebuild failed") class SurgicalUpdateHandler(FileSystemEventHandler): """Surgically update the graph on individual file changes.""" - def __init__(self, engine: WatcherEngine, live_server=None) -> None: + def __init__(self, engine: CodeGenomeEngine, live_server=None) -> None: """Initialize the SurgicalUpdateHandler. Args: - engine (WatcherEngine): The engine performing graph updates. + engine (CodeGenomeEngine): The engine performing graph updates. live_server (LiveGraphServer | None, optional): Server for real-time broadcasts. Defaults to None. """ self._engine = engine @@ -168,19 +168,19 @@ def _handle_event(self, event: FileSystemEvent, event_type: str) -> None: LOG.exception(f"Surgical update failed for {event.src_path}") -class WatcherEngine: +class CodeGenomeEngine: """Coordinate scanning, graph building, exports, watching, and MCP startup.""" - def __init__(self, config: WatcherConfig) -> None: - """Initialize the WatcherEngine. + def __init__(self, config: CodeGenomeConfig) -> None: + """Initialize the CodeGenomeEngine. Args: - config (WatcherConfig): The configuration defining paths and options. + config (CodeGenomeConfig): The configuration defining paths and options. """ self.config = config self.workspace = config.workspace.resolve() self.genome_dir = self.workspace / ".genome" - self.db_path = (config.db_path or self.genome_dir / "watcher.db").resolve() + self.db_path = (config.db_path or self.genome_dir / "codegenome.db").resolve() self.export_dir = (config.export_dir or self.genome_dir / "exports").resolve() self.graph_json_path = ( config.graph_json_path or self.genome_dir / "graph.json" @@ -479,7 +479,7 @@ def forward() -> None: sys.stderr.write(line) sys.stderr.flush() - thread = threading.Thread(target=forward, name="watcher-mcp-stderr", daemon=True) + thread = threading.Thread(target=forward, name="codegenome-mcp-stderr", daemon=True) thread.start() def stop_mcp(self) -> None: diff --git a/src/codegenome/exporter.py b/src/codegenome/exporter.py index a7320b2..e2d1591 100644 --- a/src/codegenome/exporter.py +++ b/src/codegenome/exporter.py @@ -1,4 +1,4 @@ -"""Export Watcher graphs to JSON, HTML, GraphML, Cypher, Markdown, and Obsidian.""" +"""Export CodeGenome graphs to JSON, HTML, GraphML, Cypher, Markdown, and Obsidian.""" from __future__ import annotations @@ -65,7 +65,7 @@ class GraphStatistics: @dataclass class GraphExporter: - """Serialize Watcher graphs and intelligence into multiple formats. + """Serialize CodeGenome graphs and intelligence into multiple formats. Attributes: graph (Graph): The graph instance to be exported. @@ -212,7 +212,7 @@ def export_cypher(self, output_path: Path) -> Path: Path: The path to the successfully created Cypher file. """ lines = [ - "// Watcher graph export for Neo4j", + "// CodeGenome graph export for Neo4j", f"// workspace: {self.workspace_name}", "", ] @@ -294,7 +294,7 @@ def export_obsidian(self, output_dir: Path) -> Path: ) index_lines = [ - "# Watcher Graph Vault", + "# CodeGenome Graph Vault", "", f"Workspace: `{self.workspace_name}`", "", @@ -313,7 +313,7 @@ def export_obsidian(self, output_dir: Path) -> Path: f"- Circular dependency groups: {len(self.report.circular_dependencies)}", ] ) - vault_root.joinpath("Watcher Index.md").write_text( + vault_root.joinpath("CodeGenome Index.md").write_text( "\n".join(index_lines) + "\n", encoding="utf-8", ) diff --git a/src/codegenome/graph_store.py b/src/codegenome/graph_store.py index cfbd9a5..25b0592 100644 --- a/src/codegenome/graph_store.py +++ b/src/codegenome/graph_store.py @@ -1,4 +1,4 @@ -"""Graph query layer for the Watcher MCP server.""" +"""Graph query layer for the CodeGenome MCP server.""" from __future__ import annotations @@ -37,7 +37,7 @@ class GraphSummary: class GraphStore: - """Load and query a Watcher timeline database. + """Load and query a CodeGenome timeline database. Provides a high-level API to interact with versioned graph snapshots, perform queries, and extract code intelligence metrics. diff --git a/src/codegenome/installer.py b/src/codegenome/installer.py index 57466d5..b60f4aa 100644 --- a/src/codegenome/installer.py +++ b/src/codegenome/installer.py @@ -1,4 +1,4 @@ -"""Install Watcher MCP server configs for common AI coding clients.""" +"""Install CodeGenome MCP server configs for common AI coding clients.""" from __future__ import annotations @@ -257,10 +257,10 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: Returns: argparse.Namespace: The parsed command-line arguments. """ - parser = argparse.ArgumentParser(description="Install Watcher MCP configs for AI clients") + parser = argparse.ArgumentParser(description="Install CodeGenome MCP configs for AI clients") parser.add_argument( "--db-path", - default=os.getenv("WATCHER_MCP_DB_PATH", "test.db"), + default=os.getenv("CODEGENOME_MCP_DB_PATH", "test.db"), help="Timeline database path passed to the MCP server", ) parser.add_argument( @@ -271,18 +271,18 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: parser.add_argument( "--transport", choices=("stdio", "http"), - default=os.getenv("WATCHER_MCP_TRANSPORT", "stdio"), + default=os.getenv("CODEGENOME_MCP_TRANSPORT", "stdio"), help="Transport mode written into client configs", ) parser.add_argument( "--host", - default=os.getenv("WATCHER_MCP_HOST", "127.0.0.1"), + default=os.getenv("CODEGENOME_MCP_HOST", "127.0.0.1"), help="Host used for HTTP transport configs", ) parser.add_argument( "--port", type=int, - default=int(os.getenv("WATCHER_MCP_PORT", "7331")), + default=int(os.getenv("CODEGENOME_MCP_PORT", "7331")), help="Port used for HTTP transport configs", ) parser.add_argument( diff --git a/src/codegenome/intelligence.py b/src/codegenome/intelligence.py index 583f45a..f4260bf 100644 --- a/src/codegenome/intelligence.py +++ b/src/codegenome/intelligence.py @@ -1,4 +1,4 @@ -"""Architectural intelligence analysis over Watcher dependency graphs. +"""Architectural intelligence analysis over CodeGenome dependency graphs. This module provides tools for analyzing a dependency graph and deriving actionable architectural signals such as dead code detection, circular @@ -40,7 +40,7 @@ class IntelligenceReport: class GraphIntelligence: - """Derive actionable architectural signals from a Watcher graph. + """Derive actionable architectural signals from a CodeGenome graph. This class provides various methods to analyze the codebase graph and detect issues like dead code, god nodes, and circular dependencies. diff --git a/src/codegenome/live_graph_monitor.py b/src/codegenome/live_graph_monitor.py index 3dbc851..0e24d4f 100644 --- a/src/codegenome/live_graph_monitor.py +++ b/src/codegenome/live_graph_monitor.py @@ -14,7 +14,7 @@ ) if TYPE_CHECKING: - from codegenome.watcher import WatcherEngine + from codegenome.core import CodeGenomeEngine LOG = logging.getLogger(__name__) @@ -24,13 +24,13 @@ class LiveGraphMonitor: def __init__( self, - engine: WatcherEngine, + engine: CodeGenomeEngine, poll_interval_seconds: float, ) -> None: """Initialize the LiveGraphMonitor. Args: - engine (WatcherEngine): The engine used for checking and rebuilding the graph. + engine (CodeGenomeEngine): The engine used for checking and rebuilding the graph. poll_interval_seconds (float): Interval in seconds between polls. """ self._engine = engine @@ -52,7 +52,7 @@ def start(self) -> None: ) self._thread = threading.Thread( target=self._poll_loop, - name="watcher-live-graph", + name="codegenome-live-graph", daemon=True, ) self._thread.start() diff --git a/src/codegenome/mcp_server.py b/src/codegenome/mcp_server.py index 5d2dd25..4a96a57 100644 --- a/src/codegenome/mcp_server.py +++ b/src/codegenome/mcp_server.py @@ -1,4 +1,4 @@ -"""FastMCP server exposing Watcher graph tools over localhost HTTP or stdio.""" +"""FastMCP server exposing CodeGenome graph tools over localhost HTTP or stdio.""" from __future__ import annotations @@ -31,12 +31,12 @@ DEFAULT_TIMEOUT_SECONDS = 30.0 DEFAULT_TRANSPORT: Literal["http", "stdio"] = "http" -ENV_HOST = "WATCHER_MCP_HOST" -ENV_PORT = "WATCHER_MCP_PORT" -ENV_DB_PATH = "WATCHER_MCP_DB_PATH" -ENV_TIMEOUT = "WATCHER_MCP_TIMEOUT" -ENV_LOG_LEVEL = "WATCHER_MCP_LOG_LEVEL" -ENV_TRANSPORT = "WATCHER_MCP_TRANSPORT" +ENV_HOST = "CODEGENOME_MCP_HOST" +ENV_PORT = "CODEGENOME_MCP_PORT" +ENV_DB_PATH = "CODEGENOME_MCP_DB_PATH" +ENV_TIMEOUT = "CODEGENOME_MCP_TIMEOUT" +ENV_LOG_LEVEL = "CODEGENOME_MCP_LOG_LEVEL" +ENV_TRANSPORT = "CODEGENOME_MCP_TRANSPORT" F = TypeVar("F", bound=Callable[..., Any]) @@ -204,7 +204,7 @@ def __init__(self, config: ServerConfig) -> None: self.config = config self._lock = threading.RLock() self._store = GraphStore(config.db_path) - self._executor = ThreadPoolExecutor(max_workers=4, thread_name_prefix="watcher-mcp") + self._executor = ThreadPoolExecutor(max_workers=4, thread_name_prefix="codegenome-mcp") @property def store(self) -> GraphStore: @@ -470,7 +470,7 @@ async def health(_request: Request) -> JSONResponse: summary = service.run(service.store.summary) payload = { "status": "ok", - "service": "watcher-mcp", + "service": "codegenome-mcp", "version": __version__, "db_path": str(service.config.db_path), "snapshot_id": summary.snapshot_id, diff --git a/src/codegenome/rules.py b/src/codegenome/rules.py index 903b4be..f71c852 100644 --- a/src/codegenome/rules.py +++ b/src/codegenome/rules.py @@ -1,4 +1,4 @@ -"""Generate Watcher AI agent rules and instructions.""" +"""Generate CodeGenome AI agent rules and instructions.""" from __future__ import annotations @@ -42,7 +42,7 @@ def rule_targets(workspace: Path | None = None) -> list[RuleTarget]: RuleTarget( key="cursor", label="Cursor", - output_path=workspace / ".cursor" / "rules" / "watcher-knowledge-graph.mdc", + output_path=workspace / ".cursor" / "rules" / "codegenome-knowledge-graph.mdc", template_name="cursor-rules.mdc", ), RuleTarget( diff --git a/src/codegenome/templates/graph.html.j2 b/src/codegenome/templates/graph.html.j2 index 1624aa1..6dd7c93 100644 --- a/src/codegenome/templates/graph.html.j2 +++ b/src/codegenome/templates/graph.html.j2 @@ -1029,7 +1029,7 @@