repr-cli 0.2.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.
- repr_cli-0.2.1/LICENSE +21 -0
- repr_cli-0.2.1/PKG-INFO +263 -0
- repr_cli-0.2.1/README.md +226 -0
- repr_cli-0.2.1/pyproject.toml +65 -0
- repr_cli-0.2.1/repr/__init__.py +10 -0
- repr_cli-0.2.1/repr/api.py +389 -0
- repr_cli-0.2.1/repr/auth.py +364 -0
- repr_cli-0.2.1/repr/cli.py +2338 -0
- repr_cli-0.2.1/repr/config.py +1018 -0
- repr_cli-0.2.1/repr/discovery.py +477 -0
- repr_cli-0.2.1/repr/doctor.py +458 -0
- repr_cli-0.2.1/repr/extractor.py +388 -0
- repr_cli-0.2.1/repr/hooks.py +634 -0
- repr_cli-0.2.1/repr/keychain.py +255 -0
- repr_cli-0.2.1/repr/llm.py +506 -0
- repr_cli-0.2.1/repr/openai_analysis.py +668 -0
- repr_cli-0.2.1/repr/privacy.py +333 -0
- repr_cli-0.2.1/repr/storage.py +527 -0
- repr_cli-0.2.1/repr/templates.py +229 -0
- repr_cli-0.2.1/repr/tools.py +648 -0
- repr_cli-0.2.1/repr/ui.py +145 -0
- repr_cli-0.2.1/repr_cli.egg-info/PKG-INFO +263 -0
- repr_cli-0.2.1/repr_cli.egg-info/SOURCES.txt +34 -0
- repr_cli-0.2.1/repr_cli.egg-info/dependency_links.txt +1 -0
- repr_cli-0.2.1/repr_cli.egg-info/entry_points.txt +2 -0
- repr_cli-0.2.1/repr_cli.egg-info/requires.txt +13 -0
- repr_cli-0.2.1/repr_cli.egg-info/top_level.txt +1 -0
- repr_cli-0.2.1/setup.cfg +4 -0
- repr_cli-0.2.1/setup.py +7 -0
- repr_cli-0.2.1/tests/test_environment_variables.py +336 -0
- repr_cli-0.2.1/tests/test_network_sandboxing.py +174 -0
- repr_cli-0.2.1/tests/test_privacy_guarantees.py +351 -0
- repr_cli-0.2.1/tests/test_profile_export.py +206 -0
- repr_cli-0.2.1/tests/test_repo_identity.py +213 -0
- repr_cli-0.2.1/tests/test_stories_review.py +287 -0
- repr_cli-0.2.1/tests/test_token_budget.py +324 -0
repr_cli-0.2.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Repr
|
|
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.
|
repr_cli-0.2.1/PKG-INFO
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: repr-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: A beautiful, privacy-first CLI that analyzes your code repositories and generates a compelling developer profile
|
|
5
|
+
Author-email: Repr <hello@repr.dev>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://repr.dev
|
|
8
|
+
Project-URL: Documentation, https://repr.dev/docs
|
|
9
|
+
Project-URL: Repository, https://github.com/repr-app/cli
|
|
10
|
+
Keywords: cli,developer,profile,git,analysis,repr
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: typer>=0.9.0
|
|
25
|
+
Requires-Dist: rich>=13.0.0
|
|
26
|
+
Requires-Dist: gitpython>=3.1.0
|
|
27
|
+
Requires-Dist: pygments>=2.16.0
|
|
28
|
+
Requires-Dist: httpx>=0.25.0
|
|
29
|
+
Requires-Dist: openai>=1.0.0
|
|
30
|
+
Requires-Dist: keyring>=24.0.0
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
34
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
35
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
|
|
38
|
+
# Repr CLI
|
|
39
|
+
|
|
40
|
+
A local-first developer tool that turns your git commit history into professional narratives.
|
|
41
|
+
|
|
42
|
+
**Privacy Guarantee:** Zero data leaves your machine unless you explicitly publish. Your keys, your models, your data.
|
|
43
|
+
|
|
44
|
+
[](https://pypi.org/project/repr-cli/)
|
|
45
|
+
[](https://pypi.org/project/repr-cli/)
|
|
46
|
+
[](https://opensource.org/licenses/MIT)
|
|
47
|
+
[](https://github.com/repr-app/cli/actions/workflows/build-release.yml)
|
|
48
|
+
|
|
49
|
+
## Philosophy
|
|
50
|
+
|
|
51
|
+
Repr is built on three core principles:
|
|
52
|
+
|
|
53
|
+
1. **Local-First:** Analysis happens on your machine. You own the output.
|
|
54
|
+
2. **Bring Your Own Keys:** Use your own OpenAI API key or a local LLM (Ollama, etc.). We don't sit in the middle.
|
|
55
|
+
3. **Opt-In Cloud:** Publishing to `repr.dev` is strictly optional. Use it for backup or sharing, or ignore it entirely.
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
### macOS / Linux (Homebrew)
|
|
60
|
+
```bash
|
|
61
|
+
brew tap repr-app/tap
|
|
62
|
+
brew install repr
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Direct Download
|
|
66
|
+
Download pre-built binaries for macOS, Linux, and Windows from the [latest release](https://github.com/repr-app/cli/releases/latest).
|
|
67
|
+
|
|
68
|
+
### Python (pipx)
|
|
69
|
+
```bash
|
|
70
|
+
pipx install repr-cli
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## The Local Workflow
|
|
74
|
+
|
|
75
|
+
You can use Repr entirely offline or with your own API keys. No account required.
|
|
76
|
+
|
|
77
|
+
### 1. Initialize
|
|
78
|
+
Scan for repositories and set up local config.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
repr init ~/code
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 2. Generate stories
|
|
85
|
+
Create stories from your commit history.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Using a local LLM (e.g., Ollama running Llama 3)
|
|
89
|
+
repr generate --local
|
|
90
|
+
|
|
91
|
+
# Or configure your own API key (BYOK)
|
|
92
|
+
repr llm add openai
|
|
93
|
+
repr generate
|
|
94
|
+
|
|
95
|
+
# Or use cloud (requires login)
|
|
96
|
+
repr login
|
|
97
|
+
repr generate --cloud
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This reads your git log, diffs, and file context to generate meaningful summaries of your work. All processing happens locally or directly against the API you specify.
|
|
101
|
+
|
|
102
|
+
### 3. View your stories
|
|
103
|
+
Inspect the generated stories stored on your machine.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
repr stories
|
|
107
|
+
repr story view <id>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Output is stored in `~/.repr/`, staying fully under your control.
|
|
111
|
+
|
|
112
|
+
### 4. Track multiple repositories
|
|
113
|
+
Configure Repr to watch multiple projects.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
repr repos add ~/code/work-project
|
|
117
|
+
repr repos add ~/code/side-project
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Optional: Cloud & Publishing
|
|
121
|
+
|
|
122
|
+
If you want convenience without managing your own API keys, you can use Repr's backend. It processes your code with proprietary models but operates under a **zero data retention (ZDR) policy**—no logging, no storage beyond ephemeral processing.
|
|
123
|
+
|
|
124
|
+
Alternatively, use the cloud for backup and sharing: sync your locally generated stories or create a public profile (e.g., `repr.dev/yourname`).
|
|
125
|
+
|
|
126
|
+
**This is the only time data leaves your machine.**
|
|
127
|
+
|
|
128
|
+
### 1. Authenticate
|
|
129
|
+
```bash
|
|
130
|
+
repr login
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 2. Push stories
|
|
134
|
+
Publish your locally generated stories to your profile.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
repr push
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 3. Sync across devices
|
|
141
|
+
Keep your stories in sync.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
repr sync
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 4. Automate (Optional)
|
|
148
|
+
Install git hooks to automatically track new commits as you work.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
repr hooks install --all
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Configuration
|
|
155
|
+
|
|
156
|
+
Repr respects standard environment variables and local configuration.
|
|
157
|
+
|
|
158
|
+
**Config file:** `~/.repr/config.json`
|
|
159
|
+
|
|
160
|
+
### Using Local LLMs (Ollama, LocalAI)
|
|
161
|
+
Point Repr to any OpenAI-compatible endpoint:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
repr llm configure
|
|
165
|
+
# Or manually:
|
|
166
|
+
repr config set llm.local_api_url http://localhost:11434/v1
|
|
167
|
+
repr config set llm.local_model llama3.2
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Bring Your Own Key (BYOK)
|
|
171
|
+
Configure your own API keys:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
repr llm add openai
|
|
175
|
+
repr llm add anthropic
|
|
176
|
+
repr llm use byok:openai
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Privacy Modes
|
|
180
|
+
|
|
181
|
+
| Mode | Command | Behavior |
|
|
182
|
+
|------|---------|----------|
|
|
183
|
+
| **Local LLM** | `repr generate --local` | Uses your local LLM endpoint (Ollama, etc.). Zero external network calls. |
|
|
184
|
+
| **BYOK** | `repr llm add <provider>` | Configure your own API keys (OpenAI, Anthropic, etc.). Direct connection, no middleman. |
|
|
185
|
+
| **Cloud** | `repr generate --cloud` | **(Requires Login)** Uses Repr's backend. Sends metadata + diffs. Zero data retention (ZDR) policy—no logging, ephemeral processing only. |
|
|
186
|
+
| **Offline** | Local operations only | Works without network. View stories, repos, export profiles. |
|
|
187
|
+
|
|
188
|
+
## Command Reference
|
|
189
|
+
|
|
190
|
+
### Getting Started
|
|
191
|
+
- `repr init [path]` - Initialize repr, scan for repositories
|
|
192
|
+
- `repr login` - Authenticate with repr.dev
|
|
193
|
+
- `repr whoami` - Show current user
|
|
194
|
+
- `repr logout` - Sign out
|
|
195
|
+
- `repr status` - Show overall status and health
|
|
196
|
+
- `repr mode` - Show current execution mode
|
|
197
|
+
- `repr doctor` - Run health checks and diagnostics
|
|
198
|
+
|
|
199
|
+
### Generation & Analysis
|
|
200
|
+
- `repr generate [--local|--cloud]` - Generate stories from commits
|
|
201
|
+
- `--repo <path>` - Generate for specific repo
|
|
202
|
+
- `--commits <sha1,sha2>` - Generate from specific commits
|
|
203
|
+
- `--template <name>` - Use template (resume, changelog, narrative, interview)
|
|
204
|
+
- `--dry-run` - Preview what would be sent
|
|
205
|
+
- `repr week [--save]` - Show work from this week
|
|
206
|
+
- `repr since <date> [--save]` - Show work since a date
|
|
207
|
+
- `repr standup [--days N]` - Quick summary for standup
|
|
208
|
+
|
|
209
|
+
### Stories
|
|
210
|
+
- `repr stories [--repo NAME] [--needs-review]` - List all stories
|
|
211
|
+
- `repr story <action> <id>` - Manage a story (view, edit, delete, hide, feature)
|
|
212
|
+
- `repr review` - Interactive review workflow
|
|
213
|
+
- `repr commits [--repo NAME] [--limit N]` - List recent commits
|
|
214
|
+
|
|
215
|
+
### Cloud Operations
|
|
216
|
+
- `repr push [--story ID] [--all]` - Publish stories to repr.dev
|
|
217
|
+
- `repr sync` - Sync stories across devices
|
|
218
|
+
- `repr pull` - Pull remote stories to local
|
|
219
|
+
|
|
220
|
+
### Repositories
|
|
221
|
+
- `repr repos [list|add|remove|pause|resume] [path]` - Manage tracked repos
|
|
222
|
+
|
|
223
|
+
### Git Hooks
|
|
224
|
+
- `repr hooks install [--all|--repo PATH]` - Install post-commit hooks
|
|
225
|
+
- `repr hooks remove [--all|--repo PATH]` - Remove hooks
|
|
226
|
+
- `repr hooks status` - Show hook status
|
|
227
|
+
|
|
228
|
+
### LLM Configuration
|
|
229
|
+
- `repr llm add <provider>` - Configure BYOK provider (openai, anthropic, groq, together)
|
|
230
|
+
- `repr llm remove <provider>` - Remove BYOK provider
|
|
231
|
+
- `repr llm use <mode>` - Set default mode (local, cloud, byok:<provider>)
|
|
232
|
+
- `repr llm configure` - Configure local LLM interactively
|
|
233
|
+
- `repr llm test` - Test LLM connection
|
|
234
|
+
|
|
235
|
+
### Privacy
|
|
236
|
+
- `repr privacy explain` - Show privacy guarantees
|
|
237
|
+
- `repr privacy audit [--days N]` - Show what data was sent to cloud
|
|
238
|
+
- `repr privacy lock-local [--permanent]` - Disable cloud features
|
|
239
|
+
- `repr privacy unlock-local` - Re-enable cloud features
|
|
240
|
+
|
|
241
|
+
### Configuration
|
|
242
|
+
- `repr config show [key]` - Display configuration
|
|
243
|
+
- `repr config set <key> <value>` - Set configuration value
|
|
244
|
+
- `repr config edit` - Open config in $EDITOR
|
|
245
|
+
|
|
246
|
+
### Data Management
|
|
247
|
+
- `repr data` - Show local storage info
|
|
248
|
+
- `repr data backup [--output FILE]` - Backup all local data
|
|
249
|
+
- `repr data restore <file> [--merge]` - Restore from backup
|
|
250
|
+
- `repr data clear-cache` - Clear local cache
|
|
251
|
+
|
|
252
|
+
### Profile
|
|
253
|
+
- `repr profile` - View profile
|
|
254
|
+
- `repr profile update [--preview]` - Generate/update profile from stories
|
|
255
|
+
- `repr profile set-bio <text>` - Set profile bio
|
|
256
|
+
- `repr profile set-location <text>` - Set location
|
|
257
|
+
- `repr profile set-available <bool>` - Set availability status
|
|
258
|
+
- `repr profile export [--format FORMAT]` - Export profile (md, json)
|
|
259
|
+
- `repr profile link` - Get shareable profile link
|
|
260
|
+
|
|
261
|
+
## License
|
|
262
|
+
|
|
263
|
+
MIT License - see [LICENSE](LICENSE).
|
repr_cli-0.2.1/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Repr CLI
|
|
2
|
+
|
|
3
|
+
A local-first developer tool that turns your git commit history into professional narratives.
|
|
4
|
+
|
|
5
|
+
**Privacy Guarantee:** Zero data leaves your machine unless you explicitly publish. Your keys, your models, your data.
|
|
6
|
+
|
|
7
|
+
[](https://pypi.org/project/repr-cli/)
|
|
8
|
+
[](https://pypi.org/project/repr-cli/)
|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
10
|
+
[](https://github.com/repr-app/cli/actions/workflows/build-release.yml)
|
|
11
|
+
|
|
12
|
+
## Philosophy
|
|
13
|
+
|
|
14
|
+
Repr is built on three core principles:
|
|
15
|
+
|
|
16
|
+
1. **Local-First:** Analysis happens on your machine. You own the output.
|
|
17
|
+
2. **Bring Your Own Keys:** Use your own OpenAI API key or a local LLM (Ollama, etc.). We don't sit in the middle.
|
|
18
|
+
3. **Opt-In Cloud:** Publishing to `repr.dev` is strictly optional. Use it for backup or sharing, or ignore it entirely.
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
### macOS / Linux (Homebrew)
|
|
23
|
+
```bash
|
|
24
|
+
brew tap repr-app/tap
|
|
25
|
+
brew install repr
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Direct Download
|
|
29
|
+
Download pre-built binaries for macOS, Linux, and Windows from the [latest release](https://github.com/repr-app/cli/releases/latest).
|
|
30
|
+
|
|
31
|
+
### Python (pipx)
|
|
32
|
+
```bash
|
|
33
|
+
pipx install repr-cli
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## The Local Workflow
|
|
37
|
+
|
|
38
|
+
You can use Repr entirely offline or with your own API keys. No account required.
|
|
39
|
+
|
|
40
|
+
### 1. Initialize
|
|
41
|
+
Scan for repositories and set up local config.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
repr init ~/code
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Generate stories
|
|
48
|
+
Create stories from your commit history.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Using a local LLM (e.g., Ollama running Llama 3)
|
|
52
|
+
repr generate --local
|
|
53
|
+
|
|
54
|
+
# Or configure your own API key (BYOK)
|
|
55
|
+
repr llm add openai
|
|
56
|
+
repr generate
|
|
57
|
+
|
|
58
|
+
# Or use cloud (requires login)
|
|
59
|
+
repr login
|
|
60
|
+
repr generate --cloud
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
This reads your git log, diffs, and file context to generate meaningful summaries of your work. All processing happens locally or directly against the API you specify.
|
|
64
|
+
|
|
65
|
+
### 3. View your stories
|
|
66
|
+
Inspect the generated stories stored on your machine.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
repr stories
|
|
70
|
+
repr story view <id>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Output is stored in `~/.repr/`, staying fully under your control.
|
|
74
|
+
|
|
75
|
+
### 4. Track multiple repositories
|
|
76
|
+
Configure Repr to watch multiple projects.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
repr repos add ~/code/work-project
|
|
80
|
+
repr repos add ~/code/side-project
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Optional: Cloud & Publishing
|
|
84
|
+
|
|
85
|
+
If you want convenience without managing your own API keys, you can use Repr's backend. It processes your code with proprietary models but operates under a **zero data retention (ZDR) policy**—no logging, no storage beyond ephemeral processing.
|
|
86
|
+
|
|
87
|
+
Alternatively, use the cloud for backup and sharing: sync your locally generated stories or create a public profile (e.g., `repr.dev/yourname`).
|
|
88
|
+
|
|
89
|
+
**This is the only time data leaves your machine.**
|
|
90
|
+
|
|
91
|
+
### 1. Authenticate
|
|
92
|
+
```bash
|
|
93
|
+
repr login
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 2. Push stories
|
|
97
|
+
Publish your locally generated stories to your profile.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
repr push
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. Sync across devices
|
|
104
|
+
Keep your stories in sync.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
repr sync
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 4. Automate (Optional)
|
|
111
|
+
Install git hooks to automatically track new commits as you work.
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
repr hooks install --all
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Configuration
|
|
118
|
+
|
|
119
|
+
Repr respects standard environment variables and local configuration.
|
|
120
|
+
|
|
121
|
+
**Config file:** `~/.repr/config.json`
|
|
122
|
+
|
|
123
|
+
### Using Local LLMs (Ollama, LocalAI)
|
|
124
|
+
Point Repr to any OpenAI-compatible endpoint:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
repr llm configure
|
|
128
|
+
# Or manually:
|
|
129
|
+
repr config set llm.local_api_url http://localhost:11434/v1
|
|
130
|
+
repr config set llm.local_model llama3.2
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Bring Your Own Key (BYOK)
|
|
134
|
+
Configure your own API keys:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
repr llm add openai
|
|
138
|
+
repr llm add anthropic
|
|
139
|
+
repr llm use byok:openai
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Privacy Modes
|
|
143
|
+
|
|
144
|
+
| Mode | Command | Behavior |
|
|
145
|
+
|------|---------|----------|
|
|
146
|
+
| **Local LLM** | `repr generate --local` | Uses your local LLM endpoint (Ollama, etc.). Zero external network calls. |
|
|
147
|
+
| **BYOK** | `repr llm add <provider>` | Configure your own API keys (OpenAI, Anthropic, etc.). Direct connection, no middleman. |
|
|
148
|
+
| **Cloud** | `repr generate --cloud` | **(Requires Login)** Uses Repr's backend. Sends metadata + diffs. Zero data retention (ZDR) policy—no logging, ephemeral processing only. |
|
|
149
|
+
| **Offline** | Local operations only | Works without network. View stories, repos, export profiles. |
|
|
150
|
+
|
|
151
|
+
## Command Reference
|
|
152
|
+
|
|
153
|
+
### Getting Started
|
|
154
|
+
- `repr init [path]` - Initialize repr, scan for repositories
|
|
155
|
+
- `repr login` - Authenticate with repr.dev
|
|
156
|
+
- `repr whoami` - Show current user
|
|
157
|
+
- `repr logout` - Sign out
|
|
158
|
+
- `repr status` - Show overall status and health
|
|
159
|
+
- `repr mode` - Show current execution mode
|
|
160
|
+
- `repr doctor` - Run health checks and diagnostics
|
|
161
|
+
|
|
162
|
+
### Generation & Analysis
|
|
163
|
+
- `repr generate [--local|--cloud]` - Generate stories from commits
|
|
164
|
+
- `--repo <path>` - Generate for specific repo
|
|
165
|
+
- `--commits <sha1,sha2>` - Generate from specific commits
|
|
166
|
+
- `--template <name>` - Use template (resume, changelog, narrative, interview)
|
|
167
|
+
- `--dry-run` - Preview what would be sent
|
|
168
|
+
- `repr week [--save]` - Show work from this week
|
|
169
|
+
- `repr since <date> [--save]` - Show work since a date
|
|
170
|
+
- `repr standup [--days N]` - Quick summary for standup
|
|
171
|
+
|
|
172
|
+
### Stories
|
|
173
|
+
- `repr stories [--repo NAME] [--needs-review]` - List all stories
|
|
174
|
+
- `repr story <action> <id>` - Manage a story (view, edit, delete, hide, feature)
|
|
175
|
+
- `repr review` - Interactive review workflow
|
|
176
|
+
- `repr commits [--repo NAME] [--limit N]` - List recent commits
|
|
177
|
+
|
|
178
|
+
### Cloud Operations
|
|
179
|
+
- `repr push [--story ID] [--all]` - Publish stories to repr.dev
|
|
180
|
+
- `repr sync` - Sync stories across devices
|
|
181
|
+
- `repr pull` - Pull remote stories to local
|
|
182
|
+
|
|
183
|
+
### Repositories
|
|
184
|
+
- `repr repos [list|add|remove|pause|resume] [path]` - Manage tracked repos
|
|
185
|
+
|
|
186
|
+
### Git Hooks
|
|
187
|
+
- `repr hooks install [--all|--repo PATH]` - Install post-commit hooks
|
|
188
|
+
- `repr hooks remove [--all|--repo PATH]` - Remove hooks
|
|
189
|
+
- `repr hooks status` - Show hook status
|
|
190
|
+
|
|
191
|
+
### LLM Configuration
|
|
192
|
+
- `repr llm add <provider>` - Configure BYOK provider (openai, anthropic, groq, together)
|
|
193
|
+
- `repr llm remove <provider>` - Remove BYOK provider
|
|
194
|
+
- `repr llm use <mode>` - Set default mode (local, cloud, byok:<provider>)
|
|
195
|
+
- `repr llm configure` - Configure local LLM interactively
|
|
196
|
+
- `repr llm test` - Test LLM connection
|
|
197
|
+
|
|
198
|
+
### Privacy
|
|
199
|
+
- `repr privacy explain` - Show privacy guarantees
|
|
200
|
+
- `repr privacy audit [--days N]` - Show what data was sent to cloud
|
|
201
|
+
- `repr privacy lock-local [--permanent]` - Disable cloud features
|
|
202
|
+
- `repr privacy unlock-local` - Re-enable cloud features
|
|
203
|
+
|
|
204
|
+
### Configuration
|
|
205
|
+
- `repr config show [key]` - Display configuration
|
|
206
|
+
- `repr config set <key> <value>` - Set configuration value
|
|
207
|
+
- `repr config edit` - Open config in $EDITOR
|
|
208
|
+
|
|
209
|
+
### Data Management
|
|
210
|
+
- `repr data` - Show local storage info
|
|
211
|
+
- `repr data backup [--output FILE]` - Backup all local data
|
|
212
|
+
- `repr data restore <file> [--merge]` - Restore from backup
|
|
213
|
+
- `repr data clear-cache` - Clear local cache
|
|
214
|
+
|
|
215
|
+
### Profile
|
|
216
|
+
- `repr profile` - View profile
|
|
217
|
+
- `repr profile update [--preview]` - Generate/update profile from stories
|
|
218
|
+
- `repr profile set-bio <text>` - Set profile bio
|
|
219
|
+
- `repr profile set-location <text>` - Set location
|
|
220
|
+
- `repr profile set-available <bool>` - Set availability status
|
|
221
|
+
- `repr profile export [--format FORMAT]` - Export profile (md, json)
|
|
222
|
+
- `repr profile link` - Get shareable profile link
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT License - see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "repr-cli"
|
|
7
|
+
version = "0.2.1"
|
|
8
|
+
description = "A beautiful, privacy-first CLI that analyzes your code repositories and generates a compelling developer profile"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "Repr", email = "hello@repr.dev"}
|
|
13
|
+
]
|
|
14
|
+
requires-python = ">=3.10"
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Environment :: Console",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Topic :: Software Development :: Version Control :: Git",
|
|
26
|
+
]
|
|
27
|
+
keywords = ["cli", "developer", "profile", "git", "analysis", "repr"]
|
|
28
|
+
dependencies = [
|
|
29
|
+
"typer>=0.9.0",
|
|
30
|
+
"rich>=13.0.0",
|
|
31
|
+
"gitpython>=3.1.0",
|
|
32
|
+
"pygments>=2.16.0",
|
|
33
|
+
"httpx>=0.25.0",
|
|
34
|
+
"openai>=1.0.0",
|
|
35
|
+
"keyring>=24.0.0",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
dev = [
|
|
40
|
+
"pytest>=7.0.0",
|
|
41
|
+
"pytest-asyncio>=0.21.0",
|
|
42
|
+
"black>=23.0.0",
|
|
43
|
+
"ruff>=0.1.0",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[project.scripts]
|
|
47
|
+
repr = "repr.cli:app"
|
|
48
|
+
|
|
49
|
+
[project.urls]
|
|
50
|
+
Homepage = "https://repr.dev"
|
|
51
|
+
Documentation = "https://repr.dev/docs"
|
|
52
|
+
Repository = "https://github.com/repr-app/cli"
|
|
53
|
+
|
|
54
|
+
[tool.setuptools.packages.find]
|
|
55
|
+
where = ["."]
|
|
56
|
+
include = ["repr*"]
|
|
57
|
+
|
|
58
|
+
[tool.black]
|
|
59
|
+
line-length = 100
|
|
60
|
+
target-version = ["py310"]
|
|
61
|
+
|
|
62
|
+
[tool.ruff]
|
|
63
|
+
line-length = 100
|
|
64
|
+
target-version = "py310"
|
|
65
|
+
select = ["E", "F", "I", "N", "W"]
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Repr CLI - Privacy-first developer profile generator.
|
|
3
|
+
|
|
4
|
+
Analyzes your local git repositories and generates a compelling
|
|
5
|
+
developer profile without ever sending your source code to the cloud.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
__version__ = "0.2.0"
|
|
9
|
+
__author__ = "Repr"
|
|
10
|
+
__email__ = "hello@repr.dev"
|