repr-cli 0.2.15__tar.gz → 0.2.17__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 (68) hide show
  1. {repr_cli-0.2.15 → repr_cli-0.2.17}/PKG-INFO +50 -10
  2. {repr_cli-0.2.15 → repr_cli-0.2.17}/README.md +46 -9
  3. {repr_cli-0.2.15 → repr_cli-0.2.17}/pyproject.toml +8 -1
  4. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/__init__.py +1 -1
  5. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/api.py +363 -62
  6. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/auth.py +47 -38
  7. repr_cli-0.2.17/repr/change_synthesis.py +478 -0
  8. repr_cli-0.2.17/repr/cli.py +6577 -0
  9. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/config.py +119 -11
  10. repr_cli-0.2.17/repr/configure.py +889 -0
  11. repr_cli-0.2.17/repr/cron.py +419 -0
  12. repr_cli-0.2.17/repr/dashboard/__init__.py +9 -0
  13. repr_cli-0.2.17/repr/dashboard/build.py +126 -0
  14. repr_cli-0.2.17/repr/dashboard/dist/assets/index-BYFVbEev.css +1 -0
  15. repr_cli-0.2.17/repr/dashboard/dist/assets/index-BrrhyJFO.css +1 -0
  16. repr_cli-0.2.17/repr/dashboard/dist/assets/index-CcEg74ts.js +270 -0
  17. repr_cli-0.2.17/repr/dashboard/dist/assets/index-Cerc-iA_.js +377 -0
  18. repr_cli-0.2.17/repr/dashboard/dist/assets/index-CjVcBW2L.css +1 -0
  19. repr_cli-0.2.17/repr/dashboard/dist/assets/index-Dfl3mR5E.js +377 -0
  20. repr_cli-0.2.17/repr/dashboard/dist/favicon.svg +4 -0
  21. repr_cli-0.2.17/repr/dashboard/dist/index.html +14 -0
  22. repr_cli-0.2.17/repr/dashboard/manager.py +234 -0
  23. repr_cli-0.2.17/repr/dashboard/server.py +1298 -0
  24. repr_cli-0.2.17/repr/db.py +980 -0
  25. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/hooks.py +3 -2
  26. repr_cli-0.2.17/repr/loaders/__init__.py +22 -0
  27. repr_cli-0.2.17/repr/loaders/base.py +156 -0
  28. repr_cli-0.2.17/repr/loaders/claude_code.py +287 -0
  29. repr_cli-0.2.17/repr/loaders/clawdbot.py +313 -0
  30. repr_cli-0.2.17/repr/loaders/gemini_antigravity.py +381 -0
  31. repr_cli-0.2.17/repr/mcp_server.py +1196 -0
  32. repr_cli-0.2.17/repr/models.py +503 -0
  33. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/openai_analysis.py +25 -0
  34. repr_cli-0.2.17/repr/session_extractor.py +481 -0
  35. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/storage.py +360 -0
  36. repr_cli-0.2.17/repr/story_synthesis.py +1296 -0
  37. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/templates.py +68 -4
  38. repr_cli-0.2.17/repr/timeline.py +710 -0
  39. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/tools.py +17 -8
  40. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr_cli.egg-info/PKG-INFO +50 -10
  41. repr_cli-0.2.17/repr_cli.egg-info/SOURCES.txt +64 -0
  42. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr_cli.egg-info/entry_points.txt +1 -0
  43. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr_cli.egg-info/requires.txt +3 -0
  44. repr_cli-0.2.17/tests/test_deduplication.py +143 -0
  45. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_stories_review.py +2 -3
  46. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_token_budget.py +10 -3
  47. repr_cli-0.2.15/repr/cli.py +0 -2741
  48. repr_cli-0.2.15/repr_cli.egg-info/SOURCES.txt +0 -37
  49. {repr_cli-0.2.15 → repr_cli-0.2.17}/LICENSE +0 -0
  50. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/__main__.py +0 -0
  51. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/discovery.py +0 -0
  52. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/doctor.py +0 -0
  53. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/extractor.py +0 -0
  54. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/keychain.py +0 -0
  55. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/llm.py +0 -0
  56. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/privacy.py +0 -0
  57. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/telemetry.py +0 -0
  58. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/ui.py +0 -0
  59. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr/updater.py +0 -0
  60. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr_cli.egg-info/dependency_links.txt +0 -0
  61. {repr_cli-0.2.15 → repr_cli-0.2.17}/repr_cli.egg-info/top_level.txt +0 -0
  62. {repr_cli-0.2.15 → repr_cli-0.2.17}/setup.cfg +0 -0
  63. {repr_cli-0.2.15 → repr_cli-0.2.17}/setup.py +0 -0
  64. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_environment_variables.py +0 -0
  65. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_network_sandboxing.py +0 -0
  66. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_privacy_guarantees.py +0 -0
  67. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_profile_export.py +0 -0
  68. {repr_cli-0.2.15 → repr_cli-0.2.17}/tests/test_repo_identity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: repr-cli
