repr-cli 0.2.15__py3-none-any.whl → 0.2.17__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.
Files changed (43) hide show
  1. repr/__init__.py +1 -1
  2. repr/api.py +363 -62
  3. repr/auth.py +47 -38
  4. repr/change_synthesis.py +478 -0
  5. repr/cli.py +4103 -267
  6. repr/config.py +119 -11
  7. repr/configure.py +889 -0
  8. repr/cron.py +419 -0
  9. repr/dashboard/__init__.py +9 -0
  10. repr/dashboard/build.py +126 -0
  11. repr/dashboard/dist/assets/index-BYFVbEev.css +1 -0
  12. repr/dashboard/dist/assets/index-BrrhyJFO.css +1 -0
  13. repr/dashboard/dist/assets/index-CcEg74ts.js +270 -0
  14. repr/dashboard/dist/assets/index-Cerc-iA_.js +377 -0
  15. repr/dashboard/dist/assets/index-CjVcBW2L.css +1 -0
  16. repr/dashboard/dist/assets/index-Dfl3mR5E.js +377 -0
  17. repr/dashboard/dist/favicon.svg +4 -0
  18. repr/dashboard/dist/index.html +14 -0
  19. repr/dashboard/manager.py +234 -0
  20. repr/dashboard/server.py +1298 -0
  21. repr/db.py +980 -0
  22. repr/hooks.py +3 -2
  23. repr/loaders/__init__.py +22 -0
  24. repr/loaders/base.py +156 -0
  25. repr/loaders/claude_code.py +287 -0
  26. repr/loaders/clawdbot.py +313 -0
  27. repr/loaders/gemini_antigravity.py +381 -0
  28. repr/mcp_server.py +1196 -0
  29. repr/models.py +503 -0
  30. repr/openai_analysis.py +25 -0
  31. repr/session_extractor.py +481 -0
  32. repr/storage.py +360 -0
  33. repr/story_synthesis.py +1296 -0
  34. repr/templates.py +68 -4
  35. repr/timeline.py +710 -0
  36. repr/tools.py +17 -8
  37. {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/METADATA +50 -10
  38. repr_cli-0.2.17.dist-info/RECORD +52 -0
  39. {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/WHEEL +1 -1
  40. {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/entry_points.txt +1 -0
  41. repr_cli-0.2.15.dist-info/RECORD +0 -26
  42. {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/licenses/LICENSE +0 -0
  43. {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/top_level.txt +0 -0
repr/templates.py CHANGED
@@ -16,12 +16,27 @@ class StoryOutput(BaseModel):
16
16
  """Structured output for a generated story."""
17
17
  summary: str = Field(description="One-line technical summary of the work (max 120 chars, no fluff)")
18
18
  content: str = Field(description="Full technical description in markdown")
19
+ # Technologies used in this work
20
+ technologies: list[str] | None = Field(default=None, description="Languages, frameworks, libraries, tools used (e.g., TypeScript, React, PostgreSQL, Docker)")
19
21
  # Categories - all inferred by LLM, nullable for backwards compatibility with older stories
20
22
  category: str | None = Field(default=None, description="Work type: feature, bugfix, refactor, perf, infra, docs, test, chore")
21
23
  scope: str | None = Field(default=None, description="Impact scope: user-facing, internal, platform, ops")
22
24
  stack: str | None = Field(default=None, description="Stack layer: frontend, backend, database, infra, mobile, fullstack")
23
25
  initiative: str | None = Field(default=None, description="Initiative type: greenfield, migration, integration, scaling, incident-response, tech-debt")
24
26
  complexity: str | None = Field(default=None, description="Complexity: quick-win, project, epic, architecture")
27
+
28
+ # Context for AI agents - captures the WHY/HOW/DECISIONS
29
+ problem: str | None = Field(default=None, description="What problem was being solved?")
30
+ approach: str | None = Field(default=None, description="What pattern/approach was used?")
31
+ decisions: list[str] | None = Field(default=None, description="Key decisions made (format: 'Chose X over Y because Z')")
32
+ tradeoffs: str | None = Field(default=None, description="What was gained/lost?")
33
+ outcome: str | None = Field(default=None, description="Metrics, before/after, observable impact")
34
+ lessons: list[str] | None = Field(default=None, description="Gotchas, learnings, things to remember")
35
+
36
+ # Source tracking for timeline entries
37
+ source_type: str | None = Field(default=None, description="'commit', 'session', or 'merged'")
38
+ session_id: str | None = Field(default=None, description="Linked session ID if from AI session")
39
+ commit_sha: str | None = Field(default=None, description="Linked commit SHA if from git")
25
40
 
26
41
 
27
42
  # Template definitions
@@ -36,6 +51,9 @@ Output JSON with:
36
51
  Good: "Added JWT refresh token rotation with Redis session store"
37
52
  Bad: "Enhanced authentication system with improved security"
38
53
  - content: Markdown with technical details. What was built, how, what tech.
54
+ - technologies: Array of languages, frameworks, libraries, tools used.
55
+ Examples: ["TypeScript", "React", "PostgreSQL", "Docker", "Redis", "GraphQL"]
56
+ Be specific: "React" not "JavaScript framework", "FastAPI" not "Python web framework"
39
57
 
40
58
  Rules:
41
59
  - Name specific technologies, libraries, patterns
@@ -48,7 +66,7 @@ Rules:
48
66
  Commits:
49
67
  {commits_summary}
50
68
 
51
- Output JSON with summary and content.""",
69
+ Output JSON with summary, content, and technologies.""",
52
70
  },
53
71
 
54
72
  "changelog": {
@@ -59,6 +77,7 @@ Output JSON with summary and content.""",
59
77
  Output JSON with:
60
78
  - summary: One line describing the main change (max 120 chars)
61
79
  - content: Markdown changelog with categories (Added/Changed/Fixed/Removed)
80
+ - technologies: Array of languages, frameworks, libraries, tools involved in these changes
62
81
 
63
82
  Rules:
64
83
  - List actual changes, not benefits
@@ -69,7 +88,7 @@ Rules:
69
88
  Commits:
70
89
  {commits_summary}
71
90
 
72
- Output JSON with summary and content.""",
91
+ Output JSON with summary, content, and technologies.""",
73
92
  },
74
93
 
75
94
  "narrative": {
@@ -80,6 +99,7 @@ Output JSON with summary and content.""",
80
99
  Output JSON with:
81
100
  - summary: One-line description of what was built (max 120 chars)
82
101
  - content: Markdown narrative explaining the technical work
102
+ - technologies: Array of specific languages, frameworks, libraries, tools used
83
103
 
84
104
  Focus on:
85
105
  - What problem was solved
@@ -92,7 +112,7 @@ No marketing language. Write like you're explaining to another engineer.""",
92
112
  Commits:
93
113
  {commits_summary}
94
114
 
95
- Output JSON with summary and content.""",
115
+ Output JSON with summary, content, and technologies.""",
96
116
  },
97
117
 
98
118
  "interview": {
@@ -103,6 +123,7 @@ Output JSON with summary and content.""",
103
123
  Output JSON with:
104
124
  - summary: One-line technical summary (max 120 chars)
105
125
  - content: Markdown with situation/task/action/result format
126
+ - technologies: Array of specific languages, frameworks, libraries, tools used
106
127
 
107
128
  Focus on:
108
129
  - Specific technical decisions made
@@ -115,7 +136,50 @@ No resume language. Be specific about what you actually did.""",
115
136
  Commits:
116
137
  {commits_summary}
117
138
 
118
- Output JSON with summary and content.""",
139
+ Output JSON with summary, content, and technologies.""",
140
+ },
141
+
142
+ "context": {
143
+ "name": "Context",
144
+ "description": "Rich context for AI agents - captures WHY, HOW, and DECISIONS",
145
+ "system_prompt": """Extract developer context from commits and sessions.
146
+
147
+ Your output will be consumed by AI coding assistants that need to understand this developer's patterns, decisions, and reasoning.
148
+
149
+ For each piece of work, capture:
150
+
151
+ 1. WHAT: One-line summary of what was built/changed
152
+ 2. WHY (problem): What problem was this solving? What was broken/slow/missing?
153
+ 3. HOW (approach): What strategy/pattern was used? What does the code do?
154
+ 4. TECHNOLOGIES: What specific languages, frameworks, libraries, tools were used?
155
+ 5. DECISIONS: Were there alternatives? Why this approach? Format each as "Chose X over Y because Z"
156
+ 6. TRADEOFFS: What did you give up? What did you gain?
157
+ 7. OUTCOME: Any metrics, before/after, or observable impact?
158
+ 8. LESSONS: What gotchas were discovered? What would you tell future-you?
159
+
160
+ Write for an AI that will answer questions like:
161
+ - "How does this developer usually handle X?"
162
+ - "What patterns do they use for Y?"
163
+ - "Why did they choose Z over alternatives?"
164
+
165
+ Output valid JSON with all fields from the schema.""",
166
+ "user_prompt_template": """Repository: {repo_name}
167
+
168
+ Commits:
169
+ {commits_summary}
170
+
171
+ Extract structured context with:
172
+ - summary: One-line technical summary (max 120 chars)
173
+ - content: Full markdown description
174
+ - technologies: Array of languages, frameworks, libraries, tools (e.g., ["TypeScript", "React", "PostgreSQL"])
175
+ - problem: What problem was being solved?
176
+ - approach: What pattern/strategy was used?
177
+ - decisions: List of key decisions (format: "Chose X over Y because Z")
178
+ - tradeoffs: What was gained/lost?
179
+ - outcome: Results, metrics if available
180
+ - lessons: Gotchas and learnings
181
+
182
+ Output valid JSON only.""",
119
183
  },
120
184
  }
121
185