From e985253881e9a7356638d1ab8911f532ca94e413 Mon Sep 17 00:00:00 2001 From: denfry Date: Wed, 29 Jul 2026 10:42:50 +0300 Subject: [PATCH 1/2] release: v1.7.0 Ship the evidence-first Find, Trace, Predict experience. - add diff-aware impact analysis across CLI and MCP - split the agent skill into a compact protocol and progressive references - refresh product docs and reproducible brand assets - pin privileged release actions to immutable commits --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 4 +- .claude/skills/codebase-index/.skill_version | 2 +- .claude/skills/codebase-index/SKILL.md | 265 ++---- .../codebase-index/references/commands.md | 73 ++ .../references/response-contract.md | 82 ++ .claude/skills/codebase-index/scripts/cbx | 2 +- .claude/skills/codebase-index/scripts/cbx.ps1 | 5 +- .codex/skills/codebase-index/.skill_version | 2 +- .codex/skills/codebase-index/SKILL.md | 265 ++---- .../codebase-index/references/commands.md | 73 ++ .../references/response-contract.md | 82 ++ .codex/skills/codebase-index/scripts/cbx | 2 +- .codex/skills/codebase-index/scripts/cbx.ps1 | 5 +- .github/workflows/release.yml | 18 +- .../skills/codebase-index/.skill_version | 2 +- .opencode/skills/codebase-index/SKILL.md | 265 ++---- .../codebase-index/references/commands.md | 73 ++ .../references/response-contract.md | 82 ++ .opencode/skills/codebase-index/scripts/cbx | 2 +- .../skills/codebase-index/scripts/cbx.ps1 | 5 +- CHANGELOG.md | 30 +- README.md | 855 +++++------------- assets/demo.png | Bin 151025 -> 145558 bytes assets/mark.png | Bin 0 -> 13343 bytes assets/social-preview.png | Bin 172110 -> 171583 bytes docs/ARCHITECTURE.md | 7 +- docs/FAQ.md | 8 +- docs/INSTALLATION.md | 6 +- docs/MCP.md | 8 +- docs/PRODUCT_UPGRADE_PLAN.md | 256 ++---- docs/QUICKSTART.md | 1 + docs/RELEASE_CHECKLIST.md | 3 +- docs/ROADMAP.md | 215 +++-- docs/SECURITY.md | 15 +- docs/SEO.md | 4 +- docs/SKILL_DESIGN.md | 49 +- docs/installer.md | 4 +- pyproject.toml | 2 +- requirements.lock | 2 +- scripts/gen_assets.py | 204 +++-- scripts/sync_skill_copies.py | 16 +- skill/SKILL.md | 265 ++---- skill/examples/basic-usage.md | 6 + skill/references/commands.md | 73 ++ skill/references/response-contract.md | 82 ++ skill/scripts/cbx | 2 +- skill/scripts/cbx.ps1 | 5 +- skills/codebase-index/SKILL.md | 265 ++---- skills/codebase-index/references/commands.md | 73 ++ .../references/response-contract.md | 82 ++ src/codebase_index/__init__.py | 2 +- src/codebase_index/cli.py | 35 + src/codebase_index/mcp/server.py | 31 + src/codebase_index/output/markdown.py | 48 + src/codebase_index/service.py | 136 +++ src/codebase_index/skill_template/SKILL.md | 265 ++---- .../skill_template/references/commands.md | 73 ++ .../references/response-contract.md | 82 ++ src/codebase_index/skill_template/scripts/cbx | 2 +- .../skill_template/scripts/cbx.ps1 | 5 +- tests/golden/mcp_impact_of_diff.json | 25 + tests/golden_utils.py | 2 +- tests/test_diff_impact.py | 73 ++ tests/test_mcp_golden.py | 2 + tests/test_mcp_server.py | 7 + tests/test_packaging.py | 16 +- 67 files changed, 2514 insertions(+), 2139 deletions(-) create mode 100644 .claude/skills/codebase-index/references/commands.md create mode 100644 .claude/skills/codebase-index/references/response-contract.md create mode 100644 .codex/skills/codebase-index/references/commands.md create mode 100644 .codex/skills/codebase-index/references/response-contract.md create mode 100644 .opencode/skills/codebase-index/references/commands.md create mode 100644 .opencode/skills/codebase-index/references/response-contract.md create mode 100644 assets/mark.png create mode 100644 skill/references/commands.md create mode 100644 skill/references/response-contract.md create mode 100644 skills/codebase-index/references/commands.md create mode 100644 skills/codebase-index/references/response-contract.md create mode 100644 src/codebase_index/skill_template/references/commands.md create mode 100644 src/codebase_index/skill_template/references/response-contract.md create mode 100644 tests/golden/mcp_impact_of_diff.json create mode 100644 tests/test_diff_impact.py diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 460d78e..226a640 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -5,7 +5,7 @@ { "name": "codebase-index", "source": "./", - "description": "Local-first hybrid codebase index skill with auto-provisioned CLI." + "description": "Find, trace, and predict across a local codebase with evidence-bearing retrieval." } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 1635e02..3f359dc 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -2,8 +2,8 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "codebase-index", "displayName": "Codebase Index", - "description": "Local-first hybrid codebase index. Auto-provisions its Python CLI on first session start; the skill searches the index so Claude reads only the most relevant files.", - "version": "1.6.0", + "description": "Give Claude a precise local map of your codebase: find implementations, trace behavior, and predict change impact with file-line evidence.", + "version": "1.7.0", "author": { "name": "codebase-index contributors" }, diff --git a/.claude/skills/codebase-index/.skill_version b/.claude/skills/codebase-index/.skill_version index dc1e644..bd8bf88 100644 --- a/.claude/skills/codebase-index/.skill_version +++ b/.claude/skills/codebase-index/.skill_version @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/.claude/skills/codebase-index/SKILL.md b/.claude/skills/codebase-index/SKILL.md index ee31b7d..9404686 100644 --- a/.claude/skills/codebase-index/SKILL.md +++ b/.claude/skills/codebase-index/SKILL.md @@ -1,198 +1,89 @@ --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. It searches a local hybrid codebase index so Claude reads only the most relevant files instead of scanning the entire project. -allowed-tools: Bash(python -m codebase_index *), Bash(python3 -m codebase_index *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- # Codebase Index -Use this skill first for codebase questions. +Use the local index before reading repository files. -Never scan the entire repository before searching the index. +The operating principle is **Find → Trace → Predict**: -## When to use +- **Find** the implementation with ranked retrieval. +- **Trace** behavior through definitions, callers, dependencies, and paths. +- **Predict** change impact while preserving an explicit evidence trail. -Invoke this skill **before reading any files** when the user asks about this project's code: +## Route the question -- "where is X implemented" / "find X" / "locate the X function" -- "how does X work" / "explain the X flow" -- "what breaks if I change X" / "what depends on X" (impact analysis) -- "who calls X" / "references to X" -- "trace the data flow of X" -- "why is this error happening" (error/stack trace) -- "explain the architecture" / "give me an overview" -- Any question about symbols, files, dependencies, or refactoring scope - -Do **not** use it for: editing files, running the application, or non-code questions. - -## How to call the CLI - -Use the `codebase-index` CLI directly, or the bundled `cbx` wrapper: - -```bash -codebase-index search "$QUERY" --json -``` - -Pick the subcommand by intent: - -| User intent | Command | +| Intent | Command | |---|---| -| "how does X work" / "explain X" / "walk me through" | `codebase-index explain "$QUERY" --json` | -| overview / architecture / "map the codebase" | `codebase-index architecture --json` | -| general / unsure | `codebase-index search "$QUERY" --json` | -| keyword / "where is" | `codebase-index search "$QUERY" --json` | -| a specific symbol name | `codebase-index symbol "" --json` | -| "who calls / references" | `codebase-index refs "" --json` | -| "what breaks if I change" | `codebase-index impact "" --json` | -| "how is X connected to Y" / dependency path | `codebase-index path "" "" --json` | -| "what is X" / describe a symbol's role | `codebase-index describe "" --json` | -| visual graph / "open graph" (for the human, not for you to read) | `codebase-index graph "" --open` | - -`architecture` returns the codebase map computed at index time — detected modules -(communities), god nodes (most-connected symbols), surprising cross-module links, -and suggested questions. Reach for it on "give me an overview" / "where do I -start" questions instead of a broad `explain`. - -`path "A" "B"` returns the shortest dependency/call chain between two symbols or -files; `describe "X"` returns a node card (definition, callers, callees, -in/out degree, module, god-node rank). Both annotate edges with a `confidence` -(`extracted` exact, `inferred` heuristic, `ambiguous` unresolved) — treat a path -or callee list that leans on `inferred`/`ambiguous` edges as less certain. - -The `graph` command renders an HTML dependency graph for a person to look at — -it is not a retrieval packet. Use it only when the user explicitly wants a visual -graph; for "what depends on X" answer from `impact`/`refs` instead. In a headless -session prefer `--output ` over `--open`. `--format graphml|dot|neo4j` -exports the graph for external tools (Gephi/yEd, Graphviz, Neo4j) instead of HTML. - -`explain` has a higher default token budget (2200) and HOW_IT_WORKS intent weights — use it whenever the question is about understanding behavior or flow. - -For `search`, pick a `--mode` when the intent is clear: -- `--mode symbol` — pure symbol lookups (faster, no FTS noise) -- `--mode fts` — text/keyword queries where symbol names don't matter -- `--mode hybrid` — default; best for mixed queries -- `--mode vector` — semantic / near-synonym queries ("where do we rate-limit - requests" without the exact words). Requires opt-in embeddings; falls back with - a clear message when they are not enabled. `hybrid` already blends vectors in - when embeddings are on, so reach for `vector` only for pure-semantic recall. - -Natural-language kind words such as `method`, `function`, `class`, `interface`, -`enum`, and `type` constrain the symbol retriever inside `search`. - -Use `--json` for programmatic parsing; omit for human-readable output. -Search/read commands auto-build the index when it is missing; still check -freshness and run `update`/`index` when responses report stale data. - -## Step-by-step workflow - -1. **Query the index** using the appropriate subcommand for `$QUERY`. -2. **Check index freshness** in the response: - - `index.exists: false` → run `codebase-index index` first, then re-query. - - `index.stale: true`, `files_changed_since_build < 20` → run `codebase-index update`, then re-query. - - `index.stale: true`, `files_changed_since_build ≥ 20` → run `codebase-index index` (full rebuild). - - Otherwise proceed with results. -3. **Read ONLY the `recommended_reads`** — use the Read tool with `offset`/`limit` to read the exact line ranges returned. Do not open whole files. -4. **Answer** with file:line citations (e.g., `src/auth/token.py:88-134`). -5. **Fallback** only if confidence is low or results are empty (see below). - -## Token-budgeted output interpretation - -The index returns a **ranked retrieval packet** with: - -- `rank` — result position (start with 1-3) -- `path` — file path -- `line_start` / `line_end` — exact line range to read -- `symbols` — symbols found in this range -- `score` — relevance score -- `reason` — why this result ranked (e.g., "exact symbol match, 4 callers") -- `snippet` — compact code excerpt (may already answer the question); `null` means budget was spent — read via `recommended_reads` instead -- `skeletonized` — when `true`, the `snippet` is a **focus skeleton**: import/signature/class lines and the line(s) matching your query are kept, while function bodies collapse to a marker like `... 24 lines elided (read 88-134)`. Read that line range (or the result's `line_start`/`line_end`) when you need a full body. -- `elided_lines` — how many source lines the skeleton folded away (`0` when not skeletonized). - -Top-level fields: - -- `recommended_reads` — the precise `{path, line_start, line_end}` list to open next. This is your read plan. -- `confidence` — `high` (answer directly), `medium` (read + optionally confirm with one Grep), `low` (use fallback). -- `fallback_suggestions` — ripgrep patterns and paths to try if the index is weak. -- `intent` / `mode` — how the query was classified and which retrievers ran; - useful to sanity-check a weak result (e.g. a "how does X work" question that - resolved to a bare symbol lookup may need `explain` instead). -- `pagination` — present only when more results exist than fit the page. It - reports `has_more` and `next_offset`. To page, re-run `search` with - `--offset ` (e.g. `search "query" --limit 10 --offset 10`). Prefer - refining with a more specific subcommand or raising `--token-budget` first — - page only when the top results genuinely miss the answer. -- `coverage` (on `refs`/`impact` only) — graph-completeness signal. Dependency - edges (imports/inheritance) are extracted only for fully supported languages. - When `coverage.partial` is `true` (the symbol/file is in a Tier-B language such - as Lua), an **empty or short `refs`/`impact` result is inconclusive** — it may - just be unanalyzed, not absent. Confirm with a Grep before concluding "nothing - references this". `coverage.languages` lists the affected languages. - -## Token efficiency rules - -- Trust the index. Read the **fewest** files needed — start with rank 1-3 only. -- Read **line ranges**, not whole files. Use `line_start`/`line_end` with Read's `offset`/`limit`. -- The `snippet` may already answer the question — re-read only if you need more context. -- Prefer `search`/`symbol`/`refs`/`impact`/`explain` over manual Grep/Glob — those are expensive fallbacks, not step 1. -- Don't re-run the query with trivially reworded text; refine with a different subcommand instead. -- For broad questions (`confidence: low`, architecture, data-flow), raise the budget: `--token-budget 3000`. -- Test files are demoted in ranking by default. Include "test" in the query to surface them. -- Snippets are skeletonized by default to fit more results in the budget. The matched line is always preserved; pass `--raw` (CLI) or `raw: true` (MCP) on the rare occasion you need full bodies inline instead of reading the cited line range. - -## Fallback behavior - -Fall back to built-in search **only** when: results are empty, `confidence` is `low`, or the user asks for something the index clearly doesn't cover. - -0. If confidence is consistently low across queries, run diagnostics first: - ```bash - codebase-index stats --json # per-language file/symbol counts + graph tier - codebase-index doctor # surface config or security issues - ``` - Low symbol counts for a language may mean the index needs a full rebuild: `codebase-index index`. - In `stats`, each language carries `graph: full|partial` (and `doctor` reports a - `graph_coverage` finding): `partial` (Tier-B) means `refs`/`impact` lack - import/inheritance edges for that language — treat empty results there as - inconclusive. - -1. Use `fallback_suggestions.ripgrep` patterns from the response via Grep. -2. If still nothing, Glob for likely paths, then Grep within them. -3. As a last resort, broaden the search — but tell the user the index was weak here (it may need a rebuild: `codebase-index index`). - -Never start with a full-repo scan when the index exists and is fresh. - -## Examples - -```bash -# "how does the auth flow work?" -codebase-index explain "auth flow" --json - -# "explain the overall architecture" / "where do I start" — modules, god nodes -codebase-index architecture --json - -# "where is auth token refresh implemented?" -codebase-index search "auth token refresh" --json - -# "what breaks if I change the User model?" -codebase-index impact "User" --json - -# "who calls send_email?" -codebase-index refs "send_email" --json - -# "find the AuthService class" -codebase-index symbol "AuthService" --json - -# precise symbol search (faster, no FTS noise) -codebase-index search "AuthService" --mode symbol --json - -# "how is the API layer connected to the database?" -codebase-index path "ApiController" "Database" --json - -# "what is the Database class and how is it used?" -codebase-index describe "Database" --json - -# generate and open an HTML graph around a file or symbol -codebase-index graph "User" --direction both --depth 2 --open -``` - -Then Read only the returned line ranges and answer with citations. +| Where is X implemented? | `codebase-index search "X" --json` | +| How does X work? | `codebase-index explain "X" --json` | +| What is this codebase? | `codebase-index architecture --json` | +| Find a named symbol | `codebase-index symbol "X" --json` | +| Who calls or references X? | `codebase-index refs "X" --json` | +| What changes if X changes? | `codebase-index impact "X" --json` | +| What does my current diff affect? | `codebase-index diff-impact --json` | +| How are X and Y connected? | `codebase-index path "X" "Y" --json` | +| Describe X and its neighborhood | `codebase-index describe "X" --json` | +| Produce a human graph | `codebase-index graph "X" --output ` | + +Use `search --mode symbol` for exact symbol work, `--mode fts` for text and +error messages, and the default `hybrid` mode for mixed questions. Use pure +`vector` mode only when embeddings are enabled and exact vocabulary is unknown. + +Read [references/commands.md](references/commands.md) only when command options +or routing remain unclear. + +## Evidence protocol + +1. Run the best-matching command with `--json`. +2. Check `index` before trusting the payload: + - missing → run `codebase-index index`, then repeat; + - stale with fewer than 20 changed files → run `codebase-index update`; + - stale with 20 or more changed files → run `codebase-index index`; + - fresh → continue. +3. Start with ranks 1–3. Read only `recommended_reads` line ranges. +4. Trace one additional hop only when the question requires behavior, + ownership, or impact. +5. Answer with `file:line` evidence and state uncertainty explicitly. + +Do not open whole files when a line range is available. A snippet may already +be sufficient. `skeletonized: true` means the response intentionally folded +unrelated body lines; read the supplied range when the missing body matters. + +## Confidence contract + +- **high** — answer from the indexed evidence. +- **medium** — read the recommended ranges and confirm the key claim with one + targeted lookup if necessary. +- **low** or no results — follow `fallback_suggestions`, then use a narrow + Grep/Glob fallback. + +On `refs` and `impact`, inspect `coverage`. If `coverage.partial` is true, an +empty result is inconclusive; confirm with targeted Grep before saying that +nothing references the target. + +Edges carry `confidence`: + +- `extracted` — exact parser evidence; +- `inferred` — heuristic resolution; +- `ambiguous` — unresolved or non-unique. + +Never present an inferred or ambiguous chain as certain. + +## Answer contract + +Structure repository answers around: + +1. **Answer** — the direct conclusion. +2. **Evidence** — the minimum supporting `file:line` references. +3. **Confidence** — only when evidence is partial, inferred, stale, or missing. +4. **Next check** — only when another check would materially reduce uncertainty. + +Do not narrate every search step. Do not claim absence from a partial graph. +Do not replace evidence with a generated HTML graph. + +For payload fields and failure handling, read +[references/response-contract.md](references/response-contract.md). diff --git a/.claude/skills/codebase-index/references/commands.md b/.claude/skills/codebase-index/references/commands.md new file mode 100644 index 0000000..0efb464 --- /dev/null +++ b/.claude/skills/codebase-index/references/commands.md @@ -0,0 +1,73 @@ +# Command Reference + +Load this reference only when the intent table in `SKILL.md` is insufficient. + +## Retrieval + +```bash +codebase-index search "" --json +codebase-index explain "" --json +``` + +Useful search options: + +- `--mode hybrid|fts|symbol|vector` +- `--token-budget ` +- `--limit ` +- `--offset ` +- `--raw` to disable snippet skeletonization +- `--no-fallback` to suppress fallback suggestions + +`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer +it over repeatedly rewording a broad search. + +## Code graph + +```bash +codebase-index architecture --json +codebase-index refs "" --json +codebase-index impact "" --direction up --depth 2 --json +codebase-index diff-impact --base HEAD --direction up --depth 2 --json +codebase-index path "" "" --json +codebase-index describe "" --json +``` + +- `architecture` reads module analysis cached at index time. +- `refs` finds definitions, calls, and graph-backed references. +- `impact` walks dependents (`up`), dependencies (`down`), or both. +- `diff-impact` aggregates impact for tracked changes relative to a verified + Git commit; new or excluded files are reported as unresolved. +- `path` returns the shortest known dependency/call chain. +- `describe` returns a node card with callers, callees, module, and centrality. + +Use `graph` only for a visualization intended for a person: + +```bash +codebase-index graph "" --direction both --depth 2 --output graph.html +``` + +For headless work, use `--output`; do not use `--open`. Exports also support +`--format graphml|dot|neo4j`. + +## Index health + +```bash +codebase-index stats --json +codebase-index doctor +codebase-index update +codebase-index index +``` + +Run `stats` and `doctor` when several unrelated queries have low confidence. +Low symbol counts or partial graph coverage can explain weak results. + +## Query examples + +```bash +codebase-index search "auth token refresh" --json +codebase-index search "AuthService class" --mode symbol --json +codebase-index search "connection reset by peer" --mode fts --json +codebase-index explain "checkout flow" --json +codebase-index impact "User" --direction up --depth 2 --json +codebase-index path "ApiController" "Database" --json +``` diff --git a/.claude/skills/codebase-index/references/response-contract.md b/.claude/skills/codebase-index/references/response-contract.md new file mode 100644 index 0000000..059d87a --- /dev/null +++ b/.claude/skills/codebase-index/references/response-contract.md @@ -0,0 +1,82 @@ +# Response Contract + +Load this reference when interpreting a retrieval packet or handling a weak +result. + +## Ranked results + +Each result can contain: + +- `rank` +- `path` +- `line_start` / `line_end` +- `symbols` +- `score` +- `reason` +- `snippet` +- `skeletonized` +- `elided_lines` + +`recommended_reads` is the read plan. Start with its first one to three entries +and use exact line ranges. + +`pagination.has_more` and `pagination.next_offset` indicate additional results. +Prefer a more specific command or a larger token budget before paging. + +## Freshness + +The `index` object is part of the evidence contract: + +```text +exists=false → index +stale=true, files_changed_since_build<20 → update +stale=true, files_changed_since_build≥20 → full index +stale=false → proceed +``` + +Repeat the original query after rebuilding or updating. + +## Weak results + +Fallback is allowed only when: + +- results are empty; +- confidence is low; +- graph coverage is partial; +- the requested information is not represented by the index. + +Use `fallback_suggestions.ripgrep` first. Otherwise construct one narrow Grep +pattern from the most distinctive symbol, error, or path in the question. +Avoid a full-repository scan unless targeted fallback also fails. + +If several queries are weak: + +```bash +codebase-index stats --json +codebase-index doctor +``` + +Report the limitation instead of inventing certainty. + +## Answer examples + +High confidence: + +```text +Session validation is implemented in `src/auth/session.py:44`. +The request middleware calls it from `src/http/auth.py:18`. +``` + +Partial graph: + +```text +The index found no graph-backed callers, but coverage for Lua is partial. +A targeted text search still finds two call sites in … +``` + +Inferred chain: + +```text +The route-to-service link is parser-extracted; the service-to-model link is +heuristic, so the final hop should be verified before refactoring. +``` diff --git a/.claude/skills/codebase-index/scripts/cbx b/.claude/skills/codebase-index/scripts/cbx index 5666358..94a9114 100644 --- a/.claude/skills/codebase-index/scripts/cbx +++ b/.claude/skills/codebase-index/scripts/cbx @@ -4,7 +4,7 @@ # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch). set -euo pipefail -ALLOWED="search explain symbol refs impact graph stats doctor update index" +ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index" sub="${1:-}" case " $ALLOWED " in diff --git a/.claude/skills/codebase-index/scripts/cbx.ps1 b/.claude/skills/codebase-index/scripts/cbx.ps1 index bb8e05d..eee56ae 100644 --- a/.claude/skills/codebase-index/scripts/cbx.ps1 +++ b/.claude/skills/codebase-index/scripts/cbx.ps1 @@ -8,7 +8,10 @@ param( ) $ErrorActionPreference = "Stop" -$allowed = @("search", "explain", "symbol", "refs", "impact", "graph", "stats", "doctor", "update", "index") +$allowed = @( + "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact", + "path", "describe", "graph", "stats", "doctor", "update", "index" +) if ($allowed -notcontains $Subcommand) { Write-Error "cbx: refusing subcommand '$Subcommand'. Allowed: $($allowed -join ', ')" diff --git a/.codex/skills/codebase-index/.skill_version b/.codex/skills/codebase-index/.skill_version index dc1e644..bd8bf88 100644 --- a/.codex/skills/codebase-index/.skill_version +++ b/.codex/skills/codebase-index/.skill_version @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/.codex/skills/codebase-index/SKILL.md b/.codex/skills/codebase-index/SKILL.md index ee31b7d..9404686 100644 --- a/.codex/skills/codebase-index/SKILL.md +++ b/.codex/skills/codebase-index/SKILL.md @@ -1,198 +1,89 @@ --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. It searches a local hybrid codebase index so Claude reads only the most relevant files instead of scanning the entire project. -allowed-tools: Bash(python -m codebase_index *), Bash(python3 -m codebase_index *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- # Codebase Index -Use this skill first for codebase questions. +Use the local index before reading repository files. -Never scan the entire repository before searching the index. +The operating principle is **Find → Trace → Predict**: -## When to use +- **Find** the implementation with ranked retrieval. +- **Trace** behavior through definitions, callers, dependencies, and paths. +- **Predict** change impact while preserving an explicit evidence trail. -Invoke this skill **before reading any files** when the user asks about this project's code: +## Route the question -- "where is X implemented" / "find X" / "locate the X function" -- "how does X work" / "explain the X flow" -- "what breaks if I change X" / "what depends on X" (impact analysis) -- "who calls X" / "references to X" -- "trace the data flow of X" -- "why is this error happening" (error/stack trace) -- "explain the architecture" / "give me an overview" -- Any question about symbols, files, dependencies, or refactoring scope - -Do **not** use it for: editing files, running the application, or non-code questions. - -## How to call the CLI - -Use the `codebase-index` CLI directly, or the bundled `cbx` wrapper: - -```bash -codebase-index search "$QUERY" --json -``` - -Pick the subcommand by intent: - -| User intent | Command | +| Intent | Command | |---|---| -| "how does X work" / "explain X" / "walk me through" | `codebase-index explain "$QUERY" --json` | -| overview / architecture / "map the codebase" | `codebase-index architecture --json` | -| general / unsure | `codebase-index search "$QUERY" --json` | -| keyword / "where is" | `codebase-index search "$QUERY" --json` | -| a specific symbol name | `codebase-index symbol "" --json` | -| "who calls / references" | `codebase-index refs "" --json` | -| "what breaks if I change" | `codebase-index impact "" --json` | -| "how is X connected to Y" / dependency path | `codebase-index path "" "" --json` | -| "what is X" / describe a symbol's role | `codebase-index describe "" --json` | -| visual graph / "open graph" (for the human, not for you to read) | `codebase-index graph "" --open` | - -`architecture` returns the codebase map computed at index time — detected modules -(communities), god nodes (most-connected symbols), surprising cross-module links, -and suggested questions. Reach for it on "give me an overview" / "where do I -start" questions instead of a broad `explain`. - -`path "A" "B"` returns the shortest dependency/call chain between two symbols or -files; `describe "X"` returns a node card (definition, callers, callees, -in/out degree, module, god-node rank). Both annotate edges with a `confidence` -(`extracted` exact, `inferred` heuristic, `ambiguous` unresolved) — treat a path -or callee list that leans on `inferred`/`ambiguous` edges as less certain. - -The `graph` command renders an HTML dependency graph for a person to look at — -it is not a retrieval packet. Use it only when the user explicitly wants a visual -graph; for "what depends on X" answer from `impact`/`refs` instead. In a headless -session prefer `--output ` over `--open`. `--format graphml|dot|neo4j` -exports the graph for external tools (Gephi/yEd, Graphviz, Neo4j) instead of HTML. - -`explain` has a higher default token budget (2200) and HOW_IT_WORKS intent weights — use it whenever the question is about understanding behavior or flow. - -For `search`, pick a `--mode` when the intent is clear: -- `--mode symbol` — pure symbol lookups (faster, no FTS noise) -- `--mode fts` — text/keyword queries where symbol names don't matter -- `--mode hybrid` — default; best for mixed queries -- `--mode vector` — semantic / near-synonym queries ("where do we rate-limit - requests" without the exact words). Requires opt-in embeddings; falls back with - a clear message when they are not enabled. `hybrid` already blends vectors in - when embeddings are on, so reach for `vector` only for pure-semantic recall. - -Natural-language kind words such as `method`, `function`, `class`, `interface`, -`enum`, and `type` constrain the symbol retriever inside `search`. - -Use `--json` for programmatic parsing; omit for human-readable output. -Search/read commands auto-build the index when it is missing; still check -freshness and run `update`/`index` when responses report stale data. - -## Step-by-step workflow - -1. **Query the index** using the appropriate subcommand for `$QUERY`. -2. **Check index freshness** in the response: - - `index.exists: false` → run `codebase-index index` first, then re-query. - - `index.stale: true`, `files_changed_since_build < 20` → run `codebase-index update`, then re-query. - - `index.stale: true`, `files_changed_since_build ≥ 20` → run `codebase-index index` (full rebuild). - - Otherwise proceed with results. -3. **Read ONLY the `recommended_reads`** — use the Read tool with `offset`/`limit` to read the exact line ranges returned. Do not open whole files. -4. **Answer** with file:line citations (e.g., `src/auth/token.py:88-134`). -5. **Fallback** only if confidence is low or results are empty (see below). - -## Token-budgeted output interpretation - -The index returns a **ranked retrieval packet** with: - -- `rank` — result position (start with 1-3) -- `path` — file path -- `line_start` / `line_end` — exact line range to read -- `symbols` — symbols found in this range -- `score` — relevance score -- `reason` — why this result ranked (e.g., "exact symbol match, 4 callers") -- `snippet` — compact code excerpt (may already answer the question); `null` means budget was spent — read via `recommended_reads` instead -- `skeletonized` — when `true`, the `snippet` is a **focus skeleton**: import/signature/class lines and the line(s) matching your query are kept, while function bodies collapse to a marker like `... 24 lines elided (read 88-134)`. Read that line range (or the result's `line_start`/`line_end`) when you need a full body. -- `elided_lines` — how many source lines the skeleton folded away (`0` when not skeletonized). - -Top-level fields: - -- `recommended_reads` — the precise `{path, line_start, line_end}` list to open next. This is your read plan. -- `confidence` — `high` (answer directly), `medium` (read + optionally confirm with one Grep), `low` (use fallback). -- `fallback_suggestions` — ripgrep patterns and paths to try if the index is weak. -- `intent` / `mode` — how the query was classified and which retrievers ran; - useful to sanity-check a weak result (e.g. a "how does X work" question that - resolved to a bare symbol lookup may need `explain` instead). -- `pagination` — present only when more results exist than fit the page. It - reports `has_more` and `next_offset`. To page, re-run `search` with - `--offset ` (e.g. `search "query" --limit 10 --offset 10`). Prefer - refining with a more specific subcommand or raising `--token-budget` first — - page only when the top results genuinely miss the answer. -- `coverage` (on `refs`/`impact` only) — graph-completeness signal. Dependency - edges (imports/inheritance) are extracted only for fully supported languages. - When `coverage.partial` is `true` (the symbol/file is in a Tier-B language such - as Lua), an **empty or short `refs`/`impact` result is inconclusive** — it may - just be unanalyzed, not absent. Confirm with a Grep before concluding "nothing - references this". `coverage.languages` lists the affected languages. - -## Token efficiency rules - -- Trust the index. Read the **fewest** files needed — start with rank 1-3 only. -- Read **line ranges**, not whole files. Use `line_start`/`line_end` with Read's `offset`/`limit`. -- The `snippet` may already answer the question — re-read only if you need more context. -- Prefer `search`/`symbol`/`refs`/`impact`/`explain` over manual Grep/Glob — those are expensive fallbacks, not step 1. -- Don't re-run the query with trivially reworded text; refine with a different subcommand instead. -- For broad questions (`confidence: low`, architecture, data-flow), raise the budget: `--token-budget 3000`. -- Test files are demoted in ranking by default. Include "test" in the query to surface them. -- Snippets are skeletonized by default to fit more results in the budget. The matched line is always preserved; pass `--raw` (CLI) or `raw: true` (MCP) on the rare occasion you need full bodies inline instead of reading the cited line range. - -## Fallback behavior - -Fall back to built-in search **only** when: results are empty, `confidence` is `low`, or the user asks for something the index clearly doesn't cover. - -0. If confidence is consistently low across queries, run diagnostics first: - ```bash - codebase-index stats --json # per-language file/symbol counts + graph tier - codebase-index doctor # surface config or security issues - ``` - Low symbol counts for a language may mean the index needs a full rebuild: `codebase-index index`. - In `stats`, each language carries `graph: full|partial` (and `doctor` reports a - `graph_coverage` finding): `partial` (Tier-B) means `refs`/`impact` lack - import/inheritance edges for that language — treat empty results there as - inconclusive. - -1. Use `fallback_suggestions.ripgrep` patterns from the response via Grep. -2. If still nothing, Glob for likely paths, then Grep within them. -3. As a last resort, broaden the search — but tell the user the index was weak here (it may need a rebuild: `codebase-index index`). - -Never start with a full-repo scan when the index exists and is fresh. - -## Examples - -```bash -# "how does the auth flow work?" -codebase-index explain "auth flow" --json - -# "explain the overall architecture" / "where do I start" — modules, god nodes -codebase-index architecture --json - -# "where is auth token refresh implemented?" -codebase-index search "auth token refresh" --json - -# "what breaks if I change the User model?" -codebase-index impact "User" --json - -# "who calls send_email?" -codebase-index refs "send_email" --json - -# "find the AuthService class" -codebase-index symbol "AuthService" --json - -# precise symbol search (faster, no FTS noise) -codebase-index search "AuthService" --mode symbol --json - -# "how is the API layer connected to the database?" -codebase-index path "ApiController" "Database" --json - -# "what is the Database class and how is it used?" -codebase-index describe "Database" --json - -# generate and open an HTML graph around a file or symbol -codebase-index graph "User" --direction both --depth 2 --open -``` - -Then Read only the returned line ranges and answer with citations. +| Where is X implemented? | `codebase-index search "X" --json` | +| How does X work? | `codebase-index explain "X" --json` | +| What is this codebase? | `codebase-index architecture --json` | +| Find a named symbol | `codebase-index symbol "X" --json` | +| Who calls or references X? | `codebase-index refs "X" --json` | +| What changes if X changes? | `codebase-index impact "X" --json` | +| What does my current diff affect? | `codebase-index diff-impact --json` | +| How are X and Y connected? | `codebase-index path "X" "Y" --json` | +| Describe X and its neighborhood | `codebase-index describe "X" --json` | +| Produce a human graph | `codebase-index graph "X" --output ` | + +Use `search --mode symbol` for exact symbol work, `--mode fts` for text and +error messages, and the default `hybrid` mode for mixed questions. Use pure +`vector` mode only when embeddings are enabled and exact vocabulary is unknown. + +Read [references/commands.md](references/commands.md) only when command options +or routing remain unclear. + +## Evidence protocol + +1. Run the best-matching command with `--json`. +2. Check `index` before trusting the payload: + - missing → run `codebase-index index`, then repeat; + - stale with fewer than 20 changed files → run `codebase-index update`; + - stale with 20 or more changed files → run `codebase-index index`; + - fresh → continue. +3. Start with ranks 1–3. Read only `recommended_reads` line ranges. +4. Trace one additional hop only when the question requires behavior, + ownership, or impact. +5. Answer with `file:line` evidence and state uncertainty explicitly. + +Do not open whole files when a line range is available. A snippet may already +be sufficient. `skeletonized: true` means the response intentionally folded +unrelated body lines; read the supplied range when the missing body matters. + +## Confidence contract + +- **high** — answer from the indexed evidence. +- **medium** — read the recommended ranges and confirm the key claim with one + targeted lookup if necessary. +- **low** or no results — follow `fallback_suggestions`, then use a narrow + Grep/Glob fallback. + +On `refs` and `impact`, inspect `coverage`. If `coverage.partial` is true, an +empty result is inconclusive; confirm with targeted Grep before saying that +nothing references the target. + +Edges carry `confidence`: + +- `extracted` — exact parser evidence; +- `inferred` — heuristic resolution; +- `ambiguous` — unresolved or non-unique. + +Never present an inferred or ambiguous chain as certain. + +## Answer contract + +Structure repository answers around: + +1. **Answer** — the direct conclusion. +2. **Evidence** — the minimum supporting `file:line` references. +3. **Confidence** — only when evidence is partial, inferred, stale, or missing. +4. **Next check** — only when another check would materially reduce uncertainty. + +Do not narrate every search step. Do not claim absence from a partial graph. +Do not replace evidence with a generated HTML graph. + +For payload fields and failure handling, read +[references/response-contract.md](references/response-contract.md). diff --git a/.codex/skills/codebase-index/references/commands.md b/.codex/skills/codebase-index/references/commands.md new file mode 100644 index 0000000..0efb464 --- /dev/null +++ b/.codex/skills/codebase-index/references/commands.md @@ -0,0 +1,73 @@ +# Command Reference + +Load this reference only when the intent table in `SKILL.md` is insufficient. + +## Retrieval + +```bash +codebase-index search "" --json +codebase-index explain "" --json +``` + +Useful search options: + +- `--mode hybrid|fts|symbol|vector` +- `--token-budget ` +- `--limit ` +- `--offset ` +- `--raw` to disable snippet skeletonization +- `--no-fallback` to suppress fallback suggestions + +`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer +it over repeatedly rewording a broad search. + +## Code graph + +```bash +codebase-index architecture --json +codebase-index refs "" --json +codebase-index impact "" --direction up --depth 2 --json +codebase-index diff-impact --base HEAD --direction up --depth 2 --json +codebase-index path "" "" --json +codebase-index describe "" --json +``` + +- `architecture` reads module analysis cached at index time. +- `refs` finds definitions, calls, and graph-backed references. +- `impact` walks dependents (`up`), dependencies (`down`), or both. +- `diff-impact` aggregates impact for tracked changes relative to a verified + Git commit; new or excluded files are reported as unresolved. +- `path` returns the shortest known dependency/call chain. +- `describe` returns a node card with callers, callees, module, and centrality. + +Use `graph` only for a visualization intended for a person: + +```bash +codebase-index graph "" --direction both --depth 2 --output graph.html +``` + +For headless work, use `--output`; do not use `--open`. Exports also support +`--format graphml|dot|neo4j`. + +## Index health + +```bash +codebase-index stats --json +codebase-index doctor +codebase-index update +codebase-index index +``` + +Run `stats` and `doctor` when several unrelated queries have low confidence. +Low symbol counts or partial graph coverage can explain weak results. + +## Query examples + +```bash +codebase-index search "auth token refresh" --json +codebase-index search "AuthService class" --mode symbol --json +codebase-index search "connection reset by peer" --mode fts --json +codebase-index explain "checkout flow" --json +codebase-index impact "User" --direction up --depth 2 --json +codebase-index path "ApiController" "Database" --json +``` diff --git a/.codex/skills/codebase-index/references/response-contract.md b/.codex/skills/codebase-index/references/response-contract.md new file mode 100644 index 0000000..059d87a --- /dev/null +++ b/.codex/skills/codebase-index/references/response-contract.md @@ -0,0 +1,82 @@ +# Response Contract + +Load this reference when interpreting a retrieval packet or handling a weak +result. + +## Ranked results + +Each result can contain: + +- `rank` +- `path` +- `line_start` / `line_end` +- `symbols` +- `score` +- `reason` +- `snippet` +- `skeletonized` +- `elided_lines` + +`recommended_reads` is the read plan. Start with its first one to three entries +and use exact line ranges. + +`pagination.has_more` and `pagination.next_offset` indicate additional results. +Prefer a more specific command or a larger token budget before paging. + +## Freshness + +The `index` object is part of the evidence contract: + +```text +exists=false → index +stale=true, files_changed_since_build<20 → update +stale=true, files_changed_since_build≥20 → full index +stale=false → proceed +``` + +Repeat the original query after rebuilding or updating. + +## Weak results + +Fallback is allowed only when: + +- results are empty; +- confidence is low; +- graph coverage is partial; +- the requested information is not represented by the index. + +Use `fallback_suggestions.ripgrep` first. Otherwise construct one narrow Grep +pattern from the most distinctive symbol, error, or path in the question. +Avoid a full-repository scan unless targeted fallback also fails. + +If several queries are weak: + +```bash +codebase-index stats --json +codebase-index doctor +``` + +Report the limitation instead of inventing certainty. + +## Answer examples + +High confidence: + +```text +Session validation is implemented in `src/auth/session.py:44`. +The request middleware calls it from `src/http/auth.py:18`. +``` + +Partial graph: + +```text +The index found no graph-backed callers, but coverage for Lua is partial. +A targeted text search still finds two call sites in … +``` + +Inferred chain: + +```text +The route-to-service link is parser-extracted; the service-to-model link is +heuristic, so the final hop should be verified before refactoring. +``` diff --git a/.codex/skills/codebase-index/scripts/cbx b/.codex/skills/codebase-index/scripts/cbx index 5666358..94a9114 100644 --- a/.codex/skills/codebase-index/scripts/cbx +++ b/.codex/skills/codebase-index/scripts/cbx @@ -4,7 +4,7 @@ # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch). set -euo pipefail -ALLOWED="search explain symbol refs impact graph stats doctor update index" +ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index" sub="${1:-}" case " $ALLOWED " in diff --git a/.codex/skills/codebase-index/scripts/cbx.ps1 b/.codex/skills/codebase-index/scripts/cbx.ps1 index bb8e05d..eee56ae 100644 --- a/.codex/skills/codebase-index/scripts/cbx.ps1 +++ b/.codex/skills/codebase-index/scripts/cbx.ps1 @@ -8,7 +8,10 @@ param( ) $ErrorActionPreference = "Stop" -$allowed = @("search", "explain", "symbol", "refs", "impact", "graph", "stats", "doctor", "update", "index") +$allowed = @( + "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact", + "path", "describe", "graph", "stats", "doctor", "update", "index" +) if ($allowed -notcontains $Subcommand) { Write-Error "cbx: refusing subcommand '$Subcommand'. Allowed: $($allowed -join ', ')" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index df2539c..5756979 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,12 +5,14 @@ on: tags: ["v*"] workflow_dispatch: # manual (re)publish — e.g. push an already-tagged version to PyPI +permissions: read-all + jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 with: python-version: "3.12" - run: pip install -e ".[dev,build]" @@ -22,7 +24,7 @@ jobs: run: twine check dist/* - name: Clean-machine smoke run: python scripts/release_smoke.py - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: dist path: dist/ @@ -36,13 +38,13 @@ jobs: permissions: contents: write # create the GitHub release steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: name: dist path: dist - name: Create GitHub release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2 with: files: dist/* generate_release_notes: true @@ -54,9 +56,9 @@ jobs: permissions: id-token: write # OIDC for PyPI Trusted Publishing — no token stored anywhere steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: name: dist path: dist - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 + uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # release/v1 diff --git a/.opencode/skills/codebase-index/.skill_version b/.opencode/skills/codebase-index/.skill_version index dc1e644..bd8bf88 100644 --- a/.opencode/skills/codebase-index/.skill_version +++ b/.opencode/skills/codebase-index/.skill_version @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/.opencode/skills/codebase-index/SKILL.md b/.opencode/skills/codebase-index/SKILL.md index ee31b7d..9404686 100644 --- a/.opencode/skills/codebase-index/SKILL.md +++ b/.opencode/skills/codebase-index/SKILL.md @@ -1,198 +1,89 @@ --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. It searches a local hybrid codebase index so Claude reads only the most relevant files instead of scanning the entire project. -allowed-tools: Bash(python -m codebase_index *), Bash(python3 -m codebase_index *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- # Codebase Index -Use this skill first for codebase questions. +Use the local index before reading repository files. -Never scan the entire repository before searching the index. +The operating principle is **Find → Trace → Predict**: -## When to use +- **Find** the implementation with ranked retrieval. +- **Trace** behavior through definitions, callers, dependencies, and paths. +- **Predict** change impact while preserving an explicit evidence trail. -Invoke this skill **before reading any files** when the user asks about this project's code: +## Route the question -- "where is X implemented" / "find X" / "locate the X function" -- "how does X work" / "explain the X flow" -- "what breaks if I change X" / "what depends on X" (impact analysis) -- "who calls X" / "references to X" -- "trace the data flow of X" -- "why is this error happening" (error/stack trace) -- "explain the architecture" / "give me an overview" -- Any question about symbols, files, dependencies, or refactoring scope - -Do **not** use it for: editing files, running the application, or non-code questions. - -## How to call the CLI - -Use the `codebase-index` CLI directly, or the bundled `cbx` wrapper: - -```bash -codebase-index search "$QUERY" --json -``` - -Pick the subcommand by intent: - -| User intent | Command | +| Intent | Command | |---|---| -| "how does X work" / "explain X" / "walk me through" | `codebase-index explain "$QUERY" --json` | -| overview / architecture / "map the codebase" | `codebase-index architecture --json` | -| general / unsure | `codebase-index search "$QUERY" --json` | -| keyword / "where is" | `codebase-index search "$QUERY" --json` | -| a specific symbol name | `codebase-index symbol "" --json` | -| "who calls / references" | `codebase-index refs "" --json` | -| "what breaks if I change" | `codebase-index impact "" --json` | -| "how is X connected to Y" / dependency path | `codebase-index path "" "" --json` | -| "what is X" / describe a symbol's role | `codebase-index describe "" --json` | -| visual graph / "open graph" (for the human, not for you to read) | `codebase-index graph "" --open` | - -`architecture` returns the codebase map computed at index time — detected modules -(communities), god nodes (most-connected symbols), surprising cross-module links, -and suggested questions. Reach for it on "give me an overview" / "where do I -start" questions instead of a broad `explain`. - -`path "A" "B"` returns the shortest dependency/call chain between two symbols or -files; `describe "X"` returns a node card (definition, callers, callees, -in/out degree, module, god-node rank). Both annotate edges with a `confidence` -(`extracted` exact, `inferred` heuristic, `ambiguous` unresolved) — treat a path -or callee list that leans on `inferred`/`ambiguous` edges as less certain. - -The `graph` command renders an HTML dependency graph for a person to look at — -it is not a retrieval packet. Use it only when the user explicitly wants a visual -graph; for "what depends on X" answer from `impact`/`refs` instead. In a headless -session prefer `--output ` over `--open`. `--format graphml|dot|neo4j` -exports the graph for external tools (Gephi/yEd, Graphviz, Neo4j) instead of HTML. - -`explain` has a higher default token budget (2200) and HOW_IT_WORKS intent weights — use it whenever the question is about understanding behavior or flow. - -For `search`, pick a `--mode` when the intent is clear: -- `--mode symbol` — pure symbol lookups (faster, no FTS noise) -- `--mode fts` — text/keyword queries where symbol names don't matter -- `--mode hybrid` — default; best for mixed queries -- `--mode vector` — semantic / near-synonym queries ("where do we rate-limit - requests" without the exact words). Requires opt-in embeddings; falls back with - a clear message when they are not enabled. `hybrid` already blends vectors in - when embeddings are on, so reach for `vector` only for pure-semantic recall. - -Natural-language kind words such as `method`, `function`, `class`, `interface`, -`enum`, and `type` constrain the symbol retriever inside `search`. - -Use `--json` for programmatic parsing; omit for human-readable output. -Search/read commands auto-build the index when it is missing; still check -freshness and run `update`/`index` when responses report stale data. - -## Step-by-step workflow - -1. **Query the index** using the appropriate subcommand for `$QUERY`. -2. **Check index freshness** in the response: - - `index.exists: false` → run `codebase-index index` first, then re-query. - - `index.stale: true`, `files_changed_since_build < 20` → run `codebase-index update`, then re-query. - - `index.stale: true`, `files_changed_since_build ≥ 20` → run `codebase-index index` (full rebuild). - - Otherwise proceed with results. -3. **Read ONLY the `recommended_reads`** — use the Read tool with `offset`/`limit` to read the exact line ranges returned. Do not open whole files. -4. **Answer** with file:line citations (e.g., `src/auth/token.py:88-134`). -5. **Fallback** only if confidence is low or results are empty (see below). - -## Token-budgeted output interpretation - -The index returns a **ranked retrieval packet** with: - -- `rank` — result position (start with 1-3) -- `path` — file path -- `line_start` / `line_end` — exact line range to read -- `symbols` — symbols found in this range -- `score` — relevance score -- `reason` — why this result ranked (e.g., "exact symbol match, 4 callers") -- `snippet` — compact code excerpt (may already answer the question); `null` means budget was spent — read via `recommended_reads` instead -- `skeletonized` — when `true`, the `snippet` is a **focus skeleton**: import/signature/class lines and the line(s) matching your query are kept, while function bodies collapse to a marker like `... 24 lines elided (read 88-134)`. Read that line range (or the result's `line_start`/`line_end`) when you need a full body. -- `elided_lines` — how many source lines the skeleton folded away (`0` when not skeletonized). - -Top-level fields: - -- `recommended_reads` — the precise `{path, line_start, line_end}` list to open next. This is your read plan. -- `confidence` — `high` (answer directly), `medium` (read + optionally confirm with one Grep), `low` (use fallback). -- `fallback_suggestions` — ripgrep patterns and paths to try if the index is weak. -- `intent` / `mode` — how the query was classified and which retrievers ran; - useful to sanity-check a weak result (e.g. a "how does X work" question that - resolved to a bare symbol lookup may need `explain` instead). -- `pagination` — present only when more results exist than fit the page. It - reports `has_more` and `next_offset`. To page, re-run `search` with - `--offset ` (e.g. `search "query" --limit 10 --offset 10`). Prefer - refining with a more specific subcommand or raising `--token-budget` first — - page only when the top results genuinely miss the answer. -- `coverage` (on `refs`/`impact` only) — graph-completeness signal. Dependency - edges (imports/inheritance) are extracted only for fully supported languages. - When `coverage.partial` is `true` (the symbol/file is in a Tier-B language such - as Lua), an **empty or short `refs`/`impact` result is inconclusive** — it may - just be unanalyzed, not absent. Confirm with a Grep before concluding "nothing - references this". `coverage.languages` lists the affected languages. - -## Token efficiency rules - -- Trust the index. Read the **fewest** files needed — start with rank 1-3 only. -- Read **line ranges**, not whole files. Use `line_start`/`line_end` with Read's `offset`/`limit`. -- The `snippet` may already answer the question — re-read only if you need more context. -- Prefer `search`/`symbol`/`refs`/`impact`/`explain` over manual Grep/Glob — those are expensive fallbacks, not step 1. -- Don't re-run the query with trivially reworded text; refine with a different subcommand instead. -- For broad questions (`confidence: low`, architecture, data-flow), raise the budget: `--token-budget 3000`. -- Test files are demoted in ranking by default. Include "test" in the query to surface them. -- Snippets are skeletonized by default to fit more results in the budget. The matched line is always preserved; pass `--raw` (CLI) or `raw: true` (MCP) on the rare occasion you need full bodies inline instead of reading the cited line range. - -## Fallback behavior - -Fall back to built-in search **only** when: results are empty, `confidence` is `low`, or the user asks for something the index clearly doesn't cover. - -0. If confidence is consistently low across queries, run diagnostics first: - ```bash - codebase-index stats --json # per-language file/symbol counts + graph tier - codebase-index doctor # surface config or security issues - ``` - Low symbol counts for a language may mean the index needs a full rebuild: `codebase-index index`. - In `stats`, each language carries `graph: full|partial` (and `doctor` reports a - `graph_coverage` finding): `partial` (Tier-B) means `refs`/`impact` lack - import/inheritance edges for that language — treat empty results there as - inconclusive. - -1. Use `fallback_suggestions.ripgrep` patterns from the response via Grep. -2. If still nothing, Glob for likely paths, then Grep within them. -3. As a last resort, broaden the search — but tell the user the index was weak here (it may need a rebuild: `codebase-index index`). - -Never start with a full-repo scan when the index exists and is fresh. - -## Examples - -```bash -# "how does the auth flow work?" -codebase-index explain "auth flow" --json - -# "explain the overall architecture" / "where do I start" — modules, god nodes -codebase-index architecture --json - -# "where is auth token refresh implemented?" -codebase-index search "auth token refresh" --json - -# "what breaks if I change the User model?" -codebase-index impact "User" --json - -# "who calls send_email?" -codebase-index refs "send_email" --json - -# "find the AuthService class" -codebase-index symbol "AuthService" --json - -# precise symbol search (faster, no FTS noise) -codebase-index search "AuthService" --mode symbol --json - -# "how is the API layer connected to the database?" -codebase-index path "ApiController" "Database" --json - -# "what is the Database class and how is it used?" -codebase-index describe "Database" --json - -# generate and open an HTML graph around a file or symbol -codebase-index graph "User" --direction both --depth 2 --open -``` - -Then Read only the returned line ranges and answer with citations. +| Where is X implemented? | `codebase-index search "X" --json` | +| How does X work? | `codebase-index explain "X" --json` | +| What is this codebase? | `codebase-index architecture --json` | +| Find a named symbol | `codebase-index symbol "X" --json` | +| Who calls or references X? | `codebase-index refs "X" --json` | +| What changes if X changes? | `codebase-index impact "X" --json` | +| What does my current diff affect? | `codebase-index diff-impact --json` | +| How are X and Y connected? | `codebase-index path "X" "Y" --json` | +| Describe X and its neighborhood | `codebase-index describe "X" --json` | +| Produce a human graph | `codebase-index graph "X" --output ` | + +Use `search --mode symbol` for exact symbol work, `--mode fts` for text and +error messages, and the default `hybrid` mode for mixed questions. Use pure +`vector` mode only when embeddings are enabled and exact vocabulary is unknown. + +Read [references/commands.md](references/commands.md) only when command options +or routing remain unclear. + +## Evidence protocol + +1. Run the best-matching command with `--json`. +2. Check `index` before trusting the payload: + - missing → run `codebase-index index`, then repeat; + - stale with fewer than 20 changed files → run `codebase-index update`; + - stale with 20 or more changed files → run `codebase-index index`; + - fresh → continue. +3. Start with ranks 1–3. Read only `recommended_reads` line ranges. +4. Trace one additional hop only when the question requires behavior, + ownership, or impact. +5. Answer with `file:line` evidence and state uncertainty explicitly. + +Do not open whole files when a line range is available. A snippet may already +be sufficient. `skeletonized: true` means the response intentionally folded +unrelated body lines; read the supplied range when the missing body matters. + +## Confidence contract + +- **high** — answer from the indexed evidence. +- **medium** — read the recommended ranges and confirm the key claim with one + targeted lookup if necessary. +- **low** or no results — follow `fallback_suggestions`, then use a narrow + Grep/Glob fallback. + +On `refs` and `impact`, inspect `coverage`. If `coverage.partial` is true, an +empty result is inconclusive; confirm with targeted Grep before saying that +nothing references the target. + +Edges carry `confidence`: + +- `extracted` — exact parser evidence; +- `inferred` — heuristic resolution; +- `ambiguous` — unresolved or non-unique. + +Never present an inferred or ambiguous chain as certain. + +## Answer contract + +Structure repository answers around: + +1. **Answer** — the direct conclusion. +2. **Evidence** — the minimum supporting `file:line` references. +3. **Confidence** — only when evidence is partial, inferred, stale, or missing. +4. **Next check** — only when another check would materially reduce uncertainty. + +Do not narrate every search step. Do not claim absence from a partial graph. +Do not replace evidence with a generated HTML graph. + +For payload fields and failure handling, read +[references/response-contract.md](references/response-contract.md). diff --git a/.opencode/skills/codebase-index/references/commands.md b/.opencode/skills/codebase-index/references/commands.md new file mode 100644 index 0000000..0efb464 --- /dev/null +++ b/.opencode/skills/codebase-index/references/commands.md @@ -0,0 +1,73 @@ +# Command Reference + +Load this reference only when the intent table in `SKILL.md` is insufficient. + +## Retrieval + +```bash +codebase-index search "" --json +codebase-index explain "" --json +``` + +Useful search options: + +- `--mode hybrid|fts|symbol|vector` +- `--token-budget ` +- `--limit ` +- `--offset ` +- `--raw` to disable snippet skeletonization +- `--no-fallback` to suppress fallback suggestions + +`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer +it over repeatedly rewording a broad search. + +## Code graph + +```bash +codebase-index architecture --json +codebase-index refs "" --json +codebase-index impact "" --direction up --depth 2 --json +codebase-index diff-impact --base HEAD --direction up --depth 2 --json +codebase-index path "" "" --json +codebase-index describe "" --json +``` + +- `architecture` reads module analysis cached at index time. +- `refs` finds definitions, calls, and graph-backed references. +- `impact` walks dependents (`up`), dependencies (`down`), or both. +- `diff-impact` aggregates impact for tracked changes relative to a verified + Git commit; new or excluded files are reported as unresolved. +- `path` returns the shortest known dependency/call chain. +- `describe` returns a node card with callers, callees, module, and centrality. + +Use `graph` only for a visualization intended for a person: + +```bash +codebase-index graph "" --direction both --depth 2 --output graph.html +``` + +For headless work, use `--output`; do not use `--open`. Exports also support +`--format graphml|dot|neo4j`. + +## Index health + +```bash +codebase-index stats --json +codebase-index doctor +codebase-index update +codebase-index index +``` + +Run `stats` and `doctor` when several unrelated queries have low confidence. +Low symbol counts or partial graph coverage can explain weak results. + +## Query examples + +```bash +codebase-index search "auth token refresh" --json +codebase-index search "AuthService class" --mode symbol --json +codebase-index search "connection reset by peer" --mode fts --json +codebase-index explain "checkout flow" --json +codebase-index impact "User" --direction up --depth 2 --json +codebase-index path "ApiController" "Database" --json +``` diff --git a/.opencode/skills/codebase-index/references/response-contract.md b/.opencode/skills/codebase-index/references/response-contract.md new file mode 100644 index 0000000..059d87a --- /dev/null +++ b/.opencode/skills/codebase-index/references/response-contract.md @@ -0,0 +1,82 @@ +# Response Contract + +Load this reference when interpreting a retrieval packet or handling a weak +result. + +## Ranked results + +Each result can contain: + +- `rank` +- `path` +- `line_start` / `line_end` +- `symbols` +- `score` +- `reason` +- `snippet` +- `skeletonized` +- `elided_lines` + +`recommended_reads` is the read plan. Start with its first one to three entries +and use exact line ranges. + +`pagination.has_more` and `pagination.next_offset` indicate additional results. +Prefer a more specific command or a larger token budget before paging. + +## Freshness + +The `index` object is part of the evidence contract: + +```text +exists=false → index +stale=true, files_changed_since_build<20 → update +stale=true, files_changed_since_build≥20 → full index +stale=false → proceed +``` + +Repeat the original query after rebuilding or updating. + +## Weak results + +Fallback is allowed only when: + +- results are empty; +- confidence is low; +- graph coverage is partial; +- the requested information is not represented by the index. + +Use `fallback_suggestions.ripgrep` first. Otherwise construct one narrow Grep +pattern from the most distinctive symbol, error, or path in the question. +Avoid a full-repository scan unless targeted fallback also fails. + +If several queries are weak: + +```bash +codebase-index stats --json +codebase-index doctor +``` + +Report the limitation instead of inventing certainty. + +## Answer examples + +High confidence: + +```text +Session validation is implemented in `src/auth/session.py:44`. +The request middleware calls it from `src/http/auth.py:18`. +``` + +Partial graph: + +```text +The index found no graph-backed callers, but coverage for Lua is partial. +A targeted text search still finds two call sites in … +``` + +Inferred chain: + +```text +The route-to-service link is parser-extracted; the service-to-model link is +heuristic, so the final hop should be verified before refactoring. +``` diff --git a/.opencode/skills/codebase-index/scripts/cbx b/.opencode/skills/codebase-index/scripts/cbx index 5666358..94a9114 100644 --- a/.opencode/skills/codebase-index/scripts/cbx +++ b/.opencode/skills/codebase-index/scripts/cbx @@ -4,7 +4,7 @@ # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch). set -euo pipefail -ALLOWED="search explain symbol refs impact graph stats doctor update index" +ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index" sub="${1:-}" case " $ALLOWED " in diff --git a/.opencode/skills/codebase-index/scripts/cbx.ps1 b/.opencode/skills/codebase-index/scripts/cbx.ps1 index bb8e05d..eee56ae 100644 --- a/.opencode/skills/codebase-index/scripts/cbx.ps1 +++ b/.opencode/skills/codebase-index/scripts/cbx.ps1 @@ -8,7 +8,10 @@ param( ) $ErrorActionPreference = "Stop" -$allowed = @("search", "explain", "symbol", "refs", "impact", "graph", "stats", "doctor", "update", "index") +$allowed = @( + "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact", + "path", "describe", "graph", "stats", "doctor", "update", "index" +) if ($allowed -notcontains $Subcommand) { Write-Error "cbx: refusing subcommand '$Subcommand'. Allowed: $($allowed -join ', ')" diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f1446e..a8e224b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,32 @@ All notable changes to this project are documented here. The format is based on ## [Unreleased] +## [1.7.0] - 2026-07-29 + +### Added + +- **Diff-aware blast-radius analysis.** `codebase-index diff-impact` and the MCP + `impact_of_diff` tool aggregate graph impact for tracked working-tree changes + relative to a verified Git commit, with a changed-file safety cap, unresolved + file reporting, freshness, graph coverage, edge confidence, and exclusion of + the tool's own derived cache. +- **Progressive skill references.** The installed agent skill now keeps its + always-loaded evidence protocol compact and moves detailed commands and + response handling into on-demand reference files. +- **Reproducible product identity.** Added a graph-route mark and redesigned + README/social assets around Find / Trace / Predict. + +### Changed + +- Reworked the README, roadmap, product brief, package metadata, and plugin copy + around the evidence-first product promise. +- Expanded the safe `cbx` wrappers to allow the shipped read-only + `architecture`, `path`, `describe`, and `diff-impact` commands. +- Replaced broad skill shell permissions with an explicit command allowlist so + `clean`, `init`, and `watch` cannot bypass the safe wrapper. +- Hardened the release workflow with least-privilege defaults and immutable + commit pins for every GitHub Action that receives release or PyPI credentials. + ## [1.6.0] - 2026-06-24 ### Added @@ -375,7 +401,9 @@ All notable changes to this project are documented here. The format is based on - Hooks example + `watch` mode for keeping the index fresh without blocking the edit loop (M8). - `doctor`, `stats`, `clean` diagnostics/maintenance commands. -[Unreleased]: https://github.com/denfry/codebase-index/compare/v1.5.0...HEAD +[Unreleased]: https://github.com/denfry/codebase-index/compare/v1.7.0...HEAD +[1.7.0]: https://github.com/denfry/codebase-index/compare/v1.6.0...v1.7.0 +[1.6.0]: https://github.com/denfry/codebase-index/compare/v1.5.0...v1.6.0 [1.5.0]: https://github.com/denfry/codebase-index/compare/v1.4.0...v1.5.0 [1.4.0]: https://github.com/denfry/codebase-index/compare/v1.3.0...v1.4.0 [1.3.0]: https://github.com/denfry/codebase-index/compare/v1.2.1...v1.3.0 diff --git a/README.md b/README.md index 630b3b7..9f31a88 100644 --- a/README.md +++ b/README.md @@ -1,707 +1,322 @@ -# codebase-index: Local Codebase Indexing for AI Coding Agents - -`codebase-index` is a local-first codebase indexing tool that helps Claude Code, -Codex CLI, OpenCode, and other AI coding agents find relevant files, symbols, and -references without scanning an entire repository. - -[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) -[![Python](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/) -[![CI](https://github.com/denfry/codebase-index/actions/workflows/ci.yml/badge.svg)](https://github.com/denfry/codebase-index/actions) -[![Claude Code Skill](https://img.shields.io/badge/Claude%20Code%20Skill-yes-green.svg)](skill/SKILL.md) -[![Codex CLI](https://img.shields.io/badge/Codex%20CLI-supported-green.svg)](#which-ai-clis-does-codebase-index-support) -[![OpenCode](https://img.shields.io/badge/OpenCode-supported-green.svg)](#which-ai-clis-does-codebase-index-support) -[![MCP](https://img.shields.io/badge/MCP-stdio%20server-green.svg)](docs/MCP.md) -[![Local First](https://img.shields.io/badge/local--first-yes-green.svg)](#safety-and-privacy) -[![No Telemetry](https://img.shields.io/badge/no%20telemetry-yes-green.svg)](#safety-and-privacy) -[![No Network By Default](https://img.shields.io/badge/no%20network%20by%20default-yes-green.svg)](#safety-and-privacy) -[![SQLite](https://img.shields.io/badge/database-SQLite-blue.svg)](docs/DATABASE_SCHEMA.md) -[![Tree-sitter](https://img.shields.io/badge/parsing-Tree--sitter-orange.svg)](docs/ARCHITECTURE.md) -

- codebase-index ranking a local search for 'where is user authentication implemented?' into scored files with recommended file:line ranges to read + codebase-index logo

-## What Is codebase-index? - -**codebase-index is a private, offline retrieval layer for AI code search.** It -builds a SQLite index of your repository, extracts symbols with Tree-sitter, -ranks matches with hybrid retrieval, and returns compact file:line ranges that -an AI coding agent can read instead of opening broad file sets. - -Use it when you want Cursor-like codebase awareness in terminal-based AI tools -while keeping source code, snippets, and search metadata on your machine. - -> **codebase-index is not an IDE and not a coding agent.** It is the local -> retrieval/index layer that gives terminal and MCP-based AI agents precise -> codebase context. The agent stays your interface; this gives it better aim. - -## Who Is It For? - -- **Claude Code / Codex CLI / OpenCode users** on medium-to-large repos who want - the agent to read 3 ranked files instead of grepping and scanning 60. -- **Privacy-constrained teams** (proprietary or regulated code) who cannot send - source to a cloud code-intelligence service. -- **MCP power users** who want a stable, queryable code index as a tool, not a - black box baked into one agent's prompt. -- **Tooling authors** who need scriptable retrieval (`--json`, SQLite, MCP) that - other tools can build on. - -Not for you if you want a full IDE, org-scale multi-repo search, or a hosted -platform — use Cursor or Sourcegraph for those. - -## Start Here - -If you are opening this repository for the first time, follow this order: - -1. [Quick Start (5 minutes)](docs/QUICKSTART.md) -2. [Installation Guide](docs/INSTALLATION.md) -3. [Benchmarks](docs/BENCHMARKS.md) -4. [How the skill works](skill/SKILL.md) -5. [MCP server](docs/MCP.md) -6. [FAQ](docs/FAQ.md) - -If you only need the shortest path, run: - -```bash -pip install codebase-index # from PyPI -cd your-project -codebase-index init # prompts for Claude Code / Codex CLI / OpenCode -codebase-index index -codebase-index search "where is authentication implemented?" -``` - -## Project Status - -**`1.6.0` is released.** The current release includes repository discovery, -SQLite FTS5 storage, Tree-sitter symbols and references, hybrid ranking, graph -impact analysis, token-budgeted retrieval packets, optional local embeddings, -hooks/watch support, multi-CLI installation, MCP server support, and PyPI + -`pipx` install paths (`pip install codebase-index`). - -The `1.6.0` release turns the dependency graph into a navigable map: every edge -carries a `confidence` audit trail (`extracted`/`inferred`/`ambiguous`, surfaced -in `refs`/`impact`); a new zero-dependency analytics pass computes modules -(communities), god nodes, and surprising cross-module links, exposed via the -`architecture` command/MCP tool; `path` traces the shortest dependency chain -between two symbols and `describe` prints a symbol's node card; and the HTML -graph is coloured by module and sized by connectivity, with `--format -graphml|dot|neo4j` exports for external tools. Requires a one-time reindex -(schema 2 → 3). - -The earlier `1.4.0` release hardened the MCP contract (a `schema_version` + -`tool` envelope on every payload, golden-locked per tool, plus a fix so the -server loads on current `mcp`/`pydantic`), dampened the god-class `in_degree` -rerank tiebreak (logarithmic, validated no-regression on the public benchmark), -and labelled config/IaC files (Dockerfile, Terraform, HCL, INI, Makefiles) so -infra surfaces in `stats` and search. - -The earlier `1.3.0` release added a content-addressed embedding cache (rebuilds reuse -vectors for unchanged content), a batched graph build (7–28× faster edge -resolution plus a new `edges(file_id)` index), a shared CLI/MCP service layer -(MCP hybrid search now uses the vector channel; `index_stats` reports the -per-language graph tier), graph-coverage signals in `stats`/`refs`/`impact`, -CLI pagination via `search --offset`, and single-source versioning with a CI -gate that keeps every committed skill copy in sync. -The `1.2.1` release added skill auto-update/rollback commands and version -stamps so installed skills stay in sync with the package automatically. -See [CHANGELOG.md](CHANGELOG.md) and -[docs/ROADMAP.md](docs/ROADMAP.md). - -MCP is now available as a stdio server via `codebase-index mcp --root `. -It exposes `healthcheck`, `search_code`, `find_symbol`, `find_refs`, -`impact_of`, `explain_code`, `architecture_overview`, `path_between`, -`describe_symbol`, and `index_stats`; see [docs/MCP.md](docs/MCP.md). - -``` -You: "Where is user authentication implemented?" -Agent: searches local index (symbols + FTS5 + graph) - reads only 3 ranked files instead of scanning 60 - answers with citations: src/auth/AuthService.ts:12-148 -``` - ---- - -## How Do I Install codebase-index? - -For most users, install the package from PyPI and run `init` inside the -repository you want to index: - -```bash -pip install codebase-index # or: pipx install codebase-index -cd your-project -codebase-index init # choose Claude Code, Codex CLI, OpenCode, or all -codebase-index index -``` - -In a non-interactive script, pass a target explicitly: - -```bash -codebase-index init --target auto # install into detected AI CLIs -codebase-index init --target codex # write AGENTS.md + Codex resources -codebase-index init --target claude # write .claude/skills/codebase-index -codebase-index init --target opencode # write OpenCode command + agent files -``` - -### Install as a Claude Code plugin - -One command in Claude Code: - -``` -/plugin marketplace add denfry/codebase-index -/plugin install codebase-index@codebase-index -``` - -Or just ask: "install the codebase-index plugin". - -**What happens on first run:** when a session starts, a `SessionStart` hook -(`scripts/bootstrap.sh` / `.ps1`) creates a private Python virtual environment under -`~/.claude/plugins/data/codebase-index-*/venv` and installs the pinned -`codebase-index` package (from `requirements.lock`) into it — using `uv` if present, -otherwise `python -m venv` + `pip`. It reinstalls only when the lock file changes. -Nothing is installed globally; uninstalling the plugin removes the data directory. - -**Prerequisite:** Python 3.11+ on your PATH. The first install needs network access to -fetch the package; later sessions are offline. The skill builds its index on -your first codebase question, so there is no manual `index` step. - -**Distribution note:** the plugin bootstrap installs the pinned requirement from -`requirements.lock`. In `1.6.0`, that lock points at the tagged GitHub release -instead of PyPI. You can override it with `CBX_INSTALL_SPEC` when testing a local -checkout or a different Git ref. - -## What Problem Does codebase-index Solve? - -AI coding agents struggle with large repositories when they rely on broad file -reads, grep output, or user-provided context. `codebase-index` gives those agents -a ranked local retrieval packet before they read source files. - -- **Token waste** — Scanning entire files or running broad grep/glob queries burns through the context window on irrelevant content. -- **No symbol awareness** — Standard search can't distinguish a function definition from a call, or a class from a variable. -- **No ranking** — Grep returns all matches with no relevance ordering. The agent must read everything. -- **No context** — Grep doesn't know which files are related or what to read next. -- **Cloud dependency** — External code indexing services send your proprietary code to remote servers. - -Developers get Cursor-like codebase awareness in Claude Code, Codex CLI, and -OpenCode without leaving the terminal or sending code to a remote indexing -service. - -## How Is This Different? - -Short answers to the questions people actually ask. The full, honest matrix — -including when you should pick the other tool — is in -[docs/COMPARISON.md](docs/COMPARISON.md). - -- **Why not just `grep`/`rg`?** Grep returns every match with no ranking, no - symbol awareness, and no idea which files relate. codebase-index ranks results, - knows a definition from a call, expands along the dependency graph, and returns - specific line ranges under a token budget — so the agent reads less and answers - with citations. -- **Why not Cursor?** Cursor is a great AI IDE with strong codebase awareness, but - it is proprietary and IDE-centric. codebase-index is a local, open retrieval - layer for **terminal and MCP** agents, offline by default, with no IDE lock-in. - If you live inside Cursor, keep using Cursor. -- **Why not Aider repo-map?** Aider's repo-map is a good graph-ranked, - token-budgeted context map — but it is optimized to feed Aider's own chat. - codebase-index is a **reusable, queryable index**: CLI/JSON/MCP commands return - ranked `file:line` ranges, symbols, references, and impact that *any* - shell-capable agent can consume, with freshness and security gates. -- **Why not Sourcegraph / Cody / Amp?** They are excellent enterprise-grade, - cross-repo code intelligence platforms. They are also heavier and - account/platform-oriented. codebase-index is single-repo, local, and - lightweight — no server, no account, no code leaving the machine by default. -- **Why not Codebase-Memory MCP?** It is the closest direct alternative — a - broader graph engine with a static binary and wide language/agent coverage. We - do **not** claim to beat it globally. We differentiate on simplicity, a strict - privacy model, token-budgeted retrieval packets, a transparent Python - implementation, the Claude/Codex/OpenCode workflow, and honest benchmarks. If - you need its broader graph and language reach today, choose it. - -**What makes it trustworthy?** No telemetry, no network by default, a multi-gate -exclusion pipeline (secrets/binaries/generated/dependencies never indexed), -output-time secret redaction, a `doctor --strict` safety self-check, and a -public benchmark suite wired as a CI regression gate. Claims that aren't proven -in this repo are marked as roadmap, not done. - -### Proven today vs. roadmap - -| Capability | Status | -|---|---| -| Hybrid retrieval (path + symbol + FTS5 + graph), token-budgeted packets | ✅ Shipped | -| Tree-sitter symbols for 12 Tier-A languages + Tier-B generic path | ✅ Shipped | -| Import/call/reference/inheritance graph, `refs`/`impact` | ✅ Shipped | -| Optional local embeddings; external embeddings gated 3 ways | ✅ Shipped | -| stdio MCP server; CLI/skill/MCP share one service layer | ✅ Shipped | -| Honest 55k LOC Java benchmark (recall@3 70% vs 40% `rg`, ~13× fewer tokens) | ✅ Shipped | -| 10k/100k/1M LOC public-repo benchmarks | 🚧 Roadmap | -| Framework-aware typed edges (route→handler→service→model) | 🚧 Roadmap | -| PyPI / `uvx` / Homebrew, signed checksums, SBOM | 🚧 Roadmap | -| Verified per-client MCP docs, paged/progressive results | 🚧 Roadmap | - -See [docs/PRODUCT_UPGRADE_PLAN.md](docs/PRODUCT_UPGRADE_PLAN.md) for the full -upgrade plan and ranked roadmap. +

codebase-index

-## How Does codebase-index Work? - -`codebase-index` builds a local hybrid index that combines: - -- **Symbol search** — Tree-sitter AST parsing extracts classes, functions, methods, and variables across the supported code-language set. -- **Full-text search** — SQLite FTS5 for fast lexical search across code chunks. -- **Path search** — File path matching for location-aware queries. -- **Optional semantic search** — Vector embeddings for similarity-based retrieval (opt-in, local by default). -- **Dependency graph** — Import, call, and reference edges for impact analysis and graph expansion. -- **Token-budgeted output** — Ranked retrieval packets with specific line ranges, not whole files. - -The AI agent reads only the recommended files and line ranges, not the entire -repository. - -## Quick Demo - -```bash -/codebase-index "where is user authentication implemented?" -``` - -Expected output: - -``` -Top matches: -┌──────┬──────────────────────────┬──────────────────────────┬───────┬──────────────────────────────┐ -│ Rank │ Path │ Symbols │ Score │ Reason │ -├──────┼──────────────────────────┼──────────────────────────┼───────┼──────────────────────────────┤ -│ 1 │ src/auth/AuthService.ts │ AuthService, login │ 0.92 │ exact symbol match │ -│ 2 │ src/routes/auth.ts │ loginHandler, logout │ 0.78 │ FTS match · 4 callers │ -│ 3 │ src/middleware/auth.ts │ requireAuth │ 0.65 │ path match · FTS match │ -└──────┴──────────────────────────┴──────────────────────────┴───────┴──────────────────────────────┘ - -Recommended reads: - 1. src/auth/AuthService.ts:12-148 - reason: matched AuthService, login(), validatePassword() - 2. src/routes/auth.ts:20-91 - reason: /login route calls AuthService.login() - 3. src/middleware/auth.ts:5-42 - reason: auth middleware validates sessions -``` - -## Installation Options - -If you are new to this repo, start with [docs/QUICKSTART.md](docs/QUICKSTART.md). -If you want all install options and troubleshooting, use [docs/INSTALLATION.md](docs/INSTALLATION.md). - -**Multi-CLI installer (Claude Code + Codex CLI + OpenCode):** one command via -`install.sh` / `install.ps1` — see [docs/installer.md](docs/installer.md). - -```bash -# macOS / Linux -curl -fsSL https://raw.githubusercontent.com/denfry/codebase-index/main/install.sh | sh -``` -```powershell -# Windows PowerShell -irm https://raw.githubusercontent.com/denfry/codebase-index/main/install.ps1 | iex -``` - -### Option 1: Install from PyPI (recommended) - -```bash -pip install codebase-index # or: pipx install codebase-index -cd your-project -codebase-index init -codebase-index index -``` +

+ Give AI coding agents a precise map of your codebase — locally, + privately, and with evidence. +

-### Option 2: Pin to a tagged GitHub release +

+ Find implementations. Trace behavior. Predict change impact. +

-Pin to an exact version for reproducible installs, or grab an unreleased commit: +
-```bash -cd your-project -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.6.0" -codebase-index init -codebase-index index -``` +

+ PyPI version + CI + Python 3.11+ + MCP ready + No network by default + MIT license +

-### Python version compatibility +

+ codebase-index showing a Find, Trace, Predict workflow with precise file and line evidence +

-`codebase-index` requires Python 3.11 or newer. +## The short version -If `codebase-index init --target opencode` fails with: +`codebase-index` is a local retrieval and code-graph layer for Claude Code, +Codex CLI, OpenCode, and MCP clients. It indexes a repository into SQLite, +extracts symbols and relationships with Tree-sitter, and gives agents ranked +`file:line` evidence instead of making them scan broad sets of files. ```text -ModuleNotFoundError: No module named 'importlib.resources.abc'; 'importlib.resources' is not a package +Question → ranked retrieval → dependency evidence → precise answer ``` -the `pipx` environment was likely created with an older Python version. Reinstall `codebase-index` using Python 3.11+ explicitly: +It is not an IDE and not another coding agent. Your existing agent remains the +interface; `codebase-index` gives it better aim. -```powershell -pipx uninstall codebase-index -py -0p -pipx install --python "\python.exe" codebase-index -``` +## Find. Trace. Predict. -For example: - -```powershell -pipx install --python "C:\Users\you\AppData\Local\Programs\Python\Python312\python.exe" codebase-index -``` +| Job | Question | Command | +|---|---|---| +| **Find** | Where is authentication implemented? | `codebase-index search "authentication"` | +| **Trace** | How does checkout reach the database? | `codebase-index explain "checkout flow"` | +| **Trace** | How are two components connected? | `codebase-index path ApiController Database` | +| **Predict** | What breaks if `User` changes? | `codebase-index impact User` | +| **Predict** | What does my current diff affect? | `codebase-index diff-impact` | -Then run initialization again: +Every retrieval packet carries: -```powershell -codebase-index init --target opencode -codebase-index index -``` +- ranked matches and the reason each match scored; +- exact line ranges to read next; +- index freshness; +- answer confidence and targeted fallbacks; +- graph coverage and edge confidence where relevant. +That evidence contract lets an agent distinguish “nothing references this” from +“the graph is partial, so verify with a targeted search.” -### Option 3: Install with pipx from a pinned GitHub tag +## Install in five minutes ```bash -pipx install "git+https://github.com/denfry/codebase-index.git@v1.6.0" +pip install codebase-index cd your-project -codebase-index init --target auto -codebase-index index -``` - -### Option 4: Install from source - -```bash -git clone https://github.com/denfry/codebase-index.git -cd codebase-index -pip install -e ".[dev]" -``` - -### Distribution roadmap - -As of `1.6.0`, **PyPI is shipped** — `pip install codebase-index` and -`pipx install codebase-index` work today. `uvx`, Homebrew, signed release -checksums, and SBOMs remain on the roadmap: - -```bash -uvx codebase-index init # planned -brew install denfry/tap/codebase-index # planned -``` - -### Verify the install - -```bash -codebase-index doctor -``` - -See [docs/INSTALLATION.md](docs/INSTALLATION.md) for the full guide, including optional extras (embeddings, watch mode) and troubleshooting. - -## Usage - -```bash -# Initialize the index for your project codebase-index init - -# Build the index codebase-index index - -# Search for something codebase-index search "where is authentication implemented?" - -# Look up a specific symbol -codebase-index symbol "AuthService" - -# Find callers and references -codebase-index refs "AuthService.login" - -# Analyze impact of a change -codebase-index impact "src/auth/AuthService.ts" - -# Map the codebase: modules, god nodes, surprising links, suggested questions -codebase-index architecture - -# How are two symbols/files connected? Shortest dependency/call path -codebase-index path "renew" "refresh_access_token" - -# Node card: definition, callers, callees, centrality, module -codebase-index describe "Database" - -# Visualize the graph (modules coloured, size = connectivity, edge style = confidence) -codebase-index graph --open -# …or export for external tools: graphml (Gephi/yEd), dot (Graphviz), neo4j (Cypher) -codebase-index graph --format graphml -o graph.graphml - -# View index statistics -codebase-index stats - -# Run diagnostics -codebase-index doctor ``` -Add `--json` to any command for machine-readable output. - -## How Does Retrieval Flow Through codebase-index? - -``` -User question - ↓ -CLI instructions or skill - ↓ -Hybrid retrieval - ├─ Path search - ├─ Symbol search (Tree-sitter AST) - ├─ SQLite FTS5 full-text search - ├─ Optional embeddings (vector search) - └─ Graph expansion (callers, imports, references) - ↓ -Ranked retrieval packet - ↓ -Agent reads only the recommended line ranges - ↓ -Answer with precise file:line citations -``` - -## Features - -- [x] **Local-first indexing** — All data stays on your machine -- [x] **No network by default** — Zero external API calls out of the box -- [x] **Respects ignore files** — `.gitignore`, `.claudeignore`, `.codeindexignore` -- [x] **SQLite storage** — Fast, reliable, single-file database -- [x] **FTS5 lexical search** — Full-text search with code-aware tokenization -- [x] **Tree-sitter AST parsing** — Tier-A symbol extraction for Python, JavaScript, TypeScript, Java, Go, Rust, C, C++, C#, Ruby, PHP, and Kotlin; Tier-B generic extraction for code languages with a loadable grammar such as Lua -- [x] **Symbol extraction** — Classes, functions, methods, variables with line ranges -- [x] **Incremental indexing** — Only changed files are re-indexed -- [x] **Token-budgeted output** — Configurable max output size -- [x] **Secret redaction** — Masks keys, tokens, and credentials in snippets -- [x] **Optional embeddings** — Local or remote vector search (opt-in) -- [x] **Optional hooks/watch** — Auto-update index after file edits -- [x] **Multi-CLI setup** — Claude Code, Codex CLI, and OpenCode instructions -- [x] **MCP server** — stdio MCP tools for search, symbols, refs, impact, explain, health, and stats - -## Safety and Privacy - -> **Trust model in 60 seconds** -> 1. **Offline by default** — the base install has zero network dependencies; nothing leaves your machine. -> 2. **One opt-in exit, triple-gated** — external embeddings require `allow_external` **and** an env API key **and** a printed endpoint warning, or they are refused. -> 3. **Secrets never get in** — `.env`, keys, certs, and credential files are excluded before parsing (multi-gate ignore pipeline). -> 4. **Secrets never get out** — every snippet is redacted (AWS keys, private keys, JWTs, bearer tokens, connection strings) before it reaches the agent. -> 5. **No telemetry, ever** — no analytics, no phone-home, no usage data. -> 6. **Verify it yourself** — `codebase-index doctor --strict` audits all of the above and exits non-zero in CI on any high-severity finding. - -`codebase-index` is designed with privacy as a first principle: - -- **No telemetry** — No usage data, analytics, or crash reports are collected or transmitted. -- **No external API calls by default** — All indexing, storage, and search happen locally. -- **Does not index sensitive files** — `.env`, private keys, certificates, tokens, and credential files are excluded before parsing. -- **Respects ignore files** — `.gitignore`, `.claudeignore`, `.codeindexignore`, and `.cursorignore` are all honored. -- **Index stored locally** — SQLite database in `.claude/cache/codebase-index/` (gitignored by default). -- **Optional embeddings are local by default** — External embedding APIs require explicit opt-in with warnings. -- **Secret redaction** — Snippets are scrubbed for AWS keys, private keys, JWTs, bearer tokens, and connection strings before output. - -See [docs/SECURITY_MODEL.md](docs/SECURITY_MODEL.md) for the full security model and threat analysis. - - -## Benchmark Results - -There are three benchmark surfaces today: - -1. **Public benchmark suite** in `tests/benchmark_public.py`: reproducible - multi-language fixture with Recall@1/3/5, MRR, nDCG, answer-correctness proxy, - token economy, language breakdown, freshness latency, graph tasks, and scale counters. -2. **Smoke benchmark** on `sample_repo`: validates the CLI is fast and stable on - a tiny fixture, but it is not evidence of production retrieval quality. -3. **Honest benchmark** on a real Java repository: `tests/benchmark_honest.py` - compares codebase-index against a disciplined `rg` + read-window baseline on - 10 realistic questions. Results are documented in - [tests/benchmark_honest_RESULTS.md](tests/benchmark_honest_RESULTS.md). - -Run the public suite: +`init` can install resources for Claude Code, Codex CLI, OpenCode, and detected +MCP clients: ```bash -python tests/benchmark_public.py --workdir .tmp-public-benchmark +codebase-index init --target auto +codebase-index init --target codex +codebase-index init --target claude +codebase-index init --target opencode ``` -Current honest benchmark headline: - -| Metric | Result | -|---|---| -| Repo | 303 Java files, ~55k LOC | -| Retrieval quality | recall@3: 70% index vs 40% `rg` baseline | -| Token economy | ~13x fewer answer tokens than `rg` + 80-line windows | -| Verified language impact | Java symbols fixed from 0 to 3,543 symbols | - -The public suite now has the metric framework. It still needs larger public or -documented external repos for 10k/100k/1M LOC scale claims and deeper framework -graph tasks. See [docs/BENCHMARKS.md](docs/BENCHMARKS.md). +`pipx install codebase-index` is supported as an isolated alternative. See the +[installation guide](docs/INSTALLATION.md) for pinned releases, editable +installs, hooks, Windows details, and troubleshooting. -## Repository Layout +### Claude Code plugin -``` -├── skill/ # Source instruction package (SKILL.md, scripts, examples) -├── skills/ # Plugin skill copy -├── src/codebase_index/ # Python package (CLI, indexer, retrieval, storage) -├── docs/ # Documentation (architecture, schema, security, FAQ) -├── examples/ # Sample queries, retrieval output, demo project -├── tests/ # Test suite with fixture repositories -├── bin/ # Plugin CLI wrappers (cbx, codebase-index) -├── scripts/ # Bootstrap scripts (bootstrap.sh, bootstrap.ps1) -├── hooks/ # Plugin hooks (hooks.json) -├── .claude-plugin/ # Plugin manifest + marketplace catalog -├── .github/ # Issue templates, CI workflows, PR template -├── README.md # This file -├── LICENSE # MIT License -├── CHANGELOG.md # Release history -├── CONTRIBUTING.md # Contributor guide -├── SECURITY.md # Security policy -├── ROADMAP.md # Development milestones -├── requirements.lock # Pinned install spec for bootstrap -└── pyproject.toml # Package configuration +```text +/plugin marketplace add denfry/codebase-index +/plugin install codebase-index@codebase-index ``` -## Configuration +The plugin provisions a private environment on first use. Later sessions run +offline, and the first codebase question builds the index automatically. -Create `.codeindex.json` in your project root: +## What the agent receives ```json { + "query": "where is authentication implemented?", + "confidence": "high", + "results": [ + { + "path": "src/auth/AuthService.ts", + "line_start": 12, + "line_end": 148, + "score": 0.92, + "reason": "exact symbol match, 4 callers" + } + ], + "recommended_reads": [ + { + "path": "src/auth/AuthService.ts", + "line_start": 12, + "line_end": 148 + } + ], "index": { - "max_file_bytes": 1048576, - "chunk_size": 500, - "chunk_overlap": 50 - }, - "embeddings": { - "backend": "noop", - "allow_external": false + "exists": true, + "stale": false } } ``` -### Ignore Files - -- `.codeindexignore` — Tool-specific ignore patterns (highest priority) -- `.gitignore` — Standard git ignore patterns -- `.claudeignore` — Claude-specific ignore patterns - -### Cache Location - -``` -.claude/cache/codebase-index/ -├── index.sqlite # SQLite database with FTS5 -└── config.json # Resolved configuration -``` +Snippets are skeletonized when that preserves evidence while saving tokens. +Unrelated bodies collapse, but imports, signatures, matched lines, and exact +read ranges remain. -## Which AI CLIs Does codebase-index Support? +## Core commands -`codebase-index init` can install instructions for three AI coding CLIs: +```bash +# Find +codebase-index search "auth token refresh" +codebase-index symbol AuthService + +# Trace +codebase-index explain "authentication flow" +codebase-index refs send_email +codebase-index path ApiController Database +codebase-index describe Database +codebase-index architecture -| CLI | Files written by `init` | Best command | -|---|---|---| -| Claude Code | `.claude/skills/codebase-index/` | `codebase-index init --target claude` | -| Codex CLI | `AGENTS.md` + `.codex/skills/codebase-index/` | `codebase-index init --target codex` | -| OpenCode | `.opencode/commands/` + `.opencode/agents/` + resources | `codebase-index init --target opencode` | +# Predict +codebase-index impact User --direction up --depth 2 +codebase-index diff-impact --base HEAD --direction up --depth 2 -Use `codebase-index init --target auto` to install into detected CLIs, or -`codebase-index init --target all` to write every supported integration. +# Inspect and visualize +codebase-index graph User --direction both --depth 2 --output graph.html +codebase-index stats +codebase-index doctor +``` -### Claude Code Integration +Add `--json` for agents and automation. Search supports `hybrid`, `fts`, +`symbol`, and opt-in `vector` modes. -The Claude Code skill is defined in [`skill/SKILL.md`](skill/SKILL.md) with -YAML frontmatter for automatic selection. +## Why not just grep? -Example `.claude/CLAUDE.md`: +Grep is excellent when you know the exact text. Repository questions often +need more: -```markdown -## Codebase Questions +| Capability | `rg` / grep | codebase-index | +|---|---:|---:| +| Exact text matching | Yes | Yes | +| Ranked results | No | Yes | +| Symbol definitions vs calls | No | Yes | +| Dependency and impact graph | No | Yes | +| Token-budgeted read plan | No | Yes | +| Freshness and coverage signals | No | Yes | +| Local and scriptable | Yes | Yes | -Before answering any question about this project's code: -1. Use the codebase-index skill to search the local index first. -2. Read only the recommended line ranges — do not scan entire files. -3. Answer with file:line citations. -``` +Use grep for one known string. Use `codebase-index` when the agent must locate, +understand, or assess a change across a repository. -### Optional Hooks +The [comparison guide](docs/COMPARISON.md) also covers Cursor, Aider repo-map, +Sourcegraph, Continue, Amp, and Codebase-Memory MCP—including when those tools +are the better choice. -Configure automatic index updates in `.codeindex.json`: +## Measured results -```json -{ - "hooks": { - "post_tool_use": { - "enabled": true, - "events": ["Write", "Edit"], - "command": "codebase-index update --quiet" - } - } -} -``` +On the published 55k LOC Java benchmark: -See [skill/examples/](skill/examples/) for full examples. +- Recall@3: **70%** for `codebase-index` versus **40%** for the `rg` baseline; +- answer-context tokens: approximately **13× fewer**; +- raw results and methodology are checked into the repository. -## FAQ +These results are evidence for that benchmark, not a claim of universal +superiority. Large public-repository and framework-graph evaluations remain on +the [roadmap](docs/ROADMAP.md). Read the complete methodology and limitations in +[BENCHMARKS.md](docs/BENCHMARKS.md). -### Is this a Cursor replacement? +## Local by default -No. `codebase-index` is not a replacement for Cursor or any IDE. It is a -local retrieval layer for terminal AI coding agents. You still use Claude Code, -Codex CLI, OpenCode, or another agent as your primary interface. +The base install: -### Does it send my code anywhere? +- makes no network requests; +- sends no telemetry; +- stores the derived index inside the project cache; +- excludes dependency, build, binary, oversized, generated, and secret-like + files before indexing; +- redacts secret patterns again at output time; +- exposes `doctor --strict` for CI and security checks. -No. By default, `codebase-index` is completely local-first and offline. All indexing, storage, and search happen on your machine. External embeddings are opt-in only and require explicit configuration. +Embeddings are optional. Local embeddings stay on the machine; external +embeddings require explicit configuration, an API key, and an endpoint +acknowledgement. -### Does it work without embeddings? +See the [security model](docs/SECURITY_MODEL.md) for trust boundaries, gates, +failure modes, and residual risks. -Yes. The default configuration disables embeddings entirely (`backend = "noop"`). Search uses SQLite FTS5, Tree-sitter symbol extraction, path matching, and graph expansion. Embeddings are an optional enhancement. +## How it works -### Does it support large repositories? +```text +Repository + │ + ├─ discovery + ignore and secret gates + ├─ Tree-sitter symbols and relationships + ├─ line and symbol-aligned chunks + └─ optional embeddings + │ + ▼ + local SQLite + FTS5 + symbols + graph + │ + ▼ + intent routing → hybrid retrieval → rerank → token budget + │ + ▼ + ranked file:line evidence for CLI, Skill, and MCP +``` + +The three product surfaces share one service layer, so retrieval behavior does +not drift between the CLI, installed agent skills, and MCP tools. + +Detailed internals: + +- [Architecture](docs/ARCHITECTURE.md) +- [Retrieval pipeline](docs/RETRIEVAL_PIPELINE.md) +- [Database schema](docs/DATABASE_SCHEMA.md) +- [Language and graph coverage](docs/LANGUAGES.md) + +## Supported surfaces + +| Surface | Integration | +|---|---| +| Claude Code | Skill, plugin, optional hooks | +| Codex CLI | `AGENTS.md` plus project skill | +| OpenCode | Command, agent, and skill resources | +| MCP clients | stdio server with versioned JSON envelopes | +| Shell and automation | CLI, `--json`, and local SQLite | -Yes. The index is incremental — only changed files are re-indexed. SQLite with FTS5 handles large datasets efficiently. Generated files, dependencies, and binaries are excluded automatically. +Run the MCP server with: -### Why not just use Grep? +```bash +codebase-index mcp --root /path/to/repository +``` -Grep returns all matches with no ranking, no symbol awareness, and no context about related files. `codebase-index` combines lexical search with symbol extraction and graph expansion to return **ranked, contextual results** with specific line ranges to read. +Available MCP tools include search, explain, symbols, references, impact, +diff impact, architecture, shortest path, node description, health, and index statistics. +See [MCP.md](docs/MCP.md) for client configuration. -### Does it support MCP? +## Project status -Yes. Run `codebase-index mcp --root ` to expose the local index over stdio -MCP. See [docs/MCP.md](docs/MCP.md) for tools and client config templates. +The latest released line is **1.7.0**. It includes: -### Can I use it with other agents? +- hybrid and optional vector retrieval; +- Tree-sitter symbol extraction across the documented language tiers; +- import, call, reference, and inheritance graphs; +- architecture communities, central nodes, and surprising cross-module links; +- shortest dependency paths and node descriptions; +- token-budgeted and skeletonized retrieval packets; +- CLI, Skill, plugin, and MCP delivery; +- incremental updates, watch hooks, diagnostics, skill rollback, and diff-aware + impact analysis. -Yes. The CLI is agent-agnostic. Any agent that can run shell commands can use -`codebase-index`, and JSON output (`--json`) is parseable by other tools. +Planned work is deliberately separated from shipped capability. The next +product priorities are stronger real-repository evaluations, typed framework +edges, and an even more direct task-context workflow. See the +[roadmap](docs/ROADMAP.md). -### How do I reset the index? +## Documentation -```bash -codebase-index clean # reset the index DB (keeps the skill) -codebase-index clean --all # wipe the whole .claude/cache/codebase-index/ dir -# Or manually: rm -rf .claude/cache/codebase-index/ -codebase-index index -``` +| Start here | Deep dives | Project trust | +|---|---|---| +| [Quick start](docs/QUICKSTART.md) | [Retrieval](docs/RETRIEVAL.md) | [Benchmarks](docs/BENCHMARKS.md) | +| [Installation](docs/INSTALLATION.md) | [Architecture](docs/ARCHITECTURE.md) | [Security](docs/SECURITY.md) | +| [FAQ](docs/FAQ.md) | [MCP](docs/MCP.md) | [Release checklist](docs/RELEASE_CHECKLIST.md) | +| [Skill design](docs/SKILL_DESIGN.md) | [Schema](docs/SCHEMA.md) | [Changelog](CHANGELOG.md) | ## Contributing -We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide. +Contributions should preserve three invariants: + +1. retrieval quality is measured, not asserted; +2. the default path remains local and fails closed at security boundaries; +3. machine-readable contracts stay stable across CLI and MCP. -Quick start: +Before opening a pull request: ```bash -git clone https://github.com/denfry/codebase-index.git -cd codebase-index -pip install -e ".[dev]" pytest -ruff check src/ tests/ +ruff check . +mypy src +python scripts/sync_skill_copies.py --check ``` -## Roadmap - -See [ROADMAP.md](ROADMAP.md) for the full milestone plan. - -| Milestone | Status | Description | -|---|---|---| -| M0 | ✅ Done | Repository packaging | -| M1 | ✅ Done | SQLite + FTS5 index | -| M2 | ✅ Done | Tree-sitter symbol extraction | -| M3 | ✅ Done | Hybrid retrieval | -| M4 | ✅ Done | Graph expansion | -| M5 | ✅ Done | Token-budgeted retrieval packets | -| M6 | ✅ Done | Optional local embeddings | -| M7 | ✅ Done | Claude Code Skill packaging | -| M7.5 | ✅ Done | One-command plugin install | -| M8 | ✅ Done | Hooks + watch mode | -| M9 | ✅ Done | Public release | +Add user-visible changes under `[Unreleased]` in [CHANGELOG.md](CHANGELOG.md). +See [CONTRIBUTING.md](CONTRIBUTING.md) if present and the repository +instructions for branch and review policy. ## License diff --git a/assets/demo.png b/assets/demo.png index 3ff97e2c00e64d650c0baf40083ed3e6a4c80f18..a8077fd238b5d4a6fe1eb2d9030dac3a0d04eb07 100644 GIT binary patch literal 145558 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 z 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 literal 151025 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 z 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

t?$A;jwkeijljC{21Y;+d7?-id zD0gM>wT8lh2Dq)?s|x;AWD>yfr7MCYR^-%%YjJu-gqUwoh?`DE;ONf%6VcmWCN?dQ z`ynx?9d_Y_+jW{-e;8I^0K>EB>$Yd@m*eHC3o`{UeTAyIebU&-9 z=HDi$QqwYzZV_HDZCJvvJ4v$D&9FJwtcs6xz$&$E4GE zJs8U|?z@k{;lU=oHakCj+U8<0Q1^_VmHN83&gs4)ZGs1Qd&^wR#0pCWO8hQ=DJWi9cPW9ilTPb<_`Svt+XprB(Y64 z$e(&%7#zNCT2hm-DJ+iY*VJBzZ7-f1U@22)#YTe(z_)eZNmA1#07@QEo59x%32PTl_M&bHl}Y zK4Z%7X5!K(rh@NO$)!~Q(d4i_rz`-v)&FnccKgy6!G8kk+gASuP=DGpC5rr}3>Wh0 zJ^FN&B1dRSj`-PC2KfiMEd7lZnQye8Eoj>FH`0FU-fSe)>~vXc_uJRExdgf54z?55 z9S%a(%=AX8+zbt1f1-cKC&oKaGKKw2ouZ)>i(Ly3Z#w?rB_q#^LjbS$nm7T7&jatb z=%8l^Z2eJ+dUt!>x|^(rsA#@y(}~Mn&hF$8zqVMbr4fp%s(TNm^NNK-&~nRnrF9h* zzL^q~k@CKAcT^~14s+F;ZRU`8%JPH|Ln>kQGvcaV9VQE`mq=A%-=Fb`5v{C3jItxu z_RP6Yu!=N&9@S<;>AEW)1J$J2EJhgz&~m@kmJI@O(+z5j2BL=d!AwPbb)}NGK$?#SMl2>=k+_JtF->c&g#l=8uFwtHEZ|g*ZedG zt<960Uq5oxydq>jvCMP!Dx-(2dKi-XYm~n>pE?OF9p#VrYQrVomEW098+Uwfh7Pag z2U{`E&ozXNT-qlJLLzI^X=j5`-^|g!YyWg7TF|1Pcsc=yd+DE$(%{YX-73 zuN~bRLov!t;e#M9+~&jcmYiS7D-~7XX*v}(^C>&Vlvf_N%~31i>x0f~T(R+DyEYKz z`$h8|)n_SWHjDhB-zawaivdiENqGWj=Wh2+-cHxvZlZ+FpG6;02)ZBDV-l^Jf`mfN zH2~hLkDOIvnIQmN`HAy(N#HP(cDykfJ4e=aJTt3{B@eu&wQ80{5F>KYO;ZuSoD z?|mux{F=099>Y2;02TmMbu?CcfJTe_BPw7#s%4x+F;NDxR-lsMMUP&>9QP@R8jm{< za1VS&i2enAiMlEiEa$z~_Ba4H3sU6(%Yw;Nn5>n;(xjfJWNit|d-j6;J`$hHvGg<% zM@J_nMACe|e(+klyNtTJ0vf6UT(<-ePTQ*=b>5g=+Z}Xje9={E*d&)#7r$9tU{Ab+ z+hGkl@LHqn>hmtCJ*zvIUTJFRBqR;fTaT_g-0D^@?n{lh;`V&)HRSf3y%B5rE0)pQ zVB?m~%G`M*FOOgVS4v<>LG3(7_B5_XU-w z3?cMpr0$R3B_ET0$S)M-NVSY(0BwWbBX8Z};^RT#ED#eTXw4m?u<1r$@im$5zK<45 zN=|6CJ?=9(f7a4k|6{JP!1T?louYQFH(LDDN1BA^&Gid|4z5je)Ce`Z#$&e?Cd5>| z?LhvqH7#!(zDk&Jxo6#j?#r*S-C1ysb(TfL6Ze*y&ayt8~eFgR*Rlx2#FBdyVH%FT(UIl`@XYELwXM0=PBGyeZ2D~xA`Ss`ObZ>-fHj+cnX zNZb{!&)!z!e%i6Dzope78>&uWg#RVfNUhfUAX!hJf4_%G2Y0jPERU(q_gvV_12yES z*t%62oUtXgGrzace4kz~MZ}yubN5|0FJW7rwb9Ezlm>N+KtMD0dbM7{XVi7FyNsrZ z{*_9I_B&N9ykC0aYLvt zB`j=ypfT+o-)(52Bcj1{9Y%*5dNzBmbGv1$u*bW(;xAv!AZ(p6ky1%1&DgzuONR zl~`Y`Rzj0m@Y1Qfy$EAPWj|u6yaHQa8_DSj9}a#l+-4Ost*%L8@X2N&op;7p0t;vs zYE7$*NWq1pZq7vsq~l(MB}^UUi4FqDBOF#KpHF3^w(#`kR{ONz3U~0?Ooa zw>hsUdv@hGFV7sCQuL^pL!wIYFo4)s^mKTXHxi%wZ~_Dv4>RtAKe#79riEFk^<2PpVvW51b^wV14U7 z3^A>4JOTw*68(*&H9EbbOlRE5M=z^1d60;P$Au$|m^&AEcL+;w+M()|yN~+i?=G}` z95q4;H0iG;m6;v2O@AEzfEW0F;i|xSgd}3ovX&K7p^!GD;q5fnNxTFI_^W8B{$vi! zjB})H0}6`Cjn;F4@j^uiH zb`8=IThlFTRnfOBq)={bCpqMF)a<_|o13(_7#~d^8Me9B%E_M7SwK2oeYHUtcQfe#lVu?1tD# zt8%05UBKJ3k}?dzwj7)+Q;Wuu$F(*oBVN45S`gZ&jrJ|=bP6m?4NniF*}YG6^dHu% zRbnI9Maprwu)AI~Qa<0B6ll^soeOW9tGgoL5?9~vdEp=rIFZsxO{OUds5DO9x~O1| zQ%c%{c|MoC8y^joly>Y+Y$lIsoD75J0*k>|Tp7dIMFh-89^kclm1|nAd&2<&!`v<* zF;x3bKMURU72c<52Xm@jDk1UAwn^!9;l|oKa{V#Z{a*}QA2R19gmPBhUMdw~!IS2K z=z{JL@)mvWX~g^&5bjvyJ<&vif6v=Knnrq%H-$bXkGO-XeDs~q{@XsNhVgE*37yz- z@&b*Rc4Ma~Ae|p+F}I8EHBXjyMZU-mFyzxD;Ex<)r9@ z8ig!cs*z%4A1!(9UDbP-7&}&i=Qu&n?n=e7iTgn3NFFp!|Maq9V*U(O?01WL>URnL z^xLfw(0Q|J(THXAmaAW~-7YzQE*&)6)|(Q*pF1{Km>`rD@B)BFr=+Mv3&8BnwC*hi z(Y@i?wHp+C#@gV%c7I~DKjV}U5~oGn=?-un66&YxlX(FcYkXJ* zoA>$?AphadWs->5kcr&adsb!o6vfM^xy|Ih6IQnVi@6lx_qHiG!~OSE;*GH7rgOvrS>8UF4yCsp&fi`h zR&mTb4AN*PFe2D@^NJKSUjA?qm}_)ix&j`3Pto+}MON283%S01$}a*2srB)k3AYy{ zWjYn2?CkS9pgtS)BIr*rtP1BKZVxNVL?)&N9R1NpIA3Z1u$`*(8l1;AgJ5JcSF&zx zi&6<%`0_&`uPs(2f(9P{9<(6y|HNh5CemUuL9qZ^){nn*r8?V`?+&dorSr3@{NGWi zzZ6NGY)t3H8yXcOUQ{^86X`u&@PHZFSYct%iWiG@jdW5i%;YIQ|00c@#;qI|!=AW6 z&WiKvOUhvA?#DCxxW}Ab7DjDxF~8;I2X)&7+Q4&aQJVU?`rC%e`OH6^V$X)$*~Fi_UrpAy)VMUqquAcO7pTH=#s3(jYVN= zca61OCpq)l^P}QagO>UfUbLRM6U%(&{}39pF)`m>;lgKvEe%7`bv<)kAN{&@hzD;L z&nS|KaSW~4pr?n0 zvK~``zVB7xpYIB~sV;c^ZWx(k)E(bBKQhW&evVRcgFr$G)25w5UX~HQ9br?$WOOD? z7`0@scs-mP?d(Uk^)eF)QzP)+NGtQ1i%%e9e~L-C{d_}QLs4<-wzsUV*+u_2%Vog+ zP-X{{p_ho5`0BJu=`DT;OqJ+sWl4SsA&0t$w>*AINSemJXE-Dx1d<^TT zTNb=`z{Y4wY^{}2DR>kto%6Cvp04p4M0V%KE@wZtHP}Wxr27TrU}dGHSBrCg$_nbT z{McRWe{z`})k>wSL&oTNQdZ8zMBFAr7&|H|TbvaCk+^Ty!=iFSP2$NllTv?px8chCh$@?=(&Ge{b>UAV|S%8`GpVjKm z!uIx;UIMy}0ow1hdSs2>AUXe$9DN$S4M54{RB@B(hdVT)Hw7*<&Gpv9ZDbupT)5qp zCy09|_k-}W<6bA+hZuuvd~z~Y&Zk#9eArV|)7Y(V4%cpDi%}SM%Y_xvIDAGB$tAUYj0tGgWle(D%l9XtcESyBLtw^Ql9(7nr7&E&OeCdFOMT-$v%f!nr<^9? zZ$?S^5?i=MQqcMf>eKc6N%~Dhdt#qo(G29v3(vifOlAdyA81fVIe;YMusMxi zz4P!@itYK_rvn18yk37TpqV;;o&r~R@gnT+gCpQmfn~0`q&k%mAYxjX0VNAoE*&L3|KNG~u$?-r)i2+y+x|=-(iV zTc*Uk<_@yrQZ?#-`-#lA>EkAt%$sg-Gq|%;s|Y35z1eHb)-TSh|5cLCaDV=6a$h9l ziCBHZ)xK*)5-#4y? zyB6@jqs@~^d>>TOL{P=qB?U$61WIH3^j`^9w7G#rbi#DGRI32h-02H(JdvX91bfnG znHUfYi^@_Aw)d>=on=5Dz#U1x>oy?GcIm2n zwVdJReTds#zSQ@#R=PCxe6XQFwX$mCu9zvu&q=euPmO(8w$hl~&7{{c>$#8VAMw;u z`!WW~(IH(Ju~b_8jNz;yG1=e3SeYI@ns(XTArwzA0&3>>@BHb5T@Vx=8>w4zg_iGdmJSUxodG`CTSI`%BnY z=pCVJgG#m3ciokwL80N{WhJZt*$MELutsjkBK@H!SKU1;D9#Lcr^^^Hv(s_2%Hyf34v(qUfHNW@G zY8s&q@aw$(Q8?z#Jth}wDNI(q%L-Nf?gj#unh;C-^f+*{9V&&TamA!uj!>{wuihnK z$wTxO1NE_^kXtsLrgT4lut~6LKPMnlzPJew9Z4rZC-DCZi~2b&>P5;EbXn-Y`TF~F z!vUOo?-5G0kGeN!zuX_h)cjHZdvnV!yW92m7H}p^-2Scw!aLmC>p}3Ww(s6t;YIi# zH(2%Omr8lNMZX$SZBC;JMqD|3 z4NKX(QYBg6<9EtaL-8OdeAtC)J$gUk!chbGS9U!7AUp- z;ui~dy`ptr9((Nq9vqV9MD`5+d|58*#sRhb`5b7?T!G={y-<8R*gDbLiu+^e zjRtMANGZ1;F35;A1_`AT=_QoL@6JuSK3@RXI))EF=o$i`%#7bq%!kA%?fn7K%K#a8h^aPZ zuk5;V7yHmh2_$UZ_q3(u;^Y=c^+>$07qligc~>k{707}tw=sPq$kbIhyXxl*geddl z>SuSqkCf%tmTt8$^CDL60@j)aHJGT!-ZiA15WeI2mp8?toWXk{1Y2nIu{u3qOlggY zrb$rMS=0L?(jAc8Jdm~A5<&ohBxE)62p_jzs%a{yE@~|$)R{4>2Qn39N>e+LaLRlLgi~X`C z`w;vv&RU^5R@8w5W&kZX&?3yq{2p1agb!y6RE{RWrGSrb@iR8 zf;~VIule$eNN@n1-zyk$lHo_C-pz+*P{q~J_00FQ?JLO7vi9PkDmi+p1Fb(0Szq*~ zH;WFcL5#~(){I=GEs}wW@(rg6$+WhhT@-4ib!+~9teP4)?5GC;EA$}sMTaEeW9FK9 z>D?WloO}0kOw8~~!UXNTQS?uDmMVve3N8pH!EHVD)t$HvX@xh<~t;@YaAgO}mk zV6)Rt-Y@p+HPY)CmRI1|qDz4yNflhpT1jngYXMVtZ0mi0su|u0?tQU0W4mFh_-nA zq1%hzhh^t-n6I)u-x;Y8)%fw`@fNBpid|u$yVD{YOU>(S_$B?rmdyJnyBolk zMljf-r~1l*G$_9ioDY|$yW-BTB~T9FE38$M^YZEtNWd}ZkTn9P6Cc0aFp=^w-Blm= z4dF7Qh4>G}F2fCHC&4S{!ggaBJX@id^pi%OXsQ!l_Jxhmxc_7V-4qjF41^qyOa`LWU{=7{ch4 zQn|l0HpUu#N)ng{*2*_R{oFRc*wFAq!IDA*I*w0gblWbLd9)uE8visQmPejZ$v@-elVRiz%dA+3mlEW8DqkZV(Y0pD3A(EfQ?yRa`YI<@Pym^?k z@qN4K6(!L}-LEy9VVunKXARUv#*BuCgydhb-*ejb>4|@Drprazi%Nh^RMWh?JjSn$ zrAA1e%F29wKDDvYy+k%4wY4g$i^-#JatbV6`(daI>#HZ>X!Xzl zN^nQ8tnYAbc0)}k$&!g7iBa??n%#HF)z5*NsR4nw8&}lfpM@k>WXnWWHrLyZt9Acu zifVKC$+M>=><>jgfqNzVs3jO9)mRt4Nm!l>4s$IF)$6kF+j^=);QBQ&fDM(;>UDPl2y=me?M&P_SJ{B6aq2-*p*=4*|QB1pR!h;3u{9NLzzDD!8)o@gN0LOPjN9U!gHZspkp7*xRDf8|E zTxd0r?$W({Y8k&t18g0&j#e}fvP`*4K0eR&tcg`$47 zG#Vc-jZMMIQ6lQd+hT$W_(D-rPGj_2MrBG1Q6l##vhe;y8J%Y@dru6|0yy+J3sIs& zMn_*U0oQag_gpK19RSwA5b!cu_vU8v!Gzvz3fPe9=f>$TfA)~(>Jl|b@{1<^QDR;U zFwRD`E%%jdQ`XIN9g22UIyf9aIyoe+E#^VHLVi**bxkOkNYNv)yP)^b6D;L|X1E7l z)4ra_D5s*TWX+&&V?|;At!t3dYqXF8llxvos;JqlOvvKN7v1@bEmYltPljc(YhgJl zLK!ZbSZz9TF({Gl^0k^w%=7qe9J|5(@gK(Uo2$e`Md@d-q)3*&m18Q7rykc|&F$*X zPm0av-N*VV5UA>6yw*R71yR4KmOVgh0qY)-Y-oapxz|#F)UCkn^>V(hUohvg;L8tP zki~E#ULcXGSa+25flIai6>>8KKODHc8UfcP-_5`YT1X0iiO<@=1kJ_a$cN!a$dK%6 zhq=wNHDBNFpANwHHT-I9<)G#CM+#un$~o{ud?n>cJ9JN01Vqfg*0o+yyLrlaZ^?U- zo<;92NStmYH%CUSXCWp1IhizeFX>)+20vvS&M?&Sv7jn4B%tUdzAi)OCH+?RL`Q_; zP_w$!L<&j;)qHXOlh`>B4(DuFaEISAf zdWKlZoz6nWr2AZ~*1k0-m+RJa;oaL80Z<*tCN|TiZ?q(uE9lq=GeNU`3~UVP!(e|d zt+k>K&zA+Gta;TEVVwt8<{AB99teV)5};H;Q92kDH)>p!d$U0NNq|u(b%DL_$j8tiP(3+8dZdV8`3}R2;`NC8fC?fRH>6{j_)R+CI zSuCIU&0VEm)bN)_FchbH!;-TTl!Y#cJnF?@pH~-G z98I!kfQyIUf|;K$H%SPI!AEf)=O(1JY3#Bu zfLdZ^uk5>sGoY$2`vgaLZ_f&PMO^+NzXmAT>w=No+`I(nG>Knt<1g}dglY9 z&)|4D@@j+^)YgtXCx}xW;dGp-eIYLorrF}&>zQe;d1F3Vm|^hbqH@ZKN_AUrWBk9p zEWjOb|LW#jpIl-5|K#0@m*COA4}RiDt(gi@?qKrga4Y7R7LONhY}_Po zf>vw>q^N{(}*y?w#`g6=b2W0d8rJvk3vi?YRyi~*F z?EHQl<07kIxier(8w`{D1~q^{L7E;{Iz$P}@m-A0V=g{79WSm1Mq`W@I6(@hPvh@K zEDEhu_N+mgSUUk_-V&jeqF|2`IYRHcg?UZ9LmBN^n?H<^T||}1f!iB zC&a!*b#ZON!)ZG*FR2hvc^J|l65P08Do|rhxg}v?LSnC+PVT=0>v0| zLP4ph+5|5g+WBeCL&UxRU%+2VN5J@ZdzDCXi9>m{NVCh#!fvcRURgql7$pjoIzFvD zmZ0lKhoo0N$A?2Qp-aLkx&J|OVf=;L%tlhmX^i*O$Py}|uh>w+tC*2b!eH5!$);nw z++;za$S>%xH9?F>!|PulYO#+rM_TR=a3;I{9Nkc&Wnwc{9^oC~g!Q;4TU=Ls77%z> zY8hmSF3Hu&+RJw>X2Fr0Pzq6?HRfdESGGFKeUdZFg4r|5{niCM?QgMBC1l~N-5F(H zWTj28`+fXQi#WuRb2viikJAV*oAK0LeaN^{)}rKUyRRs2r1Q*uxtXG?mI5yPn4 z!TS-iCUm52m~kCGXxqifI`Rl)7&&`fNhlXG?*zkyfqo7A?m~PE+rK(jx;W-pDtxy* z)~Bt0@r~E2DRcLNTc_*|aQFTN$(DiyU$TbSI<@Gu1Qamvd`y+R`F=p8?yTW?_qTp{I%)D5xib;deK>mK|Y%FKLMtbRX7 zp28b`CtOe8-y$MP;3CyY`#HlxXr*|&uqI7phsahMZOm`Kg{j0$-n_YceArv;cPxj< z{W|ZiZFhgRV=Fk#8{Sx0$9G;bJKgw`0X_f>hT!0E){`o)U7Pq$RWE7&MBHC9ihl+a zx>0FO^X{k}Z6UU|i68W@O$YjDK*+3>H8{oL_;#v|8v(ijD|mXHz>^Z-z_TCm6>O#s z{|D?uXJh+v9oCtVqcX#=<_we;-{571PkIl*C;J#1%hkmkrl%ESsG$m$VX}BeX9(RZ z^+4DYXr~hXi{BA|HUA4@ofC9EmQm-8gz?{Ja{dRM<%?FX2Ba`NYy`>>ya+w!wf$fo zUx)FYlAAY0PI4oEfh@|aWy~z69pvA?rYcQFu^JEtepAqM3vGVS;~R(bkAb6Ej3hXD32Xk{fTx3u0pa1$#s_SZbYC7<@IKrp? zzk^P}JUV6L@3+oPhy0Hco>%qC|;LXEKLtbS^81#yk~PLt4f zp7#g@f5cgT zO)zT3!_z2&m<|JivB=7yTUVD-a7zrgAZ^UI44~!4mM(PipQOAe4Ge=2C>|W*U!{D> za=CY*WMOZ8<3u?XzF@JlB%(i7`yA(HOfFaLgSbwDc9W^p=W{PY#2Df{tIA){en|Ay z&^;j5r`Bxv?+^#>5#wQ6XA`t#%^a4?o&!>A3@c^V!kr zaz1C*XWmeclvylHyOm`eldh7tMmDkIz29ZXW*KH2>{Kf5;!C9zS^Qm)%m+r$Hb8Y=#lYeoVLC54T797Nm>N&aTO==3X7X&jRTk?&uz z09U4aOeM1I7Og=?)IbKB=> zCP&^}UEv<2p@rd?+F#@rHms*oPHQtqN3F1)p4`N=UD4!|2dw=TZLl|zzQt>{75#Vs!6E+MVpdVaxl)cU%-rNn7g1#fZ; z6mP_y$=sDp;$|p$tb6F)y7)#@fp^E~JK8ZvcevK@nAta|G}=t7XNuTr@bTsIK_ge$ zd5?;>vWzQDn6zdc<(!^#ko4;b@9Br;fE= z#GMc*%u_r?P$cJVLLh~V+xtn1gQ^>koc`O*En9M48yQuFzL98g=lQ^Dx5)q2n`%4# z-+NQCcQ+p5HSHTi)tXj7###($s3x|BGrKv+o0}x4R*(a>RbM#Bjk@*|Y z=ZLDrP-#9$SdeGe^r^(5OBGpL0qQHKf0T!LN}~DuYb6+wvZClCc9g_Zu8p)UG4n>Z z4hKGYNbmXHSzca-W`$(~+TrlMUyD!vkH!lHTdgJY(#>_8vC@+t=*#U=RR`@4WT1ZM z{r~8W)C1*PAI*dM{0sZAw-REP2}GQa&0H@J3C}`D=(zcW=nB+!+m|RLe0Y=-I4)vYD(D9b5-`C{Uv8W- zs>J6xTc`=q6;n|5$}Vafa>>WMw!U z-oJH#am2iKV7+;4boJgBeDJ>Vil|+N%v{?$iDI%2dun ziqziJxWK42p`{4-i;26N&*Oc9SSf`N>Z7Xcl#ikiWwi-b{jaPf9tRfx0|ujBp04H% zi76~jCBD7V1cF=bgeAtywf|PDI=uU0r6`K=j*#rM zn!5gJ;5xS!BwLLK0#@`a7VfS?Y>wn);~;daa@7appQT=4zIt+l6+{5dV&&k>rWk!{ zk`q{@Jv`9lts^MO8%U%VNzt4ZK-z+7vlhi~Ry|Nf_u%e(N>DTMO8wZg1(vPM2~3=G zW_QsgrGY>ID;8zC?kPyP?B3d1{C7@u*TW#@Q7DW)xa)7JLrudJO9K~wj+%PlntQ^^ zHbVV>pk{61!W{6;#_>E|+^7|j!CSLm>lONqr~MMKy@$gPUOXgSj|~6Yk`lI;z(2fwAD3!4|Lvu{V71d_^lEQ3MGyd1&x*NvT+2V_ zTQ-)iQi*HTF$6>I_EWCgAn8v=q3YG?Bn;yHY3ZX3CruHjA!T@N49($0H;s{po zdu%hUs5_9!s>Nji9e9ZC`u&I79v~q%>G{y${|hU&%`7SeXG(^IvCde30PqOmlmVKI z3U+Xp&D{4$y;CEY(R;ynB9W(>$SUY+MGQmLfO zlLkH(V!vg&|2QtXci`UsSeGE8Zx1mL$+|5#1vy5x2S&4d)4|ix$x8~~a*?p7<>uc> ztR>t75}OmUoNV{jFBgQXf6p*b5J%sv%rxA23`2>6w~wpRx%lqVV}QMbat^k-iRvcD zi-@H;%tn0X=~mBy%jn{FMNrG?E{i;5b(Be|c(teYSjBY!Q^ydYor1<~Qnby@c6|EC z?gpphY$NV%qxJA5LB$azzLTMq3)n^?|NcW_#5$x$WiPf`6t?o+lQe$+wf71sFppS0u#)u}N zs+soqJ<+0j#hhJJ{R7-C!->40N0sQUVV%=b8=1l8zpFyU-lLB!BsWsb{s#MtnJr<= z2_wduMdo)&@*X8)|Nm5!iu$)4T2Ka9oSCyyTTMI_ZxGdwAKq{##*23IW|Ofod92?B zhBlZ^0*m}EXe7D~aS^V=S=^EcH7!KCx6kJ`!kQ|4p;4)Q`dp16jo3WI{k zzi^m1T}Ne!$@zHzEo=HM*jqty^?(s_1CYcSdUK0_Igu2hx@<*Pdjf}cwadu8s5K9% z`v1YPHNUn){m_4YNlL>oTW~Ashd90}TRWi;tan?uc|q(g%_0kB3Hw>B)OIiM3hb`& z6>DIVirUPseuQVeE*^i&oaZ)o>Yqgcfk+W*vg$S(%~^%e`p2LbSx+OM7QAe+%BKyJ z?Zpzmbsyi=pYbqgW_~%~ds99qBP8?%N(Z+2=Ih*|XLjaWyud#GuE=X;9ZygiC%%5V zvi=e%&q_ByfV|o!p5kG!#`XU7lJq5BXDx65eR>}D06tk+Qd6vHksL*v3sD9M*tbDe zjIOHM8NPRdBS_EZCFa*9EGB^&^y}B&!~{aWn}cA`=YY2b$KptF|C&kH1xm4GRjOAW zt@)e-8UF{<51^zaIzzBwDq>t?aiii60u5eU7f~o-{{iBQthjbVmR}=~75eDO{|Y)| z&O=}}RGaV-d{oQV7dr$w{S^1rYLLA21@fBJ7bIe5XCvBELVs=fHpA#rgkWZ5tzM>k z_?|Wd23J>CRULV3AoRtnOq@MYS3Pb{q|Q%x>)KxMO`^RUG3@@s@+ zBC+2Xy0^f(OEir`W1dufnJa={>FCPtEz#f-?K`1o!n`zg>npSWc-@f`G{|)`Nu1;{ z(deB^uMW={>nUiQ(m9a54SS+d8OwzKs*ok?grV%uBQIArPZD};Am#rx=kVp8!4I!x z4>#|FbSizO+2rX~T*myi`tn;BTpGP&LpHrGd1^yXcBTeM`$n41C-Qmzy@3l%-)>%x z^Xmn#mkr!@*C#s^^Gh;r;ib~Fq900!)=9|KnlEKlfvLM6NrR14aJm0@pjGMZwryVe`i zQYWD?v2WD2c5~HCyOmN$>ar&iyp$A<@oscjNqgn>+D3A zf`L$HpKVf7n#p=2E%e|3lTTe;&=v6zTIr<2#p?BFZ)oZLrH_LH1foBI7_k|;G!KrT zhmxh=Hw!N}KJQ+M5#T?8*ywgl@1q15tnH7hIS#V_|6SIYHx$a=n zf!*?vvR2#wD5&&%Sdflbhs{yBjCq^V zR^8aexbnd5N^mOyE$a__IFT^10#wMbq)2#8aXUv$8P&CIBM|Agqxv9b83C%a89fQ` zx{M7X>OnM&)L`53{0mUo67T8sVzDbgF=9U5pqiO6~U|IH~qB^R|c4zpo zuPJ!`#(X&Ob6^n;dk5)Fnu1g* zB3-(4klt$q0|*9?AiYWNAiWa-A#|j70t7*7=%MF4d%ycV-|wIA%$YgoTQkgr%w#3c z^Q^V*wXXZRuPZo|{-puIB%tTrhWyGs9lXC+0+EJ+6;JfNs64tR^p|p>&tW1Gzr6o^ zwKKCb)&gz2GXOwpkgajcMO%Yj+a+O~P+!nPV_^LLq zi3fX~-6SM%v_j-W9HTBo71 zw#EY)P3yeBGpniGHOMK(%7mAh5bM$|!*z*d4i>TPz zUzOp!j7aGC$R)8LJ>=T+NteoKhY8IJO>(|vB zy*&jD?FgVd8~?%Bl?mCZDv5fKXpNr_V$>p&&t_nRZk(m-HSx(DZ2%Pz)Ztntx_;Xx z*xK!1_COI%RT*-2BqNFWAwUY?7bhFLeRGR3@744k@T1XwFCIr2BqkU?odf^1?6*Wg zVM}#yz&$C3GAT9l1t)$)7r-!>L%0z3fTx1TJHdohf}O&T6!iKB2BIFsz5u0exa)uV zR!~x4eM-y!=Y%55q-E=V*Dow){_;;e1hBy!gxs8vj~spdl9UzHiK!G&zw^Q>xyPk{ z4=5k^0%~E3O3G%M?YjV>nbZzDrwcCCHMgVma3@T`N{^1u1=!84^As=WBy_>-P@?pdOjT6kVn`_H!*4i8=;<7xS(EDL`QfxCh zZG&xXG9`Ek**a3zhB(Z;b$|OM{hpk(#1|MpUXNz3W=lS*ATaTH8aZ2#AneZN$Ym4s zL0M4F;PkAhEQfJhldKX^*|a(95;UW#czteNpRzNDNKl67`IlSOx{jqEri^<_6@0FaNo+hlSng_)M?Ve$xw-xdJ9p^&>!N9 zcP&GNY&)CiRl_reVz2S=8I$FUYB7^a7e=eB+7tt+VoUQqltUavwa0%N&y$QVyUcWk z4V_snL#_me?Q$A2l;O+9vB!c)Z;U-FlR9-K`^%#Chr;6dLe-_x3svk-sh7gXE?7PH z8@q)o6hQ=xinSK}&hu5senN@U>FdPT_RCpN60S$QWFgS!=_P-n%^<~YL*qBCBtu!V z9(MO_JL6Nhdpz5fn^}4c>`^Ji_0wqSg@r3LCis;mo5#^1?|_uAxokc>rz8f=V_eNc z@>urh41lDD!P%ZCCHh8$4Qi=x`BX^c-mSnr0s@*%Ax_qciixsB5Ai zbv-}Ryq6e4tP1MJ%MxWSoX}QThiR*%O1oGTAuvCd+Ct2GmP{mbl0=BzFl43KBnD(?C0#7y=HSiJM24 z!!73LtE>YwNW<%k(mpHrYt>?5hv+00m2s&=r=-M$X|*y|s9kE|_afg>xJThovi*EL zHCRPgHx{WcS?ug^4KwsuH*sC*ewAeMd{a_Pi}}mGe-PvnEnlkN22aVzNXV!OK%Sn~ zPaTl5In4clkJf3jm3wWd68>!ZdRKBlCJ6UP z)@-!a%>->UBJASJIp?K(iua~XMt7~fr>*aG61z~AVR+fODQ>6@`UW{6AZKVz%BoxI z44Hf+-+7-cw^txR*Hz~Cn51RKXiwb;2OWYa@Xve2+M2!~41;)#w+K39w5upAM#45q zEZOiask5U9DKQskxaGoq?oiA70Z1@iFK?YE8OE`&y8pfQ)NRs46CFY8Dt2Zw z*Y&>M8qdHr<9=cjUPFJi6I(n2u86u9u}=sU3p%=*pNYJoUkulV5Qly@=UAHNa+DdS z>5!0{dGz|()o=ER;^?>bsHzu*MAbR9!XkhT6Kqgzpjt=w@<<-R_?4=8@96x9-~p5< z>pY9^@x41FV078ef-eu73JIgCn~J@@QepNsP(d^^PfUtgi-z?GtJm-dA-=h)ULT)0 z>Ng0}A6{JDC)`1`dmVkf*bGzXZj)XtWK{d~9LzXu05QudaYz>$_Uk9{-N{;?`_WY5 z_q6p-^v-kpYtYz%((g4plUBN~pHP_I(?eg`lO z>~Y@SyI)U75vpyd0Mb@@aa*z=M5(CyjuOMy=@>K5r5?z&DCO2zC@^}nEBPZ?3WMc( zf|Z#SKLI*xc}0q~g!nP8Tv0HOJO;Z9f}S^Dp~`|JG|W46e}xE;q>GgW%S_Bci>-Q? z`(7jXN*QVzpCN44ml7%yHH^}A-=g~l$K|i}n7Ht;R%<3#zh%E_l)Iojo)dZzzyvyw zdRr?dydc)(U&5k|*bY2Gi~}&t2CJkg{U~r4dZntBMmLMO+h95_&fJQnpUI$M{(O6i zy;ahZTAdT7gJFf>B@BKbT6Llx%SEqG9KjRMI0GHhiP`nD=E*GFlwY@<=iF35fBj_(r=ZS zb!FIA2-(})+q|*FH?5x1?1ITu=2#1k(P-VuRE;qP2u`Cn3*(yU0XJcl?N{&gZILsR z-vS7jR7PFTqV@F)1V7`S`nFoq-|DR{<4{!!n3u(!7E)vdtTWSJo`oeDx4Vo~DB*4> z#OO8+()nBE`Mqfp(JOj|jc(;b3tnp)%=ub7Or0(GYy0@G5X2fQv z)Bia9@FZpjLENk zPSDFGa{aU`bisD4?@DCTUgI;Waah+E-}Si1MZmV867YfxUo}ES4g`fdvGGdxyl-Dk zqZf=9;No^pH;`k2#;xKT`14G87!cURrujrJzu(QmAXaQE_4r!l2&}sOjhuw~XdSom z=}XhKaaY*(`s-qx5{ty>v|-KJR$A~i#`5T4ia-ab?F%%MfvOt zf46*m?C~Vdo+`XzKIXdXKB9PA#Sq@K47R}DR?wxi?6Vr%z-n_bvT$Sr%u*X`LiQp& zHt6fEVJ5m3aSw)I2Fk+`%aI!y3FgH=M?y9ubxxNhj+Kbho-|?-u*E>V+IYHv{1mEOhq!Fu}D)7$hpd)hL zn;T6?(3NCaL)}=jhd=IYfIiD_6;)-hW5p6pqyxVS`SJQh^0e+=vBY!r@jw|fDJs8X zdPqjYetOA)2$V=*-T2|9SjUX;F`;qbENAmG^5}O^5BH<9<%4kN6uNlzKhJNy{)qWC zjGGMnzb2IgGL+R%wsWhA+Pz* zJE^Ic0`n2pv3dTnL10+kJ?#zMnMArxv78_qsWrN1g-RF4$_OVmfrK)vGTi>sPW5ew zX$swDG}enuBUKDH#W&yl984<58?;8S!2a%n1!SE#+hiN0824kM zd;w3kQPKG79$iQQ-EPfL9wmW9V(?m1CbDPC)wmK zKaXh>rSb;Bsh-i#G!%aOZZ~_EqIp|XS2y0ukYO$JuVgj0c_X9GuLceY9^}L+7a=Nv zSWCF*TiOyj;T2~A1|Iv3xnSHU#ZDOnu4LPpNDd_Y-EX97*Fc!$vjXXXxLj|2nSt=? zJx|K&*-a~$rw@32gJMcOquytF7z4SamJQs$p%1+L`;S`oX84YJ^nFM6>E9G&bAYVA z4HdI?azU{}>c|FQ-&kPZgRYt&|7H;lU0K{LFM_k2U{9f4j4(Gt1#1lrXQnvNJt4N~ zN$to}PoFS3Mt!1Yw|7Zqf#-e{#>XL_pB~-6y+;BRwAq7$f`a7sJ3Dh)uR>okX@H8U z%;Y1j{`j-du#u>T4FLtC)r0*dTdl2ujIWC-r|Wlp-jGuHk5%&w`-v|Ao0F>AR`>Zt z^>B+fTnS$j6_{6ssHfc4&0!xYQ))Jzn(xfe(qNwFcY_C_;A(776eRFBKt7LtkHXq& zR9RLJ40ux1w)(7?=rq~l4O3=Q3%YZ(h9zV=WcJSx0zLVK%MSW|V)PCVBji3OJ|(~t z0ur(S45oD(uN{tEi*l34YY-Pk%qTT`Q}@N3w$@6`G!P_#ICm8a9*0BG1dA zL4Ufl@H>#-dvQ(>$X2qy^W;Ry-6U`NnG&VTyS5@5Uo{b1mQ~I*g>C^3!I8>fQv1e; zzmjw`&5kl@xo@7~ri>~YaaFvrIKk2BiZem34dd^aI%G59d%e~d(j=L#dl9$qc4VL~ z7r)$Mmv3c#qj_hU$KFK+IjGhNQffV* z3Ofjy#+mqxhP{%#X{&?yGt_uq!CUAbHi-F$dg;Iyy}$0=hNW1q>1bqrKQ6I|w_CcZ z-Z{XSoHuY%pjvmvQHQ_D=$0%C+|Yv? z-B^?TSqvlewDnkD?GusI#MJ8~uce)B%;L!v{q1vWp^6(TXWh1ZbZ*kXV~hh!W7+xG z%&+O%SEpy=EpI__!}o?Gb52EetKq)ub+{*(?QihvKbELpfrfgwTlzh|uYVbq-nKEr zW_#=fx}s$vc5FEvol!5%Y_TCjV9SQ(m`AUeR~U)IKb5mTaNHPd-O~WnCXCwM_lF9P z?NGn+JDFKW>s)e)n0$;El@k&lOX99Xy*|qin@aYKl$5mHZ1o>KZ9O|}kp+%|=%*vv zPwI;DYAtX}Q(e4Zbi-0$(Cqz0ls|Iu?{)a|t5+`Pe=?k$%4HCQma7#F5@hqDK^D^s4m+(F)Pv4#dI{!%m0R^APLun!q6Jv=Z+k!jNBp6~2s0PkAI5R;r zYvZEtV=+rr*9!zsc{q432D%UdyT2)}LT=fnzb5(I9i^&@xtM@VPiji~nwvSkI#O0F z$TUk{25hK}&pWmO^Qd8Vx@%j(lwLlLhbLGOQ5xlpcRquI8vf0>m6OW!6 zm>L+=Uab!J`!^pQ5>!{$oLISUC#n}mQXt);KED#Gsb*Snbv8A9@nZDmm$N=MiQMV# zqDV!_9ELF6rz0$bmKHc?BEEegY7LlvIe2jJ1(OI6PlRaO`FF?p2O9#sH3LD0(ow;z+v>kpFS(403$$pS$En5*Z+BB zW9_$@fA{1Qbjd@LBo;unqjv9NH~#2h0*l?ui&>!NJx5pE6vkM~1&{^*R|r+>`z}=Cs~Jb87O@CDtLeurB}n_lADpp8_My z_15)>%(*WFk~O`ZCgV7qDrV~FAoU3!nCJU9PoTDapXobTdA|txy*>SDpUmXUDD=(? zs7=*1hN(R*f0bA1d5Ax2~zYY+Xf$#sddz zyN;cnhRmSt5lHe$cC6l@-&;`aZl993G`7&O9mi4gkg;)VNX_FfHmhS6L3buv^^xH1 z+>M3nAD#0uyv~=xK3~j1+Q);}KF6ZY>^cwX=)ND@L0;KjR@7y}7P^egcAXsX*KNb+ z9y35$CL7Qxs3+>FLf0jPlV&%JFs-A4M|?NS6$CPuXl7d}*p34up6-OO=&|to7oml2 zbwtKfW3vojzKED%LwL7wH)#@L3qgyq^a>!63O~!=ntM&FX*l!xl(+b0zIPs#X3d;c zo@+mCs(5#bqPv*-ZZw~0i+3clGK6T!`6sMp-`Ecmd^Wf7Ra(DB2^B3fI!ZIUT5GQi8n1T>jkKJ<8>WzC=3yd8tON?{%1&>+;;v{K-Z=6Y z7AuDUvzFbKCI2{rFqqU*sxH|7)loK(sI}c#>yKg*M?#h1tw93?!!h-9ecGmeD@{Fj zE|mlY>#7IP2Nh;57kv=ib}Ip2ii}6SJviifk38bM8vxeuS?isUIa=%D#Sgk@*vX^Y zyGT_r2R;LG98qHno_~hKOiQx_xS6@RE5H2^hAr(?JlaNWZEk&i(me@W%ML~(C-FZjAHp=M*4(8fxmVxZ1RlKk`DQd1DNf;K7#9R7lnmxt>q z2ao#*So!C>zj2FZulP*0cFUGl{*FXz6ZdZ2B(osi4K=O0pcWtLt8FtyW((a(GTorf zSz9)>bkBp|`X;^yzmu1p(!{P0alx+GLfN!u(!XgdYT0)aU-A^N$LAu>>vjSBjmC+3 zBd}+u2|&we<~1lsCw%wC5Lbvh0obBc+ll-_xlaZ>4n|YU7D8InA@$bX@3eZ7*AH6H z7KG636Pf9yKA45Q#A#Xjb0N!}(9chsFph-c^oa>6V<_Y6o^R2}b(1a+dc)TC13CoA)8`eLYKpi@%M?%XV0JDe z9klgv-=b`~yM7CeAoh^4Qnh^KNeViHE;8W77dO>@iQ(bvOBS zswn=>u%k*8dqc@^mQg5?=(}v!fL!9u7hq-<{y3}H*!g;3r_C7ZVR%HWQhm~B{*ZKQ zrhujNE~%}r;Nhxtc}9R3V`y7SQ@wzBS5bwACE(MQ@F~wnq%(O|?=3Y*E`8R<^yC

@xU?UR9R))^ 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 literal 0 HcmV?d00001 diff --git a/assets/social-preview.png b/assets/social-preview.png index 0f34effacfe6d02ce4185455c6be40ac8d0a9055..a24d4e6f63142c8162b4f9d9d406b1cd72325495 100644 GIT binary patch literal 171583 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%0Axh$x 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 r-}-19y6v}cPW7J~!@=5s*y{jnim+O< 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%0Au-r!4I))?lplIwvRTr)~=PR^`>92;@W{M^%lx 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%0D1>a-ermAFK zd=+9irT6vgO5-D4ZW?1!82^0{ubQSC;Q?3HtG-fPoGi3}!9q-2#nY(etRZvjzRdPu zVl3&nh@bN91Iq`3XvXlW*?oI)o_%aci}<*@5pRG!a!>N>SRUd83D@S0B@xXBVao)!gHmMaORMvca=3M{k zlngV7kjwoH@w4OnEyz>$b(H{)9~|xS-avam=Zogs34VQb^;`cyg77ers0sdGpx;;> zY?XfVfJa#;II#JoU6P)-oJ$)yo7PM#t$ToeY`{spB|TY@T*Gsqz%&c!zDo?t)*mGgA(P*aGAebB-4gdQYOIe3$|%!LLjiSYp{y8!afmHoy4>9&_!WA z_zTs79eyq3laSY3lpR^L(LAvF#^WH(G?#qmH(s#;ZNH)`&}iT zr*`u%sFIFB%`wZ6zJ|{}q{+X2YCB!AagAqd^S*hU4V~8PzIsY$Y&>USmgccK<$V_h zM7CL+B+_3rxyT82rYpB>UrIUuQzYuP&(V73P}?tjdbLrhwlSNV(Y-~18w()~?`m6I zs6#&1znGYhW-O+V4;Ak4Cux_L%?!v|QYoo%*({n`Spnxt%Cd+RHLzb(!@Pc-VW@5n zgeKF$pbb&$RWPF0d#M)x%AXBwD-OI|g^!fwyk`%2sBX7xZ*wi)$Mw+!A;<}$X!&;A(51A3Mqeh@mhoB# zkL`qYv>nf~Pv>s-g7+%v&64jg?dFYYnqU3XqSCb=8(hqu(Tjfgnw5U8$r)qGb7Q%c z6In4m+iF|(L%&JDd;DSJrOS50ufitxb4Fh&mm=L}X{hQ0OpypkXS)r!!MW?+D5(c8 z^Uoeq6efRPYc%EP>r-bfNf#26X^HY5xETLrmWnCfl=S{E)m|1+z}aeGuvS%E+I+Rw zM>m14m?pR@_-5m%pul5cq8W2e0HA}@t-HIt?hlL-6%mNNBfe%#AR{)mp7%k9ZPU?d zYkRk@OW(0^*UKX}Z#au8vTbp20^M|V>gY>^hfUApH0hGU|IIbSCqc)(uO{@fH{Pc# zRxC(X?C-_EyL0;cT^xIj@m$aAR=P-K5nc4%^O)acKYp0N(2|!&j4!f{EQ1U?5Q~1d zGvVCzH#sTH^8djP-5d;yc+4|@UqJNECxFlKA`ZPQa8K*4LhbdgXZOo=TH-s5wR^j| z+Cu#jmunDj2DKW4V$AuUI__R!c{f!Gt0GXhmNT>l4Sxwc6tXM_w*#q0A_b0pBrDGHK zU7f>bO61krPw=Sp=X@6o5~iO(0}QEKr46Q6BY7lmw_9;8#WMOo7(YeHUf&_E z`}fDPDZ1xu@cJj|k8euy)S!$-%`3x2LwZ{Idh@GFR8e_e!;XwYBPbW+1P7%a>Nw_&b71DE;iPPEHfq|%u(gD}4`%)Q# z#_=0Dbm0mqv~)~C+*;gE9&aJFj!!IaMQVIAn4rly_ziY@r3{P`F5*V;E@66NAwfX| z3|wIFKsBkghRg@gB_@o$)Lk{f9Cuf&C` zsFWKv9JWb0sq$TK!F0_;cH^h_QhhI`VC@JlvhdC;)kr@`0v8oUf?H$LkTJ)LG?A_7 zm*SL>sOi6YFFuh|Qe1D(-R+LZ_^?jfUJ+|2yn2ce*Vmf8Or~qrc&C2e*%nPCC-f3m zR69C5c3&Yu-~0O1hbb(}0u7#=HTStKOi#rnhg7rKWJs*<#kKA7YjejGw+j)f*&Fnw z$<*xVD1cp5kLzem4}T_se}Az|7R`NQW%&3m3Ql{65_fU#c{;U(O~b~E$xQuzuzw97 zJevh^M_W;hE5c1<1qRd?_k4~jC)^*>LH|k}e*{b!O z@w+j4rT3Vhy%}4~=8(9!G*d?Z+1lE|zG0UEvxG<$HX6dYccyJyzrY_GA+$Z)4-=^-OoBou+wIMzKC70beI1tHhTY}0HgKU= zJcdPR#gD!Hm7j?vyM9cO>M~v{_dMca*7zO^3aFW2cW@|kS=%cb3kq0!epq@4)3;Gq za!nT&2(jX_d@l&Is0x5@B>!=kDXzZtx}h=S<7!7(aZw&$iuHF`@R>;+cVyo;HBy=O zhRLH!d@t`xH7w@bf~=;3ECj3_gI#8SkMd#p;Am3i<3bNP=tQxemhX0A^|zM!!Lo~# zmB!0sN6&^4vy2L}?sqbAsmB2}x(2>(-MS;D>DWvkwAd-F^$gg+UMXBh0&CBh2J!Z^ zQYS1$1oWK>$Am;Ngu{@5IM7p6#Ru!p*uJU&Dzt88hB+=|KvxVV>6aFz#E{d@W%bR!HkIj@aNNeGfRTQ2&-MM-=F4Nb z5JLj5PcpvW9LHkq%qM@VOI>$fgDy=LDxixI5|D+=>e-h5DG28Q|Ei-WdhRy-Z*qGB zXB?#lNt9)F5ASD&>)DYXCM(Cs-8lXy$=gy3i~2X>l;KHcasf>5kf-mEc*a(u(IHuy zZ*^WknSw&%I76~F?%#*qQA={YxVLv!3%ZMk9&g?}2#isQR|!*jTv#ygv;1pT%muo^ zaQfXAS1qajKL*>Fc>9H?QvKtv;~PR{pXn2w`VDZ>-pVe?*C6mklwJpq(AP-Ny%2D= zpBq{zGE-9P;et7=K1lm=PwZ{>r|=G-X`h+w%o@T9yd$-Lw%71q0!r}7p8na;Wxb0P zVX!RyfW|xIfXGfS{%7{BWRH>CnHj0q7C&r z*?7M7uGq@TN*YQ*NkPOY;?bXVPeK^$8PSC-OX7Fswzc-DZls;FjyZ5JAVndjq zCKQc11Icgn)cuond9j#rS#DaY4WFun-v%4cI zY2wrD|A@ygGt}=yC-GiB`zYG_YF?-t%qTMjN#7C=TcGE;l*%tW->U z_g8b5i1}Q7TD#eF@%&pM@5m=)J^oP0YtI*3RTY#8)qPtNcW|)u;1~Dkz2-U-PIgBU z;D^igyCN<>T`tG_tgmeC9h*7-)QvrE)@ri4O_#_t@H3oZZhx)=O3RAv-I3~BBBASr z9{t&FOhD}bad1F_zGpi)^(hE&!Sz1pzAQCeZS@YR;8g2@e5aZrkz41gA2JxKvmGQ2 z_4ODC95G8LjZ^?Qg8N?agsatbQNc$;!=Z<{>AYq)8xX%~9~W0^>psBt$fKJE`-GIm z?C;4!1?{+Kw?;~DJ2iB0NG?Vg(`U+TRE6nX>Ln^y`=z!T2x&JrpG9Zbo&OTL+S!<| zey^jd8pR;CTXL7dA8L`@WIVn4a?aQFwn-v6=iI9)^i58NV{7Ms%Mvw8AN7nSr?x_F z%!O|2(2erRmHFWjP33C(-};x$819CDD{C3fmjvLll!NQL^bxU{m;}X8rTe`u<9bX|^}=_ZQZPa`!>_hyZ$YZ|hau2i@g1zf!39Q8JJ7tmBJty1N7DhZ zonY4)Jm$CLc-l-pL4a({G}u3HzG4gjSR00?X>{jg^u81zDbqP7{h%}`lKo4q_)hTS z&GuZdX)+%#wI=A83a5KJz$XX&oCvJFSJ;FBT^>E>>KeRChmt|y<6e>FzG(he0PwND zHT%n_(c_~>bix3$LjCe-dIp!RTuToFf`H916O|Vuj7C!w==fByhA^~Rion{=#I3P# zviGcxfds?Ab@YwtWQcmXCO>H?7a%r3gJkj1%J08jd5=-RbT>b@`p%=LW-E9Jy2nyd zHx~S)>PY8fA#{RQRT-$$Rgosup8JC&X6dKJddRU(wjZaGhi4K}*F$r&Vt6u7`-(#h z+ge+G3C(#OAI}rvUO_Y2GQ4W64%Uvlqp_fmA3a`6a~V%P&z<+UOanxr&=P~Gndwth zmujllTH`&E2xry#a%*%hV?({~JOdI5W)1$!=j*Rsh})a-nvP8du!~=%Nm3Ae%frxK z$-VRsj^}C7jcMoKvH8*QQBLI-F12QTV&H2Tu+0rt7;i2jQ1{^_cEwDdBuO{O;#t@JuO*<7pzx ziJ%9D)zcD|{a2O!m+$0sXV>k?xa(I@%@P>$ZhP?oMoFgyp4&@Lh0w2G!1>dE9>7FD z*=!5mYf>;C49y@~rVsBlXMO6nUdDL6Z4+-I*Se7PQtJK53RSDL-||`3QXEP4vjM4P zt`SvH?RZ_Yos^_lp4-ogQ-IU_x7zoZ7#4@}uFwuHe%#u^O{Dgq+#!9~AVx=Giv5pL z65^-Di~hLtzqKCtY%QVw<;)>V#jZ0em~#aCyw~x{NVE6M{N(RLdRZ7V7--rDK%kMw zC5?-ldo$$Fv(nmwoXD*SK;*oMVddlcoMRz%v-lDfNly{^EQ((8s=k|HuF;y%NCagF zh19#O&vWS>4td(*KydXCdyk)TRr>DjR_psZpAUD|6)?w}P~$>o%H4Nby*>9lk3#K) z`F)1JNP1s_6)O9r@jVgq>dlu!y+)s-N_`e6NucEIQMOrz&m;09zMNYGyS9+^nZr=q zrsVaDI&2bxyVw)+P8h(+-NBLZeY0%KQ0u#eayAWzKs;S`bZV^*{(~N_nu76}-vH3- zb_uQLd5~dKdXMgoEGIef+}Y0bv&j35Q9)pbiJ!Fa+}oY)v}?#8D5jfuqT8_Ef60)H za4%@i&krObU?z_Y0tA_7`{_;hOvBA$d9Vi8b*dp=2LgAwnC_kR`{t9T=NUn8@2xm= zywAZ@=Jln!j8&xkbA+MDE?7yY@2i8Lb!)UeB}T2NRySIw2y$s3o&$ze^kc7P2V%l& z&GX)@_w#8)8_eirZ}uAW9~+ZA+T-*y&3iY`GXNaA%<*z(w)z&}gm^N8&a)b?oVrA) zXx@9jWO}EoK=lKu#+OM8vkWR?Jl})Q+Evy% z;Weu@9p&L=VIZ@%~5Lad>Z)*UPp4-${G^OvsztUa8 zyH_wCY3S+pOq1zK*d@c|PNF>-B*-k)`=$;#|MPwrXv=Eg`*_pg5#OWTI?O9xNWiJR16`A=)K9A&_5R% z?E4`5Duy+Fxee>qS?GG87d(N1GQP&`pPTD^r@NeEM0m+Gynnf!C+Pp|?U-8A_d4I= zxv4B3sj)~34ygsTzpK^M;UJICxLpIKv}uo71_3t}k5=6W!-@p(Y=eg~m{-zk9|V%o z;i^A{$-z6*rmJ_rJf*=wV2D3v6fvFov!bF~F!V$A8B$4;%3lpNGhgcx37IXzz5{NCfgj$XiYCL}g{K=|?sue6cX)BC=F`*`i* zt9`2K`8w-%(T-|!hrS7C=k6v<<1PN#b>&*W?`h;Mzkq-}z3b1a6Dgi6GU}nGz-Ord zq@o{~V90mh`nrbo09zJ<6~KBR&Imgj5Ixn7L;tY6n6|xI>ui>2hgNK~RT^)_uY^;1 zAGUg$7VYh(E&n+v40RC?b~M1PVmGP+Cf3FJ^e~1HZ(^8LVt|rEy4k=;inR9JB27-~ zHw+e@;*O1->~NAXJ8bFu@h@eROc%DfGxw~!a)hYK@Fxyy25_E$X^Q<8X0ZE`uP2Tr z>RqlD51t#9CsvoeiqjDvAPo3->|vsHGtiuVxzwBymIYW3N1mEVgwte&b~3;7#ddA( zGXUNo&dvf)cjwAywKf06ndrfBWnxUKbH5GFkN&g$D7(tb*WO`N-px?6h8~b2!yWoh zVZyBk$CKHo_-da&9qc&0dbGI29{87eLl3?fAqw6cnkoduUCVwc)f!E(%y-)~+@Ryend+NzgNvFO2d zDz=|Inkw_?tQ@$Kfd`ojd#$=tk$?TNxw`eSsO}}e&LnwA@#*Srx;YpnYHXvcztw1E zWc_=>NpO~ObJk(}-14Jl{LTWQ;Z64s4P7)K0qy^*$SG8$FqH9%+*AXY0M>H?bhV8R zW;dnuK%D2l>Nd3?pWve-bu{m)I|E(U9;2t*{I2d?+tR8lUaR&iYT`Q?=d;VL($dH; zvBq7*_jwD(M3M{>6G=U{Z}hu16590WCQ7uLb87W3h^X@lAIU0C9LEhmjqYx**lxY{ zbhVk@e8@?L>%WGl9Y4htEw!|Z6PMJAWIrb(%!+c_+~Xt((d=GfS#%+DK}T6woI}%`u-1#(JP1K z@kQFT+h7M-6RQuWL%xq|V*4>E3*0?vJlyj|Z~=71X#+W7QJ@Sp)Y{#oYkFL(6B!vf zaJypR`Iw76fRjPQ>&({|17eRcmr0m$%3-B-!0+ zsiG2;p-df#O@35*E^M+9tV)24Xv>P8bD<)yRdcHAW<&Ex-EJ=pNK#loD^T%%%0eC< zWHumGeA^-u6tkl(c)M}0*?+&|!xtUymxeu?6e>3d6K1b9xyuZpaX;;MHlOb{ZVk5L zR7^bfY{+6wLZ>Y}Iy<{|1$QIv=Q;0-3j#thRXC?oiO>yZ$&8WPj*7CUB6uyunXOib z=jxhArTMJr_>S##v@I8Dvg0OA`?ILF#3J4EV?eAt`@&k?-Hs9Gfu;wvX>wgeo85jd zC@8Va?Uhn>sx32Y=}-1r&9|l-cMtn(KK$nFCO`;0>zx%=hU!Cpt$oQKw8ob)2XQas zQ;az)xX>z+(GzPY7c-KK=!!{%n@mw&Q5WDWF8VakZV4LkCh2Q<>M^r6FJ%_Xvwt~v zN0+PVys7|p=M(cPMG+-A)1|yr+z)y0J+D=s=GDG^mb^R$NB-j1j!u zgrMD>a85Iv1b{LxJuxOLZ>!FqmmQa^i0+PG3`K|Qyqf@J?DWwfg1_Rusr7gV`e)z3H)YMz3*0Q2neg5`J&M;DfPcwQve(;o!9P&ai1!OtH zT!qC0+22RIU}*Yetwp@YUFp0>%I+p(Ka+CvK626G-)`;s^737znlph}6x7s}^!J!> zq4{A?ox8a7Ww5$2DpWjw%RIi;mnn|$XRC(utA6%Y(0`&^VKVXzWddN0XAv}XZ;V0= zM-!h~{Dpx(;er15Csh`K(;DA4-dj2+m#9=+n)kKxP(HDu+p5vxE7zRA!Fe7@6U;l+ zY&)<^^a1&lAs{y99+I+_QSbv+@$ zU*(dGx_>Sc^pm$MO9}y;hvHHnXK>{vpg{+hcvUCi0g=Ds`{;o-VZg>e9Qd$Nc|M;R6*+kY{poqzOXA(><%gVzGAuYQ z)DW9GsvULE7iI!8!d0gibRZvhej~os-h|=dZO!5YRg&|01zX%&kQ&TN8WpP02EYPP zBk<-mXs|I+ONa293j16<#FQB_;m&*Pm>`jwQ4>V>$!0`htgeg0Y#Dn~jU)W1nDLSq zzse!9vx98Wr=L&fwJ?1Ikd}v-mvnsguP1%4jvV_L`D|Fa&c0IJ*c+U3%f#6=ykxg1 z#kIQO0q=tQ;wbyV_*WMC$3~q9tCK33{KT9@{YPTP57gt!2bAO#8z^G;GwkEX;kJ8;Um+X%PMWsX)qbNC^Y;{vpSgDNslp%?gPiBm1L* zkJMeUKo_z*-(69}smxG1fQUFD!<`r(_d4614oEc!;BtF2ay)KaF&@o>Cahdb3nRiY zHg2UWWkDH=Fpy!xv7t1RF|+9)dunH{7KdfDu%Irh0L&eK_vR&?s?S6BX^Ua;=II)r zCusW+!$*$_p{=;GFBH+_?Zr`2bwj4BB(h8$)LV6Tpd|8{6|S}dqzDbqh){o`S%hYk zv1XO?wbEX&@J|eL?W9d-;g`w8*`%+myZ1KE?5MQuJR7ZE!VJusm0#1?K6HY&RuQoF zNA|=QnOIzZ*M^EPyP$oYE*>lSd$Q%_dF$3PtKO#@D?jh}Q_t!sKUZ;O@B3H6>eQ{K z`)^oZLk@tXy)RDg`q38`PgU4Aaw?_q944i|2Lj5;dNUz30`HRo;8DTovn>yGr5>=0 z5nV*b$B*NmkmytxuBTBJ-By z3YCPQtL`?SKwP+2eT9qTBS8DN*|roYJRz^%>v5xZ$LkHhPZ81rPEtVr#oBi+T(XeC zc%m)dE?hs!>x)1^m$Im9(tV**6{Vhq#bt0HP9G7n2HDZO9+~fe8wH-#)|Lebo67Is zxkg8UCQAE_UsY(LG7~zAS|T2j$N6VTAp^SzH<|W9t2FCEH11XGH>q`yC|YOP?SexG z_uHKFzJKWSfUA3VvO+2H*-{Qd;lwaTJd94W04;1Shj6L6LU~_Lk zr75aFWs%5gn>i>=)s7!4gb6o$==Xu~a~hPP=6FPMI1@j=$>2h!O*E((Rq4hB1x9(( zV3N4TQB>fIpPzhXW=iKUC`MAT9ipC%&rZEeq0g2QiYh45{WY8#8W;@2*~$HyKR~qg z4ku1|^>t7TX*e;RNZswXR*2uV=jrzBuaVx6KsFl%LKS78|BK=U9GP~L6E8=P>B(yUgBjR2YxB*R%yyHhK8Kk)fx_g?t)=7* zSi5vXnNQ!QB5MTEjBN{(l8bQ!kt!X(Q{wcpp{C1n-LD&z2Wo4w*tEdNCI#^eT}(#{;8R{Pce-JvF*}%vHHjCNwB@BpWFK>iR~JGl(~y zRl~%2kC%)+`C%-)y^Q`j#DY&ooC|I9KEo-1er8^CUQMHqasDt&^7@W+$O*_Qw>cI< z72KJALgN35GY>@v6ma2iATACI`%@*ofZ?`f#%yqYKt;HWo~WcEuyajA`Z5Wtf7Mwln!Dds`z!In;l~d* zdSRS6_+*q;^tLGt~L#^klexNUXP=<;XI`7`8L7;c#f{E`dQnLrcA&WrUQEn(5^yd#6OMVi; zno!t~m5?O=Z$A?UzaoMZ+pmBVWy92DOuk+)=S|%qpB-Di%<**=!`bd|pYka-R5k+W z$g&jUSfNI&q&AiMW}q{jJur?jT#9^#O)~OIKexju?%$z@H@$CG_w*6^i@zM|sGx}Z z;S<#vo*0=Itn?nooxXFI`^#YkFVY2#2V)FXn$Gry2dH*t%89n>M&qo9M~hYB(dfqr zK__J6)#jFQIT|j%BN6PMx%Ekbt=xQcCC((8PWs>IM0I&N^H9cn3UfW~Pw@3*y?5Y< zvFZ4>njgzqM9i$rHSTWuV?;BeoU``CYWi?|t90f_N{Uv};fRO9C#$F-E3@f_(bqfY z+(hgn?;bWT4%Tm`VT=0+Cke{%WSdPWZ?Refa?HDT_GE6hKJKmAI;xBP&6%AAEa+p=8PwBKWrpHnycf#G__9U|T8?WeSkt$cJ;6h-Bn;RF zJs_1dyeMNdHJ4->yjFS)Y@NkRV*Af}Z%(Uzdv}i5^j1Au)-uaI+Kk?2@nXU+X^z84ZG~ zH2}-klKg_3Biq^9I3hdql||_v;9xnWLzFdSX{g&P*(>EwtbLxfv7%l@M!8rzJMYEg zSJW5cXZ=iJGF^+;sF}3^v37d%_g&`)5P5PmfH0W217n~i{>0kDhPD}eDCA%)H<2uF z&7$GjsN0s9pu^aBdQw!2@jTrKhu7W4a=a_mIq3A2ngxv1?>#CV?)Vk@`jt6T+UaW* z(P)>mFJfG^l@>uy?WwBI^G|LEXlSfv{qS%}6CZzm{oWpJr4W4QiDM$mKd9J~dZ+2RM0fYdk?a!MP?Q&%pdQF0^Sx#w)}(i;u(f z46NkPM17N<6>JFYQ&`56E&}WGF$SI0W&7+o3FcMg$g8 z6uey^yYPqNcM*+TQyYEFDC<5}7;}UIi=&#@_3-1;osofUDh6XKpf#c-#KVa#8){{b z=8e}m)X?YlxzafGKD{f&^|+9e`(fk1Fw1_)y|yPQf?kKM^^fDZ{h{{a_uj|N{IRJv zq=o@pXI13Dnb1FzF4j&n-eigmXU&{KtwC<5ED7YSTGdGCMJ+S?wSJp_h2#tyADK>c zS01(~GNjI$#_ZCSM%|aP2g;-21!lh(-`i`ROV>RY_r^)Rth80c(BzE7XSezo%Iblt zeG1CtTXW?X8c&@BgLzkl`@N0W?~o11V>1y1%RS*!57?=Mr;JwtA?zZgEsHg|fHEQB zW%5(qH^_EGj#`F@)tO>Wn!r8kJMptNBL{}-`y_!V;`t^MV^NI{DRia=`e^Je+mEA9 zxXK_9J~~RKmif^{tGzq1IR&wb)Y!irQkgO$)+S2p95Nc{)pGcrRQ0y~A(o?G`y0&*Qn1yJrbVKAxoi!tg!_ zl7>LBxX{U90~N+6;1kcX8%J~{cb0R z-Um@5i5{TxOU2U9-yU+bV8n6ZWZ<@~{~f8d0l_uIfbc4=UU@qs_Bi2x^PmZT$O$1CPX}2uzF#^WUSJGnBNdUgiF9WgZmp0YbSe-G`sw&w%+x)7} zw{y?tuMa;yGk1cHzJBnw4nLCxr#$(O0ZKP!<=4$VICtm7|Mg<} zZ?{HX7GHRLa@S>{(_y{kgZ)SypwO)H747%e7UapNr}-B%k<+$Pr-+-{(q>i?HR#gA z>Mp)WZ*S0TVJFMJ?Pl&g$o=!fT=FOD?y!EJoF5H}fw-6;Qn?^ULyckj{J??ldrKYLJae$?rE<-I`_j*TVN zdIthBOW(B(t@8)3g2(TX@|U0TY1XR-O0KMZyWb%D;(HD~GR+xEHHij2Y?Ywu3kj0d zoQUP5ogCzkgtUOY4Q(~>+ZbGXa%w~EXgRH9IAo4%%%wPdmvHXt=voMGDq&{E43+V# z>2VviCn15G|6O=c0G29JK|Lactx!y?@TC4Uh!K#la&!QkH_#HW0NFpnDRF0$7WwlIlq`=hP3}3(G^){w$F@}cY z9PAIb?y4vMw@`4gG7W)`hRsaQ_ONG023md)Z85AaHR=p%4{Sm{68LspikXoxJqya_ zS-i`FV=!;KJwUlQsO5rKV(s1-%T_+>#>BBcEMNb!!Kd%JF+XJ9G2RhTh{p#d3sQ_X z`A|HP9UHPSw5Zgul=L%l#VrACQdgKbw19`Gkq<55}5-Ok7Cj=t!<>le>iTqx! zYdw?4NmdBEm1^5$UQaayT)514&(YVzB*Vws9G0x&B>3Hn^LqFx;jF+ddIn$A_P zqJrM@K065Bt#zE;M8=`NvIgAUgww(C+N8!$B@s-AU{n-PD$!l0?=H>${46{sNsb zumSA0iWjrx#$cwCVd9_7kJa7ToCHCf{hwST@YFYvNCjx9LiTgZXatOqIj^+v4LKgm zTVR)Q@qCMnyu1kYj>zdx=F3>ad$CW))4boR%~L1NR>74*M#@b76qdjxHrbo~>({E( z1u^yH*k83?*bi_afPVh7MEakC&Gx&e-OW@)%uL_wTp35`oz@4jAkd&!p`F-1zNG~p zr&fTvRm$T?vAaGS4#CA@2JRDT!Ty`Gv-0d!DPYa<4_Ou_<{-)&c_>e`D6B@#7NA7W zV-Ce?y}k>3N;3-N=~%o>L8$-UVl)+Q#KG2oZ!sW&)zyC52cKhyDuNeX(NGFF5Vmki z?(?f=aCFqKoQM%w!59TDiZDE0$NB?3diwmd)*r3bM@pMn(G-myWB0}W*o!kydTdo3 z`!mHD0uN_F0Rj9g@`%)As)f3XO|jwC>vt$3oT}P~f$-02#>}$Gq=k8#*E@T&ZI~;d zgNX+N5MTP*`vP0f#O&Git@j~s!h{O!!H9>sRi4nTI&xNQh!16WMnE{j5N&9XTjD?> z3pZkkRg}}!&1kxwVR&hRbXFZs(nQWqr-p*KcBd#8W@P9Iov>TS@1cT%Pwkn25Djh4 z4>e5cH*1`1$>Nl_`nQMv18|;#Zq?MEXU!QkGjm@gobj1MOz1YFgm}uv8dtcffF%X; z>xsCaC^NdBqmhq>K?8cT|MUhd_q9| z3u0p(HRy3$Rfuo2Nl+cB|A{)MJX24dJl;g*@gp6*(v67EQsJ2!Fy9)nR|yrn;>YgozndF;>k;nLMI zrpsz66Xen33?d%i?~uLLLP}Wu%hTi^KBtR-zefHjsB>+`3Pg1M0`_@E@fHw{?C?t< z7#Psls5Rc5G6*_2@zWYk3TM~_y>hI28DCgb!tS@8T;+^mk3U7g0(rYo{zQQW0r)fs z^D;ht4_PK77n^xt-OKs7%%KKgRNA^B_Hw(FVs6=QY>R9C*4iXSny55UV@lqLGb~+v zLt!5v;+#bABWJ6Ct%Ew~6&J0D*E%HVRZPdwGP?oTo1#Wj2cOyL>gH^ANwG;PT~E1n zM_}#L0xt9%A-Kz?u3abQE;@U5`XwShas1}L5k=kk$p*dQ!(fCqP<%UiPsc~Xc}<(& zB2U>nwi6;@Yc>-+;0NY|ixv5wX26->@!O_!dReP(y*=UfJQdCMIP58?P=A-fWhE$Q ztIdRhUXgdI8+RM4%D^^f_%U+pPT$n)-vo+z{0o_%|3K}r2ZR+z8@UgagDvx*K)vOO zdSdg8OAN}_3mV#zxDXZ@+WUKwR~MVxwgqcX*6ltCsoTb1!8We}Ldn%ke6=EWYB z!T*UGl~VxpIer#@bzlC55FyieJ)_V&tHL(GpmEn_FQU_^Rho&~>Xr=JVKnqt&a?UE z<3k>TpqMGgm!F_N62@Zza9Iok#{A=DpMZ+t0;RCiLPld=!XE&DzAtN)Ut z1A!`tpb=_iLqoFw%~cqSkcCQ@0r^-!dFEDjx9WmIJ|zs^w$_d+-e(lW^uq!@>O^UBU{eopG#0QL%lhOt;bDs2 z1%3=)CYfd5ubA;_$Khp6jAm1r&VT@x}=}=PcwJR7=5@MKTxw=0E`1=P2tEGxRp$z@GYx~;tmYrgz z+!+JV3#K6C*cg?Lhdb9OF7pR!N*3JAhj?;`D0!Au*>=0D!ynp+JX@EU^(4`6$ z5Uk*u$WaJcsVQqV{M$SA;8`RV?)KkWBtI_#)y{>M z4N+^D9!0oc^xBi<%Bxnl3!+n*!o;d=foT;X7||;Cyfv2-8*lS9oC8ALPQ`eWX7lL=Wj;6}ZGPOLl!4(Yud&Z&b0)sX_#<6{uw)|+R% z)Bp6fHBj>p0fQGIPnx79G1fx%>HJiM;S(NrJ-6M`%vVrZx8=TS%J?tq799&a9=q^1 z{5C+_0}Rwjml2dby;GPh|2y%PNl<7x7hU)>iBFwt`cC-*CV1lksW32evjag>II}VPOe9VR zB7`d8$vN<*0DqvzOwio*9j7QdD?%9h8MZ$Kx``YYi>`}e!bh82SBX;75o_v~_g2aM zX(rjP$VQ%;e-3QhLJ0?CTM%>?%VI#>aOFTVh|@6Vx&VA&$TCs;0 z3wm`ubjQCE!@>ERMKdCuZ4YD9yQeI+nIj+hD)X#RUYzfAyyc;W_JQCqsBtg;5?C}ky3Lm_Vhq|t zc@(Dc9Sl?P+sdqj7xbH51km>4-MV%gUp3W<_*mpr@N+=-`HY3cd|-Ft(`>K!IBpOa z*}y$(`lxw)PK({wW9bm3cO|$)`&pZdGp4X7*?FupGS!w zJZu2uRn!{GOx5YJg?+|kC}z59}G5Nw3o`hLcYcPW4*y1LByvkD5b zgd+eUD%oa4c>S&Hs40AJCH=+cLlI|U)@aq5)gpIFt+? zK6|jbrOZhV#lrz=xssxSaRJqdW1x$0Tob%K;tMql!p1@(ziRRizS4jH?j$>7cIUw3 zSS{T-f5;%{6+f-+{$I5CKydq_N@>GM+vAexp!Q5@>Ci4v+debS%wg|9@R{~43KP@S zaVm*bSzmiCcH30nl{p%z-=h=tcu`g^NlIK8mi0)Pm7Z8|G?G^8{8H))zl)mXtP6en zjslPQg8`Rv2~ywpm+c+{$}mg??c=n@qgz35_3`bOyn=!uMb^nzLRP(JjB_`RFYGFB zsjYN%@Y^d|b8=ov{g0@#j*2R3+y2mlgaZf+NSCCvfFLmf(t?B_-QC>+Bi)@Mh#;NP zjetlANOwz%bbp)YdEfUt|FD*eH4f+ObMLsX>v#FQc4~OU=r+b7mM&tfS5XM8$}Hiz zMRI(E*jU%g$`*4-*~xhq-cTYwV$eT#_!|o(@B*BFOVwY|#TgjSPs#GyU3ZjLYAV3G z&q$le9-NaUW5CE8CzSQ=_Zv5|9Z9$yoZBQncl2D2R#j2ofwQ#oa@#f}m6L5g5aTwPG|sE{_AV{fNyd0>LE{U5WOla*%yf-=||h3_PTu`v!-DuC%H8xBMd9E{mdn8~%Dm zWK4wE`d;hbHuc?f86M$cp$^J}VQOWSXnJvP4Aan~4I2eY>$ytPY8qL%arEYnRSf%$ zQ5<`dapja^-L=K{dX}7?)xjN4=Yj~ahMfh_1(KYl4l%vdKHCa8Kta&u`~nJheYYET zdK7;KxY~Gf9~@W5WgKr)*F%>1PaPw%QL1=5HFk)r?vA=TziZE~=2u!0YrV3Uims~W z*=|5_yXTNB0bTNFy+Lm%^$e^TPhyz&n|$H;1lp0hd=7>!Cn0|CBh%B&i^;ns4So_F zEL1r@D?cLo9ObD+HD%4~mb-@1qQ*L_>8km4bM8kEtkUx>-yO8x_+VgwS59#ZG@8n+ zHzeA%HuaS?bttT?a6=FqKfpEdJLk-&HXVhhy z92Bf5O^#FhhbCKLQM72M7yb z*Wu^q|JQt9FeA$Aiz@0(`Zn*fL|mUoyKDbLqE$$}BQ?T`PtRu(1sbM0aGf7)-g+(4zn1R0 z*SNm84Y~8a%c?uwoylPh@7;MUU^t4AqK87`bM@`*(8YvQ-bpe#>U&5e-pKmx-z*Gp z*q%|4Dzv_6E%zk+=sn1a=>^Jbsb$YLCf8PCijfHn}V7AWtEMoYsw6y;@Ed&8q zH3D*%EdQQqAPBf`rGPaXpW?~o1E$wmemxDFytq4uUTvD^Tb(frDRWf3-mH=X;imc@ zU2i{($XJ}tT|jeQi+Pk676Jt(SZV3_bgP42Sp+FZCXcQ3tRFX*TZ0a;Ka!e%yeb7v z`rUWf{k$!!_RQ%{GQF&u>&!t zYp|(Z>z*6vv_SN3Cl`ThY_R!N;I7`^OSUod;liSQ-x;mVGSF}T*Bzl_Hk6S!sF0gB z^zhsKr=#5COEyl0^yl*f?w9SK+b)*o>n2LBnI7Rna|IoK#a6euj?`l(=y@(*0K@D< zDjxRr8aBsndgR~S^MkfK)1@Ua0Y^$hMX$e8i(ajL=4X4Gnv#GM5&lH!&s69B9a5D^ZV zFN$&=+eD02>2eQfvjP?K?Lpz<+}RHz@aAL)-CON&#Jv2kCOC2o+I0*H1~XsyPRxb) zT~vc^{$Hd_m3Ma)V|mMUC%=G?z>@vt0*4s6nB%_{DI73kjjE};HDTeA`E4|8zCGLT zI_m5>vA(@IYx|pPu}?Uljoq#irLd@}} z{GE^8`PUKfR3p4`eqZ!4_gTO7I~uvddD?hfba~mhV}E@M7>@TYtjf=?XpsPYqXar< z)k957JEr~7)Gv6>j(Is26#4t~K2;j-6_s-~AOGy>2?iF=mgZce!6N&_)D<@7R1w!6 z#<#jn-kYb&T!K~uQx1X@_JIog2~WiS{z(AVBZI-B@|PW-Xu{F3@IF+R0d7IzUU)Jn)9y*fEd41k~>szUrxcLFh^k7R48Zb?7)yLz9 z#dhF}%@G!whuPdMn?HK`9l&__mP20- z>ejI4THNY)e5*fqI@Z+B$_n($9>Dzg5S+*R-~**+6~(hiAi&7JonL)CQ5H9EH|Lav zZ9LD|&z8dJecj;=Y{SD5;qsu&yN{KMg(JK2i$C_R5=*K8vgjBT^c<{DCi}%S|87XV z)%lP4)qmz#%Q-i$!jh35DRNPKg^LDkcM1vvv9x>9!V2~;gAE}xzy1vps}N@2?eI31 z>AGB~Lpxc<%)$FY|L6gEJ0kb1V`EMAgP*xWA?r<0a`puR}9CuXh<}BugM=vLJs)%iH(O2_q|7Cz~ zu?|KhK_A(3<7LNzOxL-S0^FB|7+)a#dqpHo=$+5$>lA(GuFSC^IJZ^g;$oh4`kGT% ze4h35UPpP7o3pLO+jK)1Iua5H+OebCqXlcWxW_NQ5VFhC{P<7;?~^Iv{pa zQhS4%GtDvwTEKuiVIX~q36ZJVb!y=1L20`KALMm5L|MiD7>*{6t}^q@c-Hvg^-4jT z&!@Z^kYcwoyV%AEOxH##&^Y;IfLlU^J;02i5QUQU%m``qR*w7&XJG)^@pbEwi$4QC zn0#VmKK2Qz1q98^B4;TDFZ2$sd53_F6P){Ii|!;k2%^*eyY#WEGY8u_z?kg7dD@ar zilL}7DDOO2Ci=Z%RulT35MS@C1U2v@2+P#sW17T z{XMh4IRvM6;A}XMnZcIHFx9Ml9)GiZk2Gq-+`w7<5dvx^G_g4KcLyBtZ|3Nq?T>Mi zMCiHRM3L%weIblE3{+MI4ZMMj^44Q8)m~=Y-LP4HcJ4382zy?3@p!o6UM8}(&}84X z^HEl{0PHD&q&?GqND`uBSH~a+UzK6FjsY+wfKeqheS76&qg(p|CFz5Vx=~Wgl|nkt zd^?<|%4gc>2hV$keksX{j^$Q||cXSpW~Tisoe1x+Sr zMeFkZH%pu#HhDicK7PUX%J*P`x>wsk@rgD9O29bTmVH%SW(_zFFZ!K$mC}T5H+Geo zE&c@4gxl4HK#br$|4bw9&IH=P4bP-WC5VC2viDwQkbm?zU+|{71qzGS5zXVDJFU(g zjBjgPylA^B0OVyf;?Cpr%>Po@h|HP8N^FaViwtE$YPmt|1?WL2y*SDQK1A>R!ZGu~ zFeCsSmzRsXHPzWpABX6RIV^O)pDeBIVfi8P2kEh)7I}OwW+y*cv?6i6xF}~F+ zwk+B`eMCY+J=J#R9wX`j(7l9`EF=-%eomVO&bbf2jQOSzd!Xa7MNIkR$C3ZdAobm- zXQ08$6qAd+NqrK=!|k0`90*+4Z)FObs0*xIE!lhf?CO|9A%QJT?ifM0B))-p=^}CV zOW%P9)6%R*W5NF_3Mhu8KgY?c=0|67ag*Ssyj2tRI2#7r5!O&TTF?v0mM?D|`t{90 zFcL3_6uqt&2htu~x%BPrg6`k+G1^b1hbYB-ImVX~O&8{G<{7(?nBo>E^E$!UL%>-X zY8!7(FP-wOgCv`#{n;LttPpOcM*g5p+7pWk=Sk%^YFX>Sz2-U$EnP)?7Y?G532vPX z^6bfYTHa_JZAa%lvyB}Ve1y>Rt`22pc&M;gWdPWh10|E}vh@$Uvu%5g>+4ryf_J&{ zPZTp$bl$KwfD!j<^2CA5W7lF2m~s974rzlvL6vsT9&bl_dAVk-2e40*>Ns5>S;ijV zL@y&HH;eA)SGzDZzs7gxE%p&KELJ9 zW56I)iPw3mC2(xP;B+iASUZ>jmY~ zCPHy6Jv*%XT{i7|8YFJlIiQ5tPS@X-96e<%{t9C({PamiJ?S$){{isxf)eM_Y$k?m zUz`G_gt9tbty$|5b}+v!8~0>84te&*jI(mDcl(P(z^rtOD?v|b_#e1)*JCkY0PY`p z-E*7U?iN)c(7p_^C`nWle`eVCFemFecJdL2Jln5SMUv=JbVu51QIIoK)5F&7v?GP_v$fq&bscO4JUcGgIxWN!u9vevHQa=nSqf!)Y1j8hhZDo2`A2 zo9ff_8Wf;?P20h@@}$FQ{^_}$plX-jdZm%6l(>RkgNnAdwet(DN|!^xjCfjq91b>L z!1kVjQ&MILR&qd{$j4cMa3<$~=FmVnMbA?HJJ!E|mH0moU#gggba||mtGzM%i*;w! zuSGSlrwd@68mF_hV`ux*o@cM^8m?y^1Buo8$)%FZWe;Aq&)=cm1CCgoeG3MlCjJm4 z@vDz#>)M3j3DfFE)XuQzUGBedy<7(3MrutX$25fVlhI@*7C4W`@2ob~779WR4H@tj=^$S=FTrF>Oergd@x_H)3& zo46{7;6lfJuRNAW0swjZ(^UyJ<+4+Dx}EXzdbQ_AcQ^B^U`^6e{z(~te_`9v)b>_Z zCYnIM5A2k>VcnqfX)?WcazO(L&!s4SQRO~d_FB}#9r!6khBGYJoh$qqNStjtYuGzk zoR(aw$Y$S~NmmI>ueU>{T0hxkVG^P4jq)_neKB|-dgw3;=;BUq3q)dMCwN)Lm z5d0ot1RBjimdgx$Q0S<)pz8!~tQ1r>o-GVP7snNp3K(>3ti>LB%AiL^&kr>DH1LRc z99rg3I&|eR{x3I}>ymppu?$VcUS}*E9Ge(=lPAhxqWBXBzW-JcUG3Kz;y~tfsspo4 z))5P>@}J;*r@^Ey-x3(30A)ao9ACa_PN>8}-n$D!svF3p{}Mkkh}_wUKA5c*CXf2Q zM_SF9Xz^QHSy@F(T}`L+usLT(F)9jlVgc6!9!(@Xf|;NRZXR1@XM7cq>-u1PzzupN z1*j4t@3hC%^dG_!8B$zRMv%rqu;fkc?uqAiB-$UB1tnl8kfMAmxu(*F!emWB;I;L= z#A9ZCDgnhr3kbqGoun>ZmyEmT#|lOZG(_dNyUf-uXd*)U8F_JouqS{-CCp{$%$f(~ zNFl&<3M_&!t7S(AHdIh#*vX^Bbg&8Dkwgs*(;)d2$BpD9C2DkBpV8NzRvOJts{0Z&Pj1|WC)WfE4e%40k z2Cl?|U;qp$DQK=HyVv#92z|&ywvmcomi$~n#sml;*!2Qzwq`x3Ap@b%JMX;Ojo7lU z@w0e@9;4~mXo@OwtX?Pkv%`C*@ZbgIx9$da3o=~HKY2jom+`+yP&Z8>fV}N`8dG53 zh604{90`v4HzS_|`@gXK9H#bg0Vf=tIls`{7b{Iyy&^Q^LSyrb8uK+Y&I-5ZU&ZT$ z=l-U6?(w%B2(>*VmOMpA#KXlTwr5|*7TnEIY*6Ej0$r3eKj`cB>wYXk`1I^S` zVa;~~8;kU!9rAWK1av}I1wmo@SDHi?`AVHwcMRZ$>5@S{bO@~0)+~M_)k~GQ`xl=0 zz)YNMJq;qO^mD0hjKZW9lpnB|G42u2n#r3O)l#x16Rx`I#6|`X$aazbJBy04!gNFU zdjklq5j=WT@$BmS41!`Q{4UfGA`X$vw^OWp(KO^5)*~Ii{AiO5x>`_*h&23DR0IP! zZ^(BC5&L(p1Mb@6RCNz_qPpQkkrMJYv-O?@5E?UM#j&LHSpnI(UJ=idv{{k!Em%!gzPQ=0zZ9Fz6GRVxjLk&y*(A#<78o`iom3V_4 z*TiIafyM&{Brp*->XZtfNS5ELQym+0N}mqES10gt`yM=(|4}==ul@Ulr9KPf{i@){ zO~u3KyBe#ufp`$eFwTaGm-Wk1o5Ml#cMBhE5nZusgCZ({h7bt43i21Oy|j{xY%`T* z)9f?DnI|a7!5m_2rPdwWEz)VDw$yJl-=T!FPFcCurGPkqlDd>Uf~wuT^rbb8P;oP3ps6)1?C!OL+R3nAkEhDzbigDMV=B_00$0^VYyKtT7f z{90}-ETrr*y|7V^hBVW>t;ZtMcmf4V3uA4jA0KtYm}L6v!ZtloG|$iTKlKeMCBuz_ z4NcRmg_CFen-zqeui}hj`LZIiB-|)+cxf|Dv3Y2UOdpzzZZG4MJ}{o878dI=Lb>wW z)wN==rW*Nl|-p;S3Pgsk`cv^5?w219&Op?cPST;GR_~* z(bHtTgA2D%O|VdQl6#aa4dz>L&|&I0ApB_wgH{RXWVDV#1IuwxR) z{L-8HFxB@2YU~|2wOv@2E8Z&G0BQ!U$BP13!O-sM}QXTMrI6U2PLq2}_Y>c?`QN1ne zfe8^;_J`_m%=nNGt_kV96ErejZ@j%=75DnJ!t{6g+Gv^|H|sUb-|9|&&iTa9WPi0a z|7D#Rx2xpR>;i0P23)GtTp!^-l!|2RTR-sxb}$@>fhX88I=?l)*9l3!<*Z+6yeP>2 z0>~4V5hQ-!AJECVGrLs^A9w}U&)3}?myK3A1sfij1e%QArnw3`kP~mDqHT)OB$xg> z3Psz*IHZyNN~TbZ!eD2@Y;NJ;Zq!L>+sP#cwR~LJL`{YXfd!N5Xfd%<`tckoDUtu? zu&i*--BfxwuYQ9q#I-BCw?!b1ON0|*HY~Ph-sbaT{Sbiwe2jccxG^$zatHJoHcG`> ztbeCE!dHQX{Yqc#_wT766%?O($sP@rJ%nvH>S^j+7eDz(&gX&-GLnpo$XtMy)Cu6e zj~g@W8vc&5@hhHOJh(lq6Z36xsbuc|j#7lpp%9CuOGV89_Qkc?G`w~#tNTPm;NY%W zRDy@%9g}yQ^=R`O94B`&cpf#3Eg_)kQ&s_wJN1+uQMDVH;Cdz2809xERbCvkA29+i zof*Dh$92y$45)V(1`IZ!7kY?q7KYV7)(-X#l&Ck?3Mym~JP-#8g{4ollXDKLyW!SA z>Oj5?x{$^?AP|odC$=9yz(c&@j)~RCtj>_mUzN_C`m?>(rBUAkDvVaZywM zEh%;g955-_0Y{aTvF{gN%C6sGw!b&X31O(4Ejx0~6^i|>UG5s_BjDD}@5lswAKKT1 z9dF3?jwyUNl)k1kiHm;nu4FoZH?1XXZP3?1yG6pLy8d^0#mqnL+66}vI}EfCPRu$h zPI|ujJ>9TJ&dOQ_v3Y}CVb*=QuC>1E4Caz^bXB$}wK68VT0Tc3qH`RBon&0l&98Vb zKA?@Y_}x0-gURu0Nps4YQ(sk6MSWh8dp215s;g=A**)wKTsrgr=5na|`q~OGdJ}Kn zm_*;C%O-)%yH6{sY&__b61Nmx9`EUoHvtv{tx>84LzVSaZJWqV2x#=v*1WdZ{6&{x z5~#+INrQ3+cAR1-YxJ|VYgU2BaC)vEj*=F!#U(PIW@iHS{Duu5u)Snm zn;Aop)p+_(a`u$%=g5Qz=bFV^{|A<_|4aS`zmV5KoMh<MA%Vsk5K=`O_{MypAsMX*Y$g+8VVdyygo4jR6P)t_ z#%LfjAp%e`fs(Ds-DdHdaYhmIQ+Fm0CWYq`%55lUSh(bKJQC-?b7c>DJ^*^pJI1nZ z7pRP%*-J4MJ(Y+i+_O?87i9R;{<)x&^UL>R<8E?;$cr?2>_8D1&d-HWDsj@#u3;6k zWNb(5alZBT`7AUvNTMe0&b!Svp5|Za%t_nfbYtSsLa;lK>otvr{HOvuk!kB{Ir;=e z*pI)>G*I+4x4>ft)J&#?JPN_R7lP=gPtjEI6)Y>z_yot3J8d{$r%}s96D)n~qHQFm zW_qDmoQSE4KUZz(kP%tG*BD|T=gU&{{E>D%l`DA^!x584>Lq&LVQ>U_z)>p1T@2r5 zl2PD8lVT#~nI!qHCdV%=lz+S1x|m^=#He#ET2g1UT`%Ob?>`bm5{@`eyW=l{9Azhi zp8>qxD^)W&ztTox)3`>`Ogo22@hM4JI9Gp(7yNGj8<-gk^UTU&j!V=POOcmt>L|l< z8|!hqJJ;lUNq8TrzSRC3n)xC6PiyoqknRXp6*NjN1-SJuXQ>ffQOfD_(U|T{YO)st zNFto%-p9(bj;L5N5Bw~D_ z5Y!iP*!B)CVe$!%j>7(l>4CBHaN2;H>fuoN^KRhTkU;jogQD9Q{U5@UpQOc=H5|4l$ z4wR&oY%#kfjOx1MqD#OFmwZ;^DYu zuh>4qSM`6vJ85k@fmYgTcQ9iYT=mZ_9>Yx1n+t<-b48R(hWB+mT97cC`@iZWX~ECJ zqNzRJTsz19bgF2OZ9|#pM1T=;P5yoBb7TLK82nM}KiXx8F!v>G`$K^`uP;lWB za-*gxW|Kp=(mf6w$E9S0cXiT+ZXvnz#W~+u)c2)rrI9j?nR-;Cwx@&4oqea2y}?w_^5mi~3Sx z>OlAIf%6+{r8Eaoa%2vg7X4Asf8R@qk(W>hGeNEa+tsnP_W9?$Trw;|4yS?+ll-R9 zXu>jmPSQc8?skosn+gLzD0Y8UIr0h#_y`V`Z5N_X8JeZr;%{?-NK?VKnOF=^TJ8fW z8QU!%#DSs0kG@G-|L8fG1mdDg9 zi+E2IXP7#8>C}rn8lstd2~wyYy8H|PWafW<{JVwH1`eab2vvNWoi^v*015Y2xXoUR z$mfn}95Ucsu0%8KOh|$}S?+p*eg9?j$;E~K`%Nz9!V{(l8k?M#5<5pu(Lw4}28-Y; zKDe25@q8SndD27Sg1+O4Cvxwd#e>I+dMf{pC1P$)O8$4$J1vRWpt>TJ3^@ERtju#B<`Wz-a_5CiSy6jp4 ze%h;YWzB$x=GhXo)gcXvpEpR34RAIMK`ZDPJ_^GuFwgsNnvr$H&-Oa4f@qaaUlg0e zv|5Awm6t);uBvpHKAaMhIu4_P0Mo``bTh{4xWT4by)2OQreMz&s+{<%yKaYMT# z@zXgmmydS~W77kP26e3NOZAT_OpMbXOfJs!4$=<}G_vN|OYm^0WjY+@)ejxj%=9Bz z(#JT|65AhTUXC=NWehuWD!I%=SNsQ-BUrC^0`B?^Q^2U}@` z^m&XRu!R`E%gG5CdmE_w?NyCEz|5O|m^fzZnGfy9S1hLdN> zhD}dowTX-$cz>EWqg8O#mz>!laZ`I%lS)@?i*$ghetq=)DywBzM=7QQpC>bvMq25b zvKBe=vv^*gM2kD)YNE5|+~I+@JCv68JBa+^k6!(^TK!wml51ZeIj)@ zuJ1hWt=>dBgtrWyI_}mnXUSAr%Aug`&n4Ao8-cfXM>%Z=+dWUFq`6Y0WjUdaJhD&p zJLpQBNi2b-zWc&b%dAbXq;18EYXieYc@L!v6&Iyf5h*f(}1vns088$c578l5l~E`~C_~z+|!ilvPV1{6;hSn#jxKPvb|b_=iPB`CDEL zMUuwhxfU=9qyeGV_)#dgi+6wH;@6r>gWgw_hJSNGwCviUr_jf@ATJHXCCN2#g4yD~ zmsI}g`XkRS3MrK(O%S04F%%>`!s=X>!3C5n28OtcrdOHRHNRHvWZtW$y1)z~QD{GW zVKiM|PmNWkfrUx(DLOO16!_l{13#tCAYB!?%=ItqR1yPo{#G_J=?cIQS(a+U^j*sP z6X;W@)X(NWk_8ujEjqqzj>5wOB7b9CT4dto8|DAIGJV?NXb?$R)~8SD(5ZwpsKZ!s z5we_#r|75ye*@>78wqOfxTnhvD<~%Ye~IfYS;tU>Nq?@uaGCp0l>L7{Clkqq9hYyJ zV-UJ|F*-`8K9(E)Q?pri*0xV=n691D3qwMItE=h;3;!42-k*`ra1eFp``=srKleKc z^Hrze%gKKE2zA967S=!(r0c;mpHxMP&5~Jtt0zbpf|b=<0=d1t{k1RUK6?6pu3R)2 zqQf9|^CEn-Gc|X+(JspKoPQgar7Hs^q<#*+4ldg z=gvzq3@h=vb}4HQgU8I2^7dZq9abouqjd?UI9B6FR?>ujSziZtEc&@`$S(4pt4Da zom)(VRT}eWZ0KtxdrE{#)BV0k``^0(es(@c7rBb(QRFKdl z>|ud=fqXKt)QIZ~N>p4*Tc>IoB|OH|mLX7YKK;1Gs_%c8(a^m4moSb#Uej_*cKpC| zwBY{BKjDDVF3V^pzrYQG4ylVjDb97fP~3`Cd)m9vsbSOfObG_u?2f{y5FA=`ae7I5 zbhLIv=qM~p0)qJTSX=ZdR<&1dI!y_!!Yz)O)|gB`O!2MqfrQwo3BOZokokwVOWsgTRojUzr z;Aq{S2jB*)2S((-Z+nVfUJm(@ zn+Jtq^nZSlv{;&q*(cd8Ne_YabjjWHM<}t0Ue3e?$HZtqjRvm@UA6L~537O_kHFbJ zf7Ghr(OFS$1@K+w7BRoeSR?{)6kq{>N!|zVS>Ie*rAveO@~8JASwR>4c;|q*QruULx+z_eT!Jb z8Dt>{Mv~9@U~UC_XoerMWK@jpZp@DOF`i`53>V{%ul@WL{NFojg13e#>o>GLcu3-W zYN<%>V~er7Ez9t>>~J0#dY}rIDa_*(OI$$Q7xpRHyR8w0j@1C>vBaaijq$n_C*0)I z6UA|Kg5UIw<~0R(T`xlePMGjI!7pO|GJbAiaKhm`joAO;9HPl7&-H?{08|`Cu4mG~ z4r=pVCfJa>C*xVke61@^uOmoDr+5J*u`2An+l{TBtCxGTwN>m9+|n?mtY_7W?*j&- z**WsmCSA)X1#ElRV} zF?iHk$=H}dz*Fb9`$r{ul~0k4_31|u*Wk$=G$aJtrqc{aR)!xp)uqU|9DV_PH9VLb zx7o6*F-y3X(MUgkQ1#Ilp(7<@xU~8>=)>39&ssHd?=*^f{;UDAj<8%ow`<8@LwArT zZni$j)K#-E%3s{7p+30oH29GhP(EgW9R(-wQ_=R+A(5}>;$(jt5AJ-20u~bVe)AQw zMw(vhqe6QRXKU^BTK-u}!1xq*=5WkD;gwGcTmIzJm!R#hz}DYd+|qup1WGJ@5YDFhVLDI;yafjFrrz1VjEnen4AAN?sH6OX3b7LYJ^*VMug{ zx!Ud4u1c%Frc&t2Mat;VZ)x>O{7^M-1K~Mv^xeOsw9+2G^n37Kq zeGQ-x%*Y?d7h8~t!4~DEHhgX(rtNh9L@uQpd~h+SU70_NQ8ta6V>CTA!6s z9%?F#*EkQg03bHI?zNPw>v;VkkksRJ;^9c(iC{!JeZO`iNNO6tdd1lZKBfQ80~H(QGn zaS5;+17OgU>sP;{;Xe7jb>jLB1YDM(t-f@;vSInsVepPMi9*l*S#pS&6bp+0ofXU@l?4jStlJqW`W2R4Gx2CxObVHqGE7CRY)IH@5A_71sF+I{ za3wfdw+k#kf{YQ#&K#hx9G{r@Jw7fj#sz`2JKpl2UELg-{N&H-7v{j-ftU)j!ZC;VKb;4 z4{BMAe>}}KG>qKK%X0OLHh(`Eu9>`tE1GMEhtInU3iSIQt^D}qD4IAWpQxzWa? zk4`~_`8&ap0XKduP%?J%NE(3Bbzkc`jF<)(yfc;ZRPyqoNv$=yhzF&|Q-n%KnjuUD zA-HJ_&QEN2Hoio({q<^L#5y%MF~O%4t@1daLc%uZcofgf#i0zc@xqCdT#>~6Der>g z(vnsMm5z!WC}#NvhefqgVCY$=PfT2Ej`20D)?EIk?UySiXGgZDuC1@XRZFy8sFzStmxG!{a?4Jt z(o09%vDvF95qDpm3PuN^vrf0QRlHWQ(1r(ZJX#sTFTCdwPWyo_l^1;NbfrA#ZdPElx%d24x@$Q})$WQYvHUpL2vE zd@qj&hx)pa9xZwTE<|7W$fJ@|k}~~zrae6`y1Tu%t*kLRb)e4F0X4X zXKEE$oa+;^63pRQPYX-VuLC?phEi)hMmEhq`hp~SU9hCqc&cB-ELVKG(;5WlvGFi7 zOSY}!5%-#%7!32sggKo@BSPn!+?BH2W~5U5j5nig!Sl>Fq+#H)T-W!N#FgYofwOXeNqHyY>*B`7@k|L6SA8=qqzCI*v9M6UNvm<*YQ2 z?J@LYtyi-Qhb+cpe}O0DhyL8JtID0q;@m2u3@$T{WHB9asIO}Fxz1zRnJ80YBBF|^ zE40&QVn~y_~e0~#Iy?S^aZWe9;{#AK_8#(cF}m zV@Y6;olHQ(dI%^lKY(|?=XI)%s;;`W_G;0_@@YR@yU9#l_~oaqoPL6DzgBgH>j0sf z_XRzeCBb``dNZV5{;HF<<6_y1Mxa6<=j2xoS7KPNymdy2Gj_`0>Mw>uuzO^Oc5JZ>*`I&qv~gB3 zeqOW3fi2BK^dTYCg%6j^*kpz|Q5^gmcZbfV(m)3#ha-}EBiVtDB)B^k0uhwpk}fVT zMv8X@$M7lgCMm#!JK&!agSU6y6#fP@T#DJ~-qm=9hm@kZHF@9pA|06Xn61prG#Drz zpra-*y|&(lu(NS&=_*f^-$8n7xusFD<;ZC9x{N4$M^4m4s8sn&_3r{0vBDL{{+|2D zgf`BQ&sOo3yRUuah8xq8dy&uMPpPq1g2h{S6`?FnwxM$(BE3G;0%p#rNzbS>ZM1Frjcp+1kgOiY$0)D(gIZ`MXYkCe=wp4(w8?Ppt=t1uy4Gglt5rHfA0kxaD3~iJ(JEa- zUq3_c3jltGL@B%;uCT>fea05R?dE}F*-AdK+|+K00V z%@ypmJL5gjy|D(}|X2ygb!bMa4Y4)hmZn@lyJN(bZPnqgu{GzxeEJZC$f-{bWAz z7i)Y?*U(kh($D~28m$k$;Sa8kOG}t1`5t~&i_d$}vb;^Ks`@0q+qGy2V(ZSDb<>6y-9vdO0F zXHVe*enwwg7pevfxH#I}JL09Xn{FG-PQt4j`t@Ry`Q#Ag?EJX9 z_MF;$g}QI}rBd3ndA>-4cjTMb|Jcd_9mqeMoe%G2oayIjp3W+EUTHF8eqENroSps@ z4h{9a63`l&V)QQ!R( zL>)(K7~fZ}=q9w)eG&L}Pnr4%nfI5fZR_>ducqc_RlUNR8gb*V_^KBx%KDU?Uy9c? z#tb&lRW4G0y`_u)tMYSJn4I-tPIWJ>9E`AZ7`>L_(ce!`M5T*Q>0%;1ngTwRlJg3_ zKvRvB+(}!-FA&wZdFN^5oLTfJI0gmc(7E59sPPuebt&F2^s*PJBc$DIX17n#CdVg| zQ&KK&{IZAjRrDHNwsO^Yw#v|SG@Rb^kSNG6Hkz*HM?KCRk!tZ7sGgnqf zJlPzF5mKIow%S`{Y0C~4Ali+1-4xJTg3E{y;ESnucgX#z_y9x9g zee3&G*=p0+0VVbzmjSzx-i`Jt(t#Hm(eu7nE*vPd%s||Zha1vW+S6!59PXH9x~LL+ zGAq%N(75I2tjtMJ)$q4?H2!j`AtOQ^F~f<;$eby;m>%ZmDpUj&@EKzd`QfCjM}Fz_ z`0{p4#_a1&%1Nq$u$j4jrZ#BpYFRff@|CMBLs?X#%c39MnUR|PO#~~|u)F0N_G&{@ znt)V>hDx7#^}u;SO%P*~47E&+VMSIbs6r)}lNkDV6q#hpPJzF!pD>Uf83#jxKpg@^ zw6Sn4eXKat5Xq>;gsh)$sI{G~jf!ngm5Dc*B>}99ZNX^MG^~U1ME=3NZa5%XOuKa* zs8!q4VQkJ-DY#GT{;r6JxuFR+5qwO?l-Ev{;>wS7{gzi%Qtz3}(7@uCWUE!X3KEp| z-dUvQFX6G_8z|so7WSk%FKlbU5Sq!;zt-9M@HgSKb$J}DIlLTsSzc)OFVE(Iho7IH zsiH3*NdaZpu%r6QzRdC;^!mrgwO799KhUST30B@p2`vr})4|E`-9aEIL8N*h0j+-U zs@ROKUWqn&cQX;$ChEKoQ={4QcxE~Hk7eM8=6b`B_Y+jo# zHrI`UJ%183FNfjvr!q6NK7Duk9i{r`cb?#Vuxaz^v^S3sK3ZO+7A>pax*{EI5aRO20v$U8ZBJm`~^lDx}S@8$O?u|AsNnv7kh38WscPmynCn^Wv7H4QjsZM9V*3R*Zy^H8w}?&Sms*v5_bd7pDP?l^3OI<) zx9@^{fyFF0Kk_sVe|cuW=FURDyZ?sB6NEjDvaQ|f3W~|YrDEz8AVd(#zf07iN9z(R zh$h!br$gtoY4WK+W5yYl0>n?JNaWuE=!dUgh!rsS^|@4idYsGhR6cv}Qr~i{JcHH; zr|W%Zg6w|ILNb6z2{F2U%77m7pSJu5M?y{xR$KI(=8L{UY?Te2H;+S>0ej$XU~}1^ zZ|dnp*j!^6o)Ghcg?ND(xLze`0Ow$0>LTVh6AD(|2 z^Nb-1^7D)SpoN-oWTbj(4n858;D4_6QhcJi^>veS2-=`jg%zGP_KW0U@(+taSMe*) zx=4$DPBoQhkgpNe{PxkSk-IEepL!(~@SI4G2Jo0zAFSrt$R3c;Yd?cjE2KuzZf6qw zwd4PPYej)+`G}fIg3kTyi!B8A>Loyqc71D|&jn%bfGO!^=JYPIHGtA<|reN|sO-nR~XPz5k0(zFNDQbd4+t zaJT$V<2;N!SYh#Avwezl3E>iSzrL*|B>lJZ2R>#+S)+$T>{b7pf20gn*H(HI@Wv$T z|9k)b8B3={`yN(kwPKaULEh=-M^>vf7+k+>=iO{3$^;(PmApEaz~@{iD3b_1Wh#D7Pyu5*8el? z&Oh4e2J$xYL+O7g$2%AHJz5t9Dxi2utPuQL0+XQ>qD z|9$>H4yUKc(s|L(bh3Wh&KxV&dKY~$$6AP7-DAJ|SM>j<(G^CX3e=F&o7i!jq+-sU z_uo;8$ezHSb^bfx&f*sA+-|^4MUP9H@Gd&)vABDvVE50r|NRH8`uvA#+2CH{ZVtyL zt_K7EN}f9sMniLEl-2Kg2DE8R+Dzq4drAM#Q=qy$SV66b6_ythcslkT*-dB!Ub`@o z@qT?tSNVm^t5Z-J5C1N|>^})Lhi{pd;a+|n#32ttztH?$m$ncOMTDfCj=|eWpAOeU zB5kSKH8Gu2U}HiB3loVar!C&3Nw+)zG}9h|R-R3j*FIJ{cua|tXfJwo!CXE$&=wVB zH36My1AWj0T{rGB#%Efbq@rrW&~N zkJ+v$+S|w?unb4Gh@s)_1hpHm3I$bv<<`obWG9AKB`kROiXHXK$;=Ho94(?TeS@<;AuYD2ritmGxHR8I~-I#gs3 z9MXIA**ee)gYLmBHneK}lk~&i;*nEU8*ib4 zB%vU4sjgH+GD$2GFJ1y+r~l6cW#$c&)@8yZJLn*joYUg_uD_3zW3VS%ZaKD(tks6} z{bMkjj;fWQp#c~~yBB%3V*C6D6%(|%YwvT#)9*p<`;Lj*K8(MJ!>s+884K{3N(`LW z2jXI{x8!3EfQm9e5+K-5fQdCtQ#)Jwf{195F{;-WjhtV3F4GsRmG6P-9ETm`>|dim zjqdZUw*4{rgBK(Qi?d`+dG0O0llO!7iwt>;;cJI1JCES0bN;on)q{0lKQMaP>B<+a&|R zAu7j0)YW6NtV0DGp-&Z3)oYivy>WeYR?mk$WPYz^3^i4XBuwN>;-nJuP&101Z6Bk9 zUVwjPu96eDvdmY|Lrw7HQ$==?;J{3 zw3B@In2HRc>Oe##d^Ur^e{Q&MI?jq?>sm<4vbiX5kuEiPg!>4sSf>7U8KQG}Het;uRL@bq!>C8ld&jUlyE?Ppx$|p-wMP=py z8GKYytbGG7+zjZj9Ft^MF%YKm?$^7Y)-x_$Jl;G-KYZ|@Eed{t(hSyn6nBM(o+USdqU&T(zyKQQd<=&QZXbm#TCcS1~cr*J%yvWBu zW=|#41{zsde3>b<8Kr_6WBgcJ(oZC)2W@d9hi1#Vq9xw9&&PbYK%eThE($%;yBu?pKryQ5V2INk3pHa z3vM+2RvUhC+iA>U<(-lS1sy1V6UHa$rblGNiN9ZxG`&#<=s)H(Jo!?S6I>13Fl)Arq0PH`d~Ys03V4V{b2pz+ zmm(!Isx?JvlBjKf0N~oB5h2v}o&kqlGj^I|XV1@~W%*5PL_Cv}uJMWqdjdHVMI2camzE{Nx_A|44h6RVj4J-Y$km>aFFBIm1Ay7%kwhik#>jgiF6 znxv~=-)REkj-<(rNh0?#*@E-wi{^E zGtE{S$|1g5PdX+EI7A@)f%DRr&-hBJpI<$v3&r2aWMLA3Lj=3_+L_3{utO~{QK5oP zq}Ab}wyx}JCEr;d^g|wvwb+sj2{7e-p%jIioIafCz)S53M~ZbN);nIruB!kWK_23IReI3c|2UE4}JMoev{sa zKSq72#4B@1F99Zqy8Gnl&J+CJmH<={p3RsWD=|~K(vzmCZ2=~<=N(N>kn4&BUnwCO zJ7jBcfL7Y}vIqwsvRFU@ACOVWa$EZDMJEbsc5AtnBlmI@{{5(KIi}zOSn1p)h~dm( zJzDZMfUL58Cd2R?-H~F}iXcKA;t&u;0Pm}n3J>}-lB+C+dbsWLyKEJsl2|= z+Cq$QJnxK6i&-f*hawA)yE`Rf!RN#<7)hMB)9RGI zwY3$`+V{4`gm(krj}{q!f>q?w0@#{ZaX;NfH1@1i_pf=04kmq9Wd$gRQTvWi0Co|n z$O<>mav6e3eOsu>vNn62Y~SytR{{VzYI((F7)TWICOB<*`S_x}83-f7i1|($dT@U$ zG6Q6Y3V%WZz+qqU9PG{g9WuG+L&~2oB^Rf{J}^G65opHbK_7vM6z` z#f-X*kPz8I*+xOY08?`I)0q78P=k2M&Bkm}Bx^kK zBQ8ZI?V&)D;rtqh!D^#ZFAGGFT|B0My!&&QKwvkoQq_{P-)(S>{^A^13X{M6&8s$xrAqJdRP`0n%jJ<%8(!If@Z*h2SQ*X&V(n*MP+1vcf`?u4|Nry%Z^qv%uvG3Fn zv!|-zTA1m{;CVqlUp>m7o`Oh-za^QcecgVyU+Banb&xyhDU(F^oTj3HJs=+g1ehAr zo@NT0_9U7PavIhb+4Sr+y%44*%N%Bakq`}Lf7`{R4W_!WvP}b#ZiPP+{`#>yaW7cV zCMAB{dY>S~NRoSl=}jdvAHIG?B#h9rP{)Z@?P{&Xa6Rx4#iLl2HZ#56vg(W_P7hpc zU>WPQnI0zM!ainIY@;lHq}%rQTwg2i-FsBBulR9NOkm6FP&9P&6=OK?>zMTiyk z{hw;Z4?YDa`&SXtVxi{k=o@D#=elPs+$8M;k~-`On^vA!%q-ZucOVWrad~+OLIs`i z$4W1p4|LP_w;UqGExq>|fFPt7o#XJvsE!Qggo6=`6u5k9J6vmE*s)d&dh_A1uj43S zi>sru^7-#?>|eZrVtBA%(Dg~o)>QFu?HfxY?CKYO?B>O$dGFDaudEr?^Sf?7 z?6zlLCsSl%2jDNr-5Es59xR)CbZ)6ju}hG|=E!&~5rNM?g?xJGH74$cJa2;C1Rdrn zWqsgKP?ctYp)YsFB{z2!nfq`Y6J@Yxuqul-fcCU`UX_(}sz|HtA^_F7nR4c6Z+~;z zg*x4tg>`mfr;ROd`qyH`JKjhPm3oV}ZKlBJUVOiWVQ;Ph#%l_^2M_>)3zRaufC+Dm z_+2!JZ@`3M!oOc!mXaxa@QWctOIy+x;Ga;P;3M@x>F1 z*x9y#*-E*aL!BHj_Twf!6`3=8{@`m7@=|5Ij6oBjr&?iUVauv`ntw7GWgLoDc`W_z z*oMCDu{PV;x{U@{QswPPgUhh$#$zhs-v0-g&9i$dU_qBtuG>z)a{6*?XQ2M#u>fR3ohyPn?_m-$Faein^mGs z>Avx#-EkuO1!eoZbW)2c7OY$hEY#en`gfx{vD1uma0C7(t$DK4<26{=uy0lHUToqZ zo~?fq(9NGe7nhM7?t4uLj^VkB_L1s=wva* zwuNQAg@tY^^#dl$mcLVNa`F{!W4YfU5$;Sdv(wVp?_@IeQS2e=+EfxrfhRTS`EDKt zcFW+>ogxFirEZd&aGCqurz2N?lR!Csg#jOjL*E?3r^>7@WNd1I zpvThb*{Wd<+Vp6QS}v%4zqbzGa7Ya6F(`bdRCX$!1|vrQ?F(7TdCv`({a9iO`=~?Ao9+amXeo}E*S!-4(HsV8PxN-n)fKO#75WF z;h*W%Wa#4Ze1m4QxqBYiL_tP>zv+`(;Qu}3ki-PBmS^9sj0S1-t~D)r^;e-=JIY^N zqpvS87|f@KPhRYl*Ja<#3Im^NdCikCZ4nIZ7jPHKs)Yk2EJs5}r|r+`7a%{Wh4JQ3 z45gJH6Y=A@PDci>XhQSc7ym~&w) zL6})*4)Hr*iI|$4 z1fs0pZd;uEGh`^$c<3L5d24S>yX27H}{tAD`c7!)zyZVHkBe(#!8Z|XgX0)`52(vw1W)(a`>v7%WL|BcuK@@-g)9t-Uo?`GO_~JJZ z3BN5qg4@1c~m3Q*}JS<-8@_jpY1c9@^?<`hKaI#+$T zRh->=9uJgRj6fL~8+Dv51pv@?AuSl{c3od5TlDIey^Gi_a8QK36n4;*TZ0NO1@G*^ z)!AEZu1`U*48Y<`u?(CL7}ME{}hZ|`~G5b;eub!GL9&>hJ?Uilg+hvo7@I(ZKy%30wjZfnJl2U*%Z{5j*+(bkp z#YpGL**;G&3VxwukD(R4Y(HidJ@2}2%)%;=>%c6ujm#KpUc=UENf~usf8Ew#6x?ss zVDLX&yy~n2%?Fh7XCacs>t+vx$G8yfd-eO$Unh$9i_WlFqShnl9&f@0E>0%QpGv;l ziiGCbP|BUZNakaOvMbyJ)Tg6r&S?Z}*e0VClC9{o*R(67sy6O#c%wOScN&P&zO zEH)M39gp}8?=!$(q0Akyoce_^F#5Iq=B5XSf?@pjD801iOyKtf4+;Ta%_(CEyYsZ! zX*A+Z&E6AX@^JUcHYIR;l1W>>XjoXz790;=|btWgnb3R&({pg}a1$5<1Irh#w zeiVKLoX-mAIldm6rX?X9g>$G>HkH`si59_9*+Pw&<8rFtrd5($;5Opy&9<*TWlYxI z+|2SkiWAjd{;r#vtn&P$0L2V?DV_#fVjYsySDxNW1qHlA3 zN%a5?u`#t^q-_UvUnis1ad2BkgOYQ}8atqmFCPJGAc?@p%l=T|B<7LIHnj!#pQ)179h0Nk2q8q?{j z&!n97iT2hro&UnmrEX59_Af8?hK)R~$D+m2^K~hD+>n96!J5AqCZOcsy!dk%ApLTJ zu}S9O_kf+>=yrQG4~89WYk(GmW>c&Jb&ZWvKKBDvL1T``GBL*i!N&tEu>-Z4coE|r zfAT;meNn%QN$_n1|kLv$Xej?BfcsayZ;fZMZ*vyE}9miL8Hv%fz4 zBsaFiHuYnJZ-dTg!w+|b$H%}Rthh(}N?(d)d0B@>ZEM9y^ADZ_XI;Y$1NW_e9UTwDXoo>~IEI2y>|$-Zp) z<)#3)R&%ao9Q_DL~X>qD~AJ=|00b99Czeon+$+=SvCk8y=am^ir%oENM{^F(o_<;KTITvkJ3!z1tj?m^w+h z%f1Mro50yTadNBhWkUFOClZT(u?CTn+3HA->)pwCpPcz*hO!p|XN_%9@No;{Ys#W` z^xPb9h}0=Ati=p3hPd;Zh|y_Fa+unCVzQ-oZA;bCDzm2>KA z77Chxi8Gb#pi7Qe>H4EWT()VKt;nH0Iq54(B52FOMxV}N-&0W|3n9C)T_2B*)2{oo zZ?K!=%41T17~gL{9@gkQ{Il8e2|n2QjfBAdsn4%%JS`>X`a5W;t=-!tFZp@6Qe&YC z&zH?5Ur>&|cGY6rgsL*?`a)V?$Kj0eBL*cm-*BEl#Mo+i?D)u?0D{j{yHTfic$(3) z+^ycH)3Sl?5-twB{PT*(>QW}jPKJR-`uGT_2AM~^`gL$qLA5kOy;fWXwA&~5Gqk|< znAAN@6(cHpT_4=lUB~n{4l*7Q8(kNrjabutxgc>(66TIBdOfk&vRCuZa+IS6nfcpa zuL>Wl%_;C5J@)f_H^%l6k7eb9*dr09^@W{ErO$Gnw;reH#gvSUjO^^}xVV+E>!*LA z=zU4XzmyZeA5W?vUq?np0GA}7nn|Bs6DWP8F3$FKW~CV&8S7jv<(c(B9q-nSKm61M zg+2x=KeW{pksevG6OwfP^ANDedNJxmz{027&5^~{fB`*XgTXyyp^Jn>rh?B~c& zu?oh_!Y&(7`{VnIZSC!WE8Ve=j)lUBXe)PK6#fz!1>8{2Z`APwR}XRa!OsApJnF=q z$f}|GEwuZdk|BvgFicKHCR)UIq)4yim|sF}S)VcR;0$A!lqhIuI9q9Qy|CjEO(phj zuG*%xvW5%bxrCg31{Z(vJi;rL}CwWsgU4u;=~d<>i(g z{z-|6yZl_^qr-p;D%{4-&WSUBf=Qw|k)yGC2pvfKUTdFxgHDnr8Id=b{} zu@)Zfv=KQAG;BFOZ<;*ix!-}m zM(jl`L9?y#o*9SJKtghlBuF#p=ZS^^zr`u?e&pqQO|FFL$tO7;SL=J_*bd>Vm};%X zy^%ywnhM^aTXEx^i5FmZMq%nFDf=2cuW#mY0C$qG=NnYy+AQow;jlC;KF>xWKDX4z zLs}V+pH4hO%E)nFm5NLqzi{qmc4$>FRY>jG(*Z8K+9+b9_Pf(LGlhSKsBHU%M(v=g z@wBgoHTzC^KdN}HsExY}akJNlby#cS6@IT-AyLP-cV`#Oh17WCia8Qn_k~5yICP{{@-wR!<=Ug=1 zsjoM}WfBZ@>Ps&_p)6AH3@>W^^-bq5e$&SA9jRn4q~Q;SN@-#U<&G~)v!-2cukdo8 zGAVK*PP(Q<+jhQar||^bM>dv}(+IlsAYz9Br((C}{LT_Kqu?VB2rmJTDLHOiv#bX~ zsxJF+J-JrvOW=HmA=n>N+0e+;ZrY(#_rmFMU>LrAs-C84k7V~8`dMzAgHS0>T|}0b zMPFl7^uBD#`P8qMMKlAfi4A@OKOpHP=YI$~L8D|jR>$M^uQo@_&t|SNX#IIe2TkTv>>i&=XtJf;WxyboqYHDg*c+6tW)ej&xI2r1cY%kh}RRS>ES#fcKu5$-_ zQoe?UfIi@CN>ONFI2}zZ=E?MsknSC|vW>iaPIvdk{)i5He2Ddr#=Q;rZ*~#ab5G^h zzP>Y~a-FZH44A$;r30B!VsO9@=EO}Y|89CH$^D`0a9$!BWu+N6FgohPLECmWB;pCJ z7{GyAe^Mdzqh{>c!5Wh{|_#uBkwsRYKIEa^PwG=e|E#yA-AR+=_ zyVoCw9ZeGO7Zet^@Ke5U*I(520je2Vbna#57lCk#Uh>1PYkN}z%(SMiyZD-@isZRO zAKMQ6Wa<#Qsp>d#W+fdQ7u#u0Fh6eH>Gt`SsD z)dMk2?S|MwA%BG3wa0!4y6-X%tKu9-eTM|5U642K5%Sn`FLa!DyfdufkeL9INt|X(gB`rxcTFx^}U=9X}eP;N918d zUZmrm<+VfK40+8qsTziOVGHk=ilBd^F>Bt#&tU>@I%j20S$XAkfA=ENisOx!f)5+Q zt|~{Wk+#^>6B#`$)TW!|MmA0E(WR+y&x>GocM+1&2lnM>_#2g^9Ukw!Sh6;c?BIWEeSJC=bp1HZo%d_l%3moNmM5DDoC%9E;Tv3QB1Gt zTlj^^Rc^J!W@+hVU}tTu5NL3|Xwz)AL}D|lv~|%P{rO!J_&!UfdXXzMC>XYk+&mr> zis^exD5toTUYwMiTqN}ljcjqu3G$svDRP>bRnaf8J1!tsl8+X)4kK=L$Aj1_c~L4K zUERPwE{72Cw|@1`)?~K;)nMhar*1iH&9_X+5hEgt3?3utpfhqW%&XxF`kEL=FPcaq3MV4v%et=bn=|KXy z8s;su-}2~{re_ZuG_J6CwLy0*>l26&@TZ}@h)E%XaKKT zj71oFYbp#xoVQA5Uc8U}K9{Lc+7x&ke*tUtT{UbXOqT`qntJ#AKBT|B+TWhV+Og*q zuzYc;wn8MghoqsdZkE%IA)k2fGeIA0#zZf;rKvQ}iNZgtMM)S%uRI(5g7P=SQ>4n* zB+YCKnW96i6XwMut9^B^REkgqa0z9 zM{Ka|TGm6QtA_qC9Z9i|^O?0N;VbbQyypSe2BZ!`%nO~fqAPRk@OQI$P0pw8Cq=(K zySm>0jd0lJ7oRH@jM?76+te*BBWkp0vVN4(; zdNr{J5&5vVd8`j_2J(0rd~-DL*o$m{)STlhYFjNZsREEo#SVlM<*5J@*^`y$z5X@F z?9cRK@-KaXn%CRovC_9l@6qA{A-Lw$$wlCb=ecK37u8jeEEM2!^WiAL9xVk_-N3`Z z0Y@zy*?!DPngEU@tN^{Iac^W37=4tQC6!ijPOZQ)7AmR?sxo#rO5{f^H% zBLo{=5f;vWjx_iYFfdsEA5QTBeW5hqLPbuOH&`Huo`I4(v91$+{ng1V7zR6Li8A+T z+$a=o%ipH!&rMX$pYU3P2W?7;8yU>tesYp)!89V=I~p{~-ZBJD~*V7)QX$I;lRN{RoXGrx!YWcN1n{4UG)ai#4MXf-6cS%Dv(qXP^o4?JI?J)F~67Dkx z!c`gXZ<_A41jz*+T#jvVHjexP%tevQ>yJEE{`QOJvGe|ufa^T-{iPD@W1i@&bL#_$ z8?{RM-kR{kVzR~9=>2wLUycUl+pcrkY-iezI?%meWgkk(=!x&)IF!-waCydBdj=(7u$ zeO7AKyIK2apSoEZ{dLfILd(znJ|EV6u?UF`eCwf;jmt~Sj;Cv<;_5E(zQ|R@wGQ6< zNcoL*)L!*;ZWd5Ky|Bi_)ynJe2UaNz2j|f5O|l*6MVZvyRCN)WNHn6!3Ei0a!h!LH4kqP^#naS z_P9iAd0d}iZm%|yP}ngL@XHkVeMYV6mb;UaQ&UpjF=pVxHHjy}<7_4M1+1lrH4aU? zcsnUE+mS5$#X*wAMIRMb$kxQA0W0+YAC2EOPD6kg`h2(0&&_pUmnV?=q9$FBhrAyW z)a!n38ep_`gs1XH1S;*4dfjuv}?GfOpeS;T+?|p@!M|4p+QassgFMNmJ zCFq`>IJA)3iu~kx{{sp8yuVQXxWII5*;zRm;ePY9U~<&2UYD{-|1-*aY(1jMxouD2 znu-~T4Ly{^G4{$a_0tWP+KSB&$6DHay?RE>q4dM9O&>EL>Vv8cam(1uPRL*?ac_&~ z`H!s>>)q$hA++XgK;Yh-QuYklR18rEk+S=GQWOZP=0<|#K%vF?o9g+?9ZrZmitwhp3Y3q=@W`OmH8TXi~a zVh{l0K+8vq^C^%tGAk0Tr!El5vC8=TTtIvgbj&A?XtXf4veMNRv>!^O^=J+rO|}5& z`P6kZc=-4h>%G?257*#OdVM1^Ad?jAH46;(_TjX73uL{e7r7y;ZPsQijNb%rv8B8r zeG~?OIHVb36`5Nr#kHRJ7{`ff36oS3MfBL)+t)dccdq9h%f2}uoT)Hh#Q5Nl*0SQ< z!`cZ^KME@vPsi+Bfh)|%#uuov>KPkvh7%G-^fcOgjV;~|QeBnSTav*v?X;N{=Q>VpC9!!2P4AY)zB%Aw_^XqwM(_E1t`z~W8o zH2Ze4Kj3>EPOiul_8y8xVSPnND}daavN8?!1oWdHqePRd4WVlii(<@Xc$y`J9Ipzc z{Ga4Z2K+i%)L2prb2;O^_;&lN?)}4P!X$M4lf~&fU0D}Lb+6<&e@{G_ZA=RiT3Q@&^~6iR$yacP*ZYt(@;_UQ&TM^|I57^rG5Pnj~759 zaV~wU;5c~~l;Z`YiK0FD>T(6G75HT0%Bx0rX_nQ7BWIJ-2j`#}3=AScl_cI~iJZDt zOvKOWq%sgjLT@Tmwnq$ht7jiX7@5*0&1bJm#(27-=Q5>2+j8ia=Bl1U-boa@f!!DM zV#7{Mg7PXAG{)({7eu5?0psx(n!1Z|_uSZ7ALPa}RG^wxKkZ_-09Pb+_rT|fQM(aU z#SuF?rroHr<@S=E+k#;5K)(`zn|LruJzqIsTxK*^oPOZT&*%KU2FJ9X@>eGa7k%ne)He=9Sg?I9OX|ub$^QpqhOq$qBx6;-z4e0Lmx>(ZXvudG70hMeEaD zQ@L|=lQNX9<-=h7$VmC{a~Kq{u?WI4Q$*v0hS&*R{LS)Ti$O8|vwM_*qb zm93H?SD`rS{qT>FPea2)mqc`)i$1e^a<7km+?g}J(^)bbj;y%+~y-h=>t^WIfK)A-`?R9Q@791-@ygN=>NvdTEV zfK4O$dTr3rz2i56F}VI9Ka9WyV0yML z(x76kajkdrz~FC2(rhdMa?D?WlL5D!#-M%a@2}92Mn6$^EWGS zouIGtnw{cI`gH7LVJ!**efcnlS8y~(35 z@o_&>Zm+rGp0Yl$iKi&gJggV1Fd*ipjy#xj+?UzRE*`(dz)qjvI4p*^QL*R1nd5o!8|{fwzBo&E zKd*IG`F%cIb+ma}GT)(1V8@At@?*Us+zN;lYWs_E(lPi1AzV|T2F?va<|Pzw3s)~# zv}JBMVi(x^sfx*;l14qhohrs7;7Ph(2F(_APiq>{j+HDM=%oiGFOCmbTx#fSJfRL) z>Zmf>x8!ia=6Y9+aE@UA5W(=0c3)p_IWSLZE9@_V3rUDH(gC98Sn`-GLCmEGB{bW# z(W%C*h;=$+8vOHA2eoiH0T#%u?XNnYM0PV=&KI9cD|o6M`yjW!{%PKZeAA4XP2Rse zs)z(&u!pZ0pH^MJ_RO9JpSOzNTGnC-`eQ<4T2hv(hW=wbeQb283bJk~3XcQe35iLlOEWiU@KW!#!n3gqj_NaB2*IL9CHRMmC zF7$WYo$d3fj+HYrp^c#=$7K0#*VowgJExxlAt^q~_Bs0K@|{Z+0y*`xu~b1@?F`wD z@8AD?8JB}$8l`5+E%&rv0*o0~jeC8#L-1&NaoY{39rwi=rWQ%-mquLcKh52hC}^vkJZogk+wu1ijBeAq>Rc8LwfWxb5|WaVT*H^^`8v!i0y3^& z8xb;=dU{9mj<>H27yziqFDLy7LVB7<)3Bo>9zasZvr5J!q+}S=Mg<-n_Lmq8(Kl6n zlunbB1Qv^E^>K+%LL;^A5{z*r;3!DRf%ku;>#$BIJf0=yqN;k1X!vtuGJRKpn(0@D zu0eyhR^N<0aztZgWQiTv>Im0S48(+_WEagv=+u&niUvKaIoT2BV)F{KvF?4k4;y~4^LdPivfkvaOci_MowYbjA( zT(aLcEqRbz&_n8l82Te@@Z_QX%Imz&Qvb6?z^Ru8r5MxPpo)yR zj}M%^TmcxrsfY+UKK0>cYmn4-6eun7GYL_#g6P$3pewDK=-0@|H|?u+cFoEJ4!T8X z^Fvc1g9;qsl3hN_!;kHi3WqoL57d!INNRQy zXG;xHQd-K}p$bR#-05c@n&C<2l#9`uF=tN!J zWo-P@M#sap!-e-C1Mh&*3}R+3pFVTur0JGdz+KL8p{|L&J3 zI0%3YKf4tGP}^GZfJJki@L^xkzJ|Yvd!6pq&>H}zoc+`1Q?s{2r+Oj5!{b=J?>hBA z85{3YCQf#Kx{T<~Rg~7o+d8H5`h*aaa-Snc zY@Xf0Tm<6f0)e#{Q8&CWrO)=J?w?t-rg(=RMf4=X7S=pG?r_Ave| zai8-zOG{fBR>KK4GK&if)#7_4XMJQCV%vHu1mQ(aMe%B}vpa`=RJL3)}wp;q0>OPeO@nOf-QMrXR8R zUanGcs;Na=7=I}%pBj@9`p_?e?5WMU>Mbv2bBvSiAwUpe&`y2o*GATlLq9sEbtBA# zaTX$yCbplx9{@d!?r@XDW+WFnnN4}USpQR2DZDvgAw4LdnKO!OM@|_Eu?09Ry%q zB>-v}q*#^)wNYoAMz~fbx~0c&I6Zy}B>_Bd>h@ZP=Oj$sfa7qo25_slw0R~EKer9V5Pw#WFStN{np2Kf zr_ndiEb*jcAz5kkQRN45kdnr@(Q@_WXs6k+<~7D8iolYfBx(-s)PfW-wzOQ+IWb&Q z`4}qO?$k6*k+RnCzy*gWshDkzo6W~JDGvI=6AA| z-;MU{Yv}X0>kR!*HXzlzPe>J9hpT-oCZ!VxV+zf2_gWeh~bDg23JNnXi`0nNoLg9kG84-mX4>oK2V+9)Z z4jppHLJ_qbKhNJbeKMMzFYPh$>{n;A^Y~{leHnl$kdOjN6Yg^`1I?LxniD4`pQVxu zE}@D*%9w~B$gH^>2kQ5Eh+DxL2J8nbtGi?Wi4_ac#Rw_W=4%8i6~ULSt3jJG#}F)) zub7v3uK_BgU-KUlW~hl^+Zl-9xN@&!r_rsZfn?jhdqw57JPHn- zk*B{4((ILF_PE3+Y0!&KEgs31$XTfHc_X6*V~y}lm~BCb;E=gzKLO1NZ?-GFd1pL; zLz$?nUV;!tN;8S48yvqIMBA7rE-cPIDP3onS*$t6%*-Gcilo~j+;ks+sx~epFH2b< z%~E1I->3Pd-WdQMpDbyWtig=7v^F@uf@(Y!P)tLf(BnH_X{8hz_JEA{fpfY;B!1sq zkRGKLs(C8de7Em{iKp3GA#Az3#v-C0(mH(0fQ%sSQc~$j#aH-@Xe6eyg$ghwK3WR9 z;Lu`waiYQ6+r@0H3GqY^4xGP4_98T{@dCHwC796u=Y4JFvNjT%G@2Q0R1r6%F zOOwc`z*~AEAuJjSB^LNW9;6!Q1G|)>;e_wQiZ5CUy}wq0<#X!|R=s%f93)>c)+&F92RZ%Ol(W8NXm7Z!HDspy7hOfNEBePF&tKTp+z zeh*;W-d=60*xajjBW6w|MW#*xXc;aDvG%K8YbNCCm*fWEL#iH9;L!3J#H<3BNrKe9 zixvwyenAr9u{aHX26@*6Rlr-3a0_xz-&UaZeU(qbj&F=nnk7{j-Jv7vPRC^@9?g)y z%8{DdZhh_J-k5RZJ$FxuUc>`*A9Mx}u%O*kwI2HMH+lLWLNJ$(C8L9d*I4qnlT1&9 z4g{Y7!j?Hl5$i!}ke~XYXW;y_ZSBRb>aLy6+5}^eL~CSU*%efu<&i>bmJiB-ZqK)1U!2?#Rb{K2L(MKXZmxU0guvH#UPiXP z`Ui2g^6Ke{;^(cy3Zsx^YM_F_x6SLB?V8JQuG+tY?wokC$;!V)?(N)ZT6zN2Ie^#z zUoMvs+2{qx)%<5fChyz85o9X;+P#%ma*?m<|C6#EGak$NpI)oz985l$t#2Sf2+{Pa zgO}pUga2k--%(+QXHD7qDjYAhgU^4G(=WIGH*NaP;`e^M8iu-dG?QSR|IhTlvgiLd zD~*inZSu&5&0LQ1Wxo5WpNRfDAsy(7JeskS*(RLY-H3D|*(_W2uA99m+ri&O|EK-4 zhVF6WS{-Eh5kYZ}(X3bd{2(%UWdjw8|9>W7lyyo>Z79pgI|F|KC6L;afD^C4*XV<^#)5pjPn{^=nw> z8TscU7~h7CTtlusf2W=B-*TD{(TG}qeD46DF#cx|>d>93OA95khs`$Px)dzgW-s%7 zAXolBT6YVAWza#sO`cGff>Ym2%!B#$-}54rLS2`J7uL+dOhXq+Q?JmJa|LgLt$xMG z`WG`GWTz)a>ok7Uw!}$;Rgb^0j47-CrVXt+rKt4J9$>tP`m;ND`Z@`>E7JPba}fpd z|I(y?|7HCN*KDTRZBpUA!z~dFVYCDOMqSu#rhoPJE}}T(^+je4Ay%zOESC_)nQ7rJ zv(A4vjvQxk4GG*x`AVBsomo@(FKhwhXPeLBac-&gM;?)<|52`OaV?4RrT*}7>jdkKXI-u{tsPw*nj zMp5Pv&MG{SVv{W7?=>Q3LJ*~F$*xPUE8UN6rzXpEMn&VZ>u8`W zAIY_y2f5oI$Ed?P9ukv&_;*}YY0U~k46}=yAQn)ZD1=Lmg6?5c;u<@9+sZo6mq{#-&Xbn6@YMCA|(u zp{2wd?AZdv#?s9BpZ)XANIJKfu|2la;};(R+|`GS*llpne8rs_2^<=^9Z*i@3FWjf zBo9s(|3EO=y$q${TBkl<9z?oGuz5|iLSGfGnjRQAap~Xe$7{h3d<+twz!%c#nz#_; zD32~Qpb$#{i#X6?RF}4L7A-d0Pi-<6-2Ob$mOMB+E#Dj^@XG6-J)sVqa#g~D`c<7= zV9}F9-D_*uTr3o{HZm8~uY90a7FCNPF-T9Mydd!<2KKbb0myVlZU=9p$}Wd$gP)X1We zG6j(DMmr%ZY$@AbJQ5L+Qv)nj*0eeM237RYx!e9eH$YdpFS>x_eSUgc{>I4#UvJ*lF<>5sq5Y3~E>O`A99p4;@&0z-c8C1+>9)8Dgo5PZDVzz zfX>|6W)I~|AAl;WRwIq1@Ktt=EDjDiov`$r01n4#aM=Cs>Vli; ztQFhqeH;|&db^`$7^()in8V=zAn`5cy=ep||k0>?`WxtxvC*b_5-F%i3KKy6# z3zJF;DOSkI_ME~~m7yQ$KAVRC#OtJAuL~(Jv>U=B`Da8k^_8}F{j7G51ghz(AiNce zQkB6*#=bAIQ5`021g#=19qNofM*K-LBjyS@AS z;Av;c+iAP~Egfc{;juesP}QCcbD~59yW4B_;nL0I6is}+-Xkpb+zT?iJBm24%iI}xVq12+T^u-UK?zltJy&Vf; z$5OYU4o14}I(du=;lruLilf|54D1q{G7=N#3JOhqWbe_BskAQg^MQHQ8a*FETgPz@ z#f~{Nuw_Yp4z8`X3IiMhk7uGM3nGk_|6WqUs-r?OGj5{FvXbsAnrX)Uktfr4Rn*h{ z3DVW?8Y9l4-nlWqskpSpVq(LZnD}_Q-cwCS=R>CAW9h}!f1UwT5;iB9D4#-%W!<)G&N;89sbg5+{v6?Xq#|<+;*COj0@c}h_cPLP6TvSCfg2ye1GC$rhztOI{3UKrW@^t<=L z$@$q^Po*YRMr~@72ioc3$@v;OI>X@RdublCJO%FM))J-^PiiDT4m`SiOQhb}sO=5U z6MlRg0aNRL;>Nde`k~F{CSPqXOg%@6SbowR-5iHsn}Q z9F}sE-YN%!#FEcpIrxg~edR^vl+S#&0pPQ1@f;k(>785j4U9eIg^5Zg*6T+#!zxqfnjW>?>U#40Cpc*ix1OzAr3c zBHc+EfWIExCUZ3;esal?CeZy_qu0htR#&0t8eqy9r8U~GWq?_!o=$51lfHcb(_Y%s z*OBo)c-s5FR~N%?ytIMO$y*!wJoY_pDEv)#h*~%fUHzkx`^RKy`O|*IW$b+yCp%Z` zT_FB+4v&I?<9`w&&ez!L{^*^z@d?%iF!ljwk@L z{M3GF%1`Oo-tzD1i11h zW6_5I5V0H&JfMGL>>LJhTt7cdfju}s^j@w_qJTy&|7GrO**we*b_1cF0wMkPS|^2A zY9v6dT#dL=4>snoKr5AkTxJPdy7zf?#+I^V=8d01tk7C;xfWvP zSGA*&3ulj;mX-2oZhVs*2pH?S8(r}FggvX}D5LP#J|(;|16)i&Zlg}tai|Ev=c{S z^aDvO8aQI?+d9=hIi{|TE+M=$ ze?EobqTMtn+_-(tEARN+*4o!8s*vui1lsxe{~*wqrDLaKcIPvHcmP{!GXGP19;1JT z9*ocTS(fz%8ujaGid166I%7tRW6Xh5#{VvFp}8G2oAZr_aJSwY-)3ey!>1{~a>6Ynstm9Gag}lAG-??4 zzowkCt6g&R#yPOpoG#05Cpo<>9IdYBX~)h#DvNOLu;p_OOkXZJr~M~pu@_{$7r)2gBLXscV| z<={)IKm7B;27vGgs(R0DXcf)~Pt2n3`CA^F|3jhUAsAgX|J*#Js8&i<4b8CC3(i*i z_v|f{JVMN_e?fkWKn)R#h@W*q=(<+ozlWB1{c{E}zAg=ltYZxjU$ANmCjYxxjE}Bz zUzY_O$OUs5BONK72+0wWcV5UPVIv^s^g`PIn{oJ=+EVu%>r_8%uhMgQ`PZFryclhl zFz1Ciy4ss+bx62!6KLz6jDOezSMU=?W}F z4j^wdAujf`Z&j`65XsTOm$2(`-+unr^vXrKXX>63tmev?OCPb}dy9d5ajxj8Dr5-H z#^rKGLKrZn@x6We6Wa8g1Cua_&io}XdxD`CCfxcsMt^E4>lEeI!2H6oI`xGFJcYm^ zOG3mnS}Q={Gv=StnzD(Nw3Aa6raCj~;v2EZw#5&jhdVIBzY#-&?(Q01L4!WvcM_o2 zx}scu+#`n0tT47ManW&mlo6h6>oUVXBB5|~9i6C6pZXnb-q5cXf%>t@Iq5$HP2~)3 z$d|QQH>M(2_snqkGQl;9tS0m<3D1N`<)@Nv6GSmU1aCZRqLSd4qwkx_jq<(2188`% z<%K+05d*~aZ>{$*b)PdqDoIAmyBV+Z~d!EXp z-~UZs(-;ZO<)OD?<#C&fh%0X^d)>#%M_~I48?24-^6@uRe=zJc1X65T>}i zKZt*CIdU1f%Sf%veWdxAz{#at5QVW#1|8+bl#FF`?Qo3>r+CM+nr@%EmQQz?Tj)IR zXe6Me7_}`FY<{>Sv9L-vC*X+Kwk;SCa$I$2pKpg=2q?s=Y7bK*>y))L;u)e{fT`5_ znyKHJFqugU3^k$6>TU7tZ_chJu=?o!?O_|>nIsvxO^~xDK6do;kv`Jm$s*cs>rtun z$Ktj*t@0nV?xd1lL-zyawRiGk-EiiM1RGyoC^V$iR;zT~b8HjsfRl&nw<}nK{nV`kgXnhL`x;;R@TK;_ev~CzE@J7Y-wwAK3{h(pq zR_M#T>XPfs^KCy}8zMIS6Fp;?FHt}A12#C_Znx8Bxl2DVKV{ZUFQfWo1UndrCQ$%z zG8xnu1mmM9o^3v=ZomGijNr}-A^zIMH+9J>9CREU3Qc*}(q?ewtHj#7DPcEXb%JVE zaF5Q)e>polOa4n4lF{;ogS$g@WcZ$M_0W*Ug>Ru^sSjHd@2d-wXKwg88LTPX-skD1 zH7OK|Z9$j<_TfKr&d=4hxVwOQ5dwEvou0NW$m?s>{tc-{;P{)6UANFGF<%$_@Lz_- zpY#O3e>1jesM0rHFbqYSx?er4Xg$5$Oz3Mh+0}T+?c^8g&i|p4TySUZ&;UZOFk;KM zwms9fGB9bfp}bRDdn<2@3{ZF9nH?rQW}FyqX9=C=tI%aK=QBVIV9M* z*!JI8!2>93zi~O7GQVe! z27}V6*`P4tZ786$%?wiUR@!t<=~S=)(+iX7;C{3J3#nE%D2qr=F8c9#BMH;3^~QG_ zFEYl$E!dZZUMOLFcx`^h_YfmoV_+`A-Xsv-LunU(rprVnsJu?%l+A4}nVcEk(!rPS zY#9AwisMmdgR3GfVun|X09gly8_6IPDHB}1XW$Ogcf}{5r=ek?jcn|N*~!vSr{w_; z)AfvGpeh|xiR@!Ze3FPzhVTYQ><%E2`$@`NSmeW#-C5bV{I^yl(>0B3Fj!4%A9nGL zqeQ(|_wU%}P)fSo(r}g?tc$v4@b)XiL4YFH~N0igZ>G+vP=(K;Ma!J}Vb#E#J-X zH{c47A*tf-ZZo-clZ>GfS8Q7Lh*pyPX-k>uFI$S4CEW~#_sZzJQ{=tEq=_~ynbvLT zhz}kG*}v){K$s^mTbnx1V%VR@3~wka-%yhLh~Mc-%?LWLK^|48Wt?UP2TRhXT7)q_ ze2*CPE&c#`tT~?@k|5X7PdnvyK;i`bJtaWa+3L<;-=VvP7BIZoA@}M83G$^Tl+Lx`;pYAKXG- zAirqP!>NKg%4$d>9)O`wNCEWpZ}Hf73+$N}PshDrz|&IDZFvdD@?>nkNALaZ}tk-GF7d>3pa#7~z%NTfDtT z#OjLTUn1xvkE24~!ye{#)ISoS85D@EvsFwD;hnB~BSQP^^-+<0Mjq@xEx7>b?#kT} zCis)l;s1i5jp>T2KvXR)zqe4?f3jDc2xRiUj6f@vYCrb;b6Og3RTsE#F!wd|iYc=h zKn|%zI~U_Xvsh$C*potbg|HBqT+~FG&#S003Rk3Jw^j@#BYYteUw)!Rdzi8~TvIY7 zC0x@$r{xxkzh7E<#1Di@m`oPEM<;e2-%uxhu%V^;k0Mk05QPH`CW2osk${gDLrf_? zq3(<4=gKDR{Gs^7Vf2N(-`Q`VO3tjIp7^!yH0b!3m6o-=husmOuMd%%@OucRL9R~U zA6E%}_PP^kxn9W~r^EU*BXtU}EGcN7-P>LTD!vrOAGGb;SdSQ~N586MDDEqGbRi+r zLFf9{5AX87fNtfG+^|-5dK}9%0=a3yQ2)n@PZNQLeSVJEtR12&r*aq7oIh5cSKNGU zTHRsIi8h&M{R7aO8A(LOl)S7s^bH2tTNiOFL-9^hgJ(ZyudPI*PPeQ*0^(TRqaE zlmHe;gT_}DHE~V~z{ZhUi(EcBBaZ{q$878lW093~W+G5`FSZ@vvqIHnDk{Y078cv4 z);ac61;Kxc&Vf3BUGC&o1ajGJ`P4!ZV%h(9_S7Oy2W2PyL?Aiy{AGmySDI3^xg;>q$r^HAZ(_iNmUh7y z;lS+-=t;iBSny^l=HYj5uBDIv+Q|{Nzu<*fRQ%ed6i(_W_4$x!yl}eC7b?`kl>VJ^Os;=IVVy zSmfF9e4{&#mZvgwYQ|nR%M)tY!7W+nnEyE8LgISa6Et~i>w?a8KC}M#t-!DQdCc}F zj^fM5$O|>$D3Rkf5;{&_v^XC@S9s&O1x4t~0^{eKGtR)`O%5^&O=u=;46Q^ zOK-)SDe>BFaf;wmRscXfYu!nS$OxIL>=$2NV->GD9zY^YJ?sI`XVeD|Cuzs3Dj2`& z5b!9R2Wa@+hDX~KgNqAuf64N;n*AAbp4Dh^+sntxJhmk1zv_`FWK<{~s>ml)_(qEExxOJ>>>A>v*WD_yIZjc4!A08I$IQ-fdt`iqq7 zZ+87wvr%H|-SiseM*sbXx8QM>M^gf!yo=;n>dkel+eNX|`5BKZyOd_@a`|<~X9Kdk zRTsi_Bqh_W=i}`=#?P|=<_y!*L3s)g&Um)NOKQwAQ*g*C&RxdYqL?;&aog~1QPic{ zEiN;#%30t(9UgVL-94-dZ=$A=jDEu1VgMJ;n5vvxZ|v9 zR$~6~@b*XJz1^zc<(R`ZXA*ceSEARh?-pumekQr^L^#RF3v~)|z95ceRn=)VT+F35 z58Iq%ZDF|VA8KK^D!O`FJY1aAXFp#iz>2e(S9vu2XGwjo_DuT=yB06*y1w|_mnaB* zQ)cg0Lf~}5WF)m%qJpNeael&G2ZA+3LQ3)(NYIbO+a+7UXCbK2+=SA(*_;2qoSE*dZsfCPGvc^x6l996uw17DZe$UA7G+D7tMAe>(IglVHJL7O5TxMFL#M|Ct5lG7a2b!71svM?K&uOkbT6{-D z;^R1ZbGx4iNm<`IU*XMfm|%Zk=f??irfh_hm{S^PrR`b`_~NzFyD3IxQQPr_di0P4 zmm*-*z4k&t&%w7#xx4y)I4#d^=S;TNT+_jfcCIc&`ah&^);b4+qu#EEcr1x2VrKmx ztB0l!uea(fSu$VvbUYHXD!j%)KXSI>nx=X|&L^8}_<`HjL3@g4Cq?k4a`*d&5ow!M z+G-)JTDnY6M90Bc zx5<3w51%!0c&0|ZGaqOW%qESCs1!*OiWXifg=sF10VXnY{9WIpIPHf-3NDQHZHGY} z=sz+F*~&+c24`KPtR6f}_Ar?bg|XFF7}jrBz8vLBxq6Q}^18}D$%+-bg&d3U65^03 z0b_=k(wxQ>1;=Ykb7cpH6b=6ErTeDVRi0g!))8KXH)98bryH%dt@i`>qEH`Kr8+y{ zxT&rh-4o+glM-jCX#%Y``Ht&fhT6~jv&4@OYC~b#q+2mf0CH*WHt*jjf&c1Jcq6oL zZUOFmIhK@id!RPK9dIZrMAx^esXU`se4SQWl^|n<{F!FPPf{KGqG0>VX&4YN5{Dm*LW7< zl}OL0^D1g;LuZyK)-3uO!{U|{vk|vrESACX4 z=K+9eS0}0NkJkag+>gUVnr>l5!s#P##;EizA3XSkZo7GD5G!$M7VwxhOUQeZL*m-D z;&SdLV3RI&6|^GwdhDJeo=u)`vRsa5)PtyKls_bj`YKTHrV!X*0VhaCg*x^Uz1<)K z*bw`4yYpJCqYtajnDe&{>wYSJuXSg1BOf6aAA(!9NPBaHt-SHrXuhbd%m7p-^!a}^ ze;ztjh?6k+W5P~3E}Ci5ioLX#JhWR+!z?B?y1e%~oB~=^T=y*F=nr8^{;=n_Z@%cj zXw4>z;kCu{=;ER~_i!ipRUm`pB^4E0T4SD@MSQyKMlFH!CNdh_h&s!R=dk0HgTdLa z9<}An*bgq0Q#?|0ieniQ65`X{2hRZeahTt67j2yM%Jt~4yW=q#H0W=$ajWO-iJ6H> z#a~C&j10bu@M>T)M|*iBhW-OZRyv=ePq-R>?}Hj(K+S?!`@DqXd8z5;xo4EbdB~9X z`A=9pUpm$Al#*fr+s&fLW#Z$fhOK_n@Sf4~CUo##98<-sy3<4Oh&Gtd0uU9wlAElq z$JW|Q}Sh8z@a(c^~Ju-6N8D@e}ez11~%Luj0!{rZkmV;tjz^5T#tyQAEthfrq$?Nz3 zR{8~<`r@LvA-a7rBVtOy!U)K}ltBplJPK3IFX6f_l5Gfji9A z;a%6xL{ML1i!g5FiG$Nb=0JKrAOWX8IHMt z;2^vcOc(F?>l&c9LV7*SC1YO9g}*{i4HRers-U(X&?}GZ-?_O!jdr@e;vx(pQV7-A z3Ea5Qiai>Ch~Ck!b~-!wz124Dxnuwshngdo@(_mAXLP$p zwLd?OtF>%e!vYRJ;nAI+0hkJF8%_sJI04gG#_i3i{6wZBN`bwIEMvneG#_dNs&jvJ z&O>kbv~er!rjz*Lv#IBG1KNhyZ(s7Q?VP)rH#j6MDLD%q2*mK&yqb%?rdn-(oks}N z`AiIj^I+Hx{KLg4)R}u`vHbq^>QvE3=mwT#3ISgG*@1U{WJae^DVp1H9QyrlOVM4-=3AQFAKbR^#`-kF?xPT3R`^8%uBgYGJpINgjIDx0bc>gheNzYz!HP{)zNEHhjalOM5jK6l^c%p)rSm@C$P(TE*_%WguU(PH z%vyi*XWLYid$lu-OyUf?J1anbtR~SphFal(q~fgMv^lG0lpJDd^;naCG5lSDis9Z8 zEbDrObeaf%hV-^ValsuV`rU~Y{YU9sWh^2KT`Jv-qT{2(HYSPXeuvCA4U6hrmbX@= z9i>stT_}2^saNPcpOA~3l1}}{iq73)@5iL50`78mmYUBp6yx7CU?8SgR8q$8S)IaX z$}5`pn#HqjGPAC|fGckmBbV37j!|I1Nh6s_lV48`NGE%@w#j4#CdOUV-!!kt=^1-2 z&tG3&yx=}9ySXrVoN_uU)m~IqbnN2~$xhuY775(Ha%q^$c(Elk_;9{;Wxu4HO2m9g zj;^JI#dgo@&CF>i*hCkwOa&Xc&)VAyp}!qkbBKfVXc3&noNsJt|<3aU+s$ zhTnW79u(($dk3fMtp%U(Cn!hK!g|3l?{szT34AZ_5(1QWkP;`Ip!vv%OcujC)ePY+ z@OR)%hG5nyiXn1YsP14m=mdR!v|HYE9Sj`jL$b7*36s4#TnnL{`s#56jMa}gS%_b8E7%=SM`WE2-`@qE))#?iFyqNj=SP93!|fIN zb*B}9UO(vmzzWRg!g7isSY1CW&Q>Gh@-xqWeFBa)y9MlhlDByj9^89R8<-JsAjX0FfFnwSD>awF84Ge|$ZZmYOu><1-HvaGR?y@zkT$KS?P)OT8Cs z4#)-kaXgO|oT$n8NKnkmx*$CT8u^6c=O8|^(fG=HHXS%Vnhyh4? zxsu4UimT@U=ScWog+CDZQpYX(yhp&vo8~HR-hz%8POsgahxWQptAemX;ZnP;SNF0l zekZ#|?zqrjzWW9OgvRy2tU-~R&LU92S_}I0H~iXVrkii}O&VJBBnz+QU`tTsWojhI z1`O@qzrDX83xqCvZ{`MOW|)Lr;wQ>7-Ufy~!9%+z7k7foMIv|Vo+}nnsbV!A$Ul7o zZ+h9-beNjJ!-Uy8*b`$(0sXz_1Nc;^?GN~2#pOoT#dZ01`!!m3Iv%af@Q1&Y3OU-6 zFuO`k$UgT0?%xoV1HZ$L=3&q`oX^tBOc#J(T#-a_*IXG(=5{0WJsVpuo%g9{j0+0` zn^Np=%TMh!j=t-EVrCYVW32{-`KXHnFWM^z!|%K^1H)N44GP490VWl5U2+iul+K=V zSZgy|M~)y;>Pj6K&oYhuy@RSNHE0yY$9axx9sX?Q#V;|rfz5ROjL6{gf-!$Mw@S5M z#oVZMR+~R6anke}FOMBx{@{L4aWPX|&-*BDa)xl)o4zaoNByLfl$C>v6ZEttrL2{Q z!0rEZ(ErN25aCXH9^z|-Q|9EGEH*JTFNx2Tm*Z|EaXxgod%aKDxlGPfTk43-bIwO$_p>zX+w*-+o_8mq zrxKgF@=Lv+0%A6=A-9k0uEzWJQ{--hm;8~nfa$)RkU;%Te?S-CCs{CQLkjRd2zgG5 zfWL7be=RvcT+BAjX}& z61A=>MoRi74eUx-N_VVp09|KK>Mq2{b4%^4&}v9lnVbo3#KaUY63pmLfN|_aoSf->AI>@VtRorPNK_wuw0ig?#YWZvML;Th;rc)A^CYf1)o*tIcE7eA-e1y#i4Y&=$>{#rV|&3I3d4D zy6t;qvu?zC85d1($)Q256yC9`e9PwjKQv5Eg8;2x$HBnEY-fUpEImm>$l{`aE5Yfq z%IO9d4$t*^PU2W1H~XyN#ch$N%-rj$a`NU8=SC>sB>5`&Ea^6 z?}Q%<8Ecsh&ZDlp^-dCb^TPS68@rE|h}|)dG?}gFMB|821Z)S}>Dx;C+)~dfv}N_+ zJ+64SA_%Hzn!h@mO4=G4p6BTqv-O3&=&UO%-F}7q+bc=wx=d%vh&MZNLR|a4p6O`0^PnOhfnvmO9*tPyoyjqk;s6h@BgrRq_ufwnWGXE>FFEAamnsdFqVDbm#*S5Zn_>D{jy zXG_X*J#GYTU9YO`?lO5T{kBd2M52_`5QD-(P>szEx8n`YHFkE0P~g|F(@oA=n=7w0 z74f#`C&@!oX<6p1$z?wY+Bh+8>JDiXP~spGElCfb_V)K)FO8}ZhBnO8xtN+z`_O){ zpR~+-0zw#9YQZ3WGU^G;zf%;|w-|Jj%#1egiiuEt@yRo@j%U2`!X_e@t(0_J};UCGbMSG zvOh8I;%4E=xit(9$@mPk6#UC0rPspP0T=g?KT}Gd(cPqrtjEvLUkP$~jaDj;XQ`5d zOe-tN;uTX?wRcDRhlR3U2f0SagKb^|+hap%>hj(&E)HFzx~1;>f^8QTH$`hIjcD{} zn?HuUicxqB)Tqd2Y(y(Wc9T>)_QUccWk?*MJ4qT@ zOQ*#LR#pU~p+SrFbO@BIMF{j{IA*m7UG{GUwT_W+wK?Q3sSLM>_#NbUy-yCaXrNq_ z3VHwF9rw%s7m#i;0{SF&F}162_juid^+>8(67uZmGz8CBVy`$0BvN`P>Tg&{WbRM+ zRqp3W=*%3WL<=D}C>Ku_6Hia25&rThV~MrP>js6? zI`C8UbM|Ea*H(68qgDl0^(x zDr&)1(m62Q86Pq2o+SU$u1&>86%MIqsOnfr9^ zR=tTyo;15tO1^dc@ncEP#6-XAo{-78H%k7FJ82bdaI9cb7#*}c|8BegCu6h7g>YdM35*!gj0U7BtvN({p>y2o7v-t zA@b3h7tGMH+E!Bn$UPpWO8rq2jp+;84bTD`h>nQ@%g{@Rnb1t}m{#Y&J@fUjRG|ri zAcj@QDg<38FQ>;X$4%yLt;v4t?YpG}=PUcsHLevLN+Y4Obov4l*HtbwGQQmRM&Vg% zrCzO}guJ0TF2>qz*R;mEtz@@Hzuf*f_kFA<=)zbql=bQOcFjC6bJ*=$8TR@~`dqO- z00Bi5&9?^r_O|Bm-dh2iAARPIl0T&N-Mo7uK9{Ndft2UzE9CPjRnm+bN+R1+13`fV zWEfc>qisiBN@WA|B*o>q8ULT(pYAEQ7J5%$F$(q42yvEKYvfolZ!h2Ay){N|^7l|v zTR7grwAPM&BD36Yd@x5;bl!V#bDH&TlyjQaOv!)wvHp#pazigIN}(}u3^VqzGrwFqpsV1H6guLVXR_f?zO4Yr86uH`j73htx0 zB8#x!{eCf3y@j6kdxt^IAY)nNw!Dvb<3*A%R)>^kpr>XCJ$b|VRa50h^WwX};lk2Q zm0HuwtB^jEGyChWME6wNTh?=Jh3_C+z1JF5R!}GXA3Yp)lj#|gx%cB5r-rFmDQ(*8h~Zkr)Id+VLqpR+)T>kVc) z%=h$zjrHB{v0Q27be;_gBlIV=uI}SJ-)h08+}aGv{`n!v`0RW8_3D5Jj@hr{`tl3( zhIQ7-L7Y@f&QisX894G( zIbLi!&;MK`4=oqh<`^ZG^pbntkx9DR`rzn}zrPUgwgKATRLCU=J2u#;2lg1ieyYEMeF{rF^-#O2k=ZYzRE|AuG?8UJ7~yQ_UU zorh6~X-u^nN`e~2_K|k;nU*Eg>QNGWVt9E+Y-h>v{F@eM!X1m{ZR>X!7 zQ6gm?zN10b0Ynw7t{h?pdQJsP9088E@d?whJ8o&gF_{Qq6c`rA6uoD2CBRaV|Ke^9 z=0xW^%mwr9v?-{a%77~7g-wyV&GqX*;sF~NjTcA3?B#_7W@V!?^PG3N9(_h~maWUS$OB01!=`QZxKfW4xdr9T9vr-?fqx?m?M=MB5O3ZmP1LiHR zt1vqGaFz28Te6YpMQ0266jpHT7NKrRjJK@r;qUOnjg)t{UM|vZNdF{vQE^Xzik!9j zbVGSYx!Ff+*g2%hZX%}VU{4Ots|^-!$!D>B8+xmIPX zTl}7KeIioVet5|@KCT16++*VuKE0oqNaW2V54DS%svfsnztr^rqQ-blt_l*ULq#JJ z<$(4wFTB55(n*euc{{9lo1Me^;z$pDy`rX9@k-oh=5%I;HWKPvufh}uUNs3BaUwq3 zr^Cw#s^B)ip2r)XA5XOgt1GJX9kzV(beO%3AmA#@T5{gI8PmYn` zFn>?(x5(|c$$gTGF3ivxq*XM&-cE;3 z#kOZ|tnamU+T*neN#3>2Gb*^ox{eNq$5e7ms2_h~QEP%VG6^tbV`TYXY@}_mb9W~0?VE_xZre`!D0>+R{y6=n49HvqxWe$GS zdH0oB#1Vefb~e_iuJ!xTZy=KRs?8B?lpMYK8|B!Px8o>6Xz-#i#b%0kt@i2U^_wM~ zc1)bKb|1^#+53a=7wJ5MDGT9zh?G7GDfveW+7p{f6G;`uwfL+%_?zQF>(Y8=$JAd)ejDNSM zP094EnlKza4j*K`lU)U+aLT#GeNUN2ss0EP|2KJ&^VBtkob;3PRqf@;hX!k_7MXEn z$K(33A7nq|;RsiXPMlhb4I4^Q-^$BKj>LCMOJ9#a+)QGfZMZ{>FZbf}$q@Fq_$><< zH6uT(>!)V{hI$8zPlh4&jqwa?#^X{D`d0+BL<%DG#t_Da=+2r|Pyh*0vPq`pX{K0{ z)EEbe1mfMP=b#u)qLj#PB9vtI7~I?Hk|a7u4+ z-)J(>(^_G#X}lyTJDNF_QL**~_r%!mrokUP&^GrgPe;`898IzrpDnvVjoCI_0o0WS zpf{KHrA0j=7D5~x89akiPI5B{#68BJe`3C@4PCK<)f*}5b@SQqB{ho}VJS)XITMt* zSKS63kxuSCx)$Eku`*=3IvHYHo#FkZ?j?E&35h`Sl2R&@CMPGCrP0UJUSu(n$cWJA z=Wv{mNfH>FnFN0ExP-$v8%{TFF7zJL!l*red|k9o=d$}48=gd zBBc9`%9FX43>i76TBCXRD0!Jt1&)t#56g3_wGz4^Ec3{S?Ns5U9Bc4m)>Q)uCbZr9HBT7biMub6H&l>EH z(l-ZmmN{E_(^1VHC`FFgY&c(Az;;2o4bkzQ)rioROjogL7_E{&Wi0^_ zC;<32`OO|%R$QjYKQMd!B#l(`09C!~v)R&o(+cgV-|}?AeDTi4gQZ|{1{pY~-xh(7 zMV|{FIX)Q2Pw)M8e6}0ezRmnzHKoB`#i09_w;Rld8$XDEHS27PEJy4C^(e085pj6` zX~(=;1KR0X>7e%|dgowXqjRI&k=<*xykDFv)8oSVQ+~Q$tM}8}>(6}L{B8HP?>nnA zP-s6a_1ns7mCX`e`9<|WR+Y_EWT^I`!b2+(+^NGeBPwxkRb1JYhs1;WbJ3v~^4w$4 zAB;8i7q8diI%iP!$hMD%U@o69W@gS&@eqyPH};+-QbW%zfd`#x+5jUuVR;MyoI2SHmmRjO?}Pj zr#bmkvH7PtOmG7A7o4{-3WjgpWeCQ9R6l$aB;YmU4(05WYZ`_}Yx5qB91LBal6hWT zmNzGHntUyBV8)PsJPc3_Yd2S3I+k~#+m}k5&HG042K<3&ql(tpOwibDbkI)}b#;Dn zGP~C|e|c4}FT7c_h@rsh~(S}ICNPNWB#N!v46{QQWMsJ(;U)xN5 z)ZkN<_@dU{sneIV=~Ha|a`!UGB=CH;0;FHaEJ}(ugKJCb9jE=~WRk4bR?$;+9E1^= z?-#AJ{QCJL$}Rc{C1;M~vhLsR7+In*8ChQZB8x{Mu(Wa`Ze*nOrFa0BtSU!4e%G+l zVJ~zvp8-xfkOdW~13Jr%j3-a2LkSg)Bz(ue#1cme1R}_lV)@^k{-C>ADj!+eDK1vY z2(Sae{mo_HopBwKxefKKp=%ou3V~U(%zS_h)kImO^k{x2?|axaI02hYv^e*OLcc#r zG8OY*rRcGc9K8*XCdyZ3qvU3x#;wqAI^AHVJsKqaHP416xd@PEnMQ6b)N@zD#JbuM z__4~2&*>P(2uEhr_3B;b(m!#vZRxaxCDX|2=4CgEwF-B$=|qoLzJyG=fdN26pMS4i&aP)79KM^ z@&olP^GI@FxvlH*S-}pUdYf@>Q^!n>v@4tWR=_*>UE5iS?+?!F3hUh^6Q`Q$VKWu5$mR$`#N2XX4 zbKWZ1z0MK3eICir;JT_M9alf*X$LE=$eurm1Ppv>y0+XE?=hjv@ESF0Is4iEj{%_o zQ|~XY)!R6usWUt_@0%_qjg@d`EZ}kP74J?~vo&B5r?;C-2IgB8=N94nX;)GizQU>V z_24YBlecp8^g*ue)_u)4D%9L|lh^laOnFxuf= z=u1CWO!q{86}RZW(P*9eO{=uJ(QMxgh^z`eCm9&Fn<=*zKPUVq<&#bbE|HM-@GGuvXu_JUf6yx1_qZP-UMdAtPQjlvXaZc_ znD_b*vsV9uCID^@f`S>>BaFY9p7aj8O>15_BW7oO)uxMm(i$*ck-*P47sS0j89xlv z`GMAw7C$5R5%bOZs==WxWn<#aaZQ8d-8i97>bLSu7C>BaZ^UH8&(4nOTddqQTSxDI)kC& z{;DaYS%((rn>}QKr$i1Ashf^2wL90)52f+hu0|4HQbBEcnWf_myw`3T415K+xve*D zom*Uv&T;u1^j&Y_KUU@EFSb&C2#H}n5K&T2?8DkF0}5QTGvBzTE@tvC_IcQqc#I}j zvwP04fM`xWf_NOx`nQ(u)t~@ky1{VD@4a`#EgtFXTFtC>`6wLDhn*BfVK>bjr>iP^ zP`xcuCk9i7o~G)q(>*{bNo%zxarC_0qxdFaEH7V`9|90PX4N#wLcWlAXj|?AX%ujFMgvT>44_s3 z#c#N_N@<}LP?^|{B9jSk7^w!9mn!G!ehPTKOm(&U2HLnF`LDU@c+dt=vrh?`Dsj!q z?vcFQ)nsNJUJpJa-P;G#e3x`~R7CTXix%Jaw>hJi^GOtcgfJ1 z_wl7)OSJJ{wIpdW#nnpKET@A!37bgwZJ~z>?lOMF@=Urc*<^G0)q$;E6|t zD3f}|tA&!+<)+MQPGStKM6T@mzq_L|JL4A*g0QJc9N9nM6rg0AwIYF_dG(p`wV-^J zv~=A+bvWb6q%tUCP5b<21gbAVt>m)lO%BvEHmGQj(YlN0ai-E3;Bm-L)<>?GrlXRE zEbQcij6s}EuK08=ZLC9geyA9zJmqsVo#lHuhM-tudU{^^qW2XafZU-%A6H`GLVpe} zHNRuzck)QLrhE$3tMznz>Z3o=mP+cjB?ACkH7FM4lbv6(t&COdAd3-gqxHTt>@^S| z5*Ep$y*eO~rimp8Ct$%C*N4|e<>p$HQC`$%ih}g{doakkhx8>(v{h=`4rp9h#+!&; zBGO#ZAq2?MIzQ_${Hm;9j(+{F^nDo9ygVh0rq`5xa|s8;4Rev#$CW4~5S6lrRb8Nh zYBNF&9C)R%=s>zL)0g=cI|=^tjAB~9k(X(-qT~K~Pc)3gj;{mMbxTWxNvpV$;7^!8 zS6wpg{2H4SUsxb+dV-lkkU;n#gyDig=UXpa@~>FONAl9s&>%>cQJBi`Gglip54N^4 zl<^-`hrmX0z6wj-C>KDAa;EsGVe%0l`RlmN2xdt4cNKlb`J_Cn)K7m25;tG8WECjj z=xg%I&+-JtX749iq6PTZSA0UWYL9C{pPzmPxLEYxUAzN3tJ$>UTW=l5Rf?WF>a#=s z01g4D8(O8isfb0l*#4L56lL@Wxa3u5d1PMg zEJB@Rit?W^=S7~W(fUJFQ2d2(EzN=5k|?y0nZCRU`k{9GKftb|Ko`~CXCkv@c$k!oY(XgZ zr{LTN$qMI}ORxM|Bry;^Ym|#^!JVPnAkVXPKP&I!8a$+(@&+BGNTHXNl71YZ{zd^j z`<({lMN;vFbo2=B&Ob7J`AeshK!nkDnV@}A{F%l2a0TcFbKDL~(o-_9DKiiI;)r7p zBNBti;3NBsJ4(#8DOPrZV_g}5b=r2r4aq15x|;NcHpqr<%6!ps=i%t2g7R)U^(spV zZc_54WdRK|e%(HuccaOEaq|3?IX2Ck0s-PI9N#Z~f%01Bwn#1;2&yZJC~%`zs? z7a$4NrmJCq{9ZxWE)NMOcs85G>_MV_Tqn5Chz=KBL_7lBzBb)$|NY_`g9bWWLhS^1 zl6?Vn2GN45%+2&?7MaK)VkE$r>N3zr_Y*J&V?Q>a0Ie9}ORE<`7N`hKwl^fF>Rnbui6GO-Fem0j>SR zWenaz{R3RkS4C5oPFh75AIu&T9WCs6K`drJj%ru%v)=Z^0}TWqN)O^jC-xC8F50nw zZ@I)s66Vxg49XU~zHpRB7|&eFbTwT)Ut%3PGax>g1sa%{Jg&Uz4|D9={Bk8%2 zJUgD6>5omBM?m?cod(#&VF;EWYDrNL)o!1|6#&FsU8{d$M5hb*3J*hwkU4t#`aod^ zbup7$E*LcQyrRr?D&LL{45kvB7G6WpxiR%AdzZWeqWvwdAKo;v9-ew=k>8u}AG@zR z9<(d#whx9ngqGjm9I=NyXzoz&PakDDj`ze#Nl2KPxs1=Qw9|C_g!SM(em(k;g&xoq zC{kN*{Venz&b8^{%9d>P#51K9hk0LjC_7fL z9`5PDgReu*zfI5x`S!*&e;^j}Y-!;5r^{Zzc>Cqb)5(Ohkh-So*>Rw6`rRzC4z>O9 zUc(5HkcQg2|I9DeR|EHmsDG+vRh9JbYyxU^_r8Lha}F^hdoGW5(dL^QNFMvQqJ09MWC7_YZY21bX`xhHq1VBu`>yy@w z2z!={J8esXy6!j)vH$%sISvj`=VN0n6u`@<@cFmK;nmD|9UT@RILJKQ!xqvq@P5Jd z+kXZL3#k@(`zr9CJWY(E>+r@GmBFQ0iNDaWwWl&{&42zG|8q!+(o7$fskowJ-^u(l z^Zd_IAo$#&0n5k`Pqzq!TRaneDHt0WCbEorF_18tJ|3Ny)x_X z{QvwJ;G2SyNji<+Yg|jWX#e-`7|VeWCE6|O^|$}eTXP@Bv0^TK)e*+_8ErSL{r5ip z>qSv;lI{!FlIl;)sawS*4SXc2&NwS#>f>S`a-B>h!l0nlduEL_uqzt~)SvE1-;4i6 z+4btp^)h7Ok?){VM5uKWYhVMVxMiBvr>4s-rp=~(!Wb2_V6qOPXRZP+o+RVDvUc@S{_U7D7T5c_}DL#pxilmf634b98FiyNJu* zf<~Rm=@^QT*oKyt_r`VT#U1TRy6j9~H{^fBd%$(?grG=r&vx{^50Kn^myg&80vbk< zXiQyCwBUK1H^%Gx>b4$4dBy zx zY^q-f^Um@VQRG}DG)96NXQo-H@6-?vJqshz02G>nxrdJjRf)+g&2>L$TB3@HiKg=>W?sK3h6CV8G||j zA)zVUg_=Zd21L+ZZ#xY&`6z&mjzccGf36nphzlytr&vn`(}45%o>m7^w6y^ndcbqx zk2R;T9lXAQch%XaBj@pl!Plq}5_1lt)-M;s^HknHi`&uueTa68vA<|Sy*{XO*`CA^ zQmEhm4PP^!8o}|?9*Xp5x_W!FV3Bnqj;VDLek<=7Vg9tlOCXxplSiZrQ_ooGXhX6^ zAkS2Ba@4DQ^C6r_cbm=261pcIn3=6)K^3eFxYUhOfOn<{-K4f)O32?G$7sSmT5B?b z%b(9AmZR8HSob#Z;U#;_b?;Dq8K88QTF%X=lLGrQxKBpb0NF0X+ta|%IZyOu=f8~? zYa)!ZoGwvrwJSkB1xw_+LP^Y@N-WJU_F`m(edVAHXB0f3g9Q(rl@o8pmbiIx7e!@J zurd*>^wA0y@T9`9xlnX3t@%9N{v)*~b<%S|gL$=9lYs-t(U8})mXdC|s35uNcUv<)QiiVCHK(fmXT|@3UD^ z>OwLPAD^z29iSI;CRvJSSb)!|t=429A?C4X(phXU&Q}xUXREzq=->{(tm21ytvMf< zfNozIykbVsvPw>1$6@cjAOt(42Os_w4Tmybj&a59ro&TT0*vvIw%*pV_|4~Ytq~p( zFN7@!=!bM(Y9j}Un{&^(s$KyL=1rDrANX4|(Q#Ey)b6tEnzs|OQ&CZ<`?o5|+30Qf zb5M&}&dRO`slz;HRnRD7G-}KxMf$R@edEq?;*;yeno>vEGC+9-VS8F~gARhrXi@!| ztmy#OO3+Sq$BuXGYI>6xwH(xlg@4~-9dI8G3CS43$$H0B)U{3I2*b2;!8MPDAQNIH zAFM6!HnE)w(N2O0gJLybc9MXCem(%8&mcB) z35U+C4x1bItYDual^kL22DxD9DXb_||A7D|XM!W>eD3;GCZWz0tT&>-N}j}Juf^

GuSJ8p#I9p{!qI8w-47&;5ONgh_a;o|)$S9`8pRXmX(9UFe4uKAbU}^W ztIl&Ilxa*wz1u4+Jvx^l3UyGYbB51H6ti@n?MqwTcX`82KfmY3OJo13IoaOYAq4Es zs&mc{<^fIXoSHhVpD49fl{J&tV0Gyu3L20)^%Pqh{2hG8!a9sZ&C0|F@KKXYg%aPM zqJ(qJsTOfrlB0gNyd(VJ_5cc-37R z)!(G52_k7b(*??lP#DK_aDi~w^sfVT7^GTWKgtBTAIQ{5VOko8fjTvcF$kqGJ|cw~ z(;uq+A_pVtu8{onRVNMvOYMh;fJcl*+i;5QS&Ih5=$}|o6sO>mm<^pN6KS3($-65B z5THs0B29+)-*4+m)vz&W(8WN1<_Jf>qPmWX2PPz0_wQ5C;ffRJDQV|hLF%4w>YzDN z@TMyin(RyK#*Fxbku6x|1^1hU24<>MP!yV_WL4jI-I6orUf`D7HYdG87mFtq2bJgP z4oOI3Au%rfrq#x(E2fiU*wz}Yo3%#+C4ZBUV~%Uy#>bhwD0h_8hvo<6h{p@;lv{$o zP(@doXVug7rqDf`MmN0mBUiD8RV-W&XK1wM1JC51&>{RLVZ2b+b*TL2DKWs3LRcuM zQ*CNrCfvLO_8AGSi(DW+!GH&!=JT5af>HGxcklca7Jkl~)5P_8Jja1i5~tHu*+-H? zIH&dC`DrkxRM)u+`CHtx4{#nFp!eVVbSe+)1?mSHjz-8}f<$=EjGE@d_D%x|@<{dV zix-c(oKJd9Ub`zt9efb%*ZoMM>bwK>oGp6`7Cg5FEeM@zd&)!;`XGoH5I^oJL!XeL z{bFm!u3wt#Oa?9ihT&uho;kXW{s4*R<64)JmI?#RIsRJ^{YX5$JMKSJfuy`=K!qRK z&sJv$==ra$FIG`jN1)K;E?HPbR^?hE(|lCsVm!RH^rYO5-Vf>dBv$z8Z%DbdzbHJ? zW5^^Pl2dH;I%Tp}l$u12AtBxIqq2AewRvPpKK>-K6*V=)!3JJs%Od?q*ZI$0jJQ9; zYUSbKu@Y;w{M#odwTwJ?dw0yA-;!X3P0_<l2TOLZ{fYC!z|< z4WWOy;G_-8Suff9g0w#A*x7oANUoV zFtIhtZg79ny>nEhit%%7j&eW-hkth+f5(fd!~(m2Mo!H(<8Jx)56Z;`U41yY*PgoQ zWdFqDhr-BMP-k==qJbJzc_BW5&lJ;gUccy1h@nnU*O%7rW_x(2XutiLMNp!8CoG}g z@G(Q(u0yBUram_q)e&jKvH>V>opzfe-XzEqmN#$t!mDo$m;dKh~o~-OjG%x1YPXJ78qRm9<%u@*qI$gQ0o<&i6X`!HGgFI&Sz# z#APvWWrE5jJ~t%A_N~i9fH~!#)7cUSYA>|}A1c@>u`wUf1exc1{*F$Cg*1bXk|MX4 z>OK30jY137PIJd`?i(D%T8k+UN?-*O_IAhF@PYCxFIgm2rdjBDF~B#;vX~iQ{n3FT z9*?YC931Djr;ZqKE!W6tQXg44@*U?yqV+pbwiX5f=$ZhGt{`gMyFyN6P%>nq`y1C~ z`4x6}`MyMsr8icDOt@>QejTk4UCr#?;LVh@MI=&uv(GNh%Hedyae3Cm-^d#Cp^w%4 z$J(DrJSqSq_DtusW946g{;{7(0SUAF?oEMpaWTDiy)CfZbk~^c&j7e_3!S$#x$Wg& zP6C>!+OFz1_{*w0ScRx{{z`?W<;TJ3p5j@{UkW?$B<9{WH**RD8ev7@fEO!NGP_qk zPLie{Z^$@1?2m$pv%Hssv+Wye-3C~nyuXZW{?|*9d-d7;YMh!Z^JpTe3HcFD+G-Y5^v*@+fE1yS@pmm= zOZ^F7?mtK%+O1c7-;`L)G>&k*_Y?8G_I!;)haH`n?sie3*nCniUIxHa;S#OFzpnhc zrFTkwuD-GwbO?R{lA$ipnt|A94p!~zT(dhXZ5)hoq=bhTxy+Ut)s~$zvg3~z9g)dZ zH~T9640xvH;|xy#hwiAN7^kUb1{=aSOraz0O1^Esy%74mA7#@ePMJ$vKd8_#Du zU6HNl0sbz-G}Qs1-yY8~yMk98l#1u8rNOvC{1Sk3Yb+MRGitbN79niRK!#P2E_i0% zA-^whyg%S0HcM@^=nku^vjp{Pyf$!JFHQHq$$EDzJ20agxty#m(e+pLHZnt}*-N?l z%NwymL=boW(ru5D#suf%2?{Oi(j@ITzMBxjYU&_@>RJ>dbguQzM56?beTi#-cI2rF@i>^q4Zq3A-I5izgyu zVDBa`0UA22=7sbLLr+5o*K8#1_C`NygMY@e<#`hR5H!2>OYq3@5)vzP*i9P>$5Day z*c4Z%vdo_6_}BQDGFfd1YT~?ma*Z>%kqBIFw53U^v-@lXqk{Pge zLc2c!hDzCOysg9o?{mNOlaMtFJM|7?akiX3G^}VQ=#3i{l@ z?RlErmeYZ%NSBh^LC`nvTOvU7!IEmGJy#j`OEQY0#bfLAcHu25KoQ4Sxj8C(nWC*I zbc^?Uuf$=HQ)#3c)8pdi0)a?ixY@v4k!MICWR$;Ij`5kJ>)5GL6wWVBg&;#S9ex8v zlP_S@fPZ?Q3#fdJbmw+=(ytz}?hjl$8tGEPjKwf$8Xm6A3G>q%EgsW9o^5{)!1B0A zGJV;374V<@0o!Tgbm7Kj-fN-3aHlTGTV|F|{EG^kVn!@j0Ih6P#uQKF1115}R<8@& zetpmoC|$sc-~0TgVa}$^?c!3k)PxYwc>Ne;N#vz{C1#IGjcQ$NLRit-R_-=(#-|{y z_M^#N?c<2hk@OPSYUKHd{xpnjv#iHh-jbZ~3b)@93StolXRNyD2dfkZN5Rc&oxiZ_3_6*1;${|sN`b16$>dgcG%s;{f; ze{#%i7pBSJ%69*g_oil54l{($=d!yQFY`^p1t^HywU5lV<8QkwdZxqFDeNh!bSW4r z-1}n4AL2*>s*F;bi2LBmVR*7YQLrDSF0QfFiS9k1D9=eU*=UV*sMY`;XJF??6d6u< zt2q5}){(M5TIipg?w}Y3x1MgWy0CdEVn`(KgYtnQiPsro&D+eL?Uj{>A_%%CJJx?{ z-!=G&cyab_Q@h+hnU0>FCG_=y2?eC6W}pC)iNbBvTWZqv4aQk@h;B#E%4d#Co>g47aD8fb(X3L88j}OMMAjBC2U0Al8#^tN&H<2A zsosv{hZAQ$-zRj}#hXXn3eMy^XJ=;y8a4IVK&489Q*`R1#>s+Yt2i z9={>xOcikj>W1MtMt%#adw|Kn6&3&AOv5J|ptEN5tFw@EUqd1CA*+#Cz@793-KJdrqcHZ0ju-oqSU5)P5-LgFd6Xp-Vfi4i{`UI# z2Ma31s(|!0x*|g8!9(sRFwLA~l!Oudt-r{F_+cQ+nZEiyjfDhCoRJDC4Zb9?@HdI- zEphR-N2r^%3a7*2a~twReU{Ixpxjx4Zy24fwPAGr+alhIK$gWwB9n9+P|ZZAtd~!_ z%m7OGsgNw^4`cPk8LS<#b(56gg&P6g^Fn26s#6#{c^B9mzK2sG)i_)peNN5G(n&ZGbU-&8U+g7jLJPy66PN$doVZ=RV*&uKurT5nSn&P#}a)1Auy(s@B?i%Bg8=kN8r~)#(mAz?O3{co5Rp{ z0~II$(w|%`Ij~Ae$RPn%XZK}NZqFP<>LMo%OXBph>=|+W3fIV4J6PKg za0M1KE11u^{Kl`}9+6e1sVmJ#Exz98L!MOkcWro&51cW=?qkk;+WGTDIHLlZyoZ6V zD;~E`j|@SLYjafhyA@BZyPhI@nlpy5i$K+mk0|I5_k34+CuRFk;Yw_Kk_3P>3XC`$ zKvk2%L>a})D^ud`e{mQPYDuC!Jwm zU*$hO2Z?elNu`Wnnufw0zrUNh1=4{>XzOY#b zxT@X(QP}JC3o^4O^F3F)md!4_H$Io2hvMgXbv09lBm_w2y~A*K)IP$u+o&oyFmiW* zK+&>`7x7M~dNadhi33#&r(g${T-Q)Xx5hS)K*qd$Ivv|mQBk(DcW&buo#K(e=T%sY zkP!pfti2iB>s`k4??A8-pE~UuSr)NiTT)1RS}m%|OH#t3Fq4~e6YM~3!ZS;GI*w`& z8`={jC&ZVVNc9@4D9oYpPc{y9^yDIzJiP_egLhS6yjU0mq+ScWVn5}xIws%5sn>w& zouzSr+vHmK6<$p3nQ_ z_s?D8(fi%3J2`%1cq<<(ADhC=cWEmS;ocoH<+7~+C(n|&0Nun9_r_b=Y}umi0Dy4U!$~+lF!fpC5iH8 zGfss6;7gQ&&8QTbmB;aL$%@tTU_bJkfyy0G_#Z8*n7&qP4xWl?PuF1 zfVM&K)7~p4`LwUg!9UU+7IqQsCwqYGOdKrqb6BeS{*cV>CDdXt_Z8FZoSN_D$z7LH zBWsdLWL0*-Egp%}4e!e1^@D2?TPhWHu(TI^o+MIhY9NLw9~xmav|V! zR#RdIPQne+CnJ|d|3gtat`D2rh$rn87dsp>^h3GS(gcK%INnT|+WcGOK%XwCS8pI} zfMOcdnO^hYq%S+l?O1BBF#$AT>9yMX=$|y#YyWH=RRIJJDL(MP`Hvs#{Tty21miZS z6j-Z)7ICnKWEq1Mt78JxoW{IT7 z`ilRTRio{o$60ILn9)(^J;o1e(OFiJNQ54ct7#?d*tEZ_WPN&Zl&E>TCAgpYBnSJQVVMEu?5nx`FlV0QVP7#5A*Ko?0P-E8ZW&%pcZKz-SNl?rY`FjrBW&%`K(jGWXG z%qSMbUI-TTOCh+7?Yuc+Ga9TP3#>Dn<`rfL7zS-Jir2pA@gN)hblcK>S~$Ov6$tEq zp&)ENSfrVL6LH6tx4-PG5@mK!mv8+*ZTVgRl#bPFyS-3uJnU~V($&EpvHRvT2}o~5 zij(BeQ*H{77va=UE)AL%6o@vh2nYg=6GX@562w232T$pMv*XEu4hi1O`xkdkjE)pX z4!L3ljuv<}LglD^ivtM5t1eXsW_kOD8?zwjKoT!!sH3?)Q)tdIZ*&Uj+cVv@#nl4e z2Ul5#(rwDM(WxA5Zr@YiwZ+nTyrm|`n*uNm_dL(xoCu!C{(6!aJcSZ{DrbqJW#t*I zpHX?76ux%+_whcIT2161we~lu6)bZT6M!fimaH0*`B*jt^I?jIUv1o#Ur>dGUJTJB zr3BgJjm@yrW$Kh3@&y8#Y#(?* z(1weEg!VF1iNhfMH#@KFc920W^_fC8W>C(F!iIX^b8}R%s`J@?hxEQ6jrnG>RE4r+ z)q_|VkTv_3|Lnv2@if9I3Z?6ESMqXt>FOM4KQI^#j6XbZ`d$qTG0ER~T@L7X5P|rk z&(1eu(mlKS1Z5+L$FfQ+{W(&7orQRTuDGv+On}$WIiSH}?C{;ihN_^vi z;d{2Ycp*nE8&kSH$Y%8^%f7>nh>oA8+j%Uk#hSj~dCzAIR4ewmPSzKvc8&&ITsxALDH7|qAa)eU_gkFQobu1E)r9u(hEsj~2g;yy(?_Q$R!D+v2~KH6@dl zW8f51hc=AGHT|hO_bW<$Ih!qv%`EHvO$Xv4mhRJ=R#b*(acwJ`x zBxO+PGC(RDV=RX1icjFjh1{uD9c2RjCCSg4Am~C?^UBQ?O)l05MB+(PXAr_2xuMQ5 z>K|$F;ascCmY!VIb@aP&{-{ZU@gDm!dWLfbaTFVW!p!P%&6mPuJ%jo^YtAj_ebJVr zIDH@z)X&Yp<4dHmh-eG$;$9Jw9+a`4q?mfK5Y z<(k`s{P-;sS1VS3s08>Ea$IIliY>oKLelIHEBv5JYsTpE;4H@@(@v`gd(qnz$7n7z z5It%h4}m-@`zwXK`0yO^Nr6r=uy)dj>*4)?;gRpv7!0=%H)vA)-Q&$c%v^=Gx~8tK zc6&*2bxyU{4_o*@jHA79ebanPBW(S`n8H8m`NcY)p8WGIYttXZTa!HehaWH_Jg(U9 z_kiS^4}#(Y>_V-$y?#y>^-sn=sFQbAJ^FC-YL6(UPp+p@Zn|1-nn!iWL{`*cVB_~^ zkR;&b1Pohy`nee%#6IWab&Fx!|HzEJ21D+w7+JXZN{{pREWkJg$**RXQX>h(2qO$9mREt7Ou+K6@LUQ z9R!R4r62e!d!XZ-jgqZ_Z*9kSRJj8+ue*S&TLn_#-Bd>bOQSKIz0InbZW~;#PSe zbbEB_cXeo{&)9gPH7g%`!iDe5z6EZ3EGRWUt-N zh&g3-l8@g+#Fsn2j%|H~f^4D{r&)ZCoYL|Cdf!72lB|AT1p{`_@xLtG>a4!Hs zL}N~fY3L77M<_hI=3JkQnD&15jqYoCJSEtHxAWoB?PvQ;NPJ|W!K>o9Zw|GJVRPtb zuYr1G%)Rsv?t!q&m&AK<)(mca>zc=z%14rwH=cvJ54)RfbyWZxl%7VMmXcV^?QQti zH^$p30`BgzFUF@YX8fB)WdSt|3&DElqfC-(;-S~IzevuD56qxH(au*?RHXbSe}CbL z0A5;T(c-O+ftQY~EM+?FwN=@V2in9odL1s)AH?i&VKb9j-s z2LkD38(POjiMB>-rqYmHA7(-Nk9j`FwX-XS0c74)in`w}ZFAD^#q6bVW^8opu7f)i z0lMoCq5Ho2CcBn;b^e>u#rHxx!Z&}*c^x-Jlertr;KRl8eLdsvuvYWjoOi<m5*JS^us`=wN~VoNloO7G(MKXDD8#IcXGUzy9T_yc9hqYv?12k*7VB|7_y^@}MR2 zE#k-*p>=$Cn?Z)8M4d`8yvuualEs&3M;u^Ij61IgqoI!_aoN5olCa)yZD8P?e6y_$ z=6I!ZIH&FmF9}KaLF<%_B7$QvjYVz}%^hmNJP()^jZ}Hv!q{~#PXom@@cjrF9jF)U z6^jTab5IdqWok-Lf4K)Tl6-wWtitVqSFY6&`^Nh5!8LDc?qHN$> z?m4Nq%mjWgR;KrBWmT4(Q~r#~&SOh+ zv5w1D7>;_{#1b>2 zov$k9omk|*j`!?-Mt8=fh%V}a*$3Ebdha~uuji==V18Ik$KfZqulxs%&F&okU;WW5wLVMmiVj+;M!PbI7}Nz4mHl02%|6YX zmp_^!TwE;Mo}b_=d74VIp)z}rl3HD^+Z`+CJKu+~mAj>^$5yAcdjNE2#LVN;olBhM z>G23NwDK1P26|o}ydcZtEm~o5DT&}G6@@PbmM78pzXk}zbOM7q?jGP2189DfLRer% z*Oe<`Y@_6UL&TjoOJcR$+4@LDrtn#$$?I%OB(XsZ)dC_MlIOUgfKvYcoG>OtY|Z5L z&HuNF%Jic^9xBaq?BKUD^wC@jj0u3J%lxZ?%y##UTNB!G0nWcm=EKrV6+p+*R(0Op z((~hg#F96L`2CW)WYf{bPL&l!DC!k=n%x64SgK%!!q&AdK|dw>%a`xEnv7i&UdkKE zm6{k=*S|CG{1c#D0HTSeWYs;nDQ?IrU8vPk`4GS*m#6k&wmC+)6y8oMdr0*@lFKam zVh9DMS=y2PBwd3x(TIsr4vgH4JHS!EQ~L)rF(k{~yJtM)H$#@xg0QR!&82Sa4xOW}`;v0joQsBPPC^Ki^0{o#Rk$9n@QlfziEX*qckS>v z*Z~N)yuV=7Q{*qgP*-8Z4P}zZ7~>}Fdac(z4L)Dz z3$^*SaZ>c4dnQKA^u<`KvaHJA zg~Jk3p0a^{K?5P zz*o~qG3Gs5IA5dkX}&3eg_UBg+mdX62#%+nJ~4ZkPhaP(7&H zw{03!mz=lC?Nhw#YB*Fx7qUfat={mREU!OGhAT~I{Uik{MHM1XPWwq?Wttw*15r^p zK>h*Ko!uOclV zI3PIDGX8+lpUjnSxp0~n@pPPKnC^a5iUf#S$hd}`^*_K^hh4Rkwroiq#(`kP+Bx=A z2Qb|#FDqJ4kD}yTPH2&rkE-an?;b#Oq{%ScgZ`r$^a% zua$3*yiGLCv7p!{Ls?Cq_fVM&h<_mlp7-eHQk9`b4&wL78JK*f`M6)^t|(G{Jik&D zH|p~GopTd4D-lz5F)AIHh81uP%tNKik$w;pu!%L+@s;kDi=-a$Cf=Byy6P zX3%=Em|8ZH*M=+frKrq!7wk`}@Ij2^1P#=w=76n_i;ASmsjSUcD+Sh71ktFJ2oU>e zhgieoU;JSesIgAdp`V`H5DRlTd*iz7T%JcL{VN9fJb2s@+w39qg z5V&2{ltCo_%OPL1&Qi5I?VrJrOfnJ3%(4p^=tTfG95VVIj1(7^>miIKS<+W;I$vLA zwcry4`07qW!3?%IAqEnk2kME`69I1DC_kU`QZ@TTuKP@4qGf72w>(y-Kl&wEb2J7n z+6NLscs<~~Tgsd{(g1S?XB#oI#Y**Vkf6}a@ZiW}8AakF_v`gcwnd^CVBT&|UxS_@ zzn{Qgcr6eAg4^{BTZ(7IjYT?jZgIk|%92DZ%m^y}YAXO(RY*e?8G9Edok2>xWj+4& zwn4GQmfs=%v6dwHp9+g*3VnxD|H&Nl+0@0a)R=2qT7LL|B7~N;7MdU1!s6E=jTiAj zvs?dWx`*8lfA2ay?I?o^P{1J2i*)yh)$Mm$=}7$= zEN>2zLea+f5p`Lk;hIFM+SX4R`mA8+NwhKWk!2fXdoH2TtYz%@7ty1lgMt1bL@xs#>9 z?^wyVBO4U@zgXfMtp`8UA2N4#3as3z*#gQeKMatQ-eEKrG8^hybv-hO@%bUQgmCCn zSCsBAlDF8ah->myh4B>l{)BEg|FAR*2n78yMzknElHg4!?kQF-V51I3d<|-I_rY#W zY$G1)GBvwY;5CkPpLn5YTff93E(Ps}hy_6=K2Sop*&pGy#@<&;@)nL`?Vb#tOzW3A zU3##y26T{I*q@yMg;Wd>a`yIU*dQ4ouPtf(H}}cu7vm=-EQRD{@mY&}kiGZ){rWN1 zDxI+3q&IR)TV4%$B)H#}ZrN7a@2W)<(T(Xd!74~{HkW94N9+VBFO67+{A0_QQuYs4 zET$6|Tr?w^|FngwDK(5UQ)SWJ$$Uv^TEDjb@%K;D_8@OlUIboq_A*CY{VIH#!^m?=&GH}+~1?0y2jk_w61@8tQInPJ@{n=DzTc~wtSB0-kz%Ol>g$J zMPk$spFfhZZ7KP<ZJPEZlYl z#aso{eKcglxJuZr9ygR7K`y+|YsY_jg8%y{5bQhlse|*q2f0e8x@2jSP*k=!6g*zl`wW}^Z?(Q5jjKB4bRetk)8{{`-Ju7hQO%G$xO&_FzM73Q5w@7! z?3EU7F0aAYB+j$r`~Q#Rf4p!j3h=2_GqRW4o{*T zLv{0tNJG3lh}tqc`e;yp;I&gR^O!4&{b;VWHW<(YbjFi*s=dv;r2YpQd@p;R59A?;Go_8LLWFc!L-|LI-AzMd>>S zLZ>;YY5ZbU+pl1hAD9kx9*7_dTkS}&DuCBuzI3+m_pG7MPHsSFac7uy2p zF0x&PmMwFm@1+j5k^thG>;wm?^FquMeWO~9cVezZbSAmacofsp`Tir5zOd0=Fo1+0 zs^CymOC*pM5Dw@>GKNdxi0t2f1NiX{4=RF0JwYxTsN3ZuHmWMM8WFcg%Wp1#Hu7|j zJ0Xcti^Znh*yh@efX9K^iv72vrqyh!(%b3t_3~f=F#bA!^nPjh(EQ}jlq zko~irYmltK8!ns=@wsi32Owa_Rogk%u(VuYw*pX4;*5V*g_HxZGVP?LQ{$BU)y0wy zTU`$pQ+T~CpfnSRwykTzHa_4*0%3n}{Re~gQ5mBP;BwZ>GkB<(RoH4H(@4iRuG&*0 zE{z@kGts^Eun47#b7M0jLF*sTRihK4lmOE>^*Z5!Ty5EZX?CQnL|jr7hBzV2 zz46h%y)iCN3F>(FD-(6M(gw?J)2G!YujxX6DyQ-9+O{keqOwd~M2sb~-{ZX-4B z7iZVLT6t8ju4mCUd|y~wP`9({jSxbdi|SmSQ{9(Y!lEml5IZu=&F~RYKS3A%hO6V6 z2@d_{9JjSQDJ(kr=E*%2w!c3MuK1pu*ZCD(T*fEY=(uZY7+7|THphR*U+lxeInriY z)0AWYEz$V!I0hR4P_S(G+NzL|$u#`fP-CGg4wi_3- zv_nRnv*zd)4p4UxZD*PM5&dza?QspvzAME7Zs*zD(qMp>4BmF=hbDrIChA^+`j_pH zi~%5o8+wVN4OtbiM-Jaa>$u;^O370d=qV}CgqX`g+wCG+$FM-Fk%zoOIz0tQsx$|p z63d+l1?3OS!9Sa*Qa1{9c`EUZ%Z-t-B9nO1Z$Rjr79~Oi>FH?Q? zc6F#NwDb4h3N*R93!P5?=HB*s_^3H!Srarql)}H;yV&|pTcdF`o*t&AS#D6b2ne&Z z1pvbk7jnsX6MrB)O8Tzf;!>{te<(ZasH(pH&tLjdinNM^G)RXuNOyO4H_{CklJ z<_gjazHGMe_@kDzrZy=^kn$k*a$sjJ+j`%Z^PM5$+$oysG^`89UgGs=BveuB1^-Ah ztAEWd}-OnCA;~r}|N0tATUl))m{HJ?3k5=j?)?u+R zo+0nx?GevS3k0bs#i)QPeqN7LJq9pYB8?l z(H9p~J(ZO9k!Zl)q3fjH1rl46V4De6p}Zb|(dJ*8cL zB{sp;0h5AlD}p}(C%B$u{=>(LoJfQsSt@K7W@OPILHEfPueEF)ANlDJSJoH~J!mYt zO_HWAj!sv)^9)TbMtXf!0K!5kaZw_!ES{)#1Pw)cd06}PTU;-D>gNb}GT1L6Gu#G4 z$w+yd5A|;u=jd!GIzPD!0Z)Q_$*1sg@dA8ckSR%tb~%uit#00jymw=Kk`(%cn%E@P zf+n-199L$}6AtZ)D97U8y>3aIuhlS;4tCz<@?Zezry)=BQDHd1UT>iH2qq!N&8ny5 zx;YrE>}G@j-Fy~-pFk~x?mRl|73x4UqTQZi9-F{v3Y=P986Y__MEpl4e=LrC38*HP zGjzST)AL}MHi`G(U%~z1{YE=cMJ|UwYq_83uXvwUUPwh{3JhFkL!K4RvsFqdfTJh} ze6Ew)9KA++Rs2G?iIUwGfPCOkxJPoIy4$?w#4r9oCCF80~gGg zB9p08O70GW;vc^O3}=F~dlg#9nILT(O>NWU8TvsModU5dm#QoT(?E%B(^gjmiU4V; zY>lPl0X6R*_4VQ}9e<-z0KnKlZIMj{UxxAyA9x+FIuk>1BajPW2m6vPRGALXBo#C^ zmcHDU+7QEVz=H>c;7h!Lj@(>F@frn4LKSIni3~k9fTZsz%Nx+InsHpJUsbwX)G*QuMSr3X9t9B*m8r^K35byX#uqaQ7AWX>C?PE$PR^WJiREdM z)boQN5CJRu!%>KFmL_|~Ba5v0PddOxz+g5zAayEy#wS4EZ zoVz--;$=H0_gGr@`}F$Pv6j3enA!_5@-DX3A)~-gwiBvj;fp?j{j%r6+uaFuj)Ob= zxKNqt6uX4nAL{EB1CXF*?vw_ZnOo!U^h9CoH=k2YdUi=L5&BxiMg`m?`y=`x)n-%} z#lz16|HOg#XpGfqd%cd^sX(xdEc|2({T5AjKf#?C^>Bj*S=>>7#Y36Mei}=A9uB8w z5$-fdHQ=#5lXz`)`MjcV%S1HEy>MZ(qiJVfD&5R?G!iDuap+ZB>bI~)bkB3KMi$d? zWXYAS2P%!-TlebCCJCQVL7lHTXd7@KdCfOdbUDYSvjD5D?QG+n+WCh1vRNpEwej5i zzM8&W@^RMX4DxK3M8v+u6<7g?2M-55tXroMa-yad<3k z7Yl_)U$FWesC}7uUKa7GCG~?LtMi~|fNrh%^8DkE7#0NC9yeymXRt2~1H5B)TsYEK4^w+c;9A$vq)e$DK(B!lq z8A-}(D^G=60f%4tT}T~kW0_$Q16D~z0VN2VtSG%dIh}*&Ln%P@HAr?m!HLUEexhD4 z;3^3qz?gM-9(ROCj_RV6m%-jUt z5-S5|8TO2CLx&mf`&nAn;7_fxC0Hq7J*EmQ0yoL)Jj4(a`~SBWrL4Vwh>h!C%ex%( zkKDrjDGeJ_jNiF z1$_n{=!my}zOE$M5Suuk{pu+T^dFCDqPDGYa9ieHJAc}ahOfwHb>14McYM9%G6Y#{ z2nDW^Y!97*L~5=Dtsz?|MVCHp!AvgLk}C6{qwxx+cQLm2_mNx?!4xpnjG2a*1cG@j)%II7hKPUeSge@U-JMcqoBw_7KBkar$PciGGxdY~$TOUY;n~{E5We&OGe06{*kXiT z_?UlJk7((k+xK#@-fY!ZUDFpU1AlP4VJ}6PqaTrc(H)w?YbL7;M9oBd+Vw#?G+S-P zXZ1p6#i`6j$>muwI6M5S(Kb!@tjSZSQGvIR336OS)~C)VC@IfV2fB_vl{p#SbY)dq z#0nh3Cju{i?RpM#u3^JeVaA(EWMu5?lMQ6;M(y4biVrFUqpj?LzmuB|TV~%+?Pq*> zhV1z+=lF%5XOrLEGYzDYk+;u$=DC80>uU*&h->(mnCyPmM~(g2|9p990%okzaE{Nr z05LZI&_f?}f0Ik3JZPX5WB!PL-M(Nz`+T$@{X4McCc+U?k)>)0Wm$-!#F(ShVai-V zJeT@K4oCz!&WEX3#DGP z6F1N+Hxh4GSGQ7e5UrB+>^ZfJWi*fv3y{R}#O8eXkY@w8n9G^9d1|)m%+n}`%Q z`LS=G4-Z<2%|6iX4{#{TjeXN^b(IhxjS`!}ZvLZEnUU$5zClNH-J<9UQ+;ORRw(YzyCvbKfRzph~+t*OZ`f=BN{)v7CQ z9!Z%^AU|($)SEtfQczpx_Izg-F_@e}9U9w0!hFEz2oQluN<1&VfnF$%^XAgIn6nQqm zpyQZ0AWlc(@f57Xv5-R`BJ?R54c<42IA6cNdqn2l&l31NR+4BeORcevlNci|hqXrO zOMYz*KbOMp#lLGt_y}#6WvAcXuQvKzW#z#TV0L9Tf5fW1pwKCHpW^f98Rc;O%iFk^ zaCUfj>()Zhz6!!AFHKZvJGp3CV;WoG zp;j?~OR^(ve*~{}Um1_!Csm$I1!Gqe0G8Q!(vT%|`?VovLk|IuN|}{1jiaf8kp5=+6 z*S;giP1p515@dg_jRfjMT;p}PjiJ9@oaW{v0__p?<)6p2OGkAtFp0hdj!kLSsyJ7| z#w-18x$i?i(}IzU-Q?tR)R{-mLUmKO|bZJOC(l-TUhm+$nyxJV<=W@|4-p z(c&Ak<*T`=-Y8-7N{7NVT76Hqu>`f(fqyXEzL%Ujf(X^pk9YgvWS416-}K9CI9zvS ze7XHva_W?G*~60J+>&PY*Rd%*!~zm($}8N2Y#3JHu<@+oB%JiYIXtypd#&WO zshO!4-k8pIBfx3d7yGf=eW+-`sXecggz2iE<`iL_VQRdj<q4=FTb&r(5+App>1mB?(%`Dyaev?y^3~} z*9r^gL_gO>PO<#%KBdSOVC?jo{RTea72U5jT>=%m-L7Vpe9u3uFn5(CBvio+4CGM% zYr<*@Offt>%FM`wjvVUNak~f1aMCo1#7Jg)p-n4S zz%j>v{7Y@wclUfg6AsRC1so%3phqIj(0k%C@M`Scfe~k*BOS?Fx%UjHDYrQCkTf4p zla;`)e;x+5IxmyRvu+9CV+_@jK*4=p68hINK?n`wKv#a&gm0iE$6b}NzZQ`&`-e#V zx(S?S#OI-2CIWU1<1i;laD6c9Y*^g&g+Vj@HcLumpQV8_)^Q^c1icuiG4 zK4>3|o∈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 S1N7HpVJXXN$iZYSLjMo+l1#z? diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 32b0000..0117f29 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -2,7 +2,7 @@ ## 1. Overview -`codebase-index` is a **local-first** code intelligence layer for AI coding agents. In `1.6.0` +`codebase-index` is a **local-first** code intelligence layer for AI coding agents. In `1.7.0` it has two shipped faces: 1. **A Claude Code Skill** (`.claude/skills/codebase-index/SKILL.md`) that Claude auto-invokes for @@ -150,13 +150,14 @@ upward to nearest `.git`/`.claude`), and `--quiet`. Search-family commands accep | `symbol` | `""`, `--kind`, `--exact` | 0; empty list allowed | symbol defs | | `refs` | `""`, `--kind callers\|all` | 0 | reference sites | | `impact` | `""`, `--depth N`, `--direction up\|down\|both` | 0 | affected files ranked | +| `diff-impact` | `--base `, `--depth N`, `--direction up\|down\|both` | 0 | aggregate affected files for tracked changes | | `explain` | `""`, `--token-budget` | 0 | intent-aware bundle | | `stats` | — | 0 | counts, coverage %, freshness | | `doctor` | `--strict` | non-zero if unsafe config found | findings list | | `clean` | `--yes`, `--all` | resets index DB (`--all` wipes cache dir) | removed-count | | `watch` | `--debounce ms` | long-running | event log | -The skill only ever calls the **read-only** family (`search`, `symbol`, `refs`, `impact`, +The skill only ever calls the **read-only** family (`search`, `symbol`, `refs`, `impact`, `diff-impact`, `explain`, `stats`) plus `update`. It never calls `clean` or `init`. See SECURITY.md. ### Freshness contract @@ -191,7 +192,7 @@ If `exists=false` → skill runs `index`. If `stale=true` and cheap → skill ru ## 8. MCP server The same `retrieval` + `storage` layers are wrapped in a stdio MCP server exposing tools like -`search_code`, `find_symbol`, `find_refs`, `impact_of`, `explain_code`, `index_stats`, and +`search_code`, `find_symbol`, `find_refs`, `impact_of`, `impact_of_diff`, `explain_code`, `index_stats`, and `healthcheck`. Current implementation: diff --git a/docs/FAQ.md b/docs/FAQ.md index adc17ec..7fd8bde 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -14,7 +14,7 @@ pip install codebase-index # or: pipx install codebase-index ``` To pin an exact version or grab an unreleased commit, install from a GitHub tag -instead: `pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.6.0"`. +instead: `pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.7.0"`. Then run `codebase-index init` inside your project and `codebase-index index` to build the first index. In Claude Code you can instead install the plugin @@ -81,6 +81,7 @@ The stdio MCP server exposes: - `find_symbol` - `find_refs` - `impact_of` +- `impact_of_diff` - `explain_code` - `index_stats` @@ -161,11 +162,12 @@ Yes. Use any of these methods: ## Is it production-ready? -Yes — `codebase-index` is released as **v1.6.0**. The core indexing and search -functionality is implemented and tested. The current `1.6.0` package includes: +Yes — `codebase-index` is released as **v1.7.0**. The core indexing and search +functionality is implemented and tested. The current `1.7.0` package includes: - Hybrid FTS/path/symbol/vector retrieval - Import/call/reference graph expansion and `impact` +- Diff-aware blast-radius analysis for tracked working-tree changes - Optional local embeddings, with external embeddings gated behind explicit opt-in - Hooks and watch mode for freshness - Multi-CLI setup for Claude Code, Codex CLI, and OpenCode diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index dd2b781..8f3ba48 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -67,7 +67,7 @@ pipx install codebase-index # isolated environment uv tool install codebase-index # uv-managed tool # Pin to a GitHub tag for an exact or unreleased version -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.6.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.7.0" # From source (editable mode) git clone https://github.com/denfry/codebase-index.git @@ -90,7 +90,7 @@ pip install -e ".[embeddings-local,watch,dev]" ### uvx / Homebrew status -As of `1.6.0`, **PyPI is shipped** — `pip install codebase-index` and +As of `1.7.0`, **PyPI is shipped** — `pip install codebase-index` and `pipx install codebase-index` are the verified paths. `uvx codebase-index init`, Homebrew tap installation, signed checksums, and SBOMs remain distribution targets for a more complete release story. @@ -130,7 +130,7 @@ Expected output: === codebase-index Doctor === [OK] Python 3.12 (requires 3.11+) -[OK] codebase-index package installed (v1.6.0) +[OK] codebase-index package installed (v1.7.0) [OK] tree-sitter is available [INFO] Cache directory not yet created: ... [INFO] Skill not installed in .claude/skills/ diff --git a/docs/MCP.md b/docs/MCP.md index d0242c3..b89dd1d 100644 --- a/docs/MCP.md +++ b/docs/MCP.md @@ -36,6 +36,7 @@ The MCP server exposes the same retrieval contract as the CLI. | `find_symbol` | Locate definitions by symbol name/kind | `symbol` | | `find_refs` | Return callers/references for a symbol | `refs` | | `impact_of` | Return affected files/symbols from graph expansion | `impact` | +| `impact_of_diff` | Aggregate graph impact for tracked working-tree changes | `diff-impact` | | `explain_code` | Intent-aware retrieval packet for a natural-language question | `explain` | | `architecture_overview` | Modules, god nodes, surprising connections, suggested questions | `architecture` | | `path_between` | Shortest dependency/call path between two symbols or files | `path` | @@ -67,7 +68,7 @@ branch on the contract without sniffing the shape: breaking change (field removal or type change); additive fields keep the same version. The current version is **1**. - `tool` (string) — the emitting tool name (`search_code`, `find_symbol`, - `find_refs`, `impact_of`, `explain_code`, `architecture_overview`, + `find_refs`, `impact_of`, `impact_of_diff`, `explain_code`, `architecture_overview`, `path_between`, `describe_symbol`, `index_stats`, `healthcheck`). - The no-index / error path carries the same envelope plus an `"error"` field. @@ -159,8 +160,9 @@ same trust boundaries: - Done: `src/codebase_index/mcp/server.py` thin adapter over retrieval/storage code. - Done: `codebase-index mcp --root ` CLI entrypoint. -- Done: `healthcheck`, `search_code`, `find_symbol`, `find_refs`, `impact_of`, `explain_code`, - `architecture_overview`, `path_between`, `describe_symbol`, and `index_stats` tools. +- Done: `healthcheck`, `search_code`, `find_symbol`, `find_refs`, `impact_of`, + `impact_of_diff`, `explain_code`, `architecture_overview`, `path_between`, + `describe_symbol`, and `index_stats` tools. - Done: focused tests for tool registration, missing-index behavior, config resolution, and run entrypoint. - Done: explicit `schema_version` + `tool` envelope on every structured tool payload (including the error path), asserted by `tests/test_mcp_server.py` and `tests/test_mcp_golden.py`. diff --git a/docs/PRODUCT_UPGRADE_PLAN.md b/docs/PRODUCT_UPGRADE_PLAN.md index c90e6fc..e52d07e 100644 --- a/docs/PRODUCT_UPGRADE_PLAN.md +++ b/docs/PRODUCT_UPGRADE_PLAN.md @@ -1,171 +1,109 @@ # Product Upgrade Plan -> Status: living document. Created 2026-06-12 alongside the `1.3.0` line. -> This is a planning artifact, not a claims document. Anything not marked -> **Shipped** is a roadmap item and must not be advertised as done. +> Living product brief. Shipped capability is documented in README and +> CHANGELOG; forward work belongs in ROADMAP. -## 1. Positioning +## Product promise -**codebase-index is not an IDE and not a coding agent. It is the local -retrieval/index layer that gives terminal and MCP-based AI agents precise -codebase context.** +> Give AI coding agents a precise map of the codebase — locally, privately, and +> with evidence. -One-line description used everywhere: +The product vocabulary is: -> Local-first codebase retrieval for AI coding agents — Cursor-like codebase -> awareness for Claude Code, Codex CLI, OpenCode and MCP, without cloud indexing -> or IDE lock-in. +- **Find** — locate implementations and definitions. +- **Trace** — explain behavior through auditable code relationships. +- **Predict** — estimate the blast radius of a change. -What that commits us to: +`codebase-index` sits below the coding agent. It is not an IDE, a hosted search +platform, or an autonomous agent. -- We sit **below** the agent, not beside it. The agent (Claude Code, Codex CLI, - OpenCode, any MCP client) stays the user's interface; we return ranked - `file:line` packets it reads instead of scanning the repo. -- We are a **queryable index with a stable contract** (CLI `--json`, MCP schema), - not a one-shot context blob baked into a single agent's prompt. -- We are **local-first and offline by default**. The only path that can leave the - machine is opt-in external embeddings, gated three ways (see SECURITY_MODEL.md). +## Defensible differentiators -What we explicitly do **not** claim: +1. **Evidence-bearing retrieval** — ranked `file:line` ranges and recommended + reads under a token budget. +2. **Queryable local graph** — callers, references, paths, architecture, and + impact rather than a one-shot context blob. +3. **Honest uncertainty** — index freshness, result confidence, graph coverage, + and edge confidence are part of the response contract. +4. **One implementation, several surfaces** — CLI, Skill, and MCP share the + service layer. +5. **Auditable privacy** — network off by default, no telemetry, exclusion gates, + output redaction, and strict diagnostics. +6. **Measured claims** — public benchmark code and raw results live with the + product. -- Not a Cursor/IDE replacement. -- Not best-in-class framework-aware graph retrieval *yet* — today the graph is - import/call/reference/inheritance, not full route→handler→service→model - intelligence. -- Not proven at 100k/1M LOC scale — the public suite is synthetic; the only - real-repo evidence is a single 55k LOC Java run. +## Primary users -## 2. Target users - -| Persona | Pain today | What we give them | -|---|---|---| -| Claude Code / Codex CLI / OpenCode user on a medium-to-large repo | Agent burns context window grepping and reading whole files | Ranked `file:line` packets; the agent reads 3 files, not 60 | -| Privacy-constrained team (proprietary / regulated code) | Cloud code-intelligence is a non-starter | No network by default, no telemetry, secret redaction, ignore gates | -| MCP power user wiring multiple tools | Wants a stable, queryable code index as a tool, not a black box | stdio MCP server with a documented tool contract + `--json` CLI | -| Tooling/automation author | Needs scriptable retrieval other tools can build on | Agent-agnostic CLI with machine-readable JSON, SQLite the index lives in | - -Non-users (be honest): people who want a full IDE, multi-repo enterprise code -search, or a turnkey hosted platform. Point them at Cursor / Sourcegraph. - -## 3. Competitor matrix - -Full prose lives in [COMPARISON.md](COMPARISON.md); this is the planning view. - -| Tool | Category | Strongest at | Where we differ | Choose them when | -|---|---|---|---|---| -| Manual grep/read | Baseline | Exact ad-hoc string match | Ranking, symbols, graph, token budget | One known string, tiny scope | -| Cursor | AI IDE | Integrated editor + codebase awareness | Terminal/MCP-agnostic, offline by default, open | You live in Cursor's IDE | -| Aider repo-map | Agent context | Graph-ranked, token-budgeted map feeding Aider chat | Reusable queryable API across agents, freshness/security gates | You use Aider as your agent | -| Sourcegraph / Cody / Amp | Enterprise code intelligence | Cross-repo search/graph at org scale | Single-repo, local, lightweight, no platform/account | You need org-wide multi-repo search | -| Continue | Open-source coding agent | IDE+CLI agent with context features | Standalone retrieval index any agent can query, not an agent itself | You want the agent, not just the index | -| Codebase-Memory MCP | Local graph code-memory MCP | Broad graph engine, static binary, many languages | Simplicity, strict privacy model, token-budgeted packets, transparent Python, honest benchmarks | You need its broader graph/language reach today | - -We **do not** claim to beat Codebase-Memory MCP globally. We differentiate on -simplicity, the Claude/Codex/OpenCode workflow, token-budgeted packets, a -transparent Python implementation, a strict privacy model, and honest benchmarks. - -## 4. Differentiators (defensible today) - -1. **Token-budgeted retrieval packets** — output is line ranges + recommended - reads under an explicit token budget, not whole files or raw grep dumps. - Shipped: `--token-budget`, `recommended_reads`, honest ~13× fewer answer - tokens than an `rg`+window baseline on the 55k LOC Java run. -2. **One index, three surfaces, one service layer** — CLI, Claude/Codex/OpenCode - skills, and stdio MCP all run through `service.py`, so they cannot drift. -3. **Strict, auditable privacy model** — no network by default, no telemetry, - multi-gate exclusion pipeline, output-time secret redaction, `doctor` safety - self-check with `--strict` CI gating. -4. **Freshness contract** — every search response carries an `index` block - (`exists`/`stale`/`files_changed_since_build`) so the agent knows when to - `update` before trusting results. -5. **Graph-coverage honesty** — Tier-A vs Tier-B languages are labeled in - `stats`/`refs`/`impact`/`doctor`; partial-graph languages tell the agent to - fall back to Grep rather than reading "no references" as proof. -6. **Transparent, testable implementation** — pure-Python, 80% coverage gate, - golden CLI snapshots, public benchmark suite as a CI regression gate. - -## 5. Current weaknesses (own them) - -| Weakness | Impact | Plan | +| User | Need | Product outcome | |---|---|---| -| No large-scale real-repo benchmark | Can't claim 100k/1M LOC quality | Benchmark tasks §8; recruit public repos | -| Graph is import/call/ref only | `impact` misses framework wiring | ARCHITECTURE §9 + design doc `specs/2026-06-14-typed-framework-edges-design.md`; implementation behind §8 benchmark | -| ~~GitHub-only distribution~~ | **PyPI shipped in 1.6.0** — `pip install codebase-index` / `pipx` work; `uvx`/Homebrew still pending | Distribution tasks §9 (uvx/Homebrew) | -| MCP client docs unverified | Templates may be wrong per client version | Verify against each client, add per-client docs | -| Single-repo only | No monorepo/fleet context | Out of scope near-term; documented as non-goal | -| `clean` was a stub vs documented | Doc/reality gap | **Shipped in this pass** — real cache reset + test | - -## 6. High-impact roadmap (ranked) - -1. **Scale benchmarks on real public repos** (10k → 100k LOC), published with raw - logs. Highest credibility lever. -2. **Typed framework edges** (route→handler→service→model, test→impl, config→consumer) - with source spans + confidence. Biggest product-quality lever for `impact`. - *Design approved this pass* (`specs/2026-06-14-typed-framework-edges-design.md`); - implementation gated on the §8 graph benchmark. -3. **Distribution hardening**: PyPI publish, `uvx`/`pipx` story, signed checksums, - SBOM. Lowers adoption friction and raises supply-chain trust. -4. **MCP contract hardening**: ✅ `schema_version` on every payload + golden - snapshots per tool (this pass). Remaining: verified client docs, paging/progressive results. -5. **Retrieval tuning**: ✅ dampened the god-class `in_degree` tiebreak this pass - (log curve + lower cap, validated no-regression on the public suite). Remaining: - confirm the real-repo gain on the 3 honest Java misses (needs M12.5), per-intent weights review. -6. **Language reach**: config/IaC awareness (Dockerfile, Terraform, migrations, - CI), plus Swift/Dart/Scala/Vue/Svelte gaps called out in FAQ. - -## 7. Documentation tasks - -- [x] `docs/PRODUCT_UPGRADE_PLAN.md` (this file). -- [x] README "How is this different?" section answering why-not-grep/Cursor/Aider/ - Sourcegraph/Codebase-Memory on the first screen. -- [x] `docs/COMPARISON.md` explicit rows + prose for Continue, Amp, Codebase-Memory MCP. -- [x] `docs/BENCHMARKS.md` "claims not to make yet" + TODO benchmark checklist. -- [x] `docs/RELEASE_CHECKLIST.md`. -- [ ] Verified per-client MCP setup docs (after testing each client version). -- [x] A short "trust model in 60 seconds" callout reused across README/SECURITY. - -## 8. Benchmark tasks - -Track in [BENCHMARKS.md](BENCHMARKS.md); none may be reported until run with logs. - -- [ ] 10k LOC public repo: Recall@1/3/5, MRR, nDCG, token economy. -- [ ] 100k LOC public repo: same, plus index build time + incremental update latency. -- [ ] Multi-language public repo (≥3 Tier-A languages) with per-language breakdown. -- [ ] Head-to-head vs vanilla agent grep/read behavior (tokens + recall). -- [ ] Head-to-head vs repo-map-style context (tokens + recall). -- [ ] Graph task benchmark: `refs`, `impact`, and route→handler→service paths - against hand-labeled ground truth. -- [ ] Publish raw logs next to every headline number, like - `tests/benchmark_honest_RESULTS.md`. - -## 9. Distribution / release tasks - -- [ ] Publish to PyPI; switch docs to `pip install codebase-index` with GitHub - pin as the reproducible alternative. -- [ ] `uvx codebase-index` and `pipx install codebase-index` once on PyPI. -- [ ] Homebrew tap. -- [ ] Signed release checksums (e.g. `cosign`/`minisign`) + published SBOM. -- [ ] Reproducible-install smoke on a clean machine per OS (extend - `scripts/release_smoke.py`). -- [x] `docs/RELEASE_CHECKLIST.md` to make releases repeatable. - -## 10. Technical improvements (ranked by impact / risk) - -| # | Improvement | Impact | Risk | Status | -|---|---|---|---|---| -| 1 | Implement `clean` (documented but was a stub) | Fixes doc/reality gap | Low | **Shipped (1.3.0 line)** | -| 2 | Dampen god-class `in_degree` tiebreak in rerank | +recall on real repos | Medium (retune) | **Shipped this pass** — log dampening + lower cap; no-regression on the public suite + a targeted regression test. Real-repo gain still needs M12.5. | -| 3 | `schema_version` on every MCP payload | Stable contract | Low | **Shipped this pass** — `schema_version` + `tool` envelope on every payload (incl. errors), asserted + golden-locked. | -| 4 | Golden snapshots for each MCP tool output | Regression safety | Low | **Shipped this pass** — `tests/golden/mcp_*.json` via `tests/test_mcp_golden.py`. | -| 5 | Typed framework edges in the graph | Better `impact` | High | Design doc shipped this pass (`docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md`); implementation behind the §8 benchmark. | -| 6 | Config/IaC parsers (Dockerfile, Terraform, migrations) | Coverage | Medium | **Partly shipped this pass** — Tier-C labeling for Dockerfile/Terraform/HCL/INI/Make (already FTS-indexed, now language-labeled); tree-sitter parsing of these still roadmap. | -| 7 | Paging/progressive MCP results | Big-repo UX | Medium | Roadmap (MCP.md) | - -Also fixed this pass (not previously tracked): the MCP server failed to import on -`mcp>=1.27` + `pydantic>=2.10` (FastMCP auto-built a structured-output schema from -the `-> str` return annotation and raised). Tools now register as unstructured -(`structured_output=False` where supported), so the server loads on current `mcp`. - -Rule for this repo: small, safe, tested changes land directly; anything that -risks destabilizing retrieval quality or the security model is documented here -first and lands behind a benchmark. +| Terminal coding-agent user | Stop broad repo scans | Agent reads a small ranked evidence set | +| Privacy-constrained team | Keep source off hosted indexes | Local derived index and explicit network gates | +| MCP power user | Stable code-intelligence tools | Versioned, scriptable contracts | +| Tooling author | Compose retrieval into automation | JSON CLI, MCP, and local SQLite | + +People who need a full AI IDE or organization-wide cross-repository search +should use products built for those jobs. + +## Product experience + +The ideal interaction does not require users to understand retrieval modes: + +```text +Ask a repository question + ↓ +Skill routes Find / Trace / Predict + ↓ +Index self-checks freshness + ↓ +Agent reads the minimum evidence + ↓ +Answer includes citations and honest uncertainty +``` + +Advanced users retain direct access to the lower-level commands. + +## Presentation system + +The product identity uses: + +- graphite backgrounds; +- blue for definitions and retrieval; +- purple for traces; +- green for verified impact and safe state; +- amber for inferred evidence; +- red only for failure and high-risk impact. + +The graph-route mark represents a highlighted path through local code. Product +copy should prefer outcomes over implementation terms on the first screen; +Tree-sitter, SQLite FTS5, and ranking details belong below the core story. + +Canonical short copy: + +> Find implementations. Trace behavior. Predict change impact. + +Canonical trust copy: + +> Local by default. No telemetry. Evidence on every answer. + +## Success metrics + +Measure product outcomes, not command count: + +- task success rate; +- Recall@1/3/5 and MRR; +- tokens and files read before the answer; +- time to an evidence-backed answer; +- citation correctness; +- graph path precision; +- false-positive impact warnings; +- clean install and first-query completion rate. + +## Execution order + +1. Clarify product language and reduce documentation duplication. +2. Keep the skill protocol compact through progressive references. +3. Publish stronger real-repository and task-level evaluations. +4. Add task-context and diff-impact workflows. +5. Add typed framework edges behind graph-quality gates. + +See [ROADMAP.md](ROADMAP.md) for the live delivery sequence. diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index a290f23..2ae5744 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -122,6 +122,7 @@ After this quick start, you should have: - Look up a specific symbol: `codebase-index symbol "AuthService"` - Find callers: `codebase-index refs "AuthService.login"` - Check impact: `codebase-index impact "src/auth/AuthService.ts"` +- Check the current diff: `codebase-index diff-impact` - View stats: `codebase-index stats` - Run diagnostics: `codebase-index doctor` diff --git a/docs/RELEASE_CHECKLIST.md b/docs/RELEASE_CHECKLIST.md index d6c0856..a159688 100644 --- a/docs/RELEASE_CHECKLIST.md +++ b/docs/RELEASE_CHECKLIST.md @@ -86,7 +86,7 @@ them by hand and verify: - [ ] `codebase-index mcp --root .` starts and registers all tools (`tests/test_mcp_server.py`): `healthcheck`, `search_code`, `find_symbol`, - `find_refs`, `impact_of`, `explain_code`, `index_stats`. + `find_refs`, `impact_of`, `impact_of_diff`, `explain_code`, `index_stats`. - [ ] MCP and CLI agree (shared `service.py`) — vector channel + graph tier surfaced in both. - [ ] `docs/MCP.md` client templates still match the shipped tool list. @@ -110,7 +110,6 @@ them by hand and verify: ## Future hardening (not yet implemented — do not claim as done) -- [ ] PyPI publish (then `pip install codebase-index`, `uvx`, `pipx` without a Git URL). - [ ] Homebrew tap. - [ ] Signed release checksums (`cosign` / `minisign`). - [ ] Published SBOM (e.g. CycloneDX) attached to each release. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index d139f5e..fa67701 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,112 +1,103 @@ -# Roadmap & First Implementation Tasks - -Milestones are vertical-ish slices: each ends with something runnable and testable. -This is the **technical-milestone** view (M0–M10). The product-level -[ROADMAP.md](../ROADMAP.md) tells the same story at a finer grain and carries it -further (it splits the MCP server into M11 and adds M11.5/M12/M12.5/M13 for MCP -hardening, benchmarks, and the typed-edge graph). Where the two disagree on a -number, the product roadmap is the current product view; this file tracks the -original implementation slices. The `(Mx)` tags in -[CHANGELOG.md](../CHANGELOG.md) follow this technical numbering. - -## M0 — Architecture & scaffold ✅ (this repo) -- Repo tree, docs (ARCHITECTURE/RETRIEVAL/SCHEMA/SECURITY/INSTALLATION), SKILL.md draft. -- `pyproject.toml`, module skeletons with responsibilities, CLI command stubs. -- **Exit:** `pip install -e .` works; `codebase-index --help` lists all commands (stubs ok). - -## M1 — Storage + discovery + ignore rules ✅ -- `storage/db.py`: connection, pragmas, apply `schema.sql`, `meta.schema_version`. -- `discovery/`: walker, layered ignore (`pathspec`), `classify.py` (lang/binary/size/secret gates). -- **Exit:** `codebase-index index` populates `files` correctly; secrets/binaries/build dirs excluded. -- Tests: `test_ignore.py`, `test_discovery.py`, `test_storage.py`. - -## M2 — FTS5 lexical indexing ✅ -- `parsers/line_chunker.py`: window chunks with overlap + token estimate. -- `fts_chunks` virtual table + sync triggers + code-aware tokenizer. -- `retrieval/searchers.py` (FTS only) + `output/` renderers + `search --mode fts`. -- **Exit:** `codebase-index search ""` returns ranked lexical results with line ranges/snippets. -- `snake_case` is split at index time (plain unicode61 tokenizer); camelCase is expanded at query - time. A true custom FTS5 tokenizer via APSW is deferred. - -## M3 — Tree-sitter symbol extraction ✅ -- `parsers/treesitter.py` + `languages.py` (grammar registry, node→symbol maps for Python, - JavaScript, and TypeScript). -- Populate `symbols`; symbol-aligned chunks; `symbol` + `refs` (intra-file first). -- **Exit:** `codebase-index symbol ""` and `refs` work for supported languages; line fallback - for the rest. -- Shipped languages: Python, JavaScript, TypeScript. Go/Java/Rust/C/C++/Ruby/PHP follow the recipe - in `docs/LANGUAGES.md`. `refs` is intra-file (call sites + defs); cross-file resolution is M5. - -## M4 — Hybrid search + ranking ✅ -- `retrieval/intent.py`, path + symbol searchers, `fusion.py` (RRF), `rerank.py`, `budget.py`. -- `confidence` + `fallback_suggestions`; `search --mode hybrid` (default); `explain`. -- **Exit:** hybrid results outrank single-retriever on the fixture queries; token budget enforced. - -## M5 — Graph edges + impact ✅ -- `parsers/languages.py`: `imports_query` slot with import/extends/implements patterns (Python end-to-end; JS/TS query slots wired). -- `parsers/treesitter.py`: extract import + inheritance edges via capture-prefixed queries. -- `graph/builder.py`: cross-file edge resolution by unambiguous symbol name / module→file suffix; degree denormalization. -- `graph/expand.py`: bounded BFS impact walk (up/down/both, depth). -- **Exit:** `codebase-index impact "" --direction up|down|both --depth N` returns a sensible blast radius on fixtures. Ambiguous symbol names are left unresolved by design. - -## M6 — Optional embeddings / vector backend ✅ -- `embeddings/` package (protocol + noop default + lazy local + gated external), `sqlite-vec` `vec_chunks` store loaded on demand, indexer embedding pass behind `embeddings.enabled`, and a vector retriever fused into hybrid with per-intent weights. External backend refused unless `allow_external` + `$CBX_EMBEDDINGS_API_KEY` + an endpoint warning (SECURITY.md §4). Disabled path imports no optional dep and is byte-for-byte unchanged. -- **Exit:** with extras installed + enabled, semantic queries improve recall; disabled path unchanged. - -## M7 — Claude Code Skill packaging ✅ -- Shipped: `init` materializes the wheel-bundled skill template (SKILL.md + cbx/cbx.ps1) to `.claude/skills/codebase-index/`, writes resolved `config.json`, and idempotently gitignores the cache (`--force` to overwrite). The freshness contract is honored end-to-end — `search` returns real `stale`/`files_changed_since_build` (git clean-tree fast-path + mtime diff), so the skill triggers `update`/`index` per SKILL.md. `--with-hooks` writes a reviewable hooks example; auto-merging hooks + `watch` are M8. - -## M7.5 — One-command plugin install ✅ -- Repo doubles as a Claude Code plugin (`.claude-plugin/plugin.json` + `marketplace.json`). -- `SessionStart` hook (`scripts/bootstrap.sh`/`.ps1`) provisions a venv in `${CLAUDE_PLUGIN_DATA}` - with the pinned CLI (uv-preferred, pip fallback), reinstalling only when `requirements.lock` changes. -- `bin/cbx` + `bin/codebase-index` wrappers resolve the venv via a `.venv-path` pointer and keep the - subcommand whitelist. -- **Exit:** `/plugin install codebase-index@` → ask a codebase question → compact reads, - no manual `pip`/`init`/`index`. The bootstrap installs the package from the GitHub release tarball - pinned in `requirements.lock` (not PyPI); `CBX_INSTALL_SPEC` overrides the source for local/dev installs. - -## M8 — Hooks + watch mode ✅ -- Shipped: incremental `update` (mtime fast-path + sha verify + prune; `--since `, `--all`) is the engine the freshness contract calls; `init --with-hooks` auto-merges the `PostToolUse` update hook into `.claude/settings.json` idempotently; `watch` mode (optional `[watch]` extra) coalesces edit bursts into one debounced `update` and degrades to a clear error when watchdog is absent; `doctor` reports enabled hooks, cache-gitignore coverage, and freshness, exiting non-zero under `--strict` on high-severity findings. The full SECURITY.md §6 doctor checklist (secret-leak scan, perms, allowed-tools diff) is M9. - -## M9 — Tests, docs, examples, release ✅ -- Coverage across modules; CLI golden-output tests; perf check on a medium repo. -- `examples/queries.md`, finalized docs, CHANGELOG, tagged GitHub release + PyPI publish (PyPI shipped in 1.6.0). -- **Exit:** `pipx install "git+https://github.com/denfry/codebase-index.git@v1.2.0"` + `init` + ask a question works on a clean machine. - -*Shipped: golden-file tests lock CLI `--json` output; a `--runslow` perf smoke test guards -index/search latency on a synthetic medium repo; coverage is gated (`--cov-fail-under`) in a -CI matrix (Ubuntu/macOS/Windows x py3.11-3.13). `CHANGELOG.md` tracks releases; a tag-triggered -release pipeline builds, runs `twine check` + a clean-venv install smoke, and publishes a GitHub -release with the built artifacts, and — as of 1.6.0 — publishes to PyPI via Trusted Publishing -(OIDC, no stored token; a `workflow_dispatch` run can re-publish an already-tagged version). -`pip install codebase-index` -> `init` -> `index` -> ask a question is verified end-to-end by -`scripts/release_smoke.py`.* - -## M10 — MCP bridge ✅ (product roadmap M11) -- Shipped: a stdio Model Context Protocol server (`codebase-index mcp --root `, or the - `codebase-index-mcp` entry point) exposing `healthcheck`, `search_code`, `find_symbol`, - `find_refs`, `impact_of`, `explain_code`, and `index_stats` over the same `service.py` layer the - CLI uses — an optional addition, not a replacement for the Skill/CLI interface. Every payload - carries a `schema_version` + `tool` envelope, locked by golden snapshots (`tests/golden/mcp_*.json`). -- **Exit:** `codebase-index` can be used as an MCP tool by any MCP-compatible client. See - [MCP.md](MCP.md). -- Follow-up (product roadmap M11.5): verified per-client setup docs and paging/progressive results. - ---- - -## First concrete tasks (start here) - -1. **Scaffold the package** so `codebase-index --help` runs: flesh out `cli.py` Typer app with all - commands as stubs that print "not implemented" and parse the documented flags. -2. **Implement `storage/db.py` + `schema.sql`** exactly per SCHEMA.md; add a migration guard on - `meta.schema_version`. Test: open/close/recreate, pragma assertions. -3. **Implement `discovery/ignore.py`** with `pathspec`, merging the four ignore files + built-in - denylist + secret-filename + size + binary gates. Test against `tests/fixtures/` with planted - secrets and a `node_modules` dir — assert they're excluded. -4. **Implement `discovery/walker.py` + minimal `index`** to populate `files` (no chunks yet), so - `stats` shows real coverage. This gives the first end-to-end runnable slice. -5. **Build a fixture repo** under `tests/fixtures/sample_repo/` (a few py/ts files, an `.env`, a - `node_modules`, a binary, a generated file) used across all later milestone tests. - -Each task should land behind tests (TDD) and keep the base install network-free. +# Roadmap + +`codebase-index` is becoming the evidence layer between a coding agent and a +repository: **Find implementations, Trace behavior, Predict change impact.** + +This document separates shipped capability from forward work. Roadmap entries +are not product claims until they appear under `[Unreleased]` or a tagged +release in `CHANGELOG.md`. + +## Shipped foundation + +### Find + +- Local SQLite FTS5, path, and symbol retrieval. +- Hybrid ranking and optional embeddings. +- Intent-aware `search` and `explain`. +- Token-budgeted, skeletonized snippets and exact recommended reads. +- Freshness, confidence, pagination, and targeted fallbacks. + +### Trace + +- Tree-sitter symbols across the documented language tiers. +- Import, call, reference, and inheritance edges. +- `refs`, `path`, `describe`, and architecture community analysis. +- Human HTML graphs plus GraphML, DOT, and Neo4j exports. +- Edge confidence: `extracted`, `inferred`, and `ambiguous`. + +### Predict + +- Directional, depth-bounded `impact` analysis. +- Diff-aware impact aggregation over tracked working-tree changes. +- Graph-coverage honesty for partially supported languages. +- Diagnostics that surface stale indexes and incomplete graph extraction. + +### Delivery and trust + +- CLI, Claude Code plugin/skill, Codex CLI, OpenCode, and stdio MCP. +- Shared CLI/MCP service layer and versioned MCP payloads. +- Local and network-free default path with no telemetry. +- Secret exclusion and output redaction. +- Incremental update, watch hooks, doctor, skill update, and rollback. +- PyPI and `pipx` installation. + +## Now — prove and simplify + +The current priority is to make existing power obvious, measurable, and easy to +invoke. + +- [ ] Publish 10k and 100k LOC public-repository benchmark runs with raw logs. +- [ ] Add task-level agent evaluation: success rate, tokens, files read, time, + and citation correctness. +- [ ] Verify MCP setup against current releases of each documented client. +- [ ] Add progressive/paged MCP retrieval for large repositories. +- [ ] Complete `uvx` and clean-machine install verification on every CI OS. +- [ ] Publish signed checksums and an SBOM with releases. + +## Next — task-native context + +- [ ] Add a high-level task-context packet that groups implementation, + configuration, tests, and dependencies under one token budget. +- [x] Add diff-aware file impact analysis over tracked working-tree changes. +- [ ] Extend diff impact from files to exact changed symbols and line spans. +- [ ] Rank likely affected tests separately from general dependents. +- [ ] Surface public API and configuration-contract changes. +- [ ] Produce a concise evidence summary suitable for code review agents. + +These features must compose existing retrieval and graph primitives instead of +creating a second ranking implementation. + +## Then — framework-aware traces + +- [ ] Typed route → handler → service → repository → model edges. +- [ ] Test → implementation edges. +- [ ] Configuration → consumer edges. +- [ ] Migration → model edges. +- [ ] Dependency-injection and event/queue registration edges. +- [ ] Source spans, extractor identity, and confidence on every typed edge. + +Framework edges ship behind a hand-labelled graph benchmark. Unsupported +framework wiring must remain clearly marked as partial rather than silently +treated as absent. + +## Later + +- Additional language and config/IaC extraction where real usage justifies it. +- Faster indexing and lower-memory builds for very large single repositories. +- Homebrew or equivalent package-manager distribution. +- Multi-root workspace context if it can preserve the local-first trust model. + +Org-wide hosted search, an IDE, autonomous code editing, and opaque cloud +indexing are not current product goals. + +## Quality gates + +A roadmap item is ready to ship only when: + +1. CLI and MCP behavior share the same service implementation. +2. JSON contracts have regression tests. +3. retrieval or graph changes pass a labelled evaluation with no unexplained + quality regression; +4. security gates and the network-free default remain intact; +5. documentation distinguishes measured capability from inference; +6. installed skill copies pass `scripts/sync_skill_copies.py --check`. diff --git a/docs/SECURITY.md b/docs/SECURITY.md index be4c959..8e4909a 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -78,15 +78,24 @@ allowed-tools: - Bash(codebase-index symbol:*) - Bash(codebase-index refs:*) - Bash(codebase-index impact:*) + - Bash(codebase-index diff-impact:*) + - Bash(codebase-index architecture:*) + - Bash(codebase-index path:*) + - Bash(codebase-index describe:*) + - Bash(codebase-index graph:*) - Bash(codebase-index stats:*) + - Bash(codebase-index doctor:*) - Bash(codebase-index update:*) + - Bash(codebase-index index:*) - Grep - Glob ``` -Explicitly **not** allowed via the skill: `clean`, `init`, `watch`, or unscoped `Bash`. Destructive -or scaffolding actions remain a human/manual decision. The wrapper scripts (`scripts/cbx`) only -forward to the installed `codebase-index` binary and reject unknown subcommands. +Explicitly **not** allowed via the skill: `clean`, `init`, `watch`, an unscoped +`codebase-index *`, `python -m codebase_index *`, or unscoped `Bash`. +Destructive or scaffolding actions remain a human/manual decision. The wrapper +scripts (`scripts/cbx`) only forward to the installed `codebase-index` binary +and reject unknown subcommands. ## 6. `doctor` — safety self-check diff --git a/docs/SEO.md b/docs/SEO.md index 6e0919e..18b832b 100644 --- a/docs/SEO.md +++ b/docs/SEO.md @@ -177,7 +177,7 @@ Features: - Secret redaction - Respects .gitignore -Install: pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.6.0" +Install: pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.7.0" GitHub: https://github.com/denfry/codebase-index ``` @@ -192,5 +192,5 @@ codebase-index builds a local hybrid index so Claude finds the right files witho - No network by default - Token-efficient output -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.6.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.7.0" ``` diff --git a/docs/SKILL_DESIGN.md b/docs/SKILL_DESIGN.md index beb5aed..d5fbef8 100644 --- a/docs/SKILL_DESIGN.md +++ b/docs/SKILL_DESIGN.md @@ -4,15 +4,18 @@ How the `codebase-index` Claude Code Skill works and how to extend it. ## Overview -The skill is defined in `skill/SKILL.md` with YAML frontmatter that Claude Code uses for automatic skill selection. +The skill is defined in `skill/SKILL.md` with YAML frontmatter that agent +clients use for automatic selection. The primary file is intentionally a short +operating protocol; detailed command and payload material lives in +`skill/references/` and is loaded only when needed. ## Frontmatter ```yaml --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. -allowed-tools: Bash(python *), Bash(python3 *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- ``` @@ -39,7 +42,9 @@ Restricts which tools Claude can use while executing this skill: | `Grep` | Fallback search when index is weak | | `Glob` | Fallback path discovery | -**Explicitly not allowed:** `Write`, `Edit`, `Bash` (unscoped), or any destructive commands. +**Explicitly not allowed:** `Write`, `Edit`, `Bash` (unscoped), +`codebase-index *` (unscoped), `python -m codebase_index *`, or destructive +and scaffolding commands such as `clean`, `init`, and `watch`. ## Skill Workflow @@ -48,14 +53,14 @@ User asks codebase question ↓ Skill auto-selected by Claude Code ↓ -Claude runs: codebase-index search "query" --json +Route intent: Find / Trace / Predict ↓ Parse JSON response: - Check index.exists / index.stale - Read recommended_reads line ranges - Check confidence level ↓ -Answer with citations +Answer + file:line evidence ↓ If confidence low → fallback to Grep/Glob ``` @@ -79,6 +84,31 @@ The skill enforces token-efficient behavior: - Use `symbol`/`refs`/`impact` for refinement, not reworded searches - Fallback to Grep/Glob only when confidence is low +## Progressive References + +`SKILL.md` links two optional resources: + +- `references/commands.md` — command options, graph commands, health commands, + and query examples. +- `references/response-contract.md` — payload fields, freshness handling, + partial-coverage behavior, and answer examples. + +Do not move the core evidence or freshness protocol out of `SKILL.md`; agents +need those rules on every invocation. Keep detailed option lists and examples in +references so they do not consume context on routine searches. + +## Answer Contract + +The skill asks agents to return: + +1. the direct answer; +2. the minimum supporting `file:line` evidence; +3. confidence only when evidence is partial, inferred, stale, or missing; +4. a next check only when it materially reduces uncertainty. + +This prevents tool narration from displacing the actual engineering answer and +prevents partial graph coverage from being presented as proof of absence. + ## Extending the Skill ### Adding New Commands @@ -86,8 +116,11 @@ The skill enforces token-efficient behavior: If you add a new CLI command, update: 1. `skill/SKILL.md` — add the command to the intent table -2. `skill/SKILL.md` — add to `allowed-tools` if needed -3. `skill/examples/basic-usage.md` — add usage example +2. `skill/references/commands.md` — document detailed options and examples +3. `skill/SKILL.md` — add to `allowed-tools` if needed +4. Both safe wrappers — add the subcommand only if it is read-only or a + freshness operation +5. Run `python scripts/sync_skill_copies.py` ### Custom Wrapper Scripts diff --git a/docs/installer.md b/docs/installer.md index 0c54c1b..689fda3 100644 --- a/docs/installer.md +++ b/docs/installer.md @@ -108,7 +108,7 @@ pwsh ./install.ps1 -Target claude -InstallDir "D:\skills\codebase-index" **Pinning по ветке/тегу** (воспроизводимость и безопасность): ```sh -sh install.sh --branch v1.6.0 +sh install.sh --branch v1.7.0 ``` --- @@ -151,7 +151,7 @@ sh install.sh --branch v1.6.0 ```json { "skill_name": "codebase-index", - "version": "1.6.0", + "version": "1.7.0", "installed_at": "2026-05-29T12:00:00Z", "target": "claude", "os": "linux", diff --git a/pyproject.toml b/pyproject.toml index cf35174..d3eaf8a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "hatchling.build" [project] name = "codebase-index" dynamic = ["version"] -description = "Local-first hybrid codebase index for AI coding agents, exposed as CLI, Skill, and MCP tools." +description = "A precise local codebase map for AI coding agents: find, trace, and predict with file-line evidence." readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } diff --git a/requirements.lock b/requirements.lock index 6b38098..679ed63 100644 --- a/requirements.lock +++ b/requirements.lock @@ -1,3 +1,3 @@ -codebase-index @ https://github.com/denfry/codebase-index/archive/refs/tags/v1.6.0.tar.gz +codebase-index @ https://github.com/denfry/codebase-index/archive/refs/tags/v1.7.0.tar.gz tree-sitter==0.25.2 tree-sitter-language-pack==1.8.1 diff --git a/scripts/gen_assets.py b/scripts/gen_assets.py index 2cb2a94..0158659 100644 --- a/scripts/gen_assets.py +++ b/scripts/gen_assets.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Generate brand assets for codebase-index (social preview + README demo still). +"""Generate the reproducible codebase-index brand assets. Pure-Pillow, no external binaries. Renders at 3x and downsamples with LANCZOS for crisp typography. Re-run after changing copy: @@ -7,8 +7,9 @@ python scripts/gen_assets.py Outputs: + assets/mark.png 256x256 -> logo / avatar source assets/social-preview.png 1280x640 -> upload in Settings -> Social preview - assets/demo.png 1200x760 -> embed near the top of README.md + assets/demo.png 1200x760 -> README product story """ from __future__ import annotations @@ -127,6 +128,44 @@ def downsave(img: Image.Image, w: int, h: int, path: Path) -> None: print(f" {path} {w}x{h} {kb:.0f} KB") +# --------------------------------------------------------------------------- # +# Mark: 256 x 256 +# --------------------------------------------------------------------------- # +def build_mark(out: Path) -> None: + W = H = 256 + w, h = W * SS, H * SS + img = gradient_bg(w, h) + add_glow(img, int(w * 0.78), int(h * 0.18), 150 * SS, BLUE, 60) + d = ImageDraw.Draw(img) + + pad = 28 * SS + d.rounded_rectangle( + [pad, pad, w - pad, h - pad], + radius=46 * SS, + fill=PANEL, + outline=BORDER, + width=2 * SS, + ) + + # A compact dependency route: three evidence nodes connected through a + # highlighted path. It stays legible at GitHub-avatar size. + points = [(72, 82), (128, 128), (184, 82), (128, 184)] + for a, b in ((0, 1), (1, 2), (1, 3)): + d.line( + [points[a][0] * SS, points[a][1] * SS, + points[b][0] * SS, points[b][1] * SS], + fill=BLUE if b != 3 else GREEN, + width=8 * SS, + ) + for i, (x, y) in enumerate(points): + r = (15 if i == 1 else 11) * SS + color = GREEN if i == 3 else (FG if i == 1 else CYAN) + d.ellipse([x * SS - r, y * SS - r, x * SS + r, y * SS + r], + fill=color, outline=BG_TOP, width=4 * SS) + + downsave(img, W, H, out) + + # --------------------------------------------------------------------------- # # Social preview: 1280 x 640 # --------------------------------------------------------------------------- # @@ -156,7 +195,7 @@ def build_social(out: Path) -> None: d.text((LM + seg, wy), "-index", font=wm, fill=BLUE) # tagline - d.text((LM, 214 * SS), "Local codebase indexing for AI coding agents", + d.text((LM, 214 * SS), "A precise map of your codebase for AI coding agents", font=f_ui(36), fill=FG2) # terminal @@ -195,7 +234,7 @@ def build_social(out: Path) -> None: ry += 33 * SS # chips - chips = ["Tree-sitter", "SQLite FTS5", "Graph impact", "MCP server"] + chips = ["FIND", "TRACE", "PREDICT", "LOCAL BY DEFAULT"] cf = f_ui_b(16) cx = LM cy = 574 * SS @@ -215,65 +254,105 @@ def build_demo(out: Path) -> None: add_glow(img, int(w * 0.5), int(h * -0.05), 460 * SS, BLUE, 26) d = ImageDraw.Draw(img) - # terminal - x0, y0, x1, y1 = 48 * SS, 56 * SS, (W - 48) * SS, 660 * SS - window_chrome(d, x0, y0, x1, y1, "bash — codebase-index") - - mono = f_mono(20) - mono_b = f_mono_b(20) - bx = x0 + 32 * SS - cw = d.textlength("0", font=mono) - lh = 30 * SS - y = y0 + 70 * SS - - def col(n): # x position at character column n - return bx + cw * n - - # command - d.text((bx, y), "$", font=mono_b, fill=GREEN) - d.text((col(2), y), "codebase-index search ", font=mono, fill=FG) - cmdw = d.textlength("codebase-index search ", font=mono) - d.text((col(2) + cmdw, y), '"where is user authentication implemented?"', font=mono, fill=CYAN) - y += lh * 2 - - d.text((bx, y), "Top matches:", font=mono_b, fill=FG); y += lh - d.text((bx, y), "Rank Path Symbols Score Reason", - font=mono, fill=MUTED); y += lh - - table = [ - ("1", "src/auth/AuthService.ts", "AuthService, login", "0.92", "exact symbol match", GREEN), - ("2", "src/routes/auth.ts", "loginHandler, logout", "0.78", "FTS · 4 callers", BLUE), - ("3", "src/middleware/auth.ts", "requireAuth", "0.65", "path · FTS match", MUTED), - ] - for rank, path, syms, score, reason, scol in table: - d.text((col(2), y), rank, font=mono_b, fill=BLUE) - d.text((col(7), y), path, font=mono, fill=CYAN) - d.text((col(32), y), syms, font=mono, fill=FG2) - d.text((col(53), y), score, font=mono_b, fill=scol) - d.text((col(60), y), reason, font=mono, fill=FG2) - y += lh - y += lh - - d.text((bx, y), "Recommended reads:", font=mono_b, fill=FG); y += lh - reads = [ - ("1.", "src/auth/AuthService.ts:12-148", "matched AuthService, login(), validatePassword()"), - ("2.", "src/routes/auth.ts:20-91", "/login route calls AuthService.login()"), - ("3.", "src/middleware/auth.ts:5-42", "auth middleware validates sessions"), + # Header + wm = f_mono_b(34) + d.text((48 * SS, 46 * SS), "codebase", font=wm, fill=FG) + seg = d.textlength("codebase", font=wm) + d.text((48 * SS + seg, 46 * SS), "-index", font=wm, fill=BLUE) + d.text((48 * SS, 94 * SS), "One local map. Three engineering jobs.", + font=f_ui(23), fill=FG2) + + cards = [ + { + "title": "FIND", + "color": BLUE, + "query": '"where is auth implemented?"', + "lines": [ + ("01", "src/auth/AuthService.ts:12", "0.92"), + ("02", "src/routes/auth.ts:20", "0.78"), + ("03", "src/middleware/auth.ts:5", "0.65"), + ], + }, + { + "title": "TRACE", + "color": PURPLE, + "query": '"checkout → database"', + "lines": [ + ("", "CheckoutRoute", "extracted"), + ("→", "CheckoutService", "extracted"), + ("→", "OrderRepository", "inferred"), + ], + }, + { + "title": "PREDICT", + "color": GREEN, + "query": '"what changes with User?"', + "lines": [ + ("1", "direct dependents", "7"), + ("2", "affected tests", "4"), + ("!", "inferred edges", "2"), + ], + }, ] - for n, loc, reason in reads: - d.text((col(2), y), n, font=mono, fill=MUTED) - d.text((col(5), y), loc, font=mono_b, fill=CYAN) - y += lh - d.text((col(5), y), "reason: " + reason, font=mono, fill=MUTED) - y += lh + 4 * SS - - # footer wordmark + tagline - fy = (H - 64) * SS - wm = f_mono_b(26) - d.text((48 * SS, fy), "codebase-index", font=wm, fill=FG) - seg = d.textlength("codebase-index", font=wm) - d.text((48 * SS + seg + 14 * SS, fy + 6 * SS), - "local hybrid index · no network by default", font=f_ui(17), fill=MUTED) + + card_w = 352 + card_h = 430 + gap = 24 + x_start = 48 + y0 = 162 + for idx, card in enumerate(cards): + x0 = (x_start + idx * (card_w + gap)) * SS + y = y0 * SS + x1 = x0 + card_w * SS + y1 = y + card_h * SS + d.rounded_rectangle( + [x0, y, x1, y1], radius=18 * SS, fill=PANEL, + outline=BORDER, width=SS + SS // 2, + ) + d.rounded_rectangle( + [x0 + 20 * SS, y + 20 * SS, x0 + 102 * SS, y + 51 * SS], + radius=15 * SS, fill=PANEL_BAR, outline=card["color"], width=SS, + ) + d.text((x0 + 34 * SS, y + 27 * SS), card["title"], + font=f_ui_b(15), fill=card["color"]) + d.text((x0 + 22 * SS, y + 78 * SS), card["query"], + font=f_mono(17), fill=CYAN) + d.line( + [x0 + 22 * SS, y + 122 * SS, x1 - 22 * SS, y + 122 * SS], + fill=BORDER, width=SS, + ) + + row_y = y + 150 * SS + for lead, label, tail in card["lines"]: + d.text((x0 + 24 * SS, row_y), lead, font=f_mono_b(17), + fill=card["color"]) + d.text((x0 + 58 * SS, row_y), label, font=f_mono(16), fill=FG2) + tw = d.textlength(tail, font=f_mono_b(15)) + d.text((x1 - 24 * SS - tw, row_y + 2 * SS), tail, + font=f_mono_b(15), + fill=YELLOW if tail == "inferred" else card["color"]) + row_y += 55 * SS + + d.text((x0 + 24 * SS, y1 - 58 * SS), + ("precise file:line evidence" if idx == 0 else + "auditable dependency chain" if idx == 1 else + "ranked blast radius"), + font=f_ui(15), fill=MUTED) + + # Evidence strip + sy = 626 * SS + d.rounded_rectangle( + [48 * SS, sy, (W - 48) * SS, 702 * SS], + radius=16 * SS, fill=PANEL_BAR, outline=BORDER, width=SS, + ) + d.text((72 * SS, sy + 25 * SS), "EVIDENCE CONTRACT", font=f_ui_b(15), fill=GREEN) + d.text((246 * SS, sy + 23 * SS), + "freshness · confidence · coverage · recommended reads", + font=f_mono(17), fill=FG2) + + d.text((48 * SS, 726 * SS), + "local by default · no telemetry · CLI + Skill + MCP", + font=f_ui(15), fill=MUTED) downsave(img, W, H, out) @@ -282,6 +361,7 @@ def main() -> None: root = Path(__file__).resolve().parent.parent assets = root / "assets" print("Generating assets:") + build_mark(assets / "mark.png") build_social(assets / "social-preview.png") build_demo(assets / "demo.png") print("Done.") diff --git a/scripts/sync_skill_copies.py b/scripts/sync_skill_copies.py index 1cd76aa..7ea12d5 100644 --- a/scripts/sync_skill_copies.py +++ b/scripts/sync_skill_copies.py @@ -7,9 +7,9 @@ .claude/skills/codebase-index/ installed copy, committed for this repo .codex/skills/codebase-index/ installed copy, committed for this repo .opencode/skills/codebase-index/ installed copy, committed for this repo - skills/codebase-index/SKILL.md plugin skill (Claude Code picks up skills/) - skill/SKILL.md, skill/scripts/cbx, skill/scripts/cbx.ps1 - installer source package (shared files only; + skills/codebase-index/ plugin skill (SKILL.md + references) + skill/SKILL.md, skill/references/, skill/scripts/cbx, skill/scripts/cbx.ps1 + installer source package (shared files; the rest of skill/ is owned by install.sh) Version stamps maintained: @@ -39,7 +39,8 @@ Path(".opencode/skills/codebase-index"), ) PLUGIN_SKILL_REL = Path("skills/codebase-index") -INSTALLER_SHARED = ("SKILL.md", "scripts/cbx", "scripts/cbx.ps1") +SHARED_PREFIXES = ("SKILL.md", "references/") +INSTALLER_SHARED = ("scripts/cbx", "scripts/cbx.ps1") VERSION_RE = re.compile(r'^__version__ = "([^"]+)"$', re.M) PLUGIN_VERSION_RE = re.compile(r'("version"\s*:\s*)"[^"]+"') @@ -70,10 +71,15 @@ def expected_files(repo: Path, version: str) -> dict[Path, bytes]: expected[copy / rel] = (template / rel).read_bytes() expected[copy / ".skill_version"] = f"{version}\n".encode() - expected[PLUGIN_SKILL_REL / "SKILL.md"] = (template / "SKILL.md").read_bytes() + for rel in rels: + if rel.as_posix() == "SKILL.md" or rel.as_posix().startswith("references/"): + expected[PLUGIN_SKILL_REL / rel] = (template / rel).read_bytes() for rel in INSTALLER_SHARED: expected[Path("skill") / rel] = (template / rel).read_bytes() + for rel in rels: + if rel.as_posix() == "SKILL.md" or rel.as_posix().startswith("references/"): + expected[Path("skill") / rel] = (template / rel).read_bytes() return expected diff --git a/skill/SKILL.md b/skill/SKILL.md index ee31b7d..9404686 100644 --- a/skill/SKILL.md +++ b/skill/SKILL.md @@ -1,198 +1,89 @@ --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. It searches a local hybrid codebase index so Claude reads only the most relevant files instead of scanning the entire project. -allowed-tools: Bash(python -m codebase_index *), Bash(python3 -m codebase_index *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- # Codebase Index -Use this skill first for codebase questions. +Use the local index before reading repository files. -Never scan the entire repository before searching the index. +The operating principle is **Find → Trace → Predict**: -## When to use +- **Find** the implementation with ranked retrieval. +- **Trace** behavior through definitions, callers, dependencies, and paths. +- **Predict** change impact while preserving an explicit evidence trail. -Invoke this skill **before reading any files** when the user asks about this project's code: +## Route the question -- "where is X implemented" / "find X" / "locate the X function" -- "how does X work" / "explain the X flow" -- "what breaks if I change X" / "what depends on X" (impact analysis) -- "who calls X" / "references to X" -- "trace the data flow of X" -- "why is this error happening" (error/stack trace) -- "explain the architecture" / "give me an overview" -- Any question about symbols, files, dependencies, or refactoring scope - -Do **not** use it for: editing files, running the application, or non-code questions. - -## How to call the CLI - -Use the `codebase-index` CLI directly, or the bundled `cbx` wrapper: - -```bash -codebase-index search "$QUERY" --json -``` - -Pick the subcommand by intent: - -| User intent | Command | +| Intent | Command | |---|---| -| "how does X work" / "explain X" / "walk me through" | `codebase-index explain "$QUERY" --json` | -| overview / architecture / "map the codebase" | `codebase-index architecture --json` | -| general / unsure | `codebase-index search "$QUERY" --json` | -| keyword / "where is" | `codebase-index search "$QUERY" --json` | -| a specific symbol name | `codebase-index symbol "" --json` | -| "who calls / references" | `codebase-index refs "" --json` | -| "what breaks if I change" | `codebase-index impact "" --json` | -| "how is X connected to Y" / dependency path | `codebase-index path "" "" --json` | -| "what is X" / describe a symbol's role | `codebase-index describe "" --json` | -| visual graph / "open graph" (for the human, not for you to read) | `codebase-index graph "" --open` | - -`architecture` returns the codebase map computed at index time — detected modules -(communities), god nodes (most-connected symbols), surprising cross-module links, -and suggested questions. Reach for it on "give me an overview" / "where do I -start" questions instead of a broad `explain`. - -`path "A" "B"` returns the shortest dependency/call chain between two symbols or -files; `describe "X"` returns a node card (definition, callers, callees, -in/out degree, module, god-node rank). Both annotate edges with a `confidence` -(`extracted` exact, `inferred` heuristic, `ambiguous` unresolved) — treat a path -or callee list that leans on `inferred`/`ambiguous` edges as less certain. - -The `graph` command renders an HTML dependency graph for a person to look at — -it is not a retrieval packet. Use it only when the user explicitly wants a visual -graph; for "what depends on X" answer from `impact`/`refs` instead. In a headless -session prefer `--output ` over `--open`. `--format graphml|dot|neo4j` -exports the graph for external tools (Gephi/yEd, Graphviz, Neo4j) instead of HTML. - -`explain` has a higher default token budget (2200) and HOW_IT_WORKS intent weights — use it whenever the question is about understanding behavior or flow. - -For `search`, pick a `--mode` when the intent is clear: -- `--mode symbol` — pure symbol lookups (faster, no FTS noise) -- `--mode fts` — text/keyword queries where symbol names don't matter -- `--mode hybrid` — default; best for mixed queries -- `--mode vector` — semantic / near-synonym queries ("where do we rate-limit - requests" without the exact words). Requires opt-in embeddings; falls back with - a clear message when they are not enabled. `hybrid` already blends vectors in - when embeddings are on, so reach for `vector` only for pure-semantic recall. - -Natural-language kind words such as `method`, `function`, `class`, `interface`, -`enum`, and `type` constrain the symbol retriever inside `search`. - -Use `--json` for programmatic parsing; omit for human-readable output. -Search/read commands auto-build the index when it is missing; still check -freshness and run `update`/`index` when responses report stale data. - -## Step-by-step workflow - -1. **Query the index** using the appropriate subcommand for `$QUERY`. -2. **Check index freshness** in the response: - - `index.exists: false` → run `codebase-index index` first, then re-query. - - `index.stale: true`, `files_changed_since_build < 20` → run `codebase-index update`, then re-query. - - `index.stale: true`, `files_changed_since_build ≥ 20` → run `codebase-index index` (full rebuild). - - Otherwise proceed with results. -3. **Read ONLY the `recommended_reads`** — use the Read tool with `offset`/`limit` to read the exact line ranges returned. Do not open whole files. -4. **Answer** with file:line citations (e.g., `src/auth/token.py:88-134`). -5. **Fallback** only if confidence is low or results are empty (see below). - -## Token-budgeted output interpretation - -The index returns a **ranked retrieval packet** with: - -- `rank` — result position (start with 1-3) -- `path` — file path -- `line_start` / `line_end` — exact line range to read -- `symbols` — symbols found in this range -- `score` — relevance score -- `reason` — why this result ranked (e.g., "exact symbol match, 4 callers") -- `snippet` — compact code excerpt (may already answer the question); `null` means budget was spent — read via `recommended_reads` instead -- `skeletonized` — when `true`, the `snippet` is a **focus skeleton**: import/signature/class lines and the line(s) matching your query are kept, while function bodies collapse to a marker like `... 24 lines elided (read 88-134)`. Read that line range (or the result's `line_start`/`line_end`) when you need a full body. -- `elided_lines` — how many source lines the skeleton folded away (`0` when not skeletonized). - -Top-level fields: - -- `recommended_reads` — the precise `{path, line_start, line_end}` list to open next. This is your read plan. -- `confidence` — `high` (answer directly), `medium` (read + optionally confirm with one Grep), `low` (use fallback). -- `fallback_suggestions` — ripgrep patterns and paths to try if the index is weak. -- `intent` / `mode` — how the query was classified and which retrievers ran; - useful to sanity-check a weak result (e.g. a "how does X work" question that - resolved to a bare symbol lookup may need `explain` instead). -- `pagination` — present only when more results exist than fit the page. It - reports `has_more` and `next_offset`. To page, re-run `search` with - `--offset ` (e.g. `search "query" --limit 10 --offset 10`). Prefer - refining with a more specific subcommand or raising `--token-budget` first — - page only when the top results genuinely miss the answer. -- `coverage` (on `refs`/`impact` only) — graph-completeness signal. Dependency - edges (imports/inheritance) are extracted only for fully supported languages. - When `coverage.partial` is `true` (the symbol/file is in a Tier-B language such - as Lua), an **empty or short `refs`/`impact` result is inconclusive** — it may - just be unanalyzed, not absent. Confirm with a Grep before concluding "nothing - references this". `coverage.languages` lists the affected languages. - -## Token efficiency rules - -- Trust the index. Read the **fewest** files needed — start with rank 1-3 only. -- Read **line ranges**, not whole files. Use `line_start`/`line_end` with Read's `offset`/`limit`. -- The `snippet` may already answer the question — re-read only if you need more context. -- Prefer `search`/`symbol`/`refs`/`impact`/`explain` over manual Grep/Glob — those are expensive fallbacks, not step 1. -- Don't re-run the query with trivially reworded text; refine with a different subcommand instead. -- For broad questions (`confidence: low`, architecture, data-flow), raise the budget: `--token-budget 3000`. -- Test files are demoted in ranking by default. Include "test" in the query to surface them. -- Snippets are skeletonized by default to fit more results in the budget. The matched line is always preserved; pass `--raw` (CLI) or `raw: true` (MCP) on the rare occasion you need full bodies inline instead of reading the cited line range. - -## Fallback behavior - -Fall back to built-in search **only** when: results are empty, `confidence` is `low`, or the user asks for something the index clearly doesn't cover. - -0. If confidence is consistently low across queries, run diagnostics first: - ```bash - codebase-index stats --json # per-language file/symbol counts + graph tier - codebase-index doctor # surface config or security issues - ``` - Low symbol counts for a language may mean the index needs a full rebuild: `codebase-index index`. - In `stats`, each language carries `graph: full|partial` (and `doctor` reports a - `graph_coverage` finding): `partial` (Tier-B) means `refs`/`impact` lack - import/inheritance edges for that language — treat empty results there as - inconclusive. - -1. Use `fallback_suggestions.ripgrep` patterns from the response via Grep. -2. If still nothing, Glob for likely paths, then Grep within them. -3. As a last resort, broaden the search — but tell the user the index was weak here (it may need a rebuild: `codebase-index index`). - -Never start with a full-repo scan when the index exists and is fresh. - -## Examples - -```bash -# "how does the auth flow work?" -codebase-index explain "auth flow" --json - -# "explain the overall architecture" / "where do I start" — modules, god nodes -codebase-index architecture --json - -# "where is auth token refresh implemented?" -codebase-index search "auth token refresh" --json - -# "what breaks if I change the User model?" -codebase-index impact "User" --json - -# "who calls send_email?" -codebase-index refs "send_email" --json - -# "find the AuthService class" -codebase-index symbol "AuthService" --json - -# precise symbol search (faster, no FTS noise) -codebase-index search "AuthService" --mode symbol --json - -# "how is the API layer connected to the database?" -codebase-index path "ApiController" "Database" --json - -# "what is the Database class and how is it used?" -codebase-index describe "Database" --json - -# generate and open an HTML graph around a file or symbol -codebase-index graph "User" --direction both --depth 2 --open -``` - -Then Read only the returned line ranges and answer with citations. +| Where is X implemented? | `codebase-index search "X" --json` | +| How does X work? | `codebase-index explain "X" --json` | +| What is this codebase? | `codebase-index architecture --json` | +| Find a named symbol | `codebase-index symbol "X" --json` | +| Who calls or references X? | `codebase-index refs "X" --json` | +| What changes if X changes? | `codebase-index impact "X" --json` | +| What does my current diff affect? | `codebase-index diff-impact --json` | +| How are X and Y connected? | `codebase-index path "X" "Y" --json` | +| Describe X and its neighborhood | `codebase-index describe "X" --json` | +| Produce a human graph | `codebase-index graph "X" --output ` | + +Use `search --mode symbol` for exact symbol work, `--mode fts` for text and +error messages, and the default `hybrid` mode for mixed questions. Use pure +`vector` mode only when embeddings are enabled and exact vocabulary is unknown. + +Read [references/commands.md](references/commands.md) only when command options +or routing remain unclear. + +## Evidence protocol + +1. Run the best-matching command with `--json`. +2. Check `index` before trusting the payload: + - missing → run `codebase-index index`, then repeat; + - stale with fewer than 20 changed files → run `codebase-index update`; + - stale with 20 or more changed files → run `codebase-index index`; + - fresh → continue. +3. Start with ranks 1–3. Read only `recommended_reads` line ranges. +4. Trace one additional hop only when the question requires behavior, + ownership, or impact. +5. Answer with `file:line` evidence and state uncertainty explicitly. + +Do not open whole files when a line range is available. A snippet may already +be sufficient. `skeletonized: true` means the response intentionally folded +unrelated body lines; read the supplied range when the missing body matters. + +## Confidence contract + +- **high** — answer from the indexed evidence. +- **medium** — read the recommended ranges and confirm the key claim with one + targeted lookup if necessary. +- **low** or no results — follow `fallback_suggestions`, then use a narrow + Grep/Glob fallback. + +On `refs` and `impact`, inspect `coverage`. If `coverage.partial` is true, an +empty result is inconclusive; confirm with targeted Grep before saying that +nothing references the target. + +Edges carry `confidence`: + +- `extracted` — exact parser evidence; +- `inferred` — heuristic resolution; +- `ambiguous` — unresolved or non-unique. + +Never present an inferred or ambiguous chain as certain. + +## Answer contract + +Structure repository answers around: + +1. **Answer** — the direct conclusion. +2. **Evidence** — the minimum supporting `file:line` references. +3. **Confidence** — only when evidence is partial, inferred, stale, or missing. +4. **Next check** — only when another check would materially reduce uncertainty. + +Do not narrate every search step. Do not claim absence from a partial graph. +Do not replace evidence with a generated HTML graph. + +For payload fields and failure handling, read +[references/response-contract.md](references/response-contract.md). diff --git a/skill/examples/basic-usage.md b/skill/examples/basic-usage.md index 9c3d16a..e2da073 100644 --- a/skill/examples/basic-usage.md +++ b/skill/examples/basic-usage.md @@ -48,6 +48,12 @@ Returns all callers and references to the symbol. codebase-index impact "src/auth/AuthService.ts" ``` +For all tracked changes in the current working tree: + +```bash +codebase-index diff-impact --base HEAD +``` + Returns files and symbols that depend on the target, ordered by blast radius. ### Getting project overview diff --git a/skill/references/commands.md b/skill/references/commands.md new file mode 100644 index 0000000..0efb464 --- /dev/null +++ b/skill/references/commands.md @@ -0,0 +1,73 @@ +# Command Reference + +Load this reference only when the intent table in `SKILL.md` is insufficient. + +## Retrieval + +```bash +codebase-index search "" --json +codebase-index explain "" --json +``` + +Useful search options: + +- `--mode hybrid|fts|symbol|vector` +- `--token-budget ` +- `--limit ` +- `--offset ` +- `--raw` to disable snippet skeletonization +- `--no-fallback` to suppress fallback suggestions + +`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer +it over repeatedly rewording a broad search. + +## Code graph + +```bash +codebase-index architecture --json +codebase-index refs "" --json +codebase-index impact "" --direction up --depth 2 --json +codebase-index diff-impact --base HEAD --direction up --depth 2 --json +codebase-index path "" "" --json +codebase-index describe "" --json +``` + +- `architecture` reads module analysis cached at index time. +- `refs` finds definitions, calls, and graph-backed references. +- `impact` walks dependents (`up`), dependencies (`down`), or both. +- `diff-impact` aggregates impact for tracked changes relative to a verified + Git commit; new or excluded files are reported as unresolved. +- `path` returns the shortest known dependency/call chain. +- `describe` returns a node card with callers, callees, module, and centrality. + +Use `graph` only for a visualization intended for a person: + +```bash +codebase-index graph "" --direction both --depth 2 --output graph.html +``` + +For headless work, use `--output`; do not use `--open`. Exports also support +`--format graphml|dot|neo4j`. + +## Index health + +```bash +codebase-index stats --json +codebase-index doctor +codebase-index update +codebase-index index +``` + +Run `stats` and `doctor` when several unrelated queries have low confidence. +Low symbol counts or partial graph coverage can explain weak results. + +## Query examples + +```bash +codebase-index search "auth token refresh" --json +codebase-index search "AuthService class" --mode symbol --json +codebase-index search "connection reset by peer" --mode fts --json +codebase-index explain "checkout flow" --json +codebase-index impact "User" --direction up --depth 2 --json +codebase-index path "ApiController" "Database" --json +``` diff --git a/skill/references/response-contract.md b/skill/references/response-contract.md new file mode 100644 index 0000000..059d87a --- /dev/null +++ b/skill/references/response-contract.md @@ -0,0 +1,82 @@ +# Response Contract + +Load this reference when interpreting a retrieval packet or handling a weak +result. + +## Ranked results + +Each result can contain: + +- `rank` +- `path` +- `line_start` / `line_end` +- `symbols` +- `score` +- `reason` +- `snippet` +- `skeletonized` +- `elided_lines` + +`recommended_reads` is the read plan. Start with its first one to three entries +and use exact line ranges. + +`pagination.has_more` and `pagination.next_offset` indicate additional results. +Prefer a more specific command or a larger token budget before paging. + +## Freshness + +The `index` object is part of the evidence contract: + +```text +exists=false → index +stale=true, files_changed_since_build<20 → update +stale=true, files_changed_since_build≥20 → full index +stale=false → proceed +``` + +Repeat the original query after rebuilding or updating. + +## Weak results + +Fallback is allowed only when: + +- results are empty; +- confidence is low; +- graph coverage is partial; +- the requested information is not represented by the index. + +Use `fallback_suggestions.ripgrep` first. Otherwise construct one narrow Grep +pattern from the most distinctive symbol, error, or path in the question. +Avoid a full-repository scan unless targeted fallback also fails. + +If several queries are weak: + +```bash +codebase-index stats --json +codebase-index doctor +``` + +Report the limitation instead of inventing certainty. + +## Answer examples + +High confidence: + +```text +Session validation is implemented in `src/auth/session.py:44`. +The request middleware calls it from `src/http/auth.py:18`. +``` + +Partial graph: + +```text +The index found no graph-backed callers, but coverage for Lua is partial. +A targeted text search still finds two call sites in … +``` + +Inferred chain: + +```text +The route-to-service link is parser-extracted; the service-to-model link is +heuristic, so the final hop should be verified before refactoring. +``` diff --git a/skill/scripts/cbx b/skill/scripts/cbx index 5666358..94a9114 100644 --- a/skill/scripts/cbx +++ b/skill/scripts/cbx @@ -4,7 +4,7 @@ # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch). set -euo pipefail -ALLOWED="search explain symbol refs impact graph stats doctor update index" +ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index" sub="${1:-}" case " $ALLOWED " in diff --git a/skill/scripts/cbx.ps1 b/skill/scripts/cbx.ps1 index bb8e05d..eee56ae 100644 --- a/skill/scripts/cbx.ps1 +++ b/skill/scripts/cbx.ps1 @@ -8,7 +8,10 @@ param( ) $ErrorActionPreference = "Stop" -$allowed = @("search", "explain", "symbol", "refs", "impact", "graph", "stats", "doctor", "update", "index") +$allowed = @( + "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact", + "path", "describe", "graph", "stats", "doctor", "update", "index" +) if ($allowed -notcontains $Subcommand) { Write-Error "cbx: refusing subcommand '$Subcommand'. Allowed: $($allowed -join ', ')" diff --git a/skills/codebase-index/SKILL.md b/skills/codebase-index/SKILL.md index ee31b7d..9404686 100644 --- a/skills/codebase-index/SKILL.md +++ b/skills/codebase-index/SKILL.md @@ -1,198 +1,89 @@ --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. It searches a local hybrid codebase index so Claude reads only the most relevant files instead of scanning the entire project. -allowed-tools: Bash(python -m codebase_index *), Bash(python3 -m codebase_index *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- # Codebase Index -Use this skill first for codebase questions. +Use the local index before reading repository files. -Never scan the entire repository before searching the index. +The operating principle is **Find → Trace → Predict**: -## When to use +- **Find** the implementation with ranked retrieval. +- **Trace** behavior through definitions, callers, dependencies, and paths. +- **Predict** change impact while preserving an explicit evidence trail. -Invoke this skill **before reading any files** when the user asks about this project's code: +## Route the question -- "where is X implemented" / "find X" / "locate the X function" -- "how does X work" / "explain the X flow" -- "what breaks if I change X" / "what depends on X" (impact analysis) -- "who calls X" / "references to X" -- "trace the data flow of X" -- "why is this error happening" (error/stack trace) -- "explain the architecture" / "give me an overview" -- Any question about symbols, files, dependencies, or refactoring scope - -Do **not** use it for: editing files, running the application, or non-code questions. - -## How to call the CLI - -Use the `codebase-index` CLI directly, or the bundled `cbx` wrapper: - -```bash -codebase-index search "$QUERY" --json -``` - -Pick the subcommand by intent: - -| User intent | Command | +| Intent | Command | |---|---| -| "how does X work" / "explain X" / "walk me through" | `codebase-index explain "$QUERY" --json` | -| overview / architecture / "map the codebase" | `codebase-index architecture --json` | -| general / unsure | `codebase-index search "$QUERY" --json` | -| keyword / "where is" | `codebase-index search "$QUERY" --json` | -| a specific symbol name | `codebase-index symbol "" --json` | -| "who calls / references" | `codebase-index refs "" --json` | -| "what breaks if I change" | `codebase-index impact "" --json` | -| "how is X connected to Y" / dependency path | `codebase-index path "" "" --json` | -| "what is X" / describe a symbol's role | `codebase-index describe "" --json` | -| visual graph / "open graph" (for the human, not for you to read) | `codebase-index graph "" --open` | - -`architecture` returns the codebase map computed at index time — detected modules -(communities), god nodes (most-connected symbols), surprising cross-module links, -and suggested questions. Reach for it on "give me an overview" / "where do I -start" questions instead of a broad `explain`. - -`path "A" "B"` returns the shortest dependency/call chain between two symbols or -files; `describe "X"` returns a node card (definition, callers, callees, -in/out degree, module, god-node rank). Both annotate edges with a `confidence` -(`extracted` exact, `inferred` heuristic, `ambiguous` unresolved) — treat a path -or callee list that leans on `inferred`/`ambiguous` edges as less certain. - -The `graph` command renders an HTML dependency graph for a person to look at — -it is not a retrieval packet. Use it only when the user explicitly wants a visual -graph; for "what depends on X" answer from `impact`/`refs` instead. In a headless -session prefer `--output ` over `--open`. `--format graphml|dot|neo4j` -exports the graph for external tools (Gephi/yEd, Graphviz, Neo4j) instead of HTML. - -`explain` has a higher default token budget (2200) and HOW_IT_WORKS intent weights — use it whenever the question is about understanding behavior or flow. - -For `search`, pick a `--mode` when the intent is clear: -- `--mode symbol` — pure symbol lookups (faster, no FTS noise) -- `--mode fts` — text/keyword queries where symbol names don't matter -- `--mode hybrid` — default; best for mixed queries -- `--mode vector` — semantic / near-synonym queries ("where do we rate-limit - requests" without the exact words). Requires opt-in embeddings; falls back with - a clear message when they are not enabled. `hybrid` already blends vectors in - when embeddings are on, so reach for `vector` only for pure-semantic recall. - -Natural-language kind words such as `method`, `function`, `class`, `interface`, -`enum`, and `type` constrain the symbol retriever inside `search`. - -Use `--json` for programmatic parsing; omit for human-readable output. -Search/read commands auto-build the index when it is missing; still check -freshness and run `update`/`index` when responses report stale data. - -## Step-by-step workflow - -1. **Query the index** using the appropriate subcommand for `$QUERY`. -2. **Check index freshness** in the response: - - `index.exists: false` → run `codebase-index index` first, then re-query. - - `index.stale: true`, `files_changed_since_build < 20` → run `codebase-index update`, then re-query. - - `index.stale: true`, `files_changed_since_build ≥ 20` → run `codebase-index index` (full rebuild). - - Otherwise proceed with results. -3. **Read ONLY the `recommended_reads`** — use the Read tool with `offset`/`limit` to read the exact line ranges returned. Do not open whole files. -4. **Answer** with file:line citations (e.g., `src/auth/token.py:88-134`). -5. **Fallback** only if confidence is low or results are empty (see below). - -## Token-budgeted output interpretation - -The index returns a **ranked retrieval packet** with: - -- `rank` — result position (start with 1-3) -- `path` — file path -- `line_start` / `line_end` — exact line range to read -- `symbols` — symbols found in this range -- `score` — relevance score -- `reason` — why this result ranked (e.g., "exact symbol match, 4 callers") -- `snippet` — compact code excerpt (may already answer the question); `null` means budget was spent — read via `recommended_reads` instead -- `skeletonized` — when `true`, the `snippet` is a **focus skeleton**: import/signature/class lines and the line(s) matching your query are kept, while function bodies collapse to a marker like `... 24 lines elided (read 88-134)`. Read that line range (or the result's `line_start`/`line_end`) when you need a full body. -- `elided_lines` — how many source lines the skeleton folded away (`0` when not skeletonized). - -Top-level fields: - -- `recommended_reads` — the precise `{path, line_start, line_end}` list to open next. This is your read plan. -- `confidence` — `high` (answer directly), `medium` (read + optionally confirm with one Grep), `low` (use fallback). -- `fallback_suggestions` — ripgrep patterns and paths to try if the index is weak. -- `intent` / `mode` — how the query was classified and which retrievers ran; - useful to sanity-check a weak result (e.g. a "how does X work" question that - resolved to a bare symbol lookup may need `explain` instead). -- `pagination` — present only when more results exist than fit the page. It - reports `has_more` and `next_offset`. To page, re-run `search` with - `--offset ` (e.g. `search "query" --limit 10 --offset 10`). Prefer - refining with a more specific subcommand or raising `--token-budget` first — - page only when the top results genuinely miss the answer. -- `coverage` (on `refs`/`impact` only) — graph-completeness signal. Dependency - edges (imports/inheritance) are extracted only for fully supported languages. - When `coverage.partial` is `true` (the symbol/file is in a Tier-B language such - as Lua), an **empty or short `refs`/`impact` result is inconclusive** — it may - just be unanalyzed, not absent. Confirm with a Grep before concluding "nothing - references this". `coverage.languages` lists the affected languages. - -## Token efficiency rules - -- Trust the index. Read the **fewest** files needed — start with rank 1-3 only. -- Read **line ranges**, not whole files. Use `line_start`/`line_end` with Read's `offset`/`limit`. -- The `snippet` may already answer the question — re-read only if you need more context. -- Prefer `search`/`symbol`/`refs`/`impact`/`explain` over manual Grep/Glob — those are expensive fallbacks, not step 1. -- Don't re-run the query with trivially reworded text; refine with a different subcommand instead. -- For broad questions (`confidence: low`, architecture, data-flow), raise the budget: `--token-budget 3000`. -- Test files are demoted in ranking by default. Include "test" in the query to surface them. -- Snippets are skeletonized by default to fit more results in the budget. The matched line is always preserved; pass `--raw` (CLI) or `raw: true` (MCP) on the rare occasion you need full bodies inline instead of reading the cited line range. - -## Fallback behavior - -Fall back to built-in search **only** when: results are empty, `confidence` is `low`, or the user asks for something the index clearly doesn't cover. - -0. If confidence is consistently low across queries, run diagnostics first: - ```bash - codebase-index stats --json # per-language file/symbol counts + graph tier - codebase-index doctor # surface config or security issues - ``` - Low symbol counts for a language may mean the index needs a full rebuild: `codebase-index index`. - In `stats`, each language carries `graph: full|partial` (and `doctor` reports a - `graph_coverage` finding): `partial` (Tier-B) means `refs`/`impact` lack - import/inheritance edges for that language — treat empty results there as - inconclusive. - -1. Use `fallback_suggestions.ripgrep` patterns from the response via Grep. -2. If still nothing, Glob for likely paths, then Grep within them. -3. As a last resort, broaden the search — but tell the user the index was weak here (it may need a rebuild: `codebase-index index`). - -Never start with a full-repo scan when the index exists and is fresh. - -## Examples - -```bash -# "how does the auth flow work?" -codebase-index explain "auth flow" --json - -# "explain the overall architecture" / "where do I start" — modules, god nodes -codebase-index architecture --json - -# "where is auth token refresh implemented?" -codebase-index search "auth token refresh" --json - -# "what breaks if I change the User model?" -codebase-index impact "User" --json - -# "who calls send_email?" -codebase-index refs "send_email" --json - -# "find the AuthService class" -codebase-index symbol "AuthService" --json - -# precise symbol search (faster, no FTS noise) -codebase-index search "AuthService" --mode symbol --json - -# "how is the API layer connected to the database?" -codebase-index path "ApiController" "Database" --json - -# "what is the Database class and how is it used?" -codebase-index describe "Database" --json - -# generate and open an HTML graph around a file or symbol -codebase-index graph "User" --direction both --depth 2 --open -``` - -Then Read only the returned line ranges and answer with citations. +| Where is X implemented? | `codebase-index search "X" --json` | +| How does X work? | `codebase-index explain "X" --json` | +| What is this codebase? | `codebase-index architecture --json` | +| Find a named symbol | `codebase-index symbol "X" --json` | +| Who calls or references X? | `codebase-index refs "X" --json` | +| What changes if X changes? | `codebase-index impact "X" --json` | +| What does my current diff affect? | `codebase-index diff-impact --json` | +| How are X and Y connected? | `codebase-index path "X" "Y" --json` | +| Describe X and its neighborhood | `codebase-index describe "X" --json` | +| Produce a human graph | `codebase-index graph "X" --output ` | + +Use `search --mode symbol` for exact symbol work, `--mode fts` for text and +error messages, and the default `hybrid` mode for mixed questions. Use pure +`vector` mode only when embeddings are enabled and exact vocabulary is unknown. + +Read [references/commands.md](references/commands.md) only when command options +or routing remain unclear. + +## Evidence protocol + +1. Run the best-matching command with `--json`. +2. Check `index` before trusting the payload: + - missing → run `codebase-index index`, then repeat; + - stale with fewer than 20 changed files → run `codebase-index update`; + - stale with 20 or more changed files → run `codebase-index index`; + - fresh → continue. +3. Start with ranks 1–3. Read only `recommended_reads` line ranges. +4. Trace one additional hop only when the question requires behavior, + ownership, or impact. +5. Answer with `file:line` evidence and state uncertainty explicitly. + +Do not open whole files when a line range is available. A snippet may already +be sufficient. `skeletonized: true` means the response intentionally folded +unrelated body lines; read the supplied range when the missing body matters. + +## Confidence contract + +- **high** — answer from the indexed evidence. +- **medium** — read the recommended ranges and confirm the key claim with one + targeted lookup if necessary. +- **low** or no results — follow `fallback_suggestions`, then use a narrow + Grep/Glob fallback. + +On `refs` and `impact`, inspect `coverage`. If `coverage.partial` is true, an +empty result is inconclusive; confirm with targeted Grep before saying that +nothing references the target. + +Edges carry `confidence`: + +- `extracted` — exact parser evidence; +- `inferred` — heuristic resolution; +- `ambiguous` — unresolved or non-unique. + +Never present an inferred or ambiguous chain as certain. + +## Answer contract + +Structure repository answers around: + +1. **Answer** — the direct conclusion. +2. **Evidence** — the minimum supporting `file:line` references. +3. **Confidence** — only when evidence is partial, inferred, stale, or missing. +4. **Next check** — only when another check would materially reduce uncertainty. + +Do not narrate every search step. Do not claim absence from a partial graph. +Do not replace evidence with a generated HTML graph. + +For payload fields and failure handling, read +[references/response-contract.md](references/response-contract.md). diff --git a/skills/codebase-index/references/commands.md b/skills/codebase-index/references/commands.md new file mode 100644 index 0000000..0efb464 --- /dev/null +++ b/skills/codebase-index/references/commands.md @@ -0,0 +1,73 @@ +# Command Reference + +Load this reference only when the intent table in `SKILL.md` is insufficient. + +## Retrieval + +```bash +codebase-index search "" --json +codebase-index explain "" --json +``` + +Useful search options: + +- `--mode hybrid|fts|symbol|vector` +- `--token-budget ` +- `--limit ` +- `--offset ` +- `--raw` to disable snippet skeletonization +- `--no-fallback` to suppress fallback suggestions + +`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer +it over repeatedly rewording a broad search. + +## Code graph + +```bash +codebase-index architecture --json +codebase-index refs "" --json +codebase-index impact "" --direction up --depth 2 --json +codebase-index diff-impact --base HEAD --direction up --depth 2 --json +codebase-index path "" "" --json +codebase-index describe "" --json +``` + +- `architecture` reads module analysis cached at index time. +- `refs` finds definitions, calls, and graph-backed references. +- `impact` walks dependents (`up`), dependencies (`down`), or both. +- `diff-impact` aggregates impact for tracked changes relative to a verified + Git commit; new or excluded files are reported as unresolved. +- `path` returns the shortest known dependency/call chain. +- `describe` returns a node card with callers, callees, module, and centrality. + +Use `graph` only for a visualization intended for a person: + +```bash +codebase-index graph "" --direction both --depth 2 --output graph.html +``` + +For headless work, use `--output`; do not use `--open`. Exports also support +`--format graphml|dot|neo4j`. + +## Index health + +```bash +codebase-index stats --json +codebase-index doctor +codebase-index update +codebase-index index +``` + +Run `stats` and `doctor` when several unrelated queries have low confidence. +Low symbol counts or partial graph coverage can explain weak results. + +## Query examples + +```bash +codebase-index search "auth token refresh" --json +codebase-index search "AuthService class" --mode symbol --json +codebase-index search "connection reset by peer" --mode fts --json +codebase-index explain "checkout flow" --json +codebase-index impact "User" --direction up --depth 2 --json +codebase-index path "ApiController" "Database" --json +``` diff --git a/skills/codebase-index/references/response-contract.md b/skills/codebase-index/references/response-contract.md new file mode 100644 index 0000000..059d87a --- /dev/null +++ b/skills/codebase-index/references/response-contract.md @@ -0,0 +1,82 @@ +# Response Contract + +Load this reference when interpreting a retrieval packet or handling a weak +result. + +## Ranked results + +Each result can contain: + +- `rank` +- `path` +- `line_start` / `line_end` +- `symbols` +- `score` +- `reason` +- `snippet` +- `skeletonized` +- `elided_lines` + +`recommended_reads` is the read plan. Start with its first one to three entries +and use exact line ranges. + +`pagination.has_more` and `pagination.next_offset` indicate additional results. +Prefer a more specific command or a larger token budget before paging. + +## Freshness + +The `index` object is part of the evidence contract: + +```text +exists=false → index +stale=true, files_changed_since_build<20 → update +stale=true, files_changed_since_build≥20 → full index +stale=false → proceed +``` + +Repeat the original query after rebuilding or updating. + +## Weak results + +Fallback is allowed only when: + +- results are empty; +- confidence is low; +- graph coverage is partial; +- the requested information is not represented by the index. + +Use `fallback_suggestions.ripgrep` first. Otherwise construct one narrow Grep +pattern from the most distinctive symbol, error, or path in the question. +Avoid a full-repository scan unless targeted fallback also fails. + +If several queries are weak: + +```bash +codebase-index stats --json +codebase-index doctor +``` + +Report the limitation instead of inventing certainty. + +## Answer examples + +High confidence: + +```text +Session validation is implemented in `src/auth/session.py:44`. +The request middleware calls it from `src/http/auth.py:18`. +``` + +Partial graph: + +```text +The index found no graph-backed callers, but coverage for Lua is partial. +A targeted text search still finds two call sites in … +``` + +Inferred chain: + +```text +The route-to-service link is parser-extracted; the service-to-model link is +heuristic, so the final hop should be verified before refactoring. +``` diff --git a/src/codebase_index/__init__.py b/src/codebase_index/__init__.py index 77addf7..62be96d 100644 --- a/src/codebase_index/__init__.py +++ b/src/codebase_index/__init__.py @@ -4,4 +4,4 @@ See docs/ARCHITECTURE.md for the module map. """ -__version__ = "1.6.0" +__version__ = "1.7.0" diff --git a/src/codebase_index/cli.py b/src/codebase_index/cli.py index 3ad5f3b..ffd216f 100644 --- a/src/codebase_index/cli.py +++ b/src/codebase_index/cli.py @@ -479,6 +479,41 @@ def impact( typer.echo(json_out.render(resp) if is_json else md_out.render_impact(resp)) +@app.command("diff-impact") +def diff_impact( + ctx: typer.Context, + base_ref: str = typer.Option("HEAD", "--base", help="Git commit/ref to compare against."), + depth: int = typer.Option(2, "--depth", min=1), + direction: str = typer.Option("up", "--direction", help="up|down|both"), + max_files: int = typer.Option( + 200, "--max-files", min=1, + help="Safety cap for changed files analysed in one run.", + ), + json_flag: bool = typer.Option(False, "--json", help="Emit machine-readable JSON."), +) -> None: + """Predict the graph blast radius of the current Git diff.""" + from .output import json as json_out + from .output import markdown as md_out + from .service import diff_impact_payload + + is_json = json_flag or bool(ctx.obj and ctx.obj.get("json")) + db_path, cfg = _ensure_index(ctx) + try: + payload = diff_impact_payload( + db_path, cfg, base_ref=base_ref, depth=depth, + direction=direction, max_files=max_files, + ) + except (ValueError, RuntimeError, OSError) as exc: + if is_json: + typer.echo(json_out.render({"error": str(exc), "base_ref": base_ref})) + else: + typer.echo(f"[codebase-index] {exc}") + raise typer.Exit(code=2) + typer.echo( + json_out.render(payload) if is_json else md_out.render_diff_impact(payload) + ) + + @app.command() def explain( ctx: typer.Context, diff --git a/src/codebase_index/mcp/server.py b/src/codebase_index/mcp/server.py index 0f7be5f..c842311 100644 --- a/src/codebase_index/mcp/server.py +++ b/src/codebase_index/mcp/server.py @@ -236,6 +236,37 @@ def impact_of( return _emit("impact_of", resp.model_dump()) +@_tool() +def impact_of_diff( + base_ref: str = "HEAD", + depth: int = 2, + direction: str = "up", + max_files: int = 200, +) -> str: + """Predict the graph blast radius of tracked changes in the working tree. + + Args: + base_ref: Git commit/ref used as the comparison base. + depth: How many graph hops to follow. + direction: "up", "down", or "both". + max_files: Safety cap for changed files analysed in one call. + """ + db_path, cfg = _resolve_db() + if not db_path.exists(): + return _emit("impact_of_diff", _no_index_payload()) + + from ..service import diff_impact_payload + + try: + payload = diff_impact_payload( + db_path, cfg, base_ref=base_ref, depth=depth, + direction=direction, max_files=max_files, + ) + except (ValueError, RuntimeError, OSError) as exc: + payload = {"error": str(exc), "base_ref": base_ref} + return _emit("impact_of_diff", payload) + + @_tool() def explain_code( query: str, diff --git a/src/codebase_index/output/markdown.py b/src/codebase_index/output/markdown.py index f120c5b..2994e1e 100644 --- a/src/codebase_index/output/markdown.py +++ b/src/codebase_index/output/markdown.py @@ -314,3 +314,51 @@ def render_impact(resp: ImpactResponse) -> str: if note: lines.append(note) return "\n".join(lines).rstrip() + "\n" + + +def render_diff_impact(payload: dict) -> str: + """Render a concise change-impact report for a human.""" + lines = [ + f"**diff impact:** `{payload['base_ref']}` → working tree ", + f"**direction:** `{payload['direction']}` · **depth:** {payload['depth']}", + "", + ] + changed = payload["changed_files"] + if not changed: + lines.append("_No tracked changes relative to the selected base._") + return "\n".join(lines) + "\n" + + lines.append(f"**changed files ({payload['changed_files_total']}):**") + lines.extend(f"- `{path}`" for path in changed) + if payload.get("truncated"): + lines.append( + f"- _Analysis capped at {len(changed)} files; raise `--max-files` to inspect more._" + ) + + affected = payload["affected_files"] + lines.append("") + if affected: + lines.extend([ + f"**affected files ({len(affected)}):**", + "| distance | path | changed by | edge | confidence |", + "|---:|---|---|---|---|", + ]) + for item in affected: + sources = ", ".join(f"`{p}`" for p in item["changed_by"]) + lines.append( + f"| {item['distance']} | `{item['path']}` | {sources} | " + f"{item.get('via_edge') or ''} | {item.get('via_confidence') or ''} |" + ) + else: + lines.append("_No graph-backed affected files found._") + + if payload.get("unresolved_files"): + lines.append("\n**not represented in the current index:**") + lines.extend(f"- `{path}`" for path in payload["unresolved_files"]) + if payload.get("coverage", {}).get("partial"): + lines.append( + "\n> Graph coverage is partial for " + + ", ".join(payload["coverage"]["languages"]) + + "; a short result is inconclusive." + ) + return "\n".join(lines).rstrip() + "\n" diff --git a/src/codebase_index/service.py b/src/codebase_index/service.py index 60bec24..1857221 100644 --- a/src/codebase_index/service.py +++ b/src/codebase_index/service.py @@ -11,6 +11,7 @@ import os import sqlite3 +import subprocess from pathlib import Path from typing import TYPE_CHECKING, Any, Callable, Optional, Union @@ -105,6 +106,141 @@ def search_payload( ) +def diff_impact_payload( + db_path: Path, + cfg: "Config", + *, + base_ref: str = "HEAD", + depth: int = 2, + direction: str = "up", + max_files: int = 200, +) -> dict[str, Any]: + """Aggregate graph impact for files changed relative to a Git commit. + + Git is invoked with argument arrays and a verified commit SHA; no shell is + involved. The file cap bounds worst-case graph work on very large diffs. + """ + from .graph.expand import impact_lookup + from .indexer.freshness import compute_freshness + from .storage.db import Database + + if direction not in {"up", "down", "both"}: + raise ValueError("direction must be one of: up, down, both") + if depth < 1: + raise ValueError("depth must be >= 1") + if max_files < 1: + raise ValueError("max_files must be >= 1") + if not base_ref or base_ref.startswith("-") or "\x00" in base_ref: + raise ValueError("base_ref must be a non-option Git revision") + + root = Path(cfg.root).resolve() + resolved = subprocess.run( + ["git", "-C", str(root), "rev-parse", "--verify", "--end-of-options", + f"{base_ref}^{{commit}}"], + capture_output=True, + text=True, + timeout=10, + check=False, + ) + if resolved.returncode != 0: + detail = (resolved.stderr or resolved.stdout).strip() + raise ValueError(f"cannot resolve Git base {base_ref!r}: {detail or 'unknown revision'}") + base_commit = resolved.stdout.strip() + + changed = subprocess.run( + ["git", "-C", str(root), "diff", "--name-only", "--diff-filter=ACDMR", + base_commit, "--"], + capture_output=True, + text=True, + timeout=20, + check=False, + ) + if changed.returncode != 0: + detail = (changed.stderr or changed.stdout).strip() + raise RuntimeError(f"git diff failed: {detail or 'unknown error'}") + + normalized_changed = list(dict.fromkeys( + line.strip().replace("\\", "/") + for line in changed.stdout.splitlines() + if line.strip() + )) + try: + own_cache = cache_dir_for(cfg).resolve().relative_to(root).as_posix() + except ValueError: + own_cache = "" + all_changed = [ + path for path in normalized_changed + if not own_cache + or (path != own_cache and not path.startswith(f"{own_cache}/")) + ] + truncated = len(all_changed) > max_files + targets = all_changed[:max_files] + + affected: dict[str, dict[str, Any]] = {} + unresolved: list[str] = [] + coverage_languages: set[str] = set() + coverage_reasons: list[str] = [] + + with Database(db_path) as db: + freshness = compute_freshness(db.conn, root, cfg).model_dump() + for target in targets: + impact = impact_lookup( + db.conn, target, depth=depth, direction=direction + ) + if not impact.nodes and not impact.files: + # A tracked file can be new, deleted after the last update, or + # excluded by the security/discovery gates. + from .storage import repo + if repo.file_by_path(db.conn, target) is None: + unresolved.append(target) + if impact.coverage.partial: + coverage_languages.update(impact.coverage.languages) + if impact.coverage.reason: + coverage_reasons.append(impact.coverage.reason) + for node in impact.nodes: + current = affected.get(node.path) + candidate = { + "path": node.path, + "distance": node.distance, + "changed_by": [target], + "via_edge": node.via_edge, + "via_confidence": node.via_confidence, + } + if current is None: + affected[node.path] = candidate + else: + if target not in current["changed_by"]: + current["changed_by"].append(target) + if node.distance < current["distance"]: + current.update({ + "distance": node.distance, + "via_edge": node.via_edge, + "via_confidence": node.via_confidence, + }) + + ranked = sorted( + affected.values(), + key=lambda item: (item["distance"], item["path"]), + ) + return { + "base_ref": base_ref, + "base_commit": base_commit, + "direction": direction, + "depth": depth, + "index": freshness, + "changed_files": targets, + "changed_files_total": len(all_changed), + "truncated": truncated, + "unresolved_files": unresolved, + "affected_files": ranked, + "coverage": { + "partial": bool(coverage_languages), + "languages": sorted(coverage_languages), + "reason": " ".join(dict.fromkeys(coverage_reasons)) or None, + }, + } + + def architecture_payload(db_path: Path, cfg: "Config") -> dict[str, Any]: """The cached architecture analytics (communities / god nodes / surprising / questions) plus index freshness — the payload both CLI and MCP serialize. diff --git a/src/codebase_index/skill_template/SKILL.md b/src/codebase_index/skill_template/SKILL.md index ee31b7d..9404686 100644 --- a/src/codebase_index/skill_template/SKILL.md +++ b/src/codebase_index/skill_template/SKILL.md @@ -1,198 +1,89 @@ --- name: codebase-index -description: Use this skill before answering questions about a repository's architecture, implementation locations, symbols, references, dependencies, refactoring impact, data flow, bugs, or where something is implemented. It searches a local hybrid codebase index so Claude reads only the most relevant files instead of scanning the entire project. -allowed-tools: Bash(python -m codebase_index *), Bash(python3 -m codebase_index *), Bash(codebase-index *), Bash(cbx *), Read, Grep, Glob +description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository. +allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob --- # Codebase Index -Use this skill first for codebase questions. +Use the local index before reading repository files. -Never scan the entire repository before searching the index. +The operating principle is **Find → Trace → Predict**: -## When to use +- **Find** the implementation with ranked retrieval. +- **Trace** behavior through definitions, callers, dependencies, and paths. +- **Predict** change impact while preserving an explicit evidence trail. -Invoke this skill **before reading any files** when the user asks about this project's code: +## Route the question -- "where is X implemented" / "find X" / "locate the X function" -- "how does X work" / "explain the X flow" -- "what breaks if I change X" / "what depends on X" (impact analysis) -- "who calls X" / "references to X" -- "trace the data flow of X" -- "why is this error happening" (error/stack trace) -- "explain the architecture" / "give me an overview" -- Any question about symbols, files, dependencies, or refactoring scope - -Do **not** use it for: editing files, running the application, or non-code questions. - -## How to call the CLI - -Use the `codebase-index` CLI directly, or the bundled `cbx` wrapper: - -```bash -codebase-index search "$QUERY" --json -``` - -Pick the subcommand by intent: - -| User intent | Command | +| Intent | Command | |---|---| -| "how does X work" / "explain X" / "walk me through" | `codebase-index explain "$QUERY" --json` | -| overview / architecture / "map the codebase" | `codebase-index architecture --json` | -| general / unsure | `codebase-index search "$QUERY" --json` | -| keyword / "where is" | `codebase-index search "$QUERY" --json` | -| a specific symbol name | `codebase-index symbol "" --json` | -| "who calls / references" | `codebase-index refs "" --json` | -| "what breaks if I change" | `codebase-index impact "" --json` | -| "how is X connected to Y" / dependency path | `codebase-index path "" "" --json` | -| "what is X" / describe a symbol's role | `codebase-index describe "" --json` | -| visual graph / "open graph" (for the human, not for you to read) | `codebase-index graph "" --open` | - -`architecture` returns the codebase map computed at index time — detected modules -(communities), god nodes (most-connected symbols), surprising cross-module links, -and suggested questions. Reach for it on "give me an overview" / "where do I -start" questions instead of a broad `explain`. - -`path "A" "B"` returns the shortest dependency/call chain between two symbols or -files; `describe "X"` returns a node card (definition, callers, callees, -in/out degree, module, god-node rank). Both annotate edges with a `confidence` -(`extracted` exact, `inferred` heuristic, `ambiguous` unresolved) — treat a path -or callee list that leans on `inferred`/`ambiguous` edges as less certain. - -The `graph` command renders an HTML dependency graph for a person to look at — -it is not a retrieval packet. Use it only when the user explicitly wants a visual -graph; for "what depends on X" answer from `impact`/`refs` instead. In a headless -session prefer `--output ` over `--open`. `--format graphml|dot|neo4j` -exports the graph for external tools (Gephi/yEd, Graphviz, Neo4j) instead of HTML. - -`explain` has a higher default token budget (2200) and HOW_IT_WORKS intent weights — use it whenever the question is about understanding behavior or flow. - -For `search`, pick a `--mode` when the intent is clear: -- `--mode symbol` — pure symbol lookups (faster, no FTS noise) -- `--mode fts` — text/keyword queries where symbol names don't matter -- `--mode hybrid` — default; best for mixed queries -- `--mode vector` — semantic / near-synonym queries ("where do we rate-limit - requests" without the exact words). Requires opt-in embeddings; falls back with - a clear message when they are not enabled. `hybrid` already blends vectors in - when embeddings are on, so reach for `vector` only for pure-semantic recall. - -Natural-language kind words such as `method`, `function`, `class`, `interface`, -`enum`, and `type` constrain the symbol retriever inside `search`. - -Use `--json` for programmatic parsing; omit for human-readable output. -Search/read commands auto-build the index when it is missing; still check -freshness and run `update`/`index` when responses report stale data. - -## Step-by-step workflow - -1. **Query the index** using the appropriate subcommand for `$QUERY`. -2. **Check index freshness** in the response: - - `index.exists: false` → run `codebase-index index` first, then re-query. - - `index.stale: true`, `files_changed_since_build < 20` → run `codebase-index update`, then re-query. - - `index.stale: true`, `files_changed_since_build ≥ 20` → run `codebase-index index` (full rebuild). - - Otherwise proceed with results. -3. **Read ONLY the `recommended_reads`** — use the Read tool with `offset`/`limit` to read the exact line ranges returned. Do not open whole files. -4. **Answer** with file:line citations (e.g., `src/auth/token.py:88-134`). -5. **Fallback** only if confidence is low or results are empty (see below). - -## Token-budgeted output interpretation - -The index returns a **ranked retrieval packet** with: - -- `rank` — result position (start with 1-3) -- `path` — file path -- `line_start` / `line_end` — exact line range to read -- `symbols` — symbols found in this range -- `score` — relevance score -- `reason` — why this result ranked (e.g., "exact symbol match, 4 callers") -- `snippet` — compact code excerpt (may already answer the question); `null` means budget was spent — read via `recommended_reads` instead -- `skeletonized` — when `true`, the `snippet` is a **focus skeleton**: import/signature/class lines and the line(s) matching your query are kept, while function bodies collapse to a marker like `... 24 lines elided (read 88-134)`. Read that line range (or the result's `line_start`/`line_end`) when you need a full body. -- `elided_lines` — how many source lines the skeleton folded away (`0` when not skeletonized). - -Top-level fields: - -- `recommended_reads` — the precise `{path, line_start, line_end}` list to open next. This is your read plan. -- `confidence` — `high` (answer directly), `medium` (read + optionally confirm with one Grep), `low` (use fallback). -- `fallback_suggestions` — ripgrep patterns and paths to try if the index is weak. -- `intent` / `mode` — how the query was classified and which retrievers ran; - useful to sanity-check a weak result (e.g. a "how does X work" question that - resolved to a bare symbol lookup may need `explain` instead). -- `pagination` — present only when more results exist than fit the page. It - reports `has_more` and `next_offset`. To page, re-run `search` with - `--offset ` (e.g. `search "query" --limit 10 --offset 10`). Prefer - refining with a more specific subcommand or raising `--token-budget` first — - page only when the top results genuinely miss the answer. -- `coverage` (on `refs`/`impact` only) — graph-completeness signal. Dependency - edges (imports/inheritance) are extracted only for fully supported languages. - When `coverage.partial` is `true` (the symbol/file is in a Tier-B language such - as Lua), an **empty or short `refs`/`impact` result is inconclusive** — it may - just be unanalyzed, not absent. Confirm with a Grep before concluding "nothing - references this". `coverage.languages` lists the affected languages. - -## Token efficiency rules - -- Trust the index. Read the **fewest** files needed — start with rank 1-3 only. -- Read **line ranges**, not whole files. Use `line_start`/`line_end` with Read's `offset`/`limit`. -- The `snippet` may already answer the question — re-read only if you need more context. -- Prefer `search`/`symbol`/`refs`/`impact`/`explain` over manual Grep/Glob — those are expensive fallbacks, not step 1. -- Don't re-run the query with trivially reworded text; refine with a different subcommand instead. -- For broad questions (`confidence: low`, architecture, data-flow), raise the budget: `--token-budget 3000`. -- Test files are demoted in ranking by default. Include "test" in the query to surface them. -- Snippets are skeletonized by default to fit more results in the budget. The matched line is always preserved; pass `--raw` (CLI) or `raw: true` (MCP) on the rare occasion you need full bodies inline instead of reading the cited line range. - -## Fallback behavior - -Fall back to built-in search **only** when: results are empty, `confidence` is `low`, or the user asks for something the index clearly doesn't cover. - -0. If confidence is consistently low across queries, run diagnostics first: - ```bash - codebase-index stats --json # per-language file/symbol counts + graph tier - codebase-index doctor # surface config or security issues - ``` - Low symbol counts for a language may mean the index needs a full rebuild: `codebase-index index`. - In `stats`, each language carries `graph: full|partial` (and `doctor` reports a - `graph_coverage` finding): `partial` (Tier-B) means `refs`/`impact` lack - import/inheritance edges for that language — treat empty results there as - inconclusive. - -1. Use `fallback_suggestions.ripgrep` patterns from the response via Grep. -2. If still nothing, Glob for likely paths, then Grep within them. -3. As a last resort, broaden the search — but tell the user the index was weak here (it may need a rebuild: `codebase-index index`). - -Never start with a full-repo scan when the index exists and is fresh. - -## Examples - -```bash -# "how does the auth flow work?" -codebase-index explain "auth flow" --json - -# "explain the overall architecture" / "where do I start" — modules, god nodes -codebase-index architecture --json - -# "where is auth token refresh implemented?" -codebase-index search "auth token refresh" --json - -# "what breaks if I change the User model?" -codebase-index impact "User" --json - -# "who calls send_email?" -codebase-index refs "send_email" --json - -# "find the AuthService class" -codebase-index symbol "AuthService" --json - -# precise symbol search (faster, no FTS noise) -codebase-index search "AuthService" --mode symbol --json - -# "how is the API layer connected to the database?" -codebase-index path "ApiController" "Database" --json - -# "what is the Database class and how is it used?" -codebase-index describe "Database" --json - -# generate and open an HTML graph around a file or symbol -codebase-index graph "User" --direction both --depth 2 --open -``` - -Then Read only the returned line ranges and answer with citations. +| Where is X implemented? | `codebase-index search "X" --json` | +| How does X work? | `codebase-index explain "X" --json` | +| What is this codebase? | `codebase-index architecture --json` | +| Find a named symbol | `codebase-index symbol "X" --json` | +| Who calls or references X? | `codebase-index refs "X" --json` | +| What changes if X changes? | `codebase-index impact "X" --json` | +| What does my current diff affect? | `codebase-index diff-impact --json` | +| How are X and Y connected? | `codebase-index path "X" "Y" --json` | +| Describe X and its neighborhood | `codebase-index describe "X" --json` | +| Produce a human graph | `codebase-index graph "X" --output ` | + +Use `search --mode symbol` for exact symbol work, `--mode fts` for text and +error messages, and the default `hybrid` mode for mixed questions. Use pure +`vector` mode only when embeddings are enabled and exact vocabulary is unknown. + +Read [references/commands.md](references/commands.md) only when command options +or routing remain unclear. + +## Evidence protocol + +1. Run the best-matching command with `--json`. +2. Check `index` before trusting the payload: + - missing → run `codebase-index index`, then repeat; + - stale with fewer than 20 changed files → run `codebase-index update`; + - stale with 20 or more changed files → run `codebase-index index`; + - fresh → continue. +3. Start with ranks 1–3. Read only `recommended_reads` line ranges. +4. Trace one additional hop only when the question requires behavior, + ownership, or impact. +5. Answer with `file:line` evidence and state uncertainty explicitly. + +Do not open whole files when a line range is available. A snippet may already +be sufficient. `skeletonized: true` means the response intentionally folded +unrelated body lines; read the supplied range when the missing body matters. + +## Confidence contract + +- **high** — answer from the indexed evidence. +- **medium** — read the recommended ranges and confirm the key claim with one + targeted lookup if necessary. +- **low** or no results — follow `fallback_suggestions`, then use a narrow + Grep/Glob fallback. + +On `refs` and `impact`, inspect `coverage`. If `coverage.partial` is true, an +empty result is inconclusive; confirm with targeted Grep before saying that +nothing references the target. + +Edges carry `confidence`: + +- `extracted` — exact parser evidence; +- `inferred` — heuristic resolution; +- `ambiguous` — unresolved or non-unique. + +Never present an inferred or ambiguous chain as certain. + +## Answer contract + +Structure repository answers around: + +1. **Answer** — the direct conclusion. +2. **Evidence** — the minimum supporting `file:line` references. +3. **Confidence** — only when evidence is partial, inferred, stale, or missing. +4. **Next check** — only when another check would materially reduce uncertainty. + +Do not narrate every search step. Do not claim absence from a partial graph. +Do not replace evidence with a generated HTML graph. + +For payload fields and failure handling, read +[references/response-contract.md](references/response-contract.md). diff --git a/src/codebase_index/skill_template/references/commands.md b/src/codebase_index/skill_template/references/commands.md new file mode 100644 index 0000000..0efb464 --- /dev/null +++ b/src/codebase_index/skill_template/references/commands.md @@ -0,0 +1,73 @@ +# Command Reference + +Load this reference only when the intent table in `SKILL.md` is insufficient. + +## Retrieval + +```bash +codebase-index search "" --json +codebase-index explain "" --json +``` + +Useful search options: + +- `--mode hybrid|fts|symbol|vector` +- `--token-budget ` +- `--limit ` +- `--offset ` +- `--raw` to disable snippet skeletonization +- `--no-fallback` to suppress fallback suggestions + +`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer +it over repeatedly rewording a broad search. + +## Code graph + +```bash +codebase-index architecture --json +codebase-index refs "" --json +codebase-index impact "" --direction up --depth 2 --json +codebase-index diff-impact --base HEAD --direction up --depth 2 --json +codebase-index path "" "" --json +codebase-index describe "" --json +``` + +- `architecture` reads module analysis cached at index time. +- `refs` finds definitions, calls, and graph-backed references. +- `impact` walks dependents (`up`), dependencies (`down`), or both. +- `diff-impact` aggregates impact for tracked changes relative to a verified + Git commit; new or excluded files are reported as unresolved. +- `path` returns the shortest known dependency/call chain. +- `describe` returns a node card with callers, callees, module, and centrality. + +Use `graph` only for a visualization intended for a person: + +```bash +codebase-index graph "" --direction both --depth 2 --output graph.html +``` + +For headless work, use `--output`; do not use `--open`. Exports also support +`--format graphml|dot|neo4j`. + +## Index health + +```bash +codebase-index stats --json +codebase-index doctor +codebase-index update +codebase-index index +``` + +Run `stats` and `doctor` when several unrelated queries have low confidence. +Low symbol counts or partial graph coverage can explain weak results. + +## Query examples + +```bash +codebase-index search "auth token refresh" --json +codebase-index search "AuthService class" --mode symbol --json +codebase-index search "connection reset by peer" --mode fts --json +codebase-index explain "checkout flow" --json +codebase-index impact "User" --direction up --depth 2 --json +codebase-index path "ApiController" "Database" --json +``` diff --git a/src/codebase_index/skill_template/references/response-contract.md b/src/codebase_index/skill_template/references/response-contract.md new file mode 100644 index 0000000..059d87a --- /dev/null +++ b/src/codebase_index/skill_template/references/response-contract.md @@ -0,0 +1,82 @@ +# Response Contract + +Load this reference when interpreting a retrieval packet or handling a weak +result. + +## Ranked results + +Each result can contain: + +- `rank` +- `path` +- `line_start` / `line_end` +- `symbols` +- `score` +- `reason` +- `snippet` +- `skeletonized` +- `elided_lines` + +`recommended_reads` is the read plan. Start with its first one to three entries +and use exact line ranges. + +`pagination.has_more` and `pagination.next_offset` indicate additional results. +Prefer a more specific command or a larger token budget before paging. + +## Freshness + +The `index` object is part of the evidence contract: + +```text +exists=false → index +stale=true, files_changed_since_build<20 → update +stale=true, files_changed_since_build≥20 → full index +stale=false → proceed +``` + +Repeat the original query after rebuilding or updating. + +## Weak results + +Fallback is allowed only when: + +- results are empty; +- confidence is low; +- graph coverage is partial; +- the requested information is not represented by the index. + +Use `fallback_suggestions.ripgrep` first. Otherwise construct one narrow Grep +pattern from the most distinctive symbol, error, or path in the question. +Avoid a full-repository scan unless targeted fallback also fails. + +If several queries are weak: + +```bash +codebase-index stats --json +codebase-index doctor +``` + +Report the limitation instead of inventing certainty. + +## Answer examples + +High confidence: + +```text +Session validation is implemented in `src/auth/session.py:44`. +The request middleware calls it from `src/http/auth.py:18`. +``` + +Partial graph: + +```text +The index found no graph-backed callers, but coverage for Lua is partial. +A targeted text search still finds two call sites in … +``` + +Inferred chain: + +```text +The route-to-service link is parser-extracted; the service-to-model link is +heuristic, so the final hop should be verified before refactoring. +``` diff --git a/src/codebase_index/skill_template/scripts/cbx b/src/codebase_index/skill_template/scripts/cbx index 5666358..94a9114 100644 --- a/src/codebase_index/skill_template/scripts/cbx +++ b/src/codebase_index/skill_template/scripts/cbx @@ -4,7 +4,7 @@ # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch). set -euo pipefail -ALLOWED="search explain symbol refs impact graph stats doctor update index" +ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index" sub="${1:-}" case " $ALLOWED " in diff --git a/src/codebase_index/skill_template/scripts/cbx.ps1 b/src/codebase_index/skill_template/scripts/cbx.ps1 index bb8e05d..eee56ae 100644 --- a/src/codebase_index/skill_template/scripts/cbx.ps1 +++ b/src/codebase_index/skill_template/scripts/cbx.ps1 @@ -8,7 +8,10 @@ param( ) $ErrorActionPreference = "Stop" -$allowed = @("search", "explain", "symbol", "refs", "impact", "graph", "stats", "doctor", "update", "index") +$allowed = @( + "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact", + "path", "describe", "graph", "stats", "doctor", "update", "index" +) if ($allowed -notcontains $Subcommand) { Write-Error "cbx: refusing subcommand '$Subcommand'. Allowed: $($allowed -join ', ')" diff --git a/tests/golden/mcp_impact_of_diff.json b/tests/golden/mcp_impact_of_diff.json new file mode 100644 index 0000000..40b1ec7 --- /dev/null +++ b/tests/golden/mcp_impact_of_diff.json @@ -0,0 +1,25 @@ +{ + "affected_files": [], + "base_commit": "", + "base_ref": "HEAD", + "changed_files": [], + "changed_files_total": 0, + "coverage": { + "languages": [], + "partial": false, + "reason": null + }, + "depth": 2, + "direction": "up", + "index": { + "built_at": "", + "exists": true, + "files_changed_since_build": 0, + "head_commit": "", + "stale": false + }, + "schema_version": 1, + "tool": "impact_of_diff", + "truncated": false, + "unresolved_files": [] +} diff --git a/tests/golden_utils.py b/tests/golden_utils.py index ced4803..eb7c10b 100644 --- a/tests/golden_utils.py +++ b/tests/golden_utils.py @@ -19,7 +19,7 @@ # Keys whose values are inherently volatile and must be masked, not compared. _TS_KEYS = {"built_at", "indexed_at", "generated_at"} -_SHA_KEYS = {"head_commit"} +_SHA_KEYS = {"head_commit", "base_commit"} # Released package version churns on every bump; mask it so goldens don't. Note # `schema_version` is deliberately NOT masked — it IS the contract under test. _VERSION_KEYS = {"package_version"} diff --git a/tests/test_diff_impact.py b/tests/test_diff_impact.py new file mode 100644 index 0000000..caaeca2 --- /dev/null +++ b/tests/test_diff_impact.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +import json +import shutil +import subprocess + +from typer.testing import CliRunner + +from codebase_index.cli import app + +runner = CliRunner() + + +def _git_repo(sample_repo, tmp_path): + root = tmp_path / "repo" + shutil.copytree(sample_repo, root) + subprocess.run(["git", "init", "-q", str(root)], check=True) + subprocess.run(["git", "-C", str(root), "add", "."], check=True) + subprocess.run( + [ + "git", "-C", str(root), + "-c", "user.name=Tests", + "-c", "user.email=tests@example.invalid", + "commit", "-qm", "baseline", + ], + check=True, + ) + return root + + +def test_diff_impact_reports_changed_and_affected_files(sample_repo, tmp_path): + root = _git_repo(sample_repo, tmp_path) + indexed = runner.invoke(app, ["--root", str(root), "index"]) + assert indexed.exit_code == 0, indexed.output + + changed = root / "src" / "models" / "user.py" + changed.write_text(changed.read_text(encoding="utf-8") + "\n# changed\n", encoding="utf-8") + + result = runner.invoke( + app, + ["--root", str(root), "--json", "diff-impact", "--depth", "2"], + ) + assert result.exit_code == 0, result.output + payload = json.loads(result.output) + assert payload["changed_files"] == ["src/models/user.py"] + assert payload["changed_files_total"] == 1 + assert payload["truncated"] is False + assert "src/api/service.py" in { + item["path"] for item in payload["affected_files"] + } + assert payload["index"]["stale"] is True + + +def test_diff_impact_empty_worktree_is_clear(sample_repo, tmp_path): + root = _git_repo(sample_repo, tmp_path) + assert runner.invoke(app, ["--root", str(root), "index"]).exit_code == 0 + + result = runner.invoke(app, ["--root", str(root), "diff-impact"]) + assert result.exit_code == 0, result.output + assert "No tracked changes" in result.output + + +def test_diff_impact_rejects_option_like_base(sample_repo, tmp_path): + root = _git_repo(sample_repo, tmp_path) + assert runner.invoke(app, ["--root", str(root), "index"]).exit_code == 0 + + result = runner.invoke( + app, + ["--root", str(root), "--json", "diff-impact", "--base=--output=/tmp/x"], + ) + assert result.exit_code == 2 + payload = json.loads(result.output) + assert "non-option Git revision" in payload["error"] diff --git a/tests/test_mcp_golden.py b/tests/test_mcp_golden.py index 8a1a608..6c76a3c 100644 --- a/tests/test_mcp_golden.py +++ b/tests/test_mcp_golden.py @@ -67,6 +67,7 @@ def _call(indexed_repo, tool_fn, **kwargs): "mcp_find_symbol": (lambda: mcp_server.find_symbol, {"name": "User"}), "mcp_find_refs": (lambda: mcp_server.find_refs, {"symbol": "refresh_access_token"}), "mcp_impact_of": (lambda: mcp_server.impact_of, {"target": "src/models/user.py", "direction": "up"}), + "mcp_impact_of_diff": (lambda: mcp_server.impact_of_diff, {}), "mcp_explain_code": (lambda: mcp_server.explain_code, {"query": "how does authentication work"}), "mcp_architecture": (lambda: mcp_server.architecture_overview, {}), "mcp_path_between": (lambda: mcp_server.path_between, {"source": "renew", "target": "refresh_access_token"}), @@ -81,6 +82,7 @@ def _call(indexed_repo, tool_fn, **kwargs): "mcp_find_symbol": "find_symbol", "mcp_find_refs": "find_refs", "mcp_impact_of": "impact_of", + "mcp_impact_of_diff": "impact_of_diff", "mcp_explain_code": "explain_code", "mcp_architecture": "architecture_overview", "mcp_path_between": "path_between", diff --git a/tests/test_mcp_server.py b/tests/test_mcp_server.py index b53c536..fd47394 100644 --- a/tests/test_mcp_server.py +++ b/tests/test_mcp_server.py @@ -35,6 +35,7 @@ def test_mcp_server_has_expected_tools(): "find_symbol", "find_refs", "impact_of", + "impact_of_diff", "explain_code", "architecture_overview", "path_between", @@ -71,6 +72,7 @@ def test_search_code_no_index(): "find_symbol": lambda: _call(mcp_server.find_symbol, name="Foo"), "find_refs": lambda: _call(mcp_server.find_refs, symbol="foo"), "impact_of": lambda: _call(mcp_server.impact_of, target="foo.py"), + "impact_of_diff": lambda: _call(mcp_server.impact_of_diff), "explain_code": lambda: _call(mcp_server.explain_code, query="how does foo work"), "architecture_overview": lambda: _call(mcp_server.architecture_overview), "path_between": lambda: _call(mcp_server.path_between, source="a", target="b"), @@ -108,6 +110,11 @@ def test_impact_of_no_index(): assert "error" in result +def test_impact_of_diff_no_index(): + result = _with_missing_db(lambda: _call(mcp_server.impact_of_diff)) + assert "error" in result + + def test_explain_code_no_index(): result = _with_missing_db(lambda: _call(mcp_server.explain_code, query="how does foo work")) assert "error" in result diff --git a/tests/test_packaging.py b/tests/test_packaging.py index ec76406..5297c2e 100644 --- a/tests/test_packaging.py +++ b/tests/test_packaging.py @@ -11,6 +11,8 @@ def _template(): def test_packaged_template_has_skill_and_scripts(): root = _template() assert (root / "SKILL.md").is_file() + assert (root / "references" / "commands.md").is_file() + assert (root / "references" / "response-contract.md").is_file() assert (root / "scripts" / "cbx").is_file() assert (root / "scripts" / "cbx.ps1").is_file() assert (root / "examples" / "hooks" / "settings.json").is_file() @@ -25,6 +27,18 @@ def test_packaged_skill_matches_dev_copy(): def test_packaged_cbx_whitelists_safe_subcommands_only(): cbx = (_template() / "scripts" / "cbx").read_text(encoding="utf-8") - assert 'ALLOWED="search explain symbol refs impact graph stats doctor update index"' in cbx + assert ( + 'ALLOWED="search explain architecture symbol refs impact diff-impact path describe ' + 'graph stats doctor update index"' + ) in cbx for forbidden in ("clean", "init", "watch"): assert f" {forbidden} " not in f' {cbx.split("ALLOWED=")[1].splitlines()[0]} ' + + +def test_packaged_skill_has_no_unscoped_cli_or_python_permission(): + skill = (_template() / "SKILL.md").read_text(encoding="utf-8") + frontmatter = skill.split("---", 2)[1] + assert "Bash(codebase-index *)" not in frontmatter + assert "Bash(python -m codebase_index *)" not in frontmatter + for forbidden in ("clean", "init", "watch"): + assert f"Bash(codebase-index {forbidden} *)" not in frontmatter From 0e42fe36b83fe8098563a42e31b11107c37bae73 Mon Sep 17 00:00:00 2001 From: denfry Date: Wed, 29 Jul 2026 10:54:06 +0300 Subject: [PATCH 2/2] fix(ci): stabilize lint policy across Ruff upgrades Make the pre-0.16 rule profile explicit so dependency updates cannot silently redefine the release gate. Pin CI actions and default workflow permissions to read-only to reduce supply-chain risk. --- .github/workflows/ci.yml | 10 ++++++---- pyproject.toml | 5 +++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e2657b..e0d031a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,12 +5,14 @@ on: branches: [main] pull_request: +permissions: read-all + jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 with: python-version: "3.12" - run: python -m pip install --upgrade pip @@ -31,8 +33,8 @@ jobs: python-version: ["3.11", "3.12", "3.13"] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 with: python-version: ${{ matrix.python-version }} - run: python -m pip install --upgrade pip diff --git a/pyproject.toml b/pyproject.toml index d3eaf8a..35ec711 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -73,6 +73,11 @@ packages = ["src/codebase_index"] line-length = 100 target-version = "py311" +[tool.ruff.lint] +# Keep the pre-0.16 default profile explicit. Ruff 0.16 expanded its implicit +# defaults substantially; upgrades must not silently redefine this CI gate. +select = ["E4", "E7", "E9", "F"] + [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q --cov=codebase_index --cov-report=term-missing --cov-fail-under=80"

+ Quick start · + Install · + Benchmarks · + Security · + MCP +