3
- Version: 0.2.15
3
+ Version: 0.2.17
4
4
  Summary: A beautiful, privacy-first CLI that analyzes your code repositories and generates a compelling developer profile
5
5
  Author-email: Repr <hello@repr.dev>
6
6
  License: MIT License
@@ -49,6 +49,9 @@ Requires-Dist: httpx>=0.25.0
49
49
  Requires-Dist: openai>=1.0.0
50
50
  Requires-Dist: keyring>=24.0.0
51
51
  Requires-Dist: pydantic>=2.0.0
52
+ Requires-Dist: fastmcp<3,>=2.0.0
53
+ Requires-Dist: jinja2>=3.1.0
54
+ Requires-Dist: simple-term-menu>=1.6.0
52
55
  Provides-Extra: dev
53
56
  Requires-Dist: pytest>=7.0.0; extra == "dev"
54
57
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -56,17 +59,27 @@ Requires-Dist: black>=23.0.0; extra == "dev"
56
59
  Requires-Dist: ruff>=0.1.0; extra == "dev"
57
60
  Dynamic: license-file
58
61
 
62
+ <p align="center">
63
+ <strong>Official $REPR Links:</strong> <a href="https://bags.fm/5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Bags.fm</a> · <a href="https://axiom.trade/t/5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Axiom</a> · <a href="https://jup.ag/swap?sell=So11111111111111111111111111111111111111112&buy=5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Jupiter</a> · <a href="https://photon-sol.tinyastro.io/en/lp/5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Photon</a>
64
+ <br>
65
+ <strong>Official CA:</strong> <code>5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS</code> (on Solana)
66
+ </p>
67
+
68
+
59
69
  # Repr CLI
60
70
 
61
- **Stop trying to remember what you did.** Your git history is already a career diary—repr unlocks it.
71
+ **The developer context layer.**
72
+
73
+ Your git history is rich with context about what you build, how you think, and how you grow. repr captures that context and makes it available everywhere — to AI agents, to applications, to you.
62
74
 
63
- Turn commits into professional narratives for interviews, performance reviews, and career growth. Local-first, privacy-focused, works offline.
75
+ **Use it however you need:** Interview prep, performance reviews, social content, AI agent context — these are all *lenses* into the same underlying data. Local-first, privacy-focused, works offline.
64
76
 
