indexkit 0.6.3__tar.gz → 0.6.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {indexkit-0.6.3 → indexkit-0.6.4}/.claude-plugin/plugin.json +2 -3
  2. {indexkit-0.6.3 → indexkit-0.6.4}/CHANGELOG.md +20 -0
  3. {indexkit-0.6.3 → indexkit-0.6.4}/PKG-INFO +3 -3
  4. {indexkit-0.6.3 → indexkit-0.6.4}/README.md +2 -2
  5. {indexkit-0.6.3 → indexkit-0.6.4}/apm.yml +3 -3
  6. {indexkit-0.6.3 → indexkit-0.6.4}/pyproject.toml +1 -1
  7. {indexkit-0.6.3/bin → indexkit-0.6.4/scripts}/indexkit +2 -2
  8. {indexkit-0.6.3 → indexkit-0.6.4}/skills/indexkit/SKILL.md +31 -9
  9. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/__init__.py +1 -1
  10. {indexkit-0.6.3 → indexkit-0.6.4}/uv.lock +1 -1
  11. {indexkit-0.6.3 → indexkit-0.6.4}/.gitignore +0 -0
  12. {indexkit-0.6.3 → indexkit-0.6.4}/LICENSE +0 -0
  13. {indexkit-0.6.3 → indexkit-0.6.4}/hooks/hooks.json +0 -0
  14. {indexkit-0.6.3 → indexkit-0.6.4}/scripts/bootstrap.sh +0 -0
  15. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/__main__.py +0 -0
  16. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/cli.py +0 -0
  17. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/embed.py +0 -0
  18. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/engine.py +0 -0
  19. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/index.py +0 -0
  20. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/loaders/__init__.py +0 -0
  21. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/loaders/markdown.py +0 -0
  22. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/storage.py +0 -0
  23. {indexkit-0.6.3 → indexkit-0.6.4}/src/indexkit/store.py +0 -0
  24. {indexkit-0.6.3 → indexkit-0.6.4}/tests/__init__.py +0 -0
  25. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_cli.py +0 -0
  26. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_embed.py +0 -0
  27. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_engine.py +0 -0
  28. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_index.py +0 -0
  29. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_markdown.py +0 -0
  30. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_storage.py +0 -0
  31. {indexkit-0.6.3 → indexkit-0.6.4}/tests/test_store.py +0 -0
