vimgym 0.1.1__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 (59) hide show
  1. vimgym-0.1.1/CHANGELOG.md +58 -0
  2. vimgym-0.1.1/LICENSE +21 -0
  3. vimgym-0.1.1/MANIFEST.in +8 -0
  4. vimgym-0.1.1/PKG-INFO +165 -0
  5. vimgym-0.1.1/README.md +121 -0
  6. vimgym-0.1.1/completions/_vg +57 -0
  7. vimgym-0.1.1/defaults/config.json +11 -0
  8. vimgym-0.1.1/defaults/redaction-rules.json +23 -0
  9. vimgym-0.1.1/pyproject.toml +80 -0
  10. vimgym-0.1.1/setup.cfg +4 -0
  11. vimgym-0.1.1/src/vimgym/__init__.py +1 -0
  12. vimgym-0.1.1/src/vimgym/cli.py +639 -0
  13. vimgym-0.1.1/src/vimgym/config.py +306 -0
  14. vimgym-0.1.1/src/vimgym/daemon.py +283 -0
  15. vimgym-0.1.1/src/vimgym/db.py +186 -0
  16. vimgym-0.1.1/src/vimgym/defaults/__init__.py +0 -0
  17. vimgym-0.1.1/src/vimgym/defaults/config.json +11 -0
  18. vimgym-0.1.1/src/vimgym/defaults/redaction-rules.json +23 -0
  19. vimgym-0.1.1/src/vimgym/events.py +19 -0
  20. vimgym-0.1.1/src/vimgym/pipeline/__init__.py +0 -0
  21. vimgym-0.1.1/src/vimgym/pipeline/metadata.py +68 -0
  22. vimgym-0.1.1/src/vimgym/pipeline/orchestrator.py +105 -0
  23. vimgym-0.1.1/src/vimgym/pipeline/parser.py +313 -0
  24. vimgym-0.1.1/src/vimgym/pipeline/redact.py +76 -0
  25. vimgym-0.1.1/src/vimgym/pipeline/summary.py +46 -0
  26. vimgym-0.1.1/src/vimgym/server.py +363 -0
  27. vimgym-0.1.1/src/vimgym/storage/__init__.py +0 -0
  28. vimgym-0.1.1/src/vimgym/storage/export.py +144 -0
  29. vimgym-0.1.1/src/vimgym/storage/queries.py +293 -0
  30. vimgym-0.1.1/src/vimgym/storage/writer.py +217 -0
  31. vimgym-0.1.1/src/vimgym/ui/app.js +1053 -0
  32. vimgym-0.1.1/src/vimgym/ui/index.html +126 -0
  33. vimgym-0.1.1/src/vimgym/ui/style.css +1237 -0
  34. vimgym-0.1.1/src/vimgym/ui/vendor/highlight.min.js +1213 -0
  35. vimgym-0.1.1/src/vimgym/watcher.py +213 -0
  36. vimgym-0.1.1/src/vimgym.egg-info/PKG-INFO +165 -0
  37. vimgym-0.1.1/src/vimgym.egg-info/SOURCES.txt +57 -0
  38. vimgym-0.1.1/src/vimgym.egg-info/dependency_links.txt +1 -0
  39. vimgym-0.1.1/src/vimgym.egg-info/entry_points.txt +2 -0
  40. vimgym-0.1.1/src/vimgym.egg-info/requires.txt +15 -0
  41. vimgym-0.1.1/src/vimgym.egg-info/top_level.txt +1 -0
  42. vimgym-0.1.1/tests/test_cli.py +76 -0
  43. vimgym-0.1.1/tests/test_cli_start_flags.py +28 -0
  44. vimgym-0.1.1/tests/test_config.py +38 -0
  45. vimgym-0.1.1/tests/test_config_v2.py +174 -0
  46. vimgym-0.1.1/tests/test_daemon.py +145 -0
  47. vimgym-0.1.1/tests/test_db.py +49 -0
  48. vimgym-0.1.1/tests/test_doctor.py +43 -0
  49. vimgym-0.1.1/tests/test_metadata.py +35 -0
  50. vimgym-0.1.1/tests/test_orchestrator.py +57 -0
  51. vimgym-0.1.1/tests/test_parser.py +88 -0
  52. vimgym-0.1.1/tests/test_queries.py +89 -0
  53. vimgym-0.1.1/tests/test_redact.py +80 -0
  54. vimgym-0.1.1/tests/test_server.py +108 -0
  55. vimgym-0.1.1/tests/test_sources_api.py +70 -0
  56. vimgym-0.1.1/tests/test_summary.py +21 -0
  57. vimgym-0.1.1/tests/test_ui.py +122 -0
  58. vimgym-0.1.1/tests/test_watcher.py +132 -0
  59. vimgym-0.1.1/tests/test_writer.py +68 -0