65
77
  [![PyPI version](https://img.shields.io/pypi/v/repr-cli.svg)](https://pypi.org/project/repr-cli/)
66
78
  [![Python versions](https://img.shields.io/pypi/pyversions/repr-cli.svg)](https://pypi.org/project/repr-cli/)
67
79
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
68
80
  [![Build](https://github.com/repr-app/cli/actions/workflows/build-release.yml/badge.svg)](https://github.com/repr-app/cli/actions/workflows/build-release.yml)
69
81
 
82
+
70
83
  ## Real Developers, Real Results
71
84
 
72
85
  > *"I used repr to prep for my Meta interview in 30 minutes. Turned 2 years of commits into 8 STAR-format stories. Nailed every behavioral question."*
@@ -78,17 +91,31 @@ Turn commits into professional narratives for interviews, performance reviews, a
78
91
  > *"I run repr in a fully air-gapped environment. Zero network calls, 100% local. It's the only tool I trust for this."*
79
92
  > **— Alex, Defense Contractor**
80
93
 
81
- ## Perfect For
94
+ ## Lenses (Ways to Use Your Context)
82
95
 
83
- - 🎯 **Interview Prep** — Generate STAR-format stories in 30 minutes instead of hours of commit archaeology
84
- - 📊 **Performance Reviews** — Turn 6 months of work into quantified impact with one command
85
- - 🚀 **Sprint Demos** — Professional changelogs for stakeholders in seconds
86
- - 👔 **Weekly 1-on-1s** — Show up with specific examples instead of vague "I worked on stuff"
87
- - 🔒 **Sensitive Work** — Air-gapped support for defense, healthcare, finance
88
- - 💼 **Engineering Managers** — Prep for team reviews with per-developer summaries
96
+ - 🤖 **AI Agent Context** — MCP server lets Claude Code, Cursor, and other agents know your work history
97
+ - 🎯 **Interview Prep** — Generate STAR-format stories in 30 minutes (interview lens)
98
+ - 📊 **Performance Reviews** — Turn 6 months of work into quantified impact (resume lens)
99
+ - 🚀 **Sprint Demos** — Professional changelogs for stakeholders (changelog lens)
100
+ - 📱 **Build in Public** — Social posts from your actual work (content lens)
101
+ - 🔒 **Proof of Work** — Verified credentials from real commits (proof lens)
102
+ - 💼 **Engineering Managers** — Team summaries and sprint recaps
89
103
 
90
104
  ## Why Repr
91
105
 
106
+ ### Context That Compounds
107
+
108
+ The longer you use repr, the richer your context becomes. By the time you need a resume, interview prep, or content — you have months of structured history ready to use. No other tool builds this persistent layer.
109
+
110
+ ### AI-Native
111
+
112
+ repr exposes your context via MCP (Model Context Protocol), so AI agents like Claude Code, Cursor, and Clawdbot can know your work history and patterns. Your coding assistant finally understands *you*.
113
+
114
+ ```bash
115
+ # Start MCP server for AI agents
116
+ repr mcp serve
117
+ ```
118
+
92
119
  ### Privacy First (Not an Afterthought)
93
120
 
94
121
  - ✅ **Local-first by default** — Your repos, diffs, and stories stay on your machine in `~/.repr/`
@@ -98,6 +125,16 @@ Turn commits into professional narratives for interviews, performance reviews, a
98
125
  - ✅ **OS keychain** — API keys never touch config files, stored in system keychain
99
126
  - ✅ **Zero telemetry** — No tracking, no analytics, no silent uploads
100
127
 
128
+ ### Story Engine (New in v0.2.16)
129
+
130
+ `repr` now synthesizes **Stories** from your commits — coherent narratives that capture WHY and HOW you built something, not just WHAT changed.
131
+
132
+ - **Generate**: Create stories from your commits with `repr generate`
133
+ - **Dashboard**: Explore your work in a premium dark-mode UI with `repr dashboard` (or `rp dashboard`)
134
+ - **MCP Integration**: AI agents can answer questions about your implementation details
135
+
136
+ [Read the Story Engine Documentation →](docs/STORY_ENGINE.md)
137
+
101
138
  ### Time Savings
102
139
 
103
140
  | Task | Without repr | With repr | Savings |
@@ -219,6 +256,8 @@ repr generate --since "2 weeks ago" --local
219
256
  repr generate --since monday --local
220
257
  ```
221
258
 
259
+ **Note:** `repr generate` automatically skips commits that have already been processed into stories. You can safely run it multiple times without creating duplicates.
260
+
222
261
  ### Publish your profile (optional)
223
262
 
224
263
  ```bash
@@ -383,3 +422,4 @@ brew install repr
383
422
  repr init ~/code
384
423
  repr generate --local
385
424
  ```
425
+
@@ -1,14 +1,24 @@
1
+ <p align="center">
2
+ <strong>Official $REPR Links:</strong> <a href="https://bags.fm/5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Bags.fm</a> · <a href="https://axiom.trade/t/5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Axiom</a> · <a href="https://jup.ag/swap?sell=So11111111111111111111111111111111111111112&buy=5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Jupiter</a> · <a href="https://photon-sol.tinyastro.io/en/lp/5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS">Photon</a>
3
+ <br>
4
+ <strong>Official CA:</strong> <code>5WsMLk8Zb8PWTXoHev7Ry6QDHNC2KSpY5x8R13GGBAGS</code> (on Solana)
5
+ </p>
6
+
7
+
1
8
  # Repr CLI
2
9
 
3
- **Stop trying to remember what you did.** Your git history is already a career diary—repr unlocks it.
10
+ **The developer context layer.**
11
+
12
+ Your git history is rich with context about what you build, how you think, and how you grow. repr captures that context and makes it available everywhere — to AI agents, to applications, to you.
4
13
 
5
- Turn commits into professional narratives for interviews, performance reviews, and career growth. Local-first, privacy-focused, works offline.
14
+ **Use it however you need:** Interview prep, performance reviews, social content, AI agent context — these are all *lenses* into the same underlying data. Local-first, privacy-focused, works offline.
6
15
 
7
16
  [![PyPI version](https://img.shields.io/pypi/v/repr-cli.svg)](https://pypi.org/project/repr-cli/)
8
17
  [![Python versions](https://img.shields.io/pypi/pyversions/repr-cli.svg)](https://pypi.org/project/repr-cli/)
9
18
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
19
  [![Build](https://github.com/repr-app/cli/actions/workflows/build-release.yml/badge.svg)](https://github.com/repr-app/cli/actions/workflows/build-release.yml)
11
20
 
21
+
12
22
  ## Real Developers, Real Results
13
23
 
14
24
  > *"I used repr to prep for my Meta interview in 30 minutes. Turned 2 years of commits into 8 STAR-format stories. Nailed every behavioral question."*
@@ -20,17 +30,31 @@ Turn commits into professional narratives for interviews, performance reviews, a
20
30
  > *"I run repr in a fully air-gapped environment. Zero network calls, 100% local. It's the only tool I trust for this."*
21
31
  > **— Alex, Defense Contractor**
22
32
 
23
- ## Perfect For
33
+ ## Lenses (Ways to Use Your Context)
24
34
 
25
- - 🎯 **Interview Prep** — Generate STAR-format stories in 30 minutes instead of hours of commit archaeology
26
- - 📊 **Performance Reviews** — Turn 6 months of work into quantified impact with one command
27
- - 🚀 **Sprint Demos** — Professional changelogs for stakeholders in seconds
28
- - 👔 **Weekly 1-on-1s** — Show up with specific examples instead of vague "I worked on stuff"
29
- - 🔒 **Sensitive Work** — Air-gapped support for defense, healthcare, finance
30
- - 💼 **Engineering Managers** — Prep for team reviews with per-developer summaries
35
+ - 🤖 **AI Agent Context** — MCP server lets Claude Code, Cursor, and other agents know your work history
36
+ - 🎯 **Interview Prep** — Generate STAR-format stories in 30 minutes (interview lens)
37
+ - 📊 **Performance Reviews** — Turn 6 months of work into quantified impact (resume lens)
38
+ - 🚀 **Sprint Demos** — Professional changelogs for stakeholders (changelog lens)
39
+ - 📱 **Build in Public** — Social posts from your actual work (content lens)
40
+ - 🔒 **Proof of Work** — Verified credentials from real commits (proof lens)
41
+ - 💼 **Engineering Managers** — Team summaries and sprint recaps
31
42
 
32
43
  ## Why Repr
33
44
 
45
+ ### Context That Compounds
46
+
47
+ The longer you use repr, the richer your context becomes. By the time you need a resume, interview prep, or content — you have months of structured history ready to use. No other tool builds this persistent layer.
48
+
49
+ ### AI-Native
50
+
51
+ repr exposes your context via MCP (Model Context Protocol), so AI agents like Claude Code, Cursor, and Clawdbot can know your work history and patterns. Your coding assistant finally understands *you*.
52
+
53
+ ```bash
54
+ # Start MCP server for AI agents
55
+ repr mcp serve
56
+ ```
57
+
34
58
  ### Privacy First (Not an Afterthought)
35
59
 
36
60
  - ✅ **Local-first by default** — Your repos, diffs, and stories stay on your machine in `~/.repr/`
@@ -40,6 +64,16 @@ Turn commits into professional narratives for interviews, performance reviews, a
40
64
  - ✅ **OS keychain** — API keys never touch config files, stored in system keychain
41
65
  - ✅ **Zero telemetry** — No tracking, no analytics, no silent uploads
42
66
 
67
+ ### Story Engine (New in v0.2.16)
68
+
69
+ `repr` now synthesizes **Stories** from your commits — coherent narratives that capture WHY and HOW you built something, not just WHAT changed.
70
+
71
+ - **Generate**: Create stories from your commits with `repr generate`
72
+ - **Dashboard**: Explore your work in a premium dark-mode UI with `repr dashboard` (or `rp dashboard`)
73
+ - **MCP Integration**: AI agents can answer questions about your implementation details
74
+
75
+ [Read the Story Engine Documentation →](docs/STORY_ENGINE.md)
76
+
43
77
  ### Time Savings
44
78
 
45
79
  | Task | Without repr | With repr | Savings |
@@ -161,6 +195,8 @@ repr generate --since "2 weeks ago" --local
161
195
  repr generate --since monday --local
162
196
  ```
163
197
 
198
+ **Note:** `repr generate` automatically skips commits that have already been processed into stories. You can safely run it multiple times without creating duplicates.
199
+
164
200
  ### Publish your profile (optional)
165
201
 
166
202
  ```bash
@@ -325,3 +361,4 @@ brew install repr
325
361
  repr init ~/code
326
362
  repr generate --local
327
363
  ```
364
+
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "repr-cli"
7
- version = "0.2.15"
7
+ version = "0.2.17"
8
8
  description = "A beautiful, privacy-first CLI that analyzes your code repositories and generates a compelling developer profile"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -33,6 +33,9 @@ dependencies = [
33
33
  "openai>=1.0.0",
34
34
  "keyring>=24.0.0",
35
35
  "pydantic>=2.0.0",
36
+ "fastmcp>=2.0.0,<3",
37
+ "jinja2>=3.1.0",
38
+ "simple-term-menu>=1.6.0",
36
39
  ]
37
40
 
38
41
  [project.optional-dependencies]
@@ -45,6 +48,7 @@ dev = [
45
48
 
46
49
  [project.scripts]
47
50
  repr = "repr.cli:app"
51
+ rp = "repr.cli:app"
48
52
 
49
53
  [project.urls]
50
54
  Homepage = "https://repr.dev"
@@ -55,6 +59,9 @@ Repository = "https://github.com/repr-app/cli"
55
59
  where = ["."]
56
60
  include = ["repr*"]
57
61
 
62
+ [tool.setuptools.package-data]
63
+ "repr.dashboard" = ["dist/**/*"]
64
+
58
65
  [tool.black]
59
66
  line-length = 100
60
67
  target-version = ["py310"]
@@ -10,6 +10,6 @@ try:
10
10
  __version__ = version("repr-cli")
11
11
  except Exception:
12
12
  # Fallback for PyInstaller builds where metadata isn't available
13
- __version__ = "0.2.8"
13
+ __version__ = "0.2.17"
14
14
  __author__ = "Repr"
15
15
  __email__ = "hello@repr.dev"