claude-jacked 0.2.9__py3-none-any.whl → 0.3.1__py3-none-any.whl

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.
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-jacked
3
- Version: 0.2.9
4
- Summary: Cross-machine semantic search for Claude Code sessions
3
+ Version: 0.3.1
4
+ Summary: Smart reviewers, commands, and session search for Claude Code
5
5
  Project-URL: Homepage, https://github.com/jackneil/claude-jacked
6
6
  Project-URL: Repository, https://github.com/jackneil/claude-jacked
7
7
  Project-URL: Issues, https://github.com/jackneil/claude-jacked/issues
@@ -19,25 +19,34 @@ Classifier: Programming Language :: Python :: 3.12
19
19
  Requires-Python: >=3.10
20
20
  Requires-Dist: click>=8.0.0
21
21
  Requires-Dist: python-dotenv>=1.0.0
22
- Requires-Dist: qdrant-client>=1.7.0
23
22
  Requires-Dist: rich>=13.0.0
23
+ Provides-Extra: all
24
+ Requires-Dist: anthropic>=0.40.0; extra == 'all'
25
+ Requires-Dist: qdrant-client>=1.7.0; extra == 'all'
24
26
  Provides-Extra: dev
27
+ Requires-Dist: anthropic>=0.40.0; extra == 'dev'
25
28
  Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
26
29
  Requires-Dist: pytest>=7.0.0; extra == 'dev'
30
+ Requires-Dist: qdrant-client>=1.7.0; extra == 'dev'
31
+ Provides-Extra: search
32
+ Requires-Dist: qdrant-client>=1.7.0; extra == 'search'
33
+ Provides-Extra: security
34
+ Requires-Dist: anthropic>=0.40.0; extra == 'security'
27
35
  Description-Content-Type: text/markdown
28
36
 
29
37
  # claude-jacked
30
38
 
31
- **Never lose your Claude Code work again.** Search past conversations, share solutions with your team, and get AI-powered code reviews—all from within Claude Code.
39
+ **Smart reviewers, quick commands, and session search for Claude Code.** Catch bugs before they ship, search past conversations, and auto-approve safe commands all from within Claude Code.
32
40
 
33
41
  ---
34
42
 
35
43
  ## What You Get
36
44
 
37
- - **Find past solutions instantly** — "How did I fix that login bug last month?" Just ask, and get the answer.
38
- - **Work from any computer** — Start on your desktop, continue on your laptop. Your history follows you.
39
- - **Share knowledge with your team** — Your teammate already solved this problem. Find their solution in seconds.
40
45
  - **Catch mistakes before they ship** — Built-in reviewers check for security issues, complexity, and common bugs.
46
+ - **Quick commands** — `/dc`, `/pr`, `/learn`, `/redo`, `/techdebt`, `/audit-rules` for common workflows.
47
+ - **Find past solutions instantly** — Search past Claude sessions by meaning, not keywords. *(requires [search] extra)*
48
+ - **Work from any computer** — Start on your desktop, continue on your laptop. *(requires [search] extra)*
49
+ - **Auto-approve safe commands** — Security gatekeeper evaluates bash commands so you only get interrupted for risky ones. *(requires [security] extra)*
41
50
  - **Sound notifications** — Get audio alerts when Claude needs your attention or finishes a task.
42
51
 
43
52
  ---
@@ -49,6 +58,7 @@ Description-Content-Type: text/markdown
49
58
  - [Using the Session Search](#using-the-session-search)
50
59
  - [Working with Your Team](#working-with-your-team)
51
60
  - [Built-in Reviewers and Commands](#built-in-reviewers-and-commands)
61
+ - [Security Gatekeeper](#security-gatekeeper)
52
62
  - [Sound Notifications](#sound-notifications)
53
63
  - [Uninstall](#uninstall)
54
64
  - [Common Issues](#common-issues)
@@ -58,50 +68,82 @@ Description-Content-Type: text/markdown
58
68
 
59
69
  ## Quick Start
60
70
 
61
- ### Option 1: Let Claude Install It For You
71
+ ### Option 1: Let Claude Install It
62
72
 
63
- Copy this into Claude Code and it will handle everything:
73
+ Copy this into Claude Code and it will walk you through the options:
64
74
 
65
75
  ```
66
- Install claude-jacked for me. Walk me through each step and help me set up Qdrant Cloud.
76
+ Install claude-jacked for me. Use AskUserQuestion to ask me which features I want:
77
+
78
+ 1. First check if pipx and jacked are already installed
79
+ 2. Ask me which install tier I want:
80
+ - BASE: Smart reviewers, commands (/dc, /pr, /learn, etc.), behavioral rules
81
+ - SEARCH: Everything above + session search across machines (requires Qdrant Cloud ~$30/mo)
82
+ - SECURITY: Everything above + auto-approve safe bash commands (fewer permission prompts)
83
+ - ALL: Everything
84
+ 3. Install based on my choice:
85
+ - BASE: pipx install claude-jacked && jacked install
86
+ - SEARCH: pipx install "claude-jacked[search]" && jacked install
87
+ - SECURITY: pipx install "claude-jacked[security]" && jacked install --security
88
+ - ALL: pipx install "claude-jacked[all]" && jacked install --security
89
+ 4. If I chose SEARCH or ALL, help me set up Qdrant Cloud credentials
90
+ 5. Verify with: jacked --help
67
91
  ```
68
92
 
69
- ### Option 2: One-Line Install
93
+ ### Option 2: Manual Install
70
94
 
71
- **Mac/Linux:**
95
+ **Core (reviewers, commands, behavioral rules):**
72
96
  ```bash
73
- curl -sSL https://raw.githubusercontent.com/jackneil/claude-jacked/master/install.sh | bash
97
+ pipx install claude-jacked
98
+ jacked install
74
99
  ```
75
100
 
76
- **Windows (in Git Bash):**
101
+ **Add session search (optional):**
77
102
  ```bash
78
- curl -sSL https://raw.githubusercontent.com/jackneil/claude-jacked/master/install.sh | bash
103
+ pipx install "claude-jacked[search]"
104
+ jacked install
105
+ # Then set up Qdrant Cloud credentials (see below)
79
106
  ```
80
107
 
81
- After installing, you'll need to set up a free cloud database (Qdrant) to store your session history. The installer will guide you through this, or ask Claude to help: `"Help me set up Qdrant Cloud for jacked"`
82
-
83
- ### Option 3: Manual Install
84
-
108
+ **Add security gatekeeper (optional):**
85
109
  ```bash
86
- pipx install claude-jacked
87
- jacked install
110
+ pipx install "claude-jacked[security]"
111
+ jacked install --security
88
112
  ```
89
113
 
90
- Then follow the [cloud database setup](#cloud-database-setup-qdrant) instructions below.
114
+ **Everything:**
115
+ ```bash
116
+ pipx install "claude-jacked[all]"
117
+ jacked install --security
118
+ ```
91
119
 
92
120
  ---
93
121
 
94
122
  ## What's Included
95
123
 
96
- When you run `jacked install`, you get:
124
+ ### Base (`pip install claude-jacked`)
97
125
 
98
126
  | Feature | What It Does |
99
127
  |---------|--------------|
100
- | **Session Search** | Find any past Claude conversation by describing what you were working on |
101
128
  | **10 Smart Reviewers** | AI assistants that check your code for bugs, security issues, and complexity |
102
- | **Quick Commands** | `/dc` for code review, `/pr` for pull request help |
129
+ | **Quick Commands** | `/dc`, `/pr`, `/learn`, `/redo`, `/techdebt`, `/audit-rules` |
130
+ | **Behavioral Rules** | Auto-triggers for jacked commands, lesson tracking, plan-first workflow |
131
+ | **Sound Notifications** | Audio alerts when Claude needs input or finishes (via `--sounds`) |
132
+
133
+ ### Search Extra (`pip install "claude-jacked[search]"`)
134
+
135
+ | Feature | What It Does |
136
+ |---------|--------------|
137
+ | **Session Search** | Find any past Claude conversation by describing what you were working on |
138
+ | **Cross-Machine Sync** | Start on desktop, continue on laptop — your history follows you |
103
139
  | **Team Sharing** | Search your teammates' sessions (with their permission) |
104
140
 
141
+ ### Security Extra (`pip install "claude-jacked[security]"`)
142
+
143
+ | Feature | What It Does |
144
+ |---------|--------------|
145
+ | **Security Gatekeeper** | Auto-approves safe bash commands, blocks dangerous ones, asks you about ambiguous ones |
146
+
105
147
  ---
106
148
 
107
149
  ## Using the Session Search
@@ -188,7 +230,11 @@ Type these directly in Claude Code:
188
230
  | Command | What It Does |
189
231
  |---------|--------------|
190
232
  | `/dc` | **Double-check** — Reviews your recent work for bugs, security issues, and problems |
191
- | `/pr` | **Pull Request** — Helps organize your changes and create a clean PR |
233
+ | `/pr` | **Pull Request** — Checks PR status, creates/updates PRs with proper issue linking |
234
+ | `/learn` | **Learn** — Distills a lesson from the current session into a CLAUDE.md rule |
235
+ | `/redo` | **Redo** — Scraps the current approach and re-implements cleanly with full hindsight |
236
+ | `/techdebt` | **Tech Debt** — Scans for TODOs, oversized files, missing tests, dead code |
237
+ | `/audit-rules` | **Audit Rules** — Checks CLAUDE.md for duplicates, contradictions, stale rules |
192
238
 
193
239
  ### Smart Reviewers
194
240
 
@@ -208,6 +254,58 @@ Use the double-check reviewer to review what we just built
208
254
 
209
255
  ---
210
256
 
257
+ ## Security Gatekeeper
258
+
259
+ The security gatekeeper is a PreToolUse hook that intercepts every bash command Claude runs and decides whether to auto-approve it or ask you first.
260
+
261
+ ### How It Works
262
+
263
+ A 4-tier evaluation chain, fastest first:
264
+
265
+ | Tier | Speed | What It Does |
266
+ |------|-------|--------------|
267
+ | **Deny patterns** | <1ms | Blocks dangerous commands (sudo, rm -rf /, disk wipe, etc.) |
268
+ | **Permission rules** | <1ms | Checks commands already approved in your Claude settings |
269
+ | **Local allowlist** | <1ms | Matches safe patterns (git, pytest, linting, docker, etc.) |
270
+ | **LLM evaluation** | ~2s | Sends ambiguous commands to Haiku for safety evaluation |
271
+
272
+ About 90% of commands resolve in under 2 milliseconds. The LLM tier also reads the contents of referenced Python/SQL/shell scripts and evaluates what the code actually does.
273
+
274
+ ### Install / Uninstall
275
+
276
+ The security gatekeeper is opt-in. To enable it:
277
+
278
+ ```bash
279
+ pip install "claude-jacked[security]"
280
+ jacked install --security
281
+ ```
282
+
283
+ To remove just the security hook:
284
+ ```bash
285
+ jacked uninstall --security
286
+ ```
287
+
288
+ ### Debug Logging
289
+
290
+ ```bash
291
+ # Always-on log (decisions only)
292
+ cat ~/.claude/hooks-debug.log
293
+
294
+ # Verbose debug mode
295
+ export JACKED_HOOK_DEBUG=1
296
+ ```
297
+
298
+ ### Faster LLM Evaluation
299
+
300
+ If you have an Anthropic API key, the gatekeeper uses the SDK directly (~2s) instead of the CLI fallback (~8s):
301
+
302
+ ```bash
303
+ pip install anthropic # or: pip install claude-jacked[security]
304
+ export ANTHROPIC_API_KEY="sk-..."
305
+ ```
306
+
307
+ ---
308
+
211
309
  ## Sound Notifications
212
310
 
213
311
  Get audio alerts so you don't have to watch the terminal:
@@ -277,6 +375,8 @@ Help me fix jacked path issues on Windows
277
375
 
278
376
  ## Cloud Database Setup (Qdrant)
279
377
 
378
+ > **This is only needed if you installed the `[search]` extra.** The base install works fine without Qdrant.
379
+
280
380
  The session search feature stores your conversations in a cloud database so you can access them from any computer.
281
381
 
282
382
  ### Why Qdrant?
@@ -288,10 +388,11 @@ The session search feature stores your conversations in a cloud database so you
288
388
 
289
389
  ### Setting Up Qdrant Cloud
290
390
 
291
- 1. Go to [cloud.qdrant.io](https://cloud.qdrant.io) and create an account
292
- 2. Create a new cluster (the paid tier ~$30/month is required for the search features)
293
- 3. Copy your cluster URL and API key
294
- 4. Add them to your shell profile:
391
+ 1. Install the search extra: `pip install "claude-jacked[search]"`
392
+ 2. Go to [cloud.qdrant.io](https://cloud.qdrant.io) and create an account
393
+ 3. Create a new cluster (the paid tier ~$30/month is required for the search features)
394
+ 4. Copy your cluster URL and API key
395
+ 5. Add them to your shell profile:
295
396
 
296
397
  **Mac/Linux** — Add to `~/.bashrc` or `~/.zshrc`:
297
398
  ```bash
@@ -301,7 +402,7 @@ export QDRANT_CLAUDE_SESSIONS_API_KEY="your-api-key"
301
402
 
302
403
  **Windows** — Add to your environment variables, or add to `~/.bashrc` in Git Bash.
303
404
 
304
- 5. Restart your terminal and run:
405
+ 6. Restart your terminal and run:
305
406
  ```bash
306
407
  jacked backfill # Index your existing sessions
307
408
  jacked status # Verify it's working
@@ -343,13 +444,16 @@ jacked delete <session_id> # Remove from index
343
444
  jacked cleardb # Delete all your data
344
445
 
345
446
  # Setup
346
- jacked install # Install hooks, agents, commands
447
+ jacked install # Install agents, commands, rules
448
+ jacked install --search # Also add session indexing hook
449
+ jacked install --security # Also add security gatekeeper hook
347
450
  jacked install --sounds # Also add sound notifications
348
451
  jacked uninstall # Remove from Claude Code
349
452
  jacked uninstall --sounds # Remove only sounds
350
- jacked backfill # Index all existing sessions
453
+ jacked uninstall --security # Remove only security hook
454
+ jacked backfill # Index all existing sessions (requires [search])
351
455
  jacked backfill --force # Re-index everything
352
- jacked status # Check connectivity
456
+ jacked status # Check connectivity (requires [search])
353
457
  jacked configure --show # Show current config
354
458
  ```
355
459
 
@@ -371,6 +475,8 @@ jacked configure --show # Show current config
371
475
  | `JACKED_TEAMMATE_WEIGHT` | 0.8 | How much to weight teammate results |
372
476
  | `JACKED_OTHER_REPO_WEIGHT` | 0.7 | How much to weight other repos |
373
477
  | `JACKED_TIME_DECAY_HALFLIFE_WEEKS` | 35 | How fast old sessions lose relevance |
478
+ | `JACKED_HOOK_DEBUG` | (unset) | Set to `1` for verbose security hook logging |
479
+ | `ANTHROPIC_API_KEY` | (unset) | Enables fast (~2s) LLM evaluation in security hook |
374
480
 
375
481
  </details>
376
482
 
@@ -437,16 +543,32 @@ jacked configure --show # Show current config
437
543
  <details>
438
544
  <summary><strong>Hook Configuration</strong></summary>
439
545
 
440
- The `jacked install` command adds this to `~/.claude/settings.json`:
546
+ The `jacked install` command adds hooks to `~/.claude/settings.json` based on installed extras:
441
547
 
442
548
  ```json
549
+ // With [search] extra installed:
443
550
  {
444
551
  "hooks": {
445
552
  "Stop": [{
446
553
  "matcher": "",
447
554
  "hooks": [{
448
555
  "type": "command",
449
- "command": "jacked index --repo \"$CLAUDE_PROJECT_DIR\""
556
+ "command": "jacked index --repo \"$CLAUDE_PROJECT_DIR\"",
557
+ "async": true
558
+ }]
559
+ }]
560
+ }
561
+ }
562
+
563
+ // With --security flag:
564
+ {
565
+ "hooks": {
566
+ "PreToolUse": [{
567
+ "matcher": "Bash",
568
+ "hooks": [{
569
+ "type": "command",
570
+ "command": "python /path/to/security_gatekeeper.py",
571
+ "timeout": 30
450
572
  }]
451
573
  }]
452
574
  }
@@ -461,26 +583,48 @@ The `jacked install` command adds this to `~/.claude/settings.json`:
461
583
  Copy this into Claude Code for a guided installation:
462
584
 
463
585
  ```
464
- Install claude-jacked for me. First check what's already set up, then help me with anything missing:
465
-
466
- DIAGNOSTIC PHASE (run these first to see current state):
467
- - Detect my operating system
468
- - Check if pipx is installed: pipx --version
469
- - Check if jacked CLI is installed: jacked --version
470
- - Check if Qdrant credentials are set: echo $QDRANT_CLAUDE_SESSIONS_ENDPOINT
471
- - Check if hook is installed: look in ~/.claude/settings.json for "jacked index"
472
-
473
- WINDOWS EXTRA CHECK (Git Bash doesn't inherit Windows System Environment):
474
- - If env vars NOT visible in bash, check Windows:
475
- powershell.exe -Command "[System.Environment]::GetEnvironmentVariable('QDRANT_CLAUDE_SESSIONS_ENDPOINT', 'User')"
476
-
477
- SETUP PHASE (only do steps that are missing):
478
- 1. If no pipx: pip install pipx && pipx ensurepath
479
- 2. If jacked not installed: pipx install claude-jacked && jacked install
480
- 3. If no Qdrant credentials: walk me through cloud.qdrant.io setup
481
- 4. If no indexed sessions: jacked backfill
482
-
483
- VERIFY: jacked status && jacked configure --show
586
+ Install claude-jacked for me. Use the AskUserQuestion tool to guide me through options.
587
+
588
+ PHASE 1 - DIAGNOSTICS:
589
+ - Detect OS (Windows/Mac/Linux)
590
+ - Check: pipx --version (if missing: pip install pipx && pipx ensurepath)
591
+ - Check: jacked --version (to see if already installed)
592
+ - Check ~/.claude/settings.json for existing hooks
593
+
594
+ PHASE 2 - ASK USER PREFERENCES:
595
+ Use AskUserQuestion with these options:
596
+
597
+ Question: "Which jacked features do you want?"
598
+ Options:
599
+ - BASE (Recommended): Smart reviewers (/dc, /pr, /learn, /redo, /techdebt), 10 agents, behavioral rules. No external services needed.
600
+ - SEARCH: Everything in BASE + search past Claude sessions across machines. Requires Qdrant Cloud (~$30/mo).
601
+ - SECURITY: Everything in BASE + auto-approve safe bash commands. Fewer permission prompts, uses Anthropic API.
602
+ - ALL: Everything. Requires Qdrant Cloud + Anthropic API key for fastest security evaluation.
603
+
604
+ PHASE 3 - INSTALL:
605
+ Based on user choice:
606
+ - BASE: pipx install claude-jacked && jacked install
607
+ - SEARCH: pipx install "claude-jacked[search]" && jacked install
608
+ - SECURITY: pipx install "claude-jacked[security]" && jacked install --security
609
+ - ALL: pipx install "claude-jacked[all]" && jacked install --security
610
+
611
+ PHASE 4 - POST-INSTALL (if SEARCH or ALL):
612
+ Help user set up Qdrant Cloud:
613
+ 1. Go to cloud.qdrant.io, create account
614
+ 2. Create cluster (paid tier required)
615
+ 3. Copy endpoint URL and API key
616
+ 4. Add to shell profile:
617
+ export QDRANT_CLAUDE_SESSIONS_ENDPOINT="https://..."
618
+ export QDRANT_CLAUDE_SESSIONS_API_KEY="..."
619
+ 5. Restart terminal
620
+ 6. Run: jacked backfill
621
+
622
+ PHASE 5 - VERIFY:
623
+ - jacked --help (should show all commands)
624
+ - jacked configure --show (if SEARCH installed)
625
+
626
+ WINDOWS NOTE: If env vars not visible in Git Bash, check Windows system env vars:
627
+ powershell.exe -Command "[System.Environment]::GetEnvironmentVariable('QDRANT_CLAUDE_SESSIONS_ENDPOINT', 'User')"
484
628
  ```
485
629
 
486
630
  </details>
@@ -1,5 +1,5 @@
1
- jacked/__init__.py,sha256=aVi7IpwXTJWSR8wBe4GHbAB4QlWyWvCobMQZ165Ytk8,609
2
- jacked/cli.py,sha256=1N-2jz6k8clXSR0Fpn-8sI-Cxd7JUQGdFp-GchcXq5s,48037
1
+ jacked/__init__.py,sha256=-nf4gLXaGd9gIAXz2-AaiIdFt1gZbXGDalP0jHTTOFo,1276
2
+ jacked/cli.py,sha256=Uw4Dk0GjMgVzA7vc6w6wBfNeCr3CjbcyeyR9PJvrGbg,51636
3
3
  jacked/client.py,sha256=7N4GdjcG8OXfmjUfprlUOJTkyrPyqF1OBstAsplNSa8,18151
4
4
  jacked/config.py,sha256=DeC1no5rFsvlb6JaU2PzLyyhI4DaJrxrsfqVugWuC4Q,8606
5
5
  jacked/index_write_tracker.py,sha256=E1zVqyZTQdHenp_vXL-gWPvLBo18Ar703_0MI9Cst8U,8679
@@ -23,11 +23,11 @@ jacked/data/commands/learn.md,sha256=FoD-qKsQSpEayFNP997dyUfV4UJgs8LiojYIWnzOSvA
23
23
  jacked/data/commands/pr.md,sha256=1orTbDnL4ky2bk5VXm5j66hGybTrNWVTyAPxx_uMggU,193
24
24
  jacked/data/commands/redo.md,sha256=4NnCKKi10ybEOHdFObN1aVNaFGOt63eoluwDJUzUFxg,4242
25
25
  jacked/data/commands/techdebt.md,sha256=jSdfMN1Kvz6vmsnWw9sCMFpKA8r87e9nDHrE-qsMwG8,3861
26
- jacked/data/prompts/security_gatekeeper.txt,sha256=4PN1wyWPVpo7hvfAYfRcoh2dJNSgkP7mdVlG3u0y56Y,4049
26
+ jacked/data/hooks/security_gatekeeper.py,sha256=nhiT4X-8zBhjG-i1hKgQzoXNE3NOnekTYGDlns72iXk,14083
27
27
  jacked/data/rules/jacked_behaviors.md,sha256=x1qzdj3DLmkhv5TVAdNyIpAdjBGz7IUdXSrko94LOOw,1449
28
28
  jacked/data/skills/jacked/SKILL.md,sha256=IEMp-PfWlu5rmS1R5HHblUX1CGwzno2gtO4yQ2cMAg4,5488
29
- claude_jacked-0.2.9.dist-info/METADATA,sha256=no8uRxGSchoV3iGalGjj3YA4MczQB8Z0BvLyV_n4pFw,16597
30
- claude_jacked-0.2.9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
31
- claude_jacked-0.2.9.dist-info/entry_points.txt,sha256=52JDhetd7OsE9iJryGrQIL3PWhum_QCeLuTeQ9-CTqQ,43
32
- claude_jacked-0.2.9.dist-info/licenses/LICENSE,sha256=m8NmsH7P5G4VH3VyHWPQUTl2weuNTh1-eaH0RbUcn3k,1066
33
- claude_jacked-0.2.9.dist-info/RECORD,,
29
+ claude_jacked-0.3.1.dist-info/METADATA,sha256=dCRRqhE9GYB3Z9wl8PdUYDYr2-o5jXCTQAt1Bnuew0Q,22091
30
+ claude_jacked-0.3.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
31
+ claude_jacked-0.3.1.dist-info/entry_points.txt,sha256=52JDhetd7OsE9iJryGrQIL3PWhum_QCeLuTeQ9-CTqQ,43
32
+ claude_jacked-0.3.1.dist-info/licenses/LICENSE,sha256=m8NmsH7P5G4VH3VyHWPQUTl2weuNTh1-eaH0RbUcn3k,1066
33
+ claude_jacked-0.3.1.dist-info/RECORD,,
jacked/__init__.py CHANGED
@@ -1,22 +1,42 @@
1
1
  """
2
- Claude Jacked - Cross-machine semantic search for Claude Code sessions.
2
+ Claude Jacked - Smart reviewers, commands, and session search for Claude Code.
3
3
 
4
- This package provides tools to index, search, and retrieve context from past
5
- Claude Code sessions, enabling seamless context sharing across machines.
4
+ Base install provides agents, commands, and behavioral rules.
5
+ Install extras for additional features:
6
+ pip install "claude-jacked[search]" — session search via Qdrant
7
+ pip install "claude-jacked[security]" — security gatekeeper hook
8
+ pip install "claude-jacked[all]" — everything
6
9
  """
7
10
 
8
- __version__ = "0.2.1"
11
+ __version__ = "0.3.1"
12
+
13
+
14
+ def _qdrant_available() -> bool:
15
+ """Check if qdrant-client is installed."""
16
+ try:
17
+ import qdrant_client # noqa: F401
18
+ return True
19
+ except ImportError:
20
+ return False
21
+
22
+
23
+ def __getattr__(name: str):
24
+ """Lazy imports for backwards compat — only works if [search] extra installed."""
25
+ _search_classes = {
26
+ "SmartForkConfig": "jacked.config",
27
+ "QdrantSessionClient": "jacked.client",
28
+ "SessionIndexer": "jacked.indexer",
29
+ "SessionSearcher": "jacked.searcher",
30
+ "SessionRetriever": "jacked.retriever",
31
+ }
32
+ if name in _search_classes:
33
+ import importlib
34
+ module = importlib.import_module(_search_classes[name])
35
+ return getattr(module, name)
36
+ raise AttributeError(f"module 'jacked' has no attribute {name!r}")
9
37
 
10
- from jacked.config import SmartForkConfig
11
- from jacked.client import QdrantSessionClient
12
- from jacked.indexer import SessionIndexer
13
- from jacked.searcher import SessionSearcher
14
- from jacked.retriever import SessionRetriever
15
38
 
16
39
  __all__ = [
17
- "SmartForkConfig",
18
- "QdrantSessionClient",
19
- "SessionIndexer",
20
- "SessionSearcher",
21
- "SessionRetriever",
40
+ "__version__",
41
+ "_qdrant_available",
22
42
  ]