@@ -0,0 +1,58 @@
1
+ # Changelog
2
+
3
+ All notable changes to vimgym are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.1] — first official release
9
+
10
+ ### Fixed
11
+
12
+ - **Duplicate log lines.** The daemon's child process attached both a
13
+ `FileHandler` and a `StreamHandler(sys.stderr)`, while the parent's
14
+ `subprocess.Popen` redirected the child's stderr to the same log file.
15
+ Every record was written twice. The child now uses only a
16
+ `RotatingFileHandler`; uvicorn's own loggers are forced to propagate
17
+ through the root logger so we own logging end-to-end.
18
+ - **Wheel installs were missing the bundled redaction rules.** The
19
+ `defaults/` directory was referenced via a relative path that only
20
+ worked in editable repo installs. It is now packaged inside
21
+ `vimgym/defaults/` and loaded via `importlib.resources`, so secrets
22
+ are correctly stripped under pip, pipx, and Homebrew installs.
23
+ - **Log rotation.** The daemon log now rotates at 5 MB and keeps 5 backups
24
+ (~25 MB total) instead of growing forever.
25
+
26
+ ### Added
27
+
28
+ - **`vg doctor`** — comprehensive system diagnostic. Reports vimgym version,
29
+ Python version, SQLite + FTS5 availability, vault dir & db permissions,
30
+ daemon state, configured sources, redaction rule count, and free disk
31
+ space. Exits non-zero on any red issue.
32
+ - **`vg start --no-browser`** — for use as a background service. The
33
+ Homebrew `brew services` formula uses this so that `launchd` doesn't
34
+ try to pop a browser.
35
+ - **Virtualenv self-warning.** `vg start` now warns when invoked from
36
+ a project venv that won't survive a shell restart and points the user
37
+ at `brew install` or `pipx install`.
38
+ - **Zsh shell completion** (`completions/_vg`), installed automatically
39
+ by the Homebrew formula.
40
+ - **Makefile and `.envrc`** for one-command developer setup.
41
+
42
+ ### Packaging
43
+
44
+ - First publish to PyPI.
45
+ - Homebrew tap at [`shoaibrain/homebrew-vimgym`](https://github.com/shoaibrain/homebrew-vimgym).
46
+ - Trusted Publishing (OIDC) for PyPI — no long-lived API tokens in CI.
47
+ - GitHub Actions workflow auto-bumps the tap formula on every published
48
+ GitHub Release.
49
+ - Cross-platform CI matrix (Linux + macOS, Python 3.11 / 3.12 / 3.13).
50
+
51
+ ### Tests
52
+
53
+ - Regression test for the duplicate-log-lines bug
54
+ (`tests/test_daemon.py::test_no_duplicate_log_lines`).
55
+ - New tests for `vg doctor` and CLI flag parsing.
56
+ - Total: 117 tests passing.
57
+
58
+ [0.1.1]: https://github.com/shoaibrain/vimgym/releases/tag/v0.1.1
vimgym-0.1.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shoaib Rain
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,8 @@
1
+ include README.md
2
+ include LICENSE
3
+ include CHANGELOG.md
4
+ include pyproject.toml
5
+ recursive-include src/vimgym/ui *.html *.css *.js
6
+ recursive-include src/vimgym/ui/vendor *.js
7
+ recursive-include src/vimgym/defaults *.json
8
+ recursive-include completions _vg
vimgym-0.1.1/PKG-INFO ADDED
@@ -0,0 +1,165 @@
1
+ Metadata-Version: 2.4
2
+ Name: vimgym
3
+ Version: 0.1.1
4
+ Summary: AI session memory for developers — local, fast, no cloud
5
+ Author: Shoaib Rain
6
+ License: MIT
7
+ Project-URL: Homepage, https://vimgym.xyz
8
+ Project-URL: Repository, https://github.com/shoaibrain/vimgym
9
+ Project-URL: Issues, https://github.com/shoaibrain/vimgym/issues
10
+ Project-URL: Changelog, https://github.com/shoaibrain/vimgym/blob/main/CHANGELOG.md
11
+ Keywords: claude,claude-code,ai,session,memory,search,developer-tools,local-first
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Environment :: Web Environment
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: MacOS
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Software Development
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Topic :: Utilities
26
+ Requires-Python: >=3.11
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: fastapi>=0.110
30
+ Requires-Dist: uvicorn[standard]>=0.29
31
+ Requires-Dist: watchdog>=4.0
32
+ Requires-Dist: httpx>=0.27
33
+ Requires-Dist: rich>=13
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=8; extra == "dev"
36
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
37
+ Requires-Dist: pytest-timeout>=2.3; extra == "dev"
38
+ Requires-Dist: httpx; extra == "dev"
39
+ Requires-Dist: ruff; extra == "dev"
40
+ Requires-Dist: mypy; extra == "dev"
41
+ Requires-Dist: build; extra == "dev"
42
+ Requires-Dist: twine; extra == "dev"
43
+ Dynamic: license-file
44
+
45
+ # vimgym
46
+
47
+ [![PyPI version](https://img.shields.io/pypi/v/vimgym.svg)](https://pypi.org/project/vimgym/)
48
+ [![Python versions](https://img.shields.io/pypi/pyversions/vimgym.svg)](https://pypi.org/project/vimgym/)
49
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
50
+ [![CI](https://github.com/shoaibrain/vimgym/actions/workflows/ci.yml/badge.svg)](https://github.com/shoaibrain/vimgym/actions/workflows/ci.yml)
51
+
52
+ > AI session memory for developers. Local. Fast. No cloud.
53
+
54
+ Vimgym automatically captures every Claude Code session and makes your entire
55
+ AI conversation history searchable in under 500ms. It's `git log` for your
56
+ AI conversations.
57
+
58
+ ```
59
+ ┌──────────────────────────┐
60
+ │ ~/.claude/projects/ │
61
+ └────────────┬─────────────┘
62
+ │ filesystem watcher
63
+
64
+ ┌─────────────────────────────────┐
65
+ │ vimgym daemon (single process) │
66
+ │ parser → redact → SQLite + FTS5│
67
+ └────────────┬────────────────────┘
68
+
69
+
70
+ ┌────────────────────────────────────┐
71
+ │ http://127.0.0.1:7337 │
72
+ │ ⌘K to search · live updates · WS │
73
+ └────────────────────────────────────┘
74
+ ```
75
+
76
+ ## Install
77
+
78
+ ```bash
79
+ # macOS — recommended
80
+ brew tap shoaibrain/vimgym
81
+ brew install vimgym
82
+
83
+ # Any OS
84
+ pipx install vimgym
85
+
86
+ # One-liner (auto-detects best method)
87
+ curl -fsSL https://vimgym.xyz/install | sh
88
+ ```
89
+
90
+ After install, run `vg doctor` to verify everything is healthy.
91
+
92
+ ## Quick start
93
+
94
+ ```bash
95
+ vg init # detect AI tool sources, create vault
96
+ vg start # spawn daemon, open browser
97
+ ```
98
+
99
+ In the browser, press **⌘K** and start typing. Or from the terminal:
100
+
101
+ ```bash
102
+ vg search "CORS configuration"
103
+ vg search "auth" --project edforge --since 7d
104
+ vg search "rate limiter" --branch dev --json | jq
105
+ ```
106
+
107
+ ## Features
108
+
109
+ - **Automatic capture** — filesystem watcher catches every new session within seconds; zero configuration
110
+ - **Full-text search** — SQLite FTS5 with BM25 ranking, sub-500ms on any vault size, hyphen-safe queries
111
+ - **Three-pane web UI** — Neon Void design, command palette (⌘K), live updates via WebSocket
112
+ - **Session detail** — full conversation rendering with syntax-highlighted code, collapsible tool blocks, copy buttons
113
+ - **Markdown export** — one click to get a paste-friendly transcript for resuming a session in Claude Code
114
+ - **18-pattern redaction** — strips API keys, AWS credentials, kubeconfig certs, SSH keys, JWT tokens, and more *before* anything is written
115
+ - **Source-aware** — auto-detects Claude Code, Cursor, Copilot, Antigravity, Gemini (only Claude Code parser ships in v1)
116
+ - **Local-first** — server binds 127.0.0.1, vault file is `chmod 600`, zero outbound network calls
117
+
118
+ ## CLI
119
+
120
+ ```
121
+ vg start [--no-browser] Start daemon (watcher + web server), open browser
122
+ vg stop Graceful shutdown
123
+ vg status Daemon health, vault stats, source list
124
+ vg open Open browser if daemon is running
125
+ vg doctor Run system diagnostics (Python, FTS5, vault, sources, redaction)
126
+ vg search QUERY [flags] Terminal search with --project --branch --since --limit --json
127
+ vg init Initialize vault, detect AI tool sources
128
+ vg config Print active configuration
129
+ vg config sources List configured sources
130
+ vg config sources ID --enable Enable a source (takes effect on next vg start)
131
+ vg config sources ID --disable Disable a source
132
+ ```
133
+
134
+ ## Documentation
135
+
136
+ - **[User Guide](docs/GUIDE.md)** — installation, UI walkthrough, search syntax, configuration, troubleshooting
137
+ - **[Developer Reference](docs/DEVELOPER.md)** — architecture, module reference, schema, API, source adapter interface
138
+
139
+ ## Status
140
+
141
+ v0.1.1 — first official release. 117 tests passing on Python 3.11 / 3.12 / 3.13,
142
+ Linux + macOS. Windows and additional source parsers (Cursor, Copilot, Gemini)
143
+ are v2.
144
+
145
+ ## Requirements
146
+
147
+ - macOS or Linux
148
+ - Python 3.11+
149
+ - Claude Code
150
+
151
+ ## Contributing
152
+
153
+ ```bash
154
+ git clone https://github.com/shoaibrain/vimgym.git
155
+ cd vimgym
156
+ make install # creates .venv, installs in editable mode with [dev] extras
157
+ source .venv/bin/activate
158
+ make test # 117 tests, ~40 seconds
159
+ ```
160
+
161
+ See [docs/DEVELOPER.md](docs/DEVELOPER.md) for the architecture overview.
162
+
163
+ ## License
164
+
165
+ MIT. See [LICENSE](LICENSE).
vimgym-0.1.1/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # vimgym
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/vimgym.svg)](https://pypi.org/project/vimgym/)
4
+ [![Python versions](https://img.shields.io/pypi/pyversions/vimgym.svg)](https://pypi.org/project/vimgym/)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
+ [![CI](https://github.com/shoaibrain/vimgym/actions/workflows/ci.yml/badge.svg)](https://github.com/shoaibrain/vimgym/actions/workflows/ci.yml)
7
+
8
+ > AI session memory for developers. Local. Fast. No cloud.
9
+
10
+ Vimgym automatically captures every Claude Code session and makes your entire
11
+ AI conversation history searchable in under 500ms. It's `git log` for your
12
+ AI conversations.
13
+
14
+ ```
15
+ ┌──────────────────────────┐
16
+ │ ~/.claude/projects/ │
17
+ └────────────┬─────────────┘
18
+ │ filesystem watcher
19
+
20
+ ┌─────────────────────────────────┐
21
+ │ vimgym daemon (single process) │
22
+ │ parser → redact → SQLite + FTS5│
23
+ └────────────┬────────────────────┘
24
+
25
+
26
+ ┌────────────────────────────────────┐
27
+ │ http://127.0.0.1:7337 │
28
+ │ ⌘K to search · live updates · WS │
29
+ └────────────────────────────────────┘
30
+ ```
31
+
32
+ ## Install
33
+
34
+ ```bash
35
+ # macOS — recommended
36
+ brew tap shoaibrain/vimgym
37
+ brew install vimgym
38
+
39
+ # Any OS
40
+ pipx install vimgym
41
+
42
+ # One-liner (auto-detects best method)
43
+ curl -fsSL https://vimgym.xyz/install | sh
44
+ ```
45
+
46
+ After install, run `vg doctor` to verify everything is healthy.
47
+
48
+ ## Quick start
49
+
50
+ ```bash
51
+ vg init # detect AI tool sources, create vault
52
+ vg start # spawn daemon, open browser
53
+ ```
54
+
55
+ In the browser, press **⌘K** and start typing. Or from the terminal:
56
+
57
+ ```bash
58
+ vg search "CORS configuration"
59
+ vg search "auth" --project edforge --since 7d
60
+ vg search "rate limiter" --branch dev --json | jq
61
+ ```
62
+
63
+ ## Features
64
+
65
+ - **Automatic capture** — filesystem watcher catches every new session within seconds; zero configuration
66
+ - **Full-text search** — SQLite FTS5 with BM25 ranking, sub-500ms on any vault size, hyphen-safe queries
67
+ - **Three-pane web UI** — Neon Void design, command palette (⌘K), live updates via WebSocket
68
+ - **Session detail** — full conversation rendering with syntax-highlighted code, collapsible tool blocks, copy buttons
69
+ - **Markdown export** — one click to get a paste-friendly transcript for resuming a session in Claude Code
70
+ - **18-pattern redaction** — strips API keys, AWS credentials, kubeconfig certs, SSH keys, JWT tokens, and more *before* anything is written
71
+ - **Source-aware** — auto-detects Claude Code, Cursor, Copilot, Antigravity, Gemini (only Claude Code parser ships in v1)
72
+ - **Local-first** — server binds 127.0.0.1, vault file is `chmod 600`, zero outbound network calls
73
+
74
+ ## CLI
75
+
76
+ ```
77
+ vg start [--no-browser] Start daemon (watcher + web server), open browser
78
+ vg stop Graceful shutdown
79
+ vg status Daemon health, vault stats, source list
80
+ vg open Open browser if daemon is running
81
+ vg doctor Run system diagnostics (Python, FTS5, vault, sources, redaction)
82
+ vg search QUERY [flags] Terminal search with --project --branch --since --limit --json
83
+ vg init Initialize vault, detect AI tool sources
84
+ vg config Print active configuration
85
+ vg config sources List configured sources
86
+ vg config sources ID --enable Enable a source (takes effect on next vg start)
87
+ vg config sources ID --disable Disable a source
88
+ ```
89
+
90
+ ## Documentation
91
+
92
+ - **[User Guide](docs/GUIDE.md)** — installation, UI walkthrough, search syntax, configuration, troubleshooting
93
+ - **[Developer Reference](docs/DEVELOPER.md)** — architecture, module reference, schema, API, source adapter interface
94
+
95
+ ## Status
96
+
97
+ v0.1.1 — first official release. 117 tests passing on Python 3.11 / 3.12 / 3.13,
98
+ Linux + macOS. Windows and additional source parsers (Cursor, Copilot, Gemini)
99
+ are v2.
100
+
101
+ ## Requirements
102
+
103
+ - macOS or Linux
104
+ - Python 3.11+
105
+ - Claude Code
106
+
107
+ ## Contributing
108
+
109
+ ```bash
110
+ git clone https://github.com/shoaibrain/vimgym.git
111
+ cd vimgym
112
+ make install # creates .venv, installs in editable mode with [dev] extras
113
+ source .venv/bin/activate
114
+ make test # 117 tests, ~40 seconds
115
+ ```
116
+
117
+ See [docs/DEVELOPER.md](docs/DEVELOPER.md) for the architecture overview.
118
+
119
+ ## License
120
+
121
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,57 @@
1
+ #compdef vg
2
+ # zsh completion for vimgym
3
+
4
+ _vg() {
5
+ local -a commands
6
+ commands=(
7
+ 'init:Initialize vault and detect AI tool sources'
8
+ 'start:Start daemon (watcher + web server)'
9
+ 'stop:Stop daemon'
10
+ 'status:Show daemon status and vault stats'
11
+ 'open:Open browser UI'
12
+ 'doctor:Run system diagnostics'
13
+ 'search:Search sessions'
14
+ 'config:View or modify configuration'
15
+ )
16
+
17
+ _arguments -C \
18
+ '--version[Show version and exit]' \
19
+ '--verbose[Verbose output]' \
20
+ '--help[Show help]' \
21
+ '1: :->command' \
22
+ '*::arg:->args'
23
+
24
+ case $state in
25
+ command)
26
+ _describe -t commands 'vg command' commands
27
+ ;;
28
+ args)
29
+ case $words[1] in
30
+ start)
31
+ _arguments \
32
+ '--no-browser[Do not open the browser on start]' \
33
+ '--help[Show help]'
34
+ ;;
35
+ search)
36
+ _arguments \
37
+ '--project[Filter by project name]:project' \
38
+ '--branch[Filter by git branch]:branch' \
39
+ '--since[Filter by date (ISO or Nd: 7d, 30d)]:since' \
40
+ '--limit[Maximum results]:limit' \
41
+ '--json[Output as JSON]' \
42
+ '--help[Show help]' \
43
+ '*:query'
44
+ ;;
45
+ config)
46
+ local -a config_subs
47
+ config_subs=(
48
+ 'sources:List or toggle configured sources'
49
+ )
50
+ _describe -t commands 'config subcommand' config_subs
51
+ ;;
52
+ esac
53
+ ;;
54
+ esac
55
+ }
56
+
57
+ _vg "$@"
@@ -0,0 +1,11 @@
1
+ {
2
+ "vault_dir": "~/.vimgym",
3
+ "watch_path": "~/.claude/projects",
4
+ "server_host": "127.0.0.1",
5
+ "server_port": 7337,
6
+ "debounce_secs": 5.0,
7
+ "stability_polls": 2,
8
+ "stability_poll_interval": 1.0,
9
+ "auto_open_browser": true,
10
+ "log_level": "INFO"
11
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "version": 2,
3
+ "rules": [
4
+ {"name": "anthropic_key", "pattern": "sk-ant-[a-zA-Z0-9_\\-]{60,}", "replacement": "[REDACTED_ANTHROPIC_KEY]"},
5
+ {"name": "openai_key", "pattern": "sk-[a-zA-Z0-9_\\-]{40,}", "replacement": "[REDACTED_OPENAI_KEY]"},
6
+ {"name": "aws_access", "pattern": "AKIA[0-9A-Z]{16}", "replacement": "[REDACTED_AWS_KEY]"},
7
+ {"name": "aws_secret", "pattern": "(?i)aws.secret.{0,20}[=:]\\s*[a-zA-Z0-9/+]{40}", "replacement": "[REDACTED_AWS_SECRET]"},
8
+ {"name": "aws_session_token", "pattern": "AQoXb[a-zA-Z0-9+/]{100,}", "replacement": "[REDACTED_AWS_SESSION]"},
9
+ {"name": "arn", "pattern": "arn:aws:[a-z0-9\\-]+:[a-z0-9\\-]*:\\d{12}:[^\\s\"']+", "replacement": "arn:aws:[REDACTED]"},
10
+ {"name": "bearer_token", "pattern": "Bearer\\s+[a-zA-Z0-9._\\-]{20,}", "replacement": "Bearer [REDACTED]"},
11
+ {"name": "github_token", "pattern": "ghp_[a-zA-Z0-9_]{36,}", "replacement": "[REDACTED_GITHUB_TOKEN]"},
12
+ {"name": "jwt", "pattern": "eyJ[a-zA-Z0-9_\\-]+\\.[a-zA-Z0-9_\\-]+\\.[a-zA-Z0-9_\\-]+", "replacement": "[REDACTED_JWT]"},
13
+ {"name": "kubeconfig_cert", "pattern": "certificate-authority-data:\\s*[A-Za-z0-9+/=]{50,}", "replacement": "certificate-authority-data: [REDACTED]"},
14
+ {"name": "k8s_token", "pattern": "(?i)token:\\s*[a-zA-Z0-9._\\-]{40,}", "replacement": "token: [REDACTED]"},
15
+ {"name": "private_key_inline","pattern": "-----BEGIN (EC|RSA|OPENSSH|DSA) PRIVATE KEY-----[\\s\\S]+?-----END \\1 PRIVATE KEY-----", "replacement": "[REDACTED_PRIVATE_KEY]"},
16
+ {"name": "pem_block", "pattern": "-----BEGIN [A-Z ]+-----[\\s\\S]+?-----END [A-Z ]+-----", "replacement": "[REDACTED_PEM_BLOCK]"},
17
+ {"name": "docker_auth", "pattern": "\"auth\":\\s*\"[A-Za-z0-9+/=]{20,}\"", "replacement": "\"auth\": \"[REDACTED]\""},
18
+ {"name": "postgres_password", "pattern": "postgresql://[^:/\\s]+:[^@/\\s]+@", "replacement": "postgresql://[user]:[REDACTED]@"},
19
+ {"name": "database_url", "pattern": "(mongodb|postgres|mysql|redis)://[^\\s]{8,}", "replacement": "[REDACTED_DB_URL]"},
20
+ {"name": "npm_token", "pattern": "//registry\\.npmjs\\.org/:_authToken=[^\\s]+", "replacement": "//registry.npmjs.org/:_authToken=[REDACTED]"},
21
+ {"name": "env_secret", "pattern": "(?i)(password|secret|api_key|private_key)\\s*=\\s*\\S{8,}", "replacement": "\\1=[REDACTED]"}
22
+ ]
23
+ }
@@ -0,0 +1,80 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "vimgym"
7
+ version = "0.1.1"
8
+ description = "AI session memory for developers — local, fast, no cloud"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = {text = "MIT"}
12
+ authors = [{name = "Shoaib Rain"}]
13
+ keywords = ["claude", "claude-code", "ai", "session", "memory", "search", "developer-tools", "local-first"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Environment :: Console",
17
+ "Environment :: Web Environment",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Operating System :: MacOS",
21
+ "Operating System :: POSIX :: Linux",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Topic :: Software Development",
27
+ "Topic :: Software Development :: Libraries :: Python Modules",
28
+ "Topic :: Utilities",
29
+ ]
30
+ dependencies = [
31
+ "fastapi>=0.110",
32
+ "uvicorn[standard]>=0.29",
33
+ "watchdog>=4.0",
34
+ "httpx>=0.27",
35
+ "rich>=13",
36
+ ]
37
+
38
+ [project.optional-dependencies]
39
+ dev = [
40
+ "pytest>=8",
41
+ "pytest-asyncio>=0.23",
42
+ "pytest-timeout>=2.3",
43
+ "httpx",
44
+ "ruff",
45
+ "mypy",
46
+ "build",
47
+ "twine",
48
+ ]
49
+
50
+ [project.urls]
51
+ Homepage = "https://vimgym.xyz"
52
+ Repository = "https://github.com/shoaibrain/vimgym"
53
+ Issues = "https://github.com/shoaibrain/vimgym/issues"
54
+ Changelog = "https://github.com/shoaibrain/vimgym/blob/main/CHANGELOG.md"
55
+
56
+ [project.scripts]
57
+ vg = "vimgym.cli:main"
58
+
59
+ [tool.setuptools.package-dir]
60
+ "" = "src"
61
+
62
+ [tool.setuptools.packages.find]
63
+ where = ["src"]
64
+
65
+ [tool.setuptools.package-data]
66
+ vimgym = [
67
+ "ui/index.html",
68
+ "ui/style.css",
69
+ "ui/app.js",
70
+ "ui/vendor/highlight.min.js",
71
+ "defaults/redaction-rules.json",
72
+ "defaults/config.json",
73
+ ]
74
+
75
+ [tool.ruff]
76
+ line-length = 100
77
+
78
+ [tool.pytest.ini_options]
79
+ testpaths = ["tests"]
80
+ asyncio_mode = "auto"
vimgym-0.1.1/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ __version__ = "0.1.1"