@@ -1,9 +1,8 @@
1
1
  {
2
- "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
2
  "name": "indexkit",
4
3
  "displayName": "Local RAG",
5
- "version": "0.6.3",
6
- "description": "Local-first semantic and opt-in hybrid search: a bin/indexkit CLI that embeds through a configurable Ollama endpoint (default localhost), indexes with turbovec, and can fuse FTS5/BM25 candidates. Notes-first, corpus-agnostic via pluggable loaders.",
4
+ "version": "0.6.4",
5
+ "description": "Local-first semantic and opt-in hybrid search: a scripts/indexkit CLI that embeds through a configurable Ollama endpoint (default localhost), indexes with turbovec, and can fuse FTS5/BM25 candidates. Notes-first, corpus-agnostic via pluggable loaders.",
7
6
  "author": {
8
7
  "name": "Mark Beacom"
9
8
  },
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.4 — 2026-10-25
4
+
5
+ - **Move the launcher from `bin/indexkit` to `scripts/indexkit`.** The
6
+ claude.ai-hosted plugin sync (Claude Desktop) skips any plugin that ships a
7
+ top-level `bin/`, so indexkit was not syncing there at all. The plugin no
8
+ longer puts anything on `PATH`: the skill calls the launcher by path
9
+ (`"${CONTEXT_KIT_INDEXKIT_ROOT:-$CLAUDE_PLUGIN_ROOT}/scripts/indexkit"`) or uses
10
+ an `indexkit` already installed with `pip`. Manual setups that added
11
+ `plugins/indexkit/bin` to `PATH` should add `plugins/indexkit/scripts` instead.
12
+ - The skill documents one resolution order for the CLI (`PATH`, then
13
+ `CONTEXT_KIT_INDEXKIT_ROOT`, then the plugin root, then the host's installed
14
+ plugin directory) that the obsidian bridge and adr-bridge reuse. The bootstrap
15
+ hook deliberately does not add `scripts/` to `PATH`: that would hide an
16
+ executable behind a hook the approval surface shows only as a bootstrap.
17
+ - `allowed-tools` still pre-approves `Bash(indexkit:*)` only, so a by-path
18
+ launcher call asks for permission once instead of running pre-approved.
19
+ - Drop the `$schema` key from `plugin.json`. The claude.ai-hosted plugin sync
20
+ (Claude Desktop) does not recognize it and stripped it with a warning on
21
+ every sync. No change to the plugin's behavior.
22
+
3
23
  ## 0.6.3 — 2026-09-24
4
24
 
5
25
  - Refresh the locked `anyio` (an indirect dependency via `httpx`) from 4.13.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: indexkit
3
- Version: 0.6.3
3
+ Version: 0.6.4
4
4
  Summary: Offline hybrid retrieval: build a local semantic + BM25 index over your files and query it. Local RAG with ollama, turbovec, and SQLite FTS5.
5
5
  Project-URL: Homepage, https://github.com/mbeacom/context-kit
6
6
  Project-URL: Repository, https://github.com/mbeacom/context-kit
@@ -86,7 +86,7 @@ pip install ./plugins/indexkit # or: uv tool install ./plugins/indexkit
86
86
 
87
87
  ### As a context-kit plugin
88
88
 
89
- Claude Code and GitHub Copilot CLI auto-bootstrap the bundled `bin/indexkit`
89
+ Claude Code and GitHub Copilot CLI auto-bootstrap the bundled `scripts/indexkit`
90
90
  launcher from the plugin's `SessionStart` hook, into `${CLAUDE_PLUGIN_DATA}/venv`
91
91
  — for Copilot, `~/.copilot/plugin-data/<marketplace>/indexkit/venv`. In that
92
92
  mode the host controls where indexes live.
@@ -112,7 +112,7 @@ stale — bootstrap it yourself into a neutral data location:
112
112
  ```bash
113
113
  export CONTEXT_KIT_DATA="$HOME/.local/share/context-kit"
114
114
  bash scripts/bootstrap.sh
115
- export PATH="$PWD/bin:$PATH"
115
+ export PATH="$PWD/scripts:$PATH"
116
116
  ```
117
117
 
118
118
  To check readiness without installing anything:
@@ -41,7 +41,7 @@ pip install ./plugins/indexkit # or: uv tool install ./plugins/indexkit
41
41
 
42
42
  ### As a context-kit plugin
43
43
 
44
- Claude Code and GitHub Copilot CLI auto-bootstrap the bundled `bin/indexkit`
44
+ Claude Code and GitHub Copilot CLI auto-bootstrap the bundled `scripts/indexkit`
45
45
  launcher from the plugin's `SessionStart` hook, into `${CLAUDE_PLUGIN_DATA}/venv`
46
46
  — for Copilot, `~/.copilot/plugin-data/<marketplace>/indexkit/venv`. In that
47
47
  mode the host controls where indexes live.
@@ -67,7 +67,7 @@ stale — bootstrap it yourself into a neutral data location:
67
67
  ```bash
68
68
  export CONTEXT_KIT_DATA="$HOME/.local/share/context-kit"
69
69
  bash scripts/bootstrap.sh
70
- export PATH="$PWD/bin:$PATH"
70
+ export PATH="$PWD/scripts:$PATH"
71
71
  ```
72
72
 
73
73
  To check readiness without installing anything:
@@ -2,14 +2,14 @@
2
2
  # Lets APM users install this plugin alongside the Claude Code / GitHub Copilot
3
3
  # flows: `apm install indexkit@context-kit`. There is no `.apm/`
4
4
  # directory, so the plugin-native layout (.claude-plugin/plugin.json + skills/ +
5
- # bin/) stays authoritative; APM consumes it as a plugin collection.
5
+ # scripts/) stays authoritative; APM consumes it as a plugin collection.
6
6
  # Keep name/version/description in sync with .claude-plugin/plugin.json.
7
7
  #
8
- # APM does not run the Claude SessionStart bootstrap hook, so the bin/indexkit venv
8
+ # APM does not run the Claude SessionStart bootstrap hook, so the scripts/indexkit venv
9
9
  # must be bootstrapped manually (same as GitHub Copilot). Config uses the
10
10
  # CONTEXT_KIT_* env vars, not Claude userConfig. See docs/APM.md.
11
11
  name: indexkit
12
- version: 0.6.3
12
+ version: 0.6.4
13
13
  description: Local-first semantic/hybrid RAG with a configurable Ollama endpoint, turbovec, SQLite FTS5/BM25, and deterministic rank fusion.
14
14
  author: Mark Beacom
15
15
  license: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "indexkit"
3
- version = "0.6.3"
3
+ version = "0.6.4"
4
4
  description = "Offline hybrid retrieval: build a local semantic + BM25 index over your files and query it. Local RAG with ollama, turbovec, and SQLite FTS5."
5
5
  requires-python = ">=3.10"
6
6
  keywords = [
@@ -32,7 +32,7 @@ if [[ -z "$HOME_DIR" && -x "$HOME/.claude/plugins/data/indexkit/venv/bin/python"
32
32
  exec "$HOME/.claude/plugins/data/indexkit/venv/bin/python" -m indexkit "$@"
33
33
  fi
34
34
 
35
- # `command -v` would also match this shim if the plugin bin/ is on PATH, which
35
+ # `command -v` would also match this shim if its directory is on PATH, which
36
36
  # would re-exec us forever. Resolve the candidate and skip our own path.
37
37
  SELF="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")"
38
38
  if ON_PATH="$(command -v indexkit 2>/dev/null)" \
@@ -48,7 +48,7 @@ done
48
48
 
49
49
  echo "indexkit is not runnable: no bootstrapped venv, and no installed indexkit." >&2
50
50
  echo "Bootstrap the plugin runtime:" >&2
51
- echo " bash \"$(dirname "$0")/../scripts/bootstrap.sh\"" >&2
51
+ echo " bash \"$(dirname "$0")/bootstrap.sh\"" >&2
52
52
  echo "or install the package directly:" >&2
53
53
  echo " pip install indexkit" >&2
54
54
  exit 1
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: "Requires the indexkit CLI (pip install indexkit, or auto-bootstrapped via uv in a plugin host) plus a running ollama with an embedding model pulled (default nomic-embed-text)."
6
6
  metadata:
7
7
  author: Mark Beacom
8
- version: "0.3.1"
8
+ version: "0.3.2"
9
9
  allowed-tools: Bash(indexkit:*) Bash(ollama:*) Bash(rg:*) Bash(rtk rg:*) Read Glob Grep
10
10
  ---
11
11
 
@@ -19,19 +19,41 @@ fuses that with SQLite FTS5/BM25 for opt-in lexical search. A remote
19
19
  ## Prerequisites
20
20
 
21
21
  - `ollama serve` running and the model pulled: `ollama pull nomic-embed-text`.
22
- - Claude Code and GitHub Copilot CLI: the `indexkit` CLI is bootstrapped
23
- automatically on session start (uv venv). If it is missing or stale, run
24
- `bash "${CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.sh"`.
25
- - APM/manual: `pip install indexkit` is enough — the launcher falls back to an
26
- `indexkit` on `PATH`. To work from a clone instead, set `CONTEXT_KIT_DATA`, run
27
- `plugins/indexkit/scripts/bootstrap.sh`, and add `plugins/indexkit/bin` to
28
- `PATH`.
22
+ - Claude Code and GitHub Copilot CLI: the runtime is bootstrapped automatically
23
+ on session start (uv venv). If it is missing or stale, run
24
+ `bash "${CONTEXT_KIT_INDEXKIT_ROOT:-$CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.sh"`.
25
+ - APM/manual: `pip install indexkit` is enough. To work from a clone instead,
26
+ set `CONTEXT_KIT_DATA` and run `plugins/indexkit/scripts/bootstrap.sh`.
27
+
28
+ ## Resolve the CLI
29
+
30
+ The commands below are written as `indexkit`. The plugin does not put anything
31
+ on `PATH`, so resolve the CLI once, in this order, and use the first that exists:
32
+
33
+ 1. `indexkit` itself, when `command -v indexkit` finds one (a `pip install`, or
34
+ a manual `PATH` entry).
35
+ 2. `"$CONTEXT_KIT_INDEXKIT_ROOT/scripts/indexkit"`, when that variable names the
36
+ installed plugin directory.
37
+ 3. `"${CLAUDE_PLUGIN_ROOT}/scripts/indexkit"` from inside this plugin on Claude
38
+ Code.
39
+ 4. The installed plugin's launcher, from any other plugin or host:
40
+ `~/.claude/plugins/cache/*/indexkit/*/scripts/indexkit` (Claude Code; pick the
41
+ highest version) or `~/.copilot/installed-plugins/*/indexkit/scripts/indexkit`
42
+ (GitHub Copilot CLI).
43
+
44
+ ```bash
45
+ "${CONTEXT_KIT_INDEXKIT_ROOT:-$CLAUDE_PLUGIN_ROOT}/scripts/indexkit" status --name notes
46
+ ```
47
+
48
+ The launcher prefers the bootstrapped venv, then an `indexkit` on `PATH`, then
49
+ an importable module. Other skills that pipe into `indexkit` (the obsidian
50
+ bridge, adr-bridge, retrieval-strategy) use this same resolution.
29
51
 
30
52
  Check readiness without installing anything — useful on APM, which does not
31
53
  deploy hooks, and after an upgrade leaves a stale venv:
32
54
 
33
55
  ```bash
34
- bash scripts/bootstrap.sh --check # exit 0 ready, 3 needs bootstrap
56
+ bash "${CONTEXT_KIT_INDEXKIT_ROOT:-$CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.sh" --check # exit 0 ready, 3 needs bootstrap
35
57
  ```
36
58
 
37
59
  It prints `status=ready|missing|stale|uv-missing` plus the venv path and the
@@ -1,3 +1,3 @@
1
1
  """Local semantic and hybrid RAG: ollama, turbovec, and FTS5/BM25."""
2
2
 
3
- __version__ = "0.6.3"
3
+ __version__ = "0.6.4"
@@ -98,7 +98,7 @@ wheels = [
98
98
 
99
99
  [[package]]
100
100
  name = "indexkit"
101
- version = "0.6.3"
101
+ version = "0.6.4"
102
102
  source = { editable = "." }
103
103
  dependencies = [
104
104
  { name = "httpx